diff options
Diffstat (limited to 'World.gd')
-rw-r--r-- | World.gd | 47 |
1 files changed, 23 insertions, 24 deletions
@@ -5,42 +5,41 @@ onready var _traveler = get_node(traveler) export var acceleration = 10.0 onready var Chunk = preload("res://Chunk.tscn") -onready var chunk_size = $"WorldGen/Chunk/Size".shape.radius*2.0 +onready var chunk_size = $"Chunks/Chunk/Size".shape.radius*2.0 var chunks = {} -func v2_coords(xform:Transform): - var coords = xform.origin - coords = Vector2(coords.x,coords.z) - return coords +func v2_coords(coords:Vector3): + return Vector2(coords.x,coords.z) -func chunk_coords(coords:Vector2): - coords = (coords / chunk_size).floor() - return coords - -func world_coords(coords:Vector2): - coords *= chunk_size +func v3_coords(coords:Vector2): return Vector3(coords.x,0.0,coords.y) -func gen_chunk(xform:Transform): +func chunk_coords(coords:Vector2): + return coords.snapped(Vector2(chunk_size,chunk_size)) + +func gen_chunk(coords:Vector2): var chunk = Chunk.instance() - chunk.transform = xform - $"WorldGen".add_child(chunk) - chunks[chunk_coords(v2_coords(xform))] = chunk + chunk.transform.origin = v3_coords(coords) + $"Chunks".add_child(chunk) + chunks[coords] = chunk func gen_chunks(): - var gen_center = -v2_coords($"WorldGen".transform) - var gen_radius = $"WorldGenCull/Radius".shape.radius-chunk_size - for x in range(-gen_radius, gen_radius, chunk_size): - for y in range(-gen_radius, gen_radius, chunk_size): + var gen_center = -v2_coords($"Chunks".transform.origin) + var gen_radius = $"ChunkRenderDistance/Radius".shape.radius + var gen_radius_rounded = stepify(gen_radius, chunk_size) + for x in range(-gen_radius_rounded, gen_radius_rounded+chunk_size, chunk_size): + for y in range(-gen_radius_rounded, gen_radius_rounded+chunk_size, chunk_size): var gen_coords = Vector2(x,y) + if gen_coords.length() > gen_radius: + continue var coords = chunk_coords(gen_coords + gen_center) - if gen_coords.length() <= gen_radius && !chunks.has(coords): - gen_chunk(Transform(Basis(), world_coords(coords))) + if !chunks.has(coords): + gen_chunk(coords) -func _on_WorldGenCull_area_exited(area:Area): +func _on_ChunkRenderDistance_area_exited(area:Area): gen_chunks() area.queue_free() - chunks.erase(chunk_coords(v2_coords(area.transform))) + chunks.erase(v2_coords(area.transform.origin)) func _ready(): gen_chunks() @@ -51,7 +50,7 @@ func travel(direction:Vector3): direction = -direction direction = heading * direction direction = direction.normalized() - $"WorldGen".add_central_force(direction*acceleration) + $"Chunks".add_central_force(direction*acceleration) func _physics_process(_state): var stick = Input.get_axis("ship_down","ship_up") |