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