43 lines
		
	
	
		
			851 B
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			43 lines
		
	
	
		
			851 B
		
	
	
	
		
			C#
		
	
	
	
| 
								 | 
							
								using System.Collections;
							 | 
						||
| 
								 | 
							
								using System.Collections.Generic;
							 | 
						||
| 
								 | 
							
								using Godot;
							 | 
						||
| 
								 | 
							
								using System;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace Rokojori
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								  public enum DiscardNoiseOwnPositionMode
							 | 
						||
| 
								 | 
							
								  {
							 | 
						||
| 
								 | 
							
								    Ignore,
							 | 
						||
| 
								 | 
							
								    Add_Global,
							 | 
						||
| 
								 | 
							
								    Add_Local
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  [Tool]
							 | 
						||
| 
								 | 
							
								  [GlobalClass]
							 | 
						||
| 
								 | 
							
								  public partial class DiscardNoise:Discarder
							 | 
						||
| 
								 | 
							
								  {    
							 | 
						||
| 
								 | 
							
								    [Export(PropertyHint.Range, "0,1")]
							 | 
						||
| 
								 | 
							
								    public float insideTreshold = 0.5f;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    [Export]
							 | 
						||
| 
								 | 
							
								    public float noiseScale = 1;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    [Export]
							 | 
						||
| 
								 | 
							
								    public Vector3 noiseOffset = Vector3.Zero;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    [Export]
							 | 
						||
| 
								 | 
							
								    public ScattererOwnPositionMode ownPositionMode = ScattererOwnPositionMode.Ignore;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    public override bool IsInside( Vector3 position )
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								      var offset = noiseOffset + ScattererOwnPosition.ComputeOffset( ownPositionMode, this );
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      var value = Noise.Perlin( ( position - offset ) * noiseScale );
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      return value < insideTreshold;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								   
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 |