From f448ca4259d7f76fc58bc3b5c12ea8d04ab49a87 Mon Sep 17 00:00:00 2001 From: Daniel Weipert Date: Sat, 11 Jan 2025 12:31:00 +0100 Subject: next commit --- main.gd | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 52 insertions(+), 11 deletions(-) (limited to 'main.gd') diff --git a/main.gd b/main.gd index f1806e4..77dcfab 100644 --- a/main.gd +++ b/main.gd @@ -1,11 +1,9 @@ -class_name Main +class_name World extends Node3D @onready var noise := FastNoiseLite.new() -var chunks := [] - func _ready() -> void: brrr() @@ -21,17 +19,60 @@ func brrr(): var thread = OtherThread.new() var rrrb = func(): - for row in range(0, 8): - chunks.append([]) - for column in range(0, 4): - chunks[row].append([]) - for depth in range(0, 8): - chunks[row][column].append([]) + for row in range(0, 2): + Chunk.chunks.append([]) + for column in range(0, 1): + Chunk.chunks[row].append([]) + for depth in range(0, 2): + Chunk.chunks[row][column].append([]) var chunk = Chunk.new() chunk.noise = noise - var mesh = chunk.generate_chunk(row, column, depth) + chunk.generate_block_data(row, column, depth) + Chunk.chunks[row][column][depth] = chunk + + #var rrrb2 = func(): + for row in Chunk.chunks.size(): + for column in Chunk.chunks[row].size(): + for depth in Chunk.chunks[row][column].size(): + var chunk: Chunk = Chunk.chunks[row][column][depth] + var mesh = chunk.generate_mesh() add_child.call_deferred(mesh) - chunks[row][column][depth] = chunk thread.start(rrrb) #thread.wait_to_finish() + #thread.start(rrrb2) + + +func create_chunk(chunk_position: Vector3) -> Chunk: + var chunk := Chunk.new() + chunk.noise = noise + + if Chunk.chunks.size() == chunk_position.x: + Chunk.chunks.append([]) + if Chunk.chunks[chunk_position.x].size() == chunk_position.y: + Chunk.chunks[chunk_position.x].append([]) + if Chunk.chunks[chunk_position.x][chunk_position.y].size() == chunk_position.z: + Chunk.chunks[chunk_position.y].append([]) + + Chunk.chunks[chunk_position.x][chunk_position.y][chunk_position.z] = chunk + + return chunk + + +func add_block(target_position: Vector3, block_type: Block.Type = Block.Type.AIR): + var chunk_idx := Chunk.global_to_chunk(target_position) + var chunk: Chunk + var created_new_chunk := false + + if Chunk.chunk_exists(chunk_idx.x, chunk_idx.y, chunk_idx.z): + chunk = Chunk.chunks[chunk_idx.x][chunk_idx.y][chunk_idx.z] + else: + created_new_chunk = true + chunk = create_chunk(Vector3(chunk_idx.x, chunk_idx.y, chunk_idx.z)) + chunk.generate_block_data(chunk_idx.x, chunk_idx.y, chunk_idx.z, true) + + var block_chunk_idx := Chunk.global_to_chunk_block(target_position) + chunk.add_block(block_chunk_idx, block_type) + + if created_new_chunk: + add_child.call_deferred(chunk.generate_mesh()) -- cgit v1.2.3