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)