You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

26 lines
767 B
GDScript

1 year ago
@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)