Tree collisions and highlights

This commit is contained in:
Dan Baker 2025-06-26 18:28:33 +01:00
parent 57602adddb
commit 7255cbdf64
17 changed files with 231 additions and 2251 deletions

View file

@ -1,7 +1,6 @@
extends MultiMeshInstance3D
var mm: MultiMesh
var parent_node: GrassController
static var grass_mesh: Mesh = null
func _ready() -> void:
@ -16,7 +15,7 @@ func _ready() -> void:
func setup_multimesh() -> void:
if parent_node == null:
return
if grass_mesh == null:
Log.pr("Error: Could not load grass mesh")
return
@ -30,18 +29,21 @@ func setup_multimesh() -> void:
# Configure instance count
mm.instance_count = parent_node.grass_instance_range
# Get shared RNG from GroundTile
var rng = parent_node.parent_node.get_rng()
# Generate positions using shared RNG
for i in range(mm.instance_count):
var random_pos = Vector3(
parent_node.parent_node.rng.randf_range(-1.0, 1.0),
rng.randf_range(-1.0, 1.0),
0.0,
parent_node.parent_node.rng.randf_range(-1.0, 1.0)
rng.randf_range(-1.0, 1.0)
)
var random_rotation = parent_node.parent_node.rng.randf_range(0.0, TAU)
var random_rotation = rng.randf_range(0.0, TAU)
var basis = Basis(Vector3.UP, random_rotation)
var random_scale = parent_node.parent_node.rng.randf_range(0.05, 0.3)
var random_scale = rng.randf_range(0.05, 0.3)
basis = basis.scaled(Vector3(random_scale, random_scale, random_scale))
var tx = Transform3D(basis, random_pos)