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.
28 lines
704 B
GDScript
28 lines
704 B
GDScript
@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)
|