Loads of crap

This commit is contained in:
Dan Baker 2025-06-26 14:46:23 +01:00
parent b5bf7619e6
commit 1dc768ad27
725 changed files with 15096 additions and 191 deletions

View file

@ -1,31 +1,23 @@
# GrassMultiMesh.gd (assuming this is your MultiMeshInstance3D script)
# GrassMultiMesh.gd
extends MultiMeshInstance3D
var mm: MultiMesh
@onready var parent_node: GrassController
var parent_node: GrassController
var rng: RandomClass = RandomClass.new()
func _ready() -> void:
# Use call_deferred to ensure proper initialization order
call_deferred("_setup_connections")
func _setup_connections() -> void:
parent_node = get_parent() as GrassController
if parent_node == null:
Log.pr("Error: Parent node is not a GrassController!")
return
parent_node.grass_data_ready.connect(_on_grass_data_ready)
Log.pr("Connected to grass_data_ready signal")
func _on_grass_data_ready():
Log.pr("Received grass_data_ready signal, setting up multimesh")
setup_multimesh()
func setup_multimesh() -> void:
if parent_node == null:
Log.pr("Error: Parent node not available in setup_multimesh")
return
# Use the same RNG seed as the parent for consistency
if parent_node.parent_node and parent_node.parent_node.cell_info:
rng.set_seed(parent_node.parent_node.cell_info.cell_seed)
# Load the mesh resource directly
var mesh = load("res://Stages/Test3D/assets/stylizedGrassMeshes/grass2_mesh.res")
if mesh == null:
@ -40,20 +32,18 @@ func setup_multimesh() -> void:
mm.instance_count = parent_node.grass_instance_range
mm.mesh = mesh
Log.pr("Setting up MultiMesh with " + str(mm.instance_count) + " instances")
# Generate random positions for grass
# Generate random positions for grass using seeded RNG
for i in range(mm.instance_count):
var random_pos = Vector3(
randf_range(-1.0, 1.0),
rng.randf_range(-1.0, 1.0),
0.0,
randf_range(-1.0, 1.0)
rng.randf_range(-1.0, 1.0)
)
var random_rotation = randf_range(0.0, TAU)
var random_rotation = rng.randf_range(0.0, TAU)
var basis = Basis(Vector3.UP, random_rotation)
var random_scale = 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)
@ -62,5 +52,3 @@ func setup_multimesh() -> void:
# Assign the MultiMesh to this node
multimesh = mm
cast_shadow = GeometryInstance3D.SHADOW_CASTING_SETTING_OFF
Log.pr("MultiMesh setup complete with " + str(multimesh.instance_count) + " instances")