46 lines
1.1 KiB
GDScript
46 lines
1.1 KiB
GDScript
class_name GroundTile
|
|
extends Node3D
|
|
@onready var debug_text: Label = $DebugText/DebugTextViewport/DebugTextLabel
|
|
@onready var tree_spawner = $Trees
|
|
@onready var grass_spawner = $Grass
|
|
var grid_x: int
|
|
var grid_z: int
|
|
var cell_info: CellDataResource = null
|
|
var spawners_ready: bool = false
|
|
var cached_rng: RandomClass = null
|
|
|
|
func _ready() -> void:
|
|
spawners_ready = true
|
|
|
|
if cell_info != null:
|
|
spawn_content()
|
|
update_text_label()
|
|
|
|
func get_rng() -> RandomClass:
|
|
if cached_rng == null and cell_info:
|
|
cached_rng = RandomClass.get_seeded_instance(cell_info.cell_seed)
|
|
elif cached_rng == null:
|
|
cached_rng = RandomClass.get_shared_instance()
|
|
|
|
return cached_rng
|
|
|
|
func set_grid_location(x, z) -> void:
|
|
grid_x = x
|
|
grid_z = z
|
|
cell_info = MapData.get_map_data(grid_x, grid_z)
|
|
|
|
# Only spawn if spawners are ready
|
|
if spawners_ready and cell_info != null:
|
|
spawn_content()
|
|
|
|
func spawn_content():
|
|
if cell_info == null:
|
|
return
|
|
|
|
if tree_spawner:
|
|
tree_spawner.spawn_trees_for_cell(cell_info)
|
|
if grass_spawner:
|
|
grass_spawner.spawn_grass_for_cell(cell_info)
|
|
|
|
func update_text_label() -> void:
|
|
debug_text.text = str(cell_info.vegetation_density)
|