65 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C#
		
	
	
	
using System.Collections;
 | 
						|
using System.Collections.Generic;
 | 
						|
using Godot;
 | 
						|
using System;
 | 
						|
 | 
						|
using System.Threading.Tasks;
 | 
						|
using System.Linq;
 | 
						|
 | 
						|
namespace Rokojori
 | 
						|
{
 | 
						|
  [Tool]
 | 
						|
  [GlobalClass]
 | 
						|
  public partial class MeshAxisSubDivider:Resource
 | 
						|
  {
 | 
						|
    public enum Axis
 | 
						|
    {
 | 
						|
      U,
 | 
						|
      V      
 | 
						|
    }
 | 
						|
 | 
						|
    public virtual List<float> GetSubDivisions( Transform3D quadTransform, Axis axis )
 | 
						|
    {
 | 
						|
      return new List<float>();
 | 
						|
    } 
 | 
						|
 | 
						|
    public Vector3 GetWorldMin( Transform3D worldTransform )
 | 
						|
    {
 | 
						|
      return worldTransform * new Vector3( -0.5f, -0.5f, 0.0f);
 | 
						|
    }
 | 
						|
 | 
						|
     public Vector3 GetWorldMax( Transform3D worldTransform )
 | 
						|
    {
 | 
						|
      return worldTransform * new Vector3( 0.5f, 0.5f, 0.0f);
 | 
						|
    }
 | 
						|
 | 
						|
    public Vector3 AxisToVector( Axis a, float t = 1)
 | 
						|
    {
 | 
						|
      var d = Mathf.Lerp( -0.5f, 0.5f, t );
 | 
						|
      var v = Axis.U == a ? new Vector3( d, 0, 0 ) : new Vector3( 0, d, 0 );
 | 
						|
 | 
						|
      return v;
 | 
						|
    }
 | 
						|
 | 
						|
    public static List<float> GetSubDivisions( MeshAxisSubDivider divider, Transform3D quadTransform, Axis axis )
 | 
						|
    {
 | 
						|
      if ( divider == null )
 | 
						|
      {
 | 
						|
        return new List<float>(){};
 | 
						|
      }
 | 
						|
      
 | 
						|
      return divider.GetSubDivisions( quadTransform, axis );
 | 
						|
    }
 | 
						|
 | 
						|
    public static List<float> GetSubDivisionsU( MeshAxisSubDivider divider, Transform3D quadTransform )
 | 
						|
    {
 | 
						|
      return GetSubDivisions( divider, quadTransform, Axis.U );
 | 
						|
    }
 | 
						|
 | 
						|
    public static List<float> GetSubDivisionsV( MeshAxisSubDivider divider, Transform3D quadTransform )
 | 
						|
    {
 | 
						|
      return GetSubDivisions( divider, quadTransform, Axis.V );
 | 
						|
    }
 | 
						|
    
 | 
						|
  }
 | 
						|
} |