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 GetSubDivisions( Transform3D quadTransform, Axis axis ) { return new List(); } 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 GetSubDivisions( MeshAxisSubDivider divider, Transform3D quadTransform, Axis axis ) { if ( divider == null ) { return new List(){}; } return divider.GetSubDivisions( quadTransform, axis ); } public static List GetSubDivisionsU( MeshAxisSubDivider divider, Transform3D quadTransform ) { return GetSubDivisions( divider, quadTransform, Axis.U ); } public static List GetSubDivisionsV( MeshAxisSubDivider divider, Transform3D quadTransform ) { return GetSubDivisions( divider, quadTransform, Axis.V ); } } }