summaryrefslogtreecommitdiff
path: root/main.gd
diff options
context:
space:
mode:
Diffstat (limited to 'main.gd')
-rw-r--r--main.gd63
1 files changed, 52 insertions, 11 deletions
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())