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
		
	
		
		
			
		
	
	
			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) |