summaryrefslogtreecommitdiffstats
path: root/World.gd
diff options
context:
space:
mode:
Diffstat (limited to 'World.gd')
-rw-r--r--World.gd47
1 files changed, 23 insertions, 24 deletions
diff --git a/World.gd b/World.gd
index 6aba103..da811a8 100644
--- a/World.gd
+++ b/World.gd
@@ -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")