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;
 | 
						|
    }
 | 
						|
   
 | 
						|
  }
 | 
						|
} |