36 lines
931 B
GDScript
36 lines
931 B
GDScript
# GrassController.gd
|
|
extends Node3D
|
|
class_name GrassController
|
|
|
|
@onready var grass_multimesh: MultiMeshInstance3D = $GrassMultimesh
|
|
var parent_node: GroundTile = null
|
|
var grass_density: float = 0.5
|
|
var grass_instance_range: int = 10
|
|
|
|
func _ready() -> void:
|
|
parent_node = get_parent() as GroundTile
|
|
|
|
func spawn_grass_for_cell(value):
|
|
if value == null:
|
|
return
|
|
|
|
grass_density = value.vegetation_density
|
|
update_grass_density()
|
|
|
|
if grass_multimesh and grass_multimesh.has_method("setup_multimesh"):
|
|
grass_multimesh.setup_multimesh()
|
|
|
|
func update_grass_density() -> void:
|
|
if parent_node == null:
|
|
return
|
|
|
|
var rng = parent_node.get_rng()
|
|
|
|
if grass_density > 0.8:
|
|
grass_instance_range = rng.randi_range(100, 500)
|
|
elif grass_density > 0.6:
|
|
grass_instance_range = rng.randi_range(30, 50)
|
|
elif grass_density > 0.3:
|
|
grass_instance_range = rng.randi_range(5, 20)
|
|
else:
|
|
grass_instance_range = rng.randi_range(0, 1)
|