using Unity.Mathematics; namespace UnityEngine.Splines { /// <summary> /// Base class for SplineInstantiate and SplineExtrude, contains common elements to both of these Components /// </summary> public abstract class SplineComponent : MonoBehaviour { /// <summary> /// Describes the different types of object alignment axes. /// </summary> public enum AlignAxis { /// <summary> Object space X axis. </summary> [InspectorName("Object X+")] XAxis, /// <summary> Object space Y axis. </summary> [InspectorName("Object Y+")] YAxis, /// <summary> Object space Z axis. </summary> [InspectorName("Object Z+")] ZAxis, /// <summary> Object space negative X axis. </summary> [InspectorName("Object X-")] NegativeXAxis, /// <summary> Object space negative Y axis. </summary> [InspectorName("Object Y-")] NegativeYAxis, /// <summary> Object space negative Z axis. </summary> [InspectorName("Object Z-")] NegativeZAxis } readonly float3[] m_AlignAxisToVector = new float3[] {math.right(), math.up(), math.forward(), math.left(), math.down(), math.back()}; /// <summary> /// Transform a AlignAxis to the associated float3 direction. /// </summary> /// <param name="axis">The AlignAxis to transform</param> /// <returns></returns> protected float3 GetAxis(AlignAxis axis) { return m_AlignAxisToVector[(int) axis]; } } }