@tool extends MultiMeshInstance3D @export var extents := Vector2.ONE @export var scale_basic := 1.0 @export var refresh: bool: get: return false set(_value): refresh_grass() func refresh_grass() -> void: var rng := RandomNumberGenerator.new() rng.randomize() for instance_index in multimesh.instance_count: var scale: float = rng.randf_range(scale_basic - 0.1, scale_basic + 0.1) var transform := Transform3D().rotated(Vector3.UP, 0).scaled(Vector3.ONE * scale) var x: float var z: float x = rng.randf_range(-extents.x, extents.x) z = rng.randf_range(-extents.y, extents.y) transform.origin = Vector3(x, 0, z) multimesh.set_instance_transform(instance_index, transform)