Curvy Spline class
Public Attributes  
bool  ShowGizmos = true 
Whether to show the Gizmos enabled in the view settings or not at all More...  
Properties  
bool  AutoEndTangents [get, set] 
Whether the first/last Control Point should act as the end tangent, too. More...  
float  AutoHandleDistance [get, set] 
Gets or sets the default Handle distance for Bezier splines More...  
float  Bias [get, set] 
Global Bias More...  
Bounds  Bounds [get] 
The bounding box of the spline, in world space More...  
int  BSplineDegree [get, set] 
Used only when Interpolation is CurvyInterpolation.BSpline The degree of the piecewise polynomial functions Is in the range [2; control points count  1] More...  
int  CacheDensity [get, set] 
Gets or sets the cache density Defines how densely the cached points are. When the value is 100, the number of cached points per world distance unit is equal to the spline's MaxPointsPerUnit More...  
int  CacheSize [get] 
Gets total Cache Size More...  
bool  CheckTransform [get, set] 
Whether the spline should automatically refresh when a Control Point's position change More...  
bool  Closed [get, set] 
Whether this spline is closed or not More...  
float  Continuity [get, set] 
Global Continuity More...  
int  ControlPointCount [get] 
Gets the number of Control Points More...  
ReadOnlyCollection< CurvySplineSegment >  ControlPointsList [get] 
The list of control points More...  
int  Count [get] 
Gets the number of Segments More...  
bool  Dirty [get] 
When a spline is dirty, this means that it's cached data is no more up to date, and should be updated. The update is done automatically each frame when needed, or manually by calling Refresh More...  
CurvySplineSegment  FirstSegment [get] 
Gets the first segment of the spline More...  
CurvySplineSegment  FirstVisibleControlPoint [get] 
Gets the first visible Control Point (equals the first segment or this[0]) More...  
Color  GizmoColor [get, set] 
Gets or sets Spline color More...  
Color  GizmoSelectionColor [get, set] 
Gets or sets selected segment color More...  
bool  GlobalCoordinatesChangedThisFrame [get] 
Returns true if the global position, rotation or scale of the spline has changed this frame More...  
CurvyInterpolation  Interpolation [get, set] 
The interpolation method used by this spline More...  
bool  IsBSplineClamped [get, set] 
Used only when Interpolation is CurvyInterpolation.BSpline Make the curve pass through the first and last control points by increasing the multiplicity of the first and last knots. In technical terms, when this parameter is true, the knot vector is [0, 0, ...,0, 1, 2, ..., N1, N, N, ..., N]. When false, it is [0, 1, 2, ..., N1, N] More...  
bool  IsInitialized [get] 
Whether the spline is fully initialized and all segments loaded More...  
CurvySplineSegment  LastSegment [get] 
Gets the last segment of the spline More...  
CurvySplineSegment  LastVisibleControlPoint [get] 
Gets the last visible Control Point (i.e. the end CP of the last segment) More...  
float  Length [get] 
Gets the total length of the Spline or SplineGroup More...  
float  MaxPointsPerUnit [get, set] 
The maximum number of sampling points per world distance unit. Sampling is used in caching or shape extrusion for example More...  
CurvyControlPointEvent  OnAfterControlPointAdd [get, set] 
Callback after a Control Point has been added and the spline was refreshed More...  
CurvySplineEvent  OnAfterControlPointChanges [get, set] 
Callback after one or more Control Points have been added or deleted More...  
CurvyControlPointEvent  OnBeforeControlPointAdd [get, set] 
Callback before a Control Point is about to be added More...  
CurvyControlPointEvent  OnBeforeControlPointDelete [get, set] 
Callback before a Control Point is about to be deleted. Return false to cancel the execution. More...  
Action< CurvySpline >  OnGlobalCoordinatesChanged [get, set] 
Is triggered when the global position, rotation or scale of the spline changes. The triggering instance of CurvySpline is passed as a parameter of the delegate More...  
CurvySplineEvent  OnRefresh [get, set] 
CurvyOrientation  Orientation [get, set] 
Orientation mode More...  
CurvyPlane  Restricted2DPlane [get, set] 
The local 2D plane to restrict the spline's control point in More...  
bool  RestrictTo2D [get, set] 
Whether to restrict Control Points to a local 2D plane More...  
float  Tension [get, set] 
Global Tension More...  
CurvySplineSegment  this[int idx] [get] 
Gets the Segment at a certain index More...  
CurvyUpdateMethod  UpdateIn [get, set] 
bool  UsePooling [get, set] 
Whether to use GameObject pooling for Control Points at runtime More...  
bool  UseThreading [get, set] 
Whether to use threading where applicable or not. Threading is currently not supported when targeting WebGL and Universal Windows Platform More...  
Public Member Functions  
CurvySplineSegment  Add ()  
Adds a Control Point at the end of the spline This method will Refresh the spline and call the relevant events. If you want more control on the order of the added Control Point, its position, or whether Refresh and events should be called, use the InsertBefore(CurvySplineSegment,Vector3,bool,Space) and InsertAfter(CurvySplineSegment,Vector3,bool,Space) and Add(Vector3,Space) instead More...  
CurvySplineSegment[]  Add (int controlPointsCount)  
Adds several Control Points at the end of the spline This method will Refresh the spline and call the relevant events. If you want more control on the order of the added Control Points, their position, or whether Refresh and events should be called, use the InsertBefore(CurvySplineSegment,Vector3,bool,Space) and InsertAfter(CurvySplineSegment,Vector3,bool,Space) and Add(Vector3[],Space) instead More...  
CurvySplineSegment  Add (Vector3 controlPointPosition, Space space)  
Adds several Control Points at the end of the spline This method will Refresh the spline and call the relevant events. If you want more control on the order of the added Control Points, their position, or whether Refresh and events should be called, use the InsertBefore(CurvySplineSegment,Vector3,bool,Space) and InsertAfter(CurvySplineSegment,Vector3,bool,Space) instead More...  
CurvySplineSegment[]  Add (params Vector3[] controlPointsLocalPositions)  
Adds several Control Points at the end of the spline This method will Refresh the spline and call the relevant events. If you want more control on the order of the added Control Points, their position, or whether Refresh and events should be called, use the InsertBefore(CurvySplineSegment,Vector3,bool,Space) and InsertAfter(CurvySplineSegment,Vector3,bool,Space) and Add(Vector3[],Space) instead More...  
CurvySplineSegment[]  Add (Vector3[] controlPointsPositions, Space space)  
Adds several Control Points at the end of the spline This method will Refresh the spline and call the relevant events. If you want more control on the order of the added Control Points, their position, or whether Refresh and events should be called, use the InsertBefore(CurvySplineSegment,Vector3,bool,Space) and InsertAfter(CurvySplineSegment,Vector3,bool,Space) instead More...  
bool  CanControlPointHaveFollowUp (CurvySplineSegment controlPoint)  
Can this control point have a FollowUp? This is true if the control point is the beginning of the first segment or the end of the last segment of an open spline More...  
float  ClampDistance (float distance, CurvyClamping clamping)  
Clamps absolute position More...  
float  ClampDistance (float distance, CurvyClamping clamping, float min, float max)  
Clamps absolute position More...  
float  ClampDistance (float distance, ref int dir, CurvyClamping clamping)  
Clamps absolute position and sets new direction More...  
float  ClampDistance (float distance, ref int dir, CurvyClamping clamping, float min, float max)  
Clamps absolute position and sets new direction More...  
void  Clear (bool isUndoable=true)  
Removes all control points
 
CurvySpline ()  
void  Delete (CurvySplineSegment controlPoint, bool skipRefreshingAndEvents=false)  
Deletes a Control Point More...  
void  Delete (CurvySplineSegment controlPoint, bool skipRefreshingAndEvents, bool isUndoableDeletion)  
Deletes a Control Point More...  
CurvySplineSegment  DistanceToSegment (float distance, CurvyClamping clamping=CurvyClamping.Clamp)  
Gets the segment a certain distance lies within More...  
CurvySplineSegment  DistanceToSegment (float distance, out float localDistance, CurvyClamping clamping=CurvyClamping.Clamp)  
Gets the segment a certain distance lies within More...  
CurvySplineSegment  DistanceToSegment (float distance, out float localDistance, out bool isOnSegmentStart, out bool isOnSegmentEnd, CurvyClamping clamping=CurvyClamping.Clamp)  
Gets the segment a certain distance lies within More...  
float  DistanceToTF (float distance, CurvyClamping clamping=CurvyClamping.Clamp)  
Converts a distance to a TF value TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end.This is the "time" parameter used in the splines' formulas. A point's F is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline More...  
void  Equalize (CurvySplineSegment fromCP=null, CurvySplineSegment toCP=null)  
Equalizes the segment length of a certain range More...  
void  Flip ()  
Flips the direction of the spline, i.e. the first Control Point will become the last and vice versa. More...  
Vector3[]  GetApproximation (Space space=Space.Self)  
Gets an array containing all approximation points More...  
Vector3[]  GetApproximation (float fromTF, float toTF, bool includeEndPoint=true, Space space=Space.Self)  
Gets all Approximation points for a given spline part More...  
Vector3[]  GetApproximationT (Space space=Space.Self)  
Gets an array containing all approximation tangents More...  
Vector3[]  GetApproximationUpVectors (Space space=Space.Self)  
Gets an array containing all approximation UpVectors More...  
short  GetControlPointIndex (CurvySplineSegment controlPoint)  
Index of the control point More...  
short  GetControlPointOrientationAnchorIndex (CurvySplineSegment controlPoint)  
The index of the control point being the orientation anchor for the anchor group containing the controlPoint Is 1 for non visible control points More...  
U  GetInterpolatedMetadata< T, U > (float tf)  
Gets an interpolated Metadata value for a certain TF More...  
T  GetMetadata< T > (float tf)  
Gets metadata for a certain TF More...  
Vector3  GetNearestPoint (Vector3 position, Space space)  
Gets the point on the spline that is the nearest to a given position More...  
float  GetNearestPointTF (Vector3 localPosition)  
Gets the TF value of the point on the spline that is the nearest to a given position TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end. This is the "time" parameter used in the splines' formulas. A point's TF is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline More...  
float  GetNearestPointTF (Vector3 position, Space space)  
Gets the TF value of the point on the spline that is the nearest to a given position TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end. This is the "time" parameter used in the splines' formulas. A point's TF is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline More...  
float  GetNearestPointTF (Vector3 localPosition, out Vector3 nearestPoint)  
Gets the TF value of the point on the spline that is the nearest to a given position TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end. This is the "time" parameter used in the splines' formulas. A point's TF is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline More...  
float  GetNearestPointTF (Vector3 position, out Vector3 nearestPoint, Space space)  
Gets the TF value of the point on the spline that is the nearest to a given position TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end. This is the "time" parameter used in the splines' formulas. A point's TF is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline More...  
float  GetNearestPointTF (Vector3 position, int searchStartSegmentIndex=0, int searchEndSegmentIndex=1, Space space=Space.Self)  
Gets the TF value of the point on the spline that is the nearest to a given position TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end. This is the "time" parameter used in the splines' formulas. A point's TF is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline More...  
float  GetNearestPointTF (Vector3 position, out Vector3 nearestPoint, int searchStartSegmentIndex=0, int searchEndSegmentIndex=1, Space space=Space.Self)  
Gets the TF value of the point on the spline that is the nearest to a given position TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end. This is the "time" parameter used in the splines' formulas. A point's TF is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline More...  
float  GetNearestPointTF (Vector3 position, out Vector3 nearestPoint, [CanBeNull] out CurvySplineSegment nearestSegment, out float nearestPointLocalF, int searchStartSegmentIndex=0, int searchEndSegmentIndex=1, Space space=Space.Self)  
Gets the TF value of the point on the spline that is the nearest to a given position TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end. This is the "time" parameter used in the splines' formulas. A point's TF is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline More...  
CurvySplineSegment  GetNextControlPoint (CurvySplineSegment controlPoint)  
The next control point on the spline. Is null if none. FollowUp not considered More...  
short  GetNextControlPointIndex (CurvySplineSegment controlPoint)  
The index of the next control point on the spline. Is 1 if none. FollowUp not considered More...  
CurvySplineSegment  GetNextControlPointUsingFollowUp (CurvySplineSegment controlPoint)  
The next control point. Is null if none. FollowUp is considered More...  
CurvySplineSegment  GetNextSegment (CurvySplineSegment segment)  
The next control point on the spline if it starts a segment. Is null if none. FollowUp not considered More...  
SubArray< Vector3 >  GetNormalsCache (Space space)  
Gets an array containing all approximation UpVectors More...  
Quaternion  GetOrientationFast (float tf, bool inverse=false, Space space=Space.Self)  
Gets a rotation looking to Tangent with the head upwards along the UpVector More...  
Vector3  GetOrientationUpFast (float tf, Space space=Space.Self)  
Gets the Up vector of a point on the spline segment. Instead of computing the exact value, this method uses a linear interpolation between cached points for faster result More...  
SubArray< Vector3 >  GetPositionsCache (Space space)  
Gets an array containing all approximation points More...  
CurvySplineSegment  GetPreviousControlPoint (CurvySplineSegment controlPoint)  
The previous control point on the spline. Is null if none. FollowUp not considered More...  
short  GetPreviousControlPointIndex (CurvySplineSegment controlPoint)  
The index of the previous control point on the spline. Is 1 if none. FollowUp not considered More...  
CurvySplineSegment  GetPreviousControlPointUsingFollowUp (CurvySplineSegment controlPoint)  
The previous control point. Is null if none. FollowUp is considered More...  
CurvySplineSegment  GetPreviousSegment (CurvySplineSegment segment)  
The previous control point on the spline if it starts a segment. Is null if none. FollowUp not considered. More...  
short  GetSegmentIndex (CurvySplineSegment segment)  
Index of the segment that this control point starts. 1 if control point does not start a segment. More...  
Vector3  GetTangent (float tf, Space space=Space.Self)  
Gets the normalized tangent at a point on the spline segment More...  
Vector3  GetTangent (float tf, Vector3 position, Space space=Space.Self)  
Gets the normalized tangent at a point on the spline segment. This method is faster than GetTangent(float, Space) if you have already the position of the point. Instead of computing the exact value, this method uses a linear interpolation between cached points for faster result More...  
Vector3  GetTangentByDistance (float distance, Space space=Space.Self)  
Gets the normalized tangent at a point on the spline segment More...  
Vector3  GetTangentByDistanceFast (float distance, Space space=Space.Self)  
Gets the normalized tangent at a point on the spline segment. Instead of computing the exact value, this method uses a linear interpolation between cached points for faster result More...  
Vector3  GetTangentFast (float tf, Space space=Space.Self)  
Gets the normalized tangent at a point on the spline segment. Instead of computing the exact value, this method uses a linear interpolation between cached points for faster result More...  
SubArray< Vector3 >  GetTangentsCache (Space space)  
Gets an array containing all approximation tangents More...  
CurvySplineSegment  InsertAfter (CurvySplineSegment controlPoint, bool skipRefreshingAndEvents=false)  
Inserts a Control Point after a given Control Point More...  
CurvySplineSegment  InsertAfter ([CanBeNull] CurvySplineSegment controlPoint, Vector3 position, bool skipRefreshingAndEvents=false, Space space=Space.World)  
Inserts a Control Point after a given Control Point More...  
CurvySplineSegment  InsertBefore (CurvySplineSegment controlPoint, bool skipRefreshingAndEvents=false)  
Inserts a Control Point before a given Control Point More...  
CurvySplineSegment  InsertBefore ([CanBeNull] CurvySplineSegment controlPoint, Vector3 position, bool skipRefreshingAndEvents=false, Space space=Space.World)  
Inserts a Control Point before a given Control Point More...  
Vector3  Interpolate (float tf, Space space=Space.Self)  
Gets the position of a point on the spline segment More...  
void  InterpolateAndGetTangent (float tf, out Vector3 position, out Vector3 tangent, Space space=Space.Self)  
Gets the position and normalized tangent at a point on the spline segment Is Faster than calling Interpolate(float, Space) and Interpolate(float, Space) separately More...  
void  InterpolateAndGetTangentFast (float tf, out Vector3 position, out Vector3 tangent, Space space=Space.Self)  
Gets the position and normalized tangent at a point on the spline segment Is Faster than calling Interpolate(float, Space) and Interpolate(float, Space) separately Instead of computing the exact value, this method uses a linear interpolation between cached points for faster result More...  
Vector3  InterpolateByDistance (float distance, Space space=Space.Self)  
Gets the position of a point on the spline segment More...  
Vector3  InterpolateByDistanceFast (float distance, Space space=Space.Self)  
Gets the position of a point on the spline segment. Instead of computing the exact value, this method uses a linear interpolation between cached points for faster result More...  
Vector3  InterpolateFast (float tf, Space space=Space.Self)  
Gets the position of a point on the spline segment. Instead of computing the exact value, this method uses a linear interpolation between cached points for faster result More...  
bool  IsControlPointAnOrientationAnchor (CurvySplineSegment controlPoint)  
Is the control point an orientation anchor? The answer is related to the control point's serialized OrientationAnchor value, plus it's position in the spline. More...  
bool  IsControlPointASegment (CurvySplineSegment controlPoint)  
Is the control point the start of a segment? More...  
bool  IsControlPointVisible (CurvySplineSegment controlPoint)  
Is the control point part of a segment (whether starting it or ending it) More...  
bool  IsPlanar (out int ignoreAxis)  
Checks if the curve is planar More...  
bool  IsPlanar (out bool xplanar, out bool yplanar, out bool zplanar)  
Checks if the curve is planar More...  
bool  IsPlanar (CurvyPlane plane)  
Determines if the spline is at zero position on a certain plane More...  
void  JoinWith (CurvySplineSegment destCP)  
Insert this spline after another spline's destination Control Point and delete this spline More...  
void  MakePlanar (CurvyPlane plane)  
Forces the spline to be at zero position on a certain plane More...  
void  MakePlanar (int axis)  
Equalize one axis of the spline to match the first control points's value More...  
void  MoveControlPoints (int startIndex, int count, CurvySplineSegment destCP)  
Moves ControlPoints from this spline, inserting them after a destination ControlPoint of another spline More...  
void  Normalize ()  
Applies a spline's scale to it's Control Points and resets scale More...  
void  Refresh ()  
Refreshs the spline More...  
float  SegmentToTF (CurvySplineSegment segment)  
Gets a TF value from a segment TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end.This is the "time" parameter used in the splines' formulas. A point's F is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline More...  
float  SegmentToTF (CurvySplineSegment segment, float localF)  
Gets a TF value from a segment and a local F TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end.This is the "time" parameter used in the splines' formulas. A point's F is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline More...  
void  SetDirty (CurvySplineSegment dirtyControlPoint, SplineDirtyingType dirtyingType)  
Marks a Control Point to get recalculated on next call to Refresh(). Will also mark connected control points and control points that depend on the current one through the FollowUp feature. More...  
void  SetDirtyAll ()  
Ensures the whole spline (curve & orientation) will be recalculated on next call to Refresh() More...  
void  SetDirtyAll (SplineDirtyingType dirtyingType, bool dirtyConnectedControlPoints)  
Ensure the whole spline will be recalculated on next call to Refresh() More...  
void  SetDirtyPartial (CurvySplineSegment dirtyControlPoint, SplineDirtyingType dirtyingType)  
Marks a Control Point to get recalculated on next call to Refresh(). Will also mark connected control points and control points that depend on the current one through the FollowUp feature. Be aware, this method, and unlike SetDirty, will not mark as dirty the control points connected to the "controlPoint" parameter More...  
void  SetFirstControlPoint (CurvySplineSegment controlPoint)  
Defines the given Control Point to be the first Control Point of the spline More...  
void  SetFromString (string fieldAndValue)  
Eventfriendly helper that sets a field or property value More...  
Vector3  SetPivot (float xRel=0, float yRel=0, float zRel=0, bool preview=false)  
Sets the pivot of the spline More...  
void  Simplify (CurvySplineSegment fromCP=null, CurvySplineSegment toCP=null)  
Simplifies the spline, i.e. remove segments from a certain range More...  
CurvySpline  Split (CurvySplineSegment controlPoint)  
Splits this spline with the parameter controlPoint becoming the first Control Point of the new spline More...  
void  Subdivide (CurvySplineSegment fromCP=null, CurvySplineSegment toCP=null)  
Subdivides the spline, i.e. adds additional segments to a certain range More...  
void  SyncSplineFromHierarchy ()  
Rebuilds the ControlPoints list from the hierarchy. It sets the spline as Dirty More...  
float  TFToDistance (float tf, CurvyClamping clamping=CurvyClamping.Clamp)  
Converts a TF value to a distance More...  
CurvySplineSegment  TFToSegment (float tf, out float localF, out bool isOnSegmentStart, out bool isOnSegmentEnd, CurvyClamping clamping)  
Gets the segment and the local F for a certain TF More...  
CurvySplineSegment  TFToSegment (float tf, out float localF, CurvyClamping clamping)  
Gets the segment and the local F for a certain TF More...  
CurvySplineSegment  TFToSegment (float tf, CurvyClamping clamping)  
Gets the segment for a certain TF More...  
CurvySplineSegment  TFToSegment (float tf)  
Gets the segment for a certain TF clamped to 0..1 More...  
CurvySplineSegment  TFToSegment (float tf, out float localF)  
Gets the segment and the local F for a certain TF clamped to 0..1 More...  
Vector3  ToLocalDirection (Vector3 localDirection)  
Transforms direction from world space to local space More...  
Vector3  ToLocalPosition (Vector3 worldPosition)  
Transforms position from world space to local space More...  
Vector3  ToWorldDirection (Vector3 localDirection)  
Transforms direction from local space to world space More...  
Vector3  ToWorldPosition (Vector3 localPosition)  
Transforms position from local space to world space More...  
Static Public Member Functions  
static Vector3  Bezier (Vector3 T0, Vector3 P0, Vector3 P1, Vector3 T1, float f) 
CubicBeziere Interpolation More...  
static Vector3  BezierTangent (Vector3 T0, Vector3 P0, Vector3 P1, Vector3 T1, float f) 
static int  CalculateCacheSize (int density, float segmentLength, float maxPointsPerUnit) 
Gets the number of Cache Points needed for a certain part of a spline More...  
static float  CalculateSamplingPointsPerUnit (int density, float maxPointsPerUnit) 
Returns the (floating) number of sampling points per world distance unit. More...  
static Vector3  CatmullRom (Vector3 T0, Vector3 P0, Vector3 P1, Vector3 T1, float f) 
CatmullRom Interpolation More...  
static CurvySpline  Create () 
Creates an empty spline More...  
static CurvySpline  Create (CurvySpline takeOptionsFrom) 
Creates an empty spline with the same settings as another spline More...  
static CurvySplineSegment  GetFollowUpHeadingControlPoint (CurvySplineSegment followUp, ConnectionHeadingEnum headingDirection) 
This method returns the Control Point next to the FollowUp, based on the ConnectionHeadingEnum's value More...  
static Vector3  TCB (Vector3 T0, Vector3 P0, Vector3 P1, Vector3 T1, float f, float FT0, float FC0, float FB0, float FT1, float FC1, float FB1) 
KochanekBartels/TCBInterpolation More...  
CurvySpline  (  ) 
CurvySplineSegment Add  (  ) 
Adds a Control Point at the end of the spline This method will Refresh the spline and call the relevant events. If you want more control on the order of the added Control Point, its position, or whether Refresh and events should be called, use the InsertBefore(CurvySplineSegment,Vector3,bool,Space) and InsertAfter(CurvySplineSegment,Vector3,bool,Space) and Add(Vector3,Space) instead
CurvySplineSegment [] Add  (  int  controlPointsCount  ) 
Adds several Control Points at the end of the spline This method will Refresh the spline and call the relevant events. If you want more control on the order of the added Control Points, their position, or whether Refresh and events should be called, use the InsertBefore(CurvySplineSegment,Vector3,bool,Space) and InsertAfter(CurvySplineSegment,Vector3,bool,Space) and Add(Vector3[],Space) instead
controlPointsCount  The number of Control Points to add 
CurvySplineSegment Add  (  Vector3  controlPointPosition, 
Space  space  
) 
Adds several Control Points at the end of the spline This method will Refresh the spline and call the relevant events. If you want more control on the order of the added Control Points, their position, or whether Refresh and events should be called, use the InsertBefore(CurvySplineSegment,Vector3,bool,Space) and InsertAfter(CurvySplineSegment,Vector3,bool,Space) instead
controlPointPosition  The position of the Control Point to add 
space  Whether the position is in the local or global space 
CurvySplineSegment [] Add  (  params Vector3[]  controlPointsLocalPositions  ) 
Adds several Control Points at the end of the spline This method will Refresh the spline and call the relevant events. If you want more control on the order of the added Control Points, their position, or whether Refresh and events should be called, use the InsertBefore(CurvySplineSegment,Vector3,bool,Space) and InsertAfter(CurvySplineSegment,Vector3,bool,Space) and Add(Vector3[],Space) instead
controlPointsLocalPositions  The local position of the Control Points to add 
CurvySplineSegment [] Add  (  Vector3[]  controlPointsPositions, 
Space  space  
) 
Adds several Control Points at the end of the spline This method will Refresh the spline and call the relevant events. If you want more control on the order of the added Control Points, their position, or whether Refresh and events should be called, use the InsertBefore(CurvySplineSegment,Vector3,bool,Space) and InsertAfter(CurvySplineSegment,Vector3,bool,Space) instead
controlPointsPositions  The positions of the Control Points to add 
space  Whether the positions are in the local or global space 

static 
CubicBeziere Interpolation
T0  HandleIn 
P0  Pn 
P1  Pn+1 
T1  HandleOut 
f  f in the range 0..1 

static 

static 
Gets the number of Cache Points needed for a certain part of a spline
density  A value between 1 and 100 included. When equal to 100, the number of cache points per world distance unit is equal to maxPointsPerUnit 
segmentLength  the length of the spline segment 
maxPointsPerUnit  Maximum number of Cache Points per world distance unit 

static 
Returns the (floating) number of sampling points per world distance unit.
density  A value between 1 and 100 included. When equal to 100, the number of sampling points per world distance unit is equal to maxPointsPerUnit 
maxPointsPerUnit  Maximum number of sampling points per world distance unit 
bool CanControlPointHaveFollowUp  (  CurvySplineSegment  controlPoint  ) 
Can this control point have a FollowUp? This is true if the control point is the beginning of the first segment or the end of the last segment of an open spline
controlPoint 

static 
CatmullRom Interpolation
T0  Pn1 (In Tangent) 
P0  Pn 
P1  Pn+1 
T1  Pn+2 (Out Tangent) 
f  f in the range 0..1 
float ClampDistance  (  float  distance, 
CurvyClamping  clamping  
) 
Clamps absolute position
float ClampDistance  (  float  distance, 
CurvyClamping  clamping,  
float  min,  
float  max  
) 
Clamps absolute position
float ClampDistance  (  float  distance, 
ref int  dir,  
CurvyClamping  clamping  
) 
Clamps absolute position and sets new direction
float ClampDistance  (  float  distance, 
ref int  dir,  
CurvyClamping  clamping,  
float  min,  
float  max  
) 
Clamps absolute position and sets new direction
void Clear  (  bool  isUndoable = true  ) 
Removes all control points
isUndoable  If true, the clearing of the spline is made undoable (CTRL+Z) in the editor 

static 
Creates an empty spline

static 
Creates an empty spline with the same settings as another spline
takeOptionsFrom  another spline 
void Delete  (  CurvySplineSegment  controlPoint, 
bool  skipRefreshingAndEvents = false 

) 
Deletes a Control Point
controlPoint  a Control Point 
skipRefreshingAndEvents  If true, the spline's Refresh method will not be called, and the relevant events will not be triggered 
void Delete  (  CurvySplineSegment  controlPoint, 
bool  skipRefreshingAndEvents,  
bool  isUndoableDeletion  
) 
Deletes a Control Point
controlPoint  a Control Point 
skipRefreshingAndEvents  If true, the spline's Refresh method will not be called, and the relevant events will not be triggered 
isUndoableDeletion  If true, the destruction of the control point's game object is made undoable (CTRL+Z) in the editor 
CurvySplineSegment DistanceToSegment  (  float  distance, 
CurvyClamping  clamping = CurvyClamping.Clamp 

) 
Gets the segment a certain distance lies within
distance  a distance in the range 0..Length 
clamping  clamping to use 
CurvySplineSegment DistanceToSegment  (  float  distance, 
out float  localDistance,  
CurvyClamping  clamping = CurvyClamping.Clamp 

) 
Gets the segment a certain distance lies within
distance  a distance in the range 0..Length 
localDistance  gets the remaining distance inside the segment 
clamping  clamping to use 
CurvySplineSegment DistanceToSegment  (  float  distance, 
out float  localDistance,  
out bool  isOnSegmentStart,  
out bool  isOnSegmentEnd,  
CurvyClamping  clamping = CurvyClamping.Clamp 

) 
Gets the segment a certain distance lies within
distance  a distance in the range 0..Length 
localDistance  gets the remaining distance inside the segment 
isOnSegmentStart  Is True if the given distance is positioned at the returned segment's start 
isOnSegmentEnd  Is True if the given distance is positioned at the returned segment's end 
clamping  clamping to use 
float DistanceToTF  (  float  distance, 
CurvyClamping  clamping = CurvyClamping.Clamp 

) 
Converts a distance to a TF value TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end.This is the "time" parameter used in the splines' formulas. A point's F is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline
distance  distance 
clamping  Clamping to use 
void Equalize  (  CurvySplineSegment  fromCP = null , 
CurvySplineSegment  toCP = null 

) 
Equalizes the segment length of a certain range
fromCP  starting ControlPoint 
toCP  ending ControlPoint 
void Flip  (  ) 
Flips the direction of the spline, i.e. the first Control Point will become the last and vice versa.
Vector3 [] GetApproximation  (  Space  space = Space.Self  ) 
Gets an array containing all approximation points
space  The space (local/object or global/world) in which the returned result is expressed 
This can be used to feed meshbuilders etc...
Vector3 [] GetApproximation  (  float  fromTF, 
float  toTF,  
bool  includeEndPoint = true , 

Space  space = Space.Self 

) 
Gets all Approximation points for a given spline part
fromTF  start TF 
toTF  end TF 
includeEndPoint  Whether the end position should be included 
space  The space (local/object or global/world) in which the returned result is expressed 
Vector3 [] GetApproximationT  (  Space  space = Space.Self  ) 
Gets an array containing all approximation tangents
space  The space (local/object or global/world) in which the returned result is expressed 
This can be used to feed meshbuilders etc...
Vector3 [] GetApproximationUpVectors  (  Space  space = Space.Self  ) 
Gets an array containing all approximation UpVectors
space  The space (local/object or global/world) in which the returned result is expressed 
This can be used to feed meshbuilders etc...
short GetControlPointIndex  (  CurvySplineSegment  controlPoint  ) 
Index of the control point
controlPoint 
short GetControlPointOrientationAnchorIndex  (  CurvySplineSegment  controlPoint  ) 
The index of the control point being the orientation anchor for the anchor group containing the controlPoint Is 1 for non visible control points

static 
This method returns the Control Point next to the FollowUp, based on the ConnectionHeadingEnum's value
followUp  The Control Point used as a FollowUp 
headingDirection  The head to direction 
U GetInterpolatedMetadata< T, U >  (  float  tf  ) 
Gets an interpolated Metadata value for a certain TF
T  Metadata type inheriting from CurvyInterpolatableMetadataBase 
U  Metadata's Value type 
tf  TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end. This is the "time" parameter used in the splines' formulas. A point's TF is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline 
T  :  CurvyInterpolatableMetadataBase<U> 
T GetMetadata< T >  (  float  tf  ) 
Gets metadata for a certain TF
T  Metadata type interfacing ICurvyMetadata 
tf  TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end. This is the "time" parameter used in the splines' formulas. A point's TF is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline 
T  :  CurvyMetadataBase 
Vector3 GetNearestPoint  (  Vector3  position, 
Space  space  
) 
Gets the point on the spline that is the nearest to a given position
position  The input point's position 
space  The space (local/object or global/world) in which the position and the returned value are expressed 
This method's precision and speed depend on the CacheDensity
float GetNearestPointTF  (  Vector3  localPosition  ) 
Gets the TF value of the point on the spline that is the nearest to a given position TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end. This is the "time" parameter used in the splines' formulas. A point's TF is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline
localPosition  The point's position expressed in the spline's local space 
This method's precision and speed depend on the CacheDensity
float GetNearestPointTF  (  Vector3  position, 
Space  space  
) 
Gets the TF value of the point on the spline that is the nearest to a given position TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end. This is the "time" parameter used in the splines' formulas. A point's TF is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline
position  The point's position 
space  The space (local/object or global/world) in which the position is expressed 
This method's precision and speed depend on the CacheDensity
float GetNearestPointTF  (  Vector3  localPosition, 
out Vector3  nearestPoint  
) 
Gets the TF value of the point on the spline that is the nearest to a given position TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end. This is the "time" parameter used in the splines' formulas. A point's TF is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline
localPosition  The point's position expressed in the spline's local space 
nearestPoint  the nearest point on the spline to the given localPosition , expressed in the local space 
This method's precision and speed depend on the CacheDensity
float GetNearestPointTF  (  Vector3  position, 
out Vector3  nearestPoint,  
Space  space  
) 
Gets the TF value of the point on the spline that is the nearest to a given position TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end. This is the "time" parameter used in the splines' formulas. A point's TF is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline
position  The point's position 
nearestPoint  the nearest point on the spline to the given position , expressed in the space defined by the space parameter 
space  The space (local/object or global/world) in which the position is expressed 
This method's precision and speed depend on the CacheDensity
float GetNearestPointTF  (  Vector3  position, 
int  searchStartSegmentIndex = 0 , 

int  searchEndSegmentIndex = 1 , 

Space  space = Space.Self 

) 
Gets the TF value of the point on the spline that is the nearest to a given position TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end. This is the "time" parameter used in the splines' formulas. A point's TF is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline
position  The point's position 
searchStartSegmentIndex  the index of the first segment to include in the search. Set it to 0 to start searching from the spline's start 
searchEndSegmentIndex  the index of the last segment to include in the search. Set it to 1 to search until the spline's end 
space  The space (local/object or global/world) in which the position is expressed 
This method's precision and speed depend on the CacheDensity
float GetNearestPointTF  (  Vector3  position, 
out Vector3  nearestPoint,  
int  searchStartSegmentIndex = 0 , 

int  searchEndSegmentIndex = 1 , 

Space  space = Space.Self 

) 
Gets the TF value of the point on the spline that is the nearest to a given position TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end. This is the "time" parameter used in the splines' formulas. A point's TF is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline
position  The point's position 
nearestPoint  the nearest point on the spline to the given position , expressed in the space defined by the space parameter 
searchStartSegmentIndex  the index of the first segment to include in the search. Set it to 0 to start searching from the spline's start 
searchEndSegmentIndex  the index of the last segment to include in the search. Set it to 1 to search until the spline's end 
space  The space (local/object or global/world) in which the position is expressed 
This method's precision and speed depend on the CacheDensity
float GetNearestPointTF  (  Vector3  position, 
out Vector3  nearestPoint,  
[CanBeNull] out CurvySplineSegment  nearestSegment,  
out float  nearestPointLocalF,  
int  searchStartSegmentIndex = 0 , 

int  searchEndSegmentIndex = 1 , 

Space  space = Space.Self 

) 
Gets the TF value of the point on the spline that is the nearest to a given position TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end. This is the "time" parameter used in the splines' formulas. A point's TF is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline
position  The point's position 
nearestPoint  the nearest point on the spline to the given position , expressed in the space defined by the space parameter 
nearestSegment  the nearest segment of the spline to the given position 
nearestPointLocalF  LocalF of the nearest point on the nearest segment 
searchStartSegmentIndex  the index of the first segment to include in the search. Set it to 0 to start searching from the spline's start 
searchEndSegmentIndex  the index of the last segment to include in the search. Set it to 1 to search until the spline's end 
space  The space (local/object or global/world) in which the position is expressed 
This method's precision and speed depend on the CacheDensity
CurvySplineSegment GetNextControlPoint  (  CurvySplineSegment  controlPoint  ) 
The next control point on the spline. Is null if none. FollowUp not considered
controlPoint 
short GetNextControlPointIndex  (  CurvySplineSegment  controlPoint  ) 
The index of the next control point on the spline. Is 1 if none. FollowUp not considered
controlPoint 
CurvySplineSegment GetNextControlPointUsingFollowUp  (  CurvySplineSegment  controlPoint  ) 
The next control point. Is null if none. FollowUp is considered
controlPoint 
CurvySplineSegment GetNextSegment  (  CurvySplineSegment  segment  ) 
The next control point on the spline if it starts a segment. Is null if none. FollowUp not considered
segment 
SubArray<Vector3> GetNormalsCache  (  Space  space  ) 
Gets an array containing all approximation UpVectors
space  The space (local/object or global/world) in which the returned result is expressed 
Returns a copy of the internal cache
Quaternion GetOrientationFast  (  float  tf, 
bool  inverse = false , 

Space  space = Space.Self 

) 
Gets a rotation looking to Tangent with the head upwards along the UpVector
tf  TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end. This is the "time" parameter used in the splines' formulas. A point's TF is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline 
inverse  whether the orientation should be inversed or not 
space  The space (local/object or global/world) in which the returned result is expressed 
Vector3 GetOrientationUpFast  (  float  tf, 
Space  space = Space.Self 

) 
Gets the Up vector of a point on the spline segment. Instead of computing the exact value, this method uses a linear interpolation between cached points for faster result
tf  TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end. This is the "time" parameter used in the splines' formulas. A point's TF is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline 
space  The space (local/object or global/world) in which the returned result is expressed 
SubArray<Vector3> GetPositionsCache  (  Space  space  ) 
Gets an array containing all approximation points
space  The space (local/object or global/world) in which the returned result is expressed 
Returns a copy of the internal cache
CurvySplineSegment GetPreviousControlPoint  (  CurvySplineSegment  controlPoint  ) 
The previous control point on the spline. Is null if none. FollowUp not considered
controlPoint 
short GetPreviousControlPointIndex  (  CurvySplineSegment  controlPoint  ) 
The index of the previous control point on the spline. Is 1 if none. FollowUp not considered
controlPoint 
CurvySplineSegment GetPreviousControlPointUsingFollowUp  (  CurvySplineSegment  controlPoint  ) 
The previous control point. Is null if none. FollowUp is considered
controlPoint 
CurvySplineSegment GetPreviousSegment  (  CurvySplineSegment  segment  ) 
The previous control point on the spline if it starts a segment. Is null if none. FollowUp not considered.
segment 
short GetSegmentIndex  (  CurvySplineSegment  segment  ) 
Index of the segment that this control point starts. 1 if control point does not start a segment.
segment 
Vector3 GetTangent  (  float  tf, 
Space  space = Space.Self 

) 
Gets the normalized tangent at a point on the spline segment
tf  TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end. This is the "time" parameter used in the splines' formulas. A point's TF is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline 
space  The space (local/object or global/world) in which the returned result is expressed 
Vector3 GetTangent  (  float  tf, 
Vector3  position,  
Space  space = Space.Self 

) 
Gets the normalized tangent at a point on the spline segment. This method is faster than GetTangent(float, Space) if you have already the position of the point. Instead of computing the exact value, this method uses a linear interpolation between cached points for faster result
tf  TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end. This is the "time" parameter used in the splines' formulas. A point's TF is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline 
position  the position of the point at localF. In other words, the result of Interpolate(float, Space) 
space  The space (local/object or global/world) in which the returned result and the position parameter are expressed 
Vector3 GetTangentByDistance  (  float  distance, 
Space  space = Space.Self 

) 
Gets the normalized tangent at a point on the spline segment
distance  The distance between the spline's start and the point you are interested in. Value should be in the range from 0 to Length inclusive 
space  The space (local/object or global/world) in which the returned result is expressed 
Vector3 GetTangentByDistanceFast  (  float  distance, 
Space  space = Space.Self 

) 
Gets the normalized tangent at a point on the spline segment. Instead of computing the exact value, this method uses a linear interpolation between cached points for faster result
distance  The distance between the spline's start and the point you are interested in. Value should be in the range from 0 to Length inclusive 
space  The space (local/object or global/world) in which the returned result is expressed 
Vector3 GetTangentFast  (  float  tf, 
Space  space = Space.Self 

) 
Gets the normalized tangent at a point on the spline segment. Instead of computing the exact value, this method uses a linear interpolation between cached points for faster result
tf  TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end. This is the "time" parameter used in the splines' formulas. A point's TF is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline 
space  The space (local/object or global/world) in which the returned result is expressed 
SubArray<Vector3> GetTangentsCache  (  Space  space  ) 
Gets an array containing all approximation tangents
space  The space (local/object or global/world) in which the returned result is expressed 
Returns a copy of the internal cache
CurvySplineSegment InsertAfter  (  CurvySplineSegment  controlPoint, 
bool  skipRefreshingAndEvents = false 

) 
Inserts a Control Point after a given Control Point
If you add several Control Points in a row, using Add(Vector3[] controlPoints) will be more efficient
controlPoint  A control point of the spline, behind which the new control point will be added. If null, the CP will be added at the end of the spline 
skipRefreshingAndEvents  If true, the spline's Refresh method will not be called, and the relevant events will not be triggered 
CurvySplineSegment InsertAfter  (  [CanBeNull] CurvySplineSegment  controlPoint, 
Vector3  position,  
bool  skipRefreshingAndEvents = false , 

Space  space = Space.World 

) 
Inserts a Control Point after a given Control Point
If you add several Control Points in a row, using Add(Vector3[] controlPoints) will be more efficient
controlPoint  A control point of the spline, behind which the new control point will be added. If null, the CP will be added at the end of the spline 
position  The position of the control point at its creation 
skipRefreshingAndEvents  If true, the spline's Refresh method will not be called, and the relevant events will not be triggered 
space  Whether the position is in the local or global space 
CurvySplineSegment InsertBefore  (  CurvySplineSegment  controlPoint, 
bool  skipRefreshingAndEvents = false 

) 
Inserts a Control Point before a given Control Point
If you add several Control Points in a row, using Add(Vector3[] controlPoints) will be more efficient
controlPoint  A control point of the spline, before which the new control point will be added. If null, the CP will be added at the start of the spline 
skipRefreshingAndEvents  If true, the spline's Refresh method will not be called, and the relevant events will not be triggered 
CurvySplineSegment InsertBefore  (  [CanBeNull] CurvySplineSegment  controlPoint, 
Vector3  position,  
bool  skipRefreshingAndEvents = false , 

Space  space = Space.World 

) 
Inserts a Control Point before a given Control Point
If you add several Control Points in a row, using Add(Vector3[] controlPoints) will be more efficient
controlPoint  A control point of the spline, before which the new control point will be added. If null, the CP will be added at the start of the spline 
position  The position of the control point at its creation 
skipRefreshingAndEvents  If true, the spline's Refresh method will not be called, and the relevant events will not be triggered 
space  Whether the position is in the local or global space 
Vector3 Interpolate  (  float  tf, 
Space  space = Space.Self 

) 
Gets the position of a point on the spline segment
tf  TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end.This is the "time" parameter used in the splines' formulas. A point's F is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline 
space  The space (local/object or global/world) in which the returned result is expressed 
void InterpolateAndGetTangent  (  float  tf, 
out Vector3  position,  
out Vector3  tangent,  
Space  space = Space.Self 

) 
Gets the position and normalized tangent at a point on the spline segment Is Faster than calling Interpolate(float, Space) and Interpolate(float, Space) separately
tf  TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end. This is the "time" parameter used in the splines' formulas. A point's TF is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline 
position  the output position 
tangent  the output tangent 
space  The space (local/object or global/world) in which the returned result is expressed 
void InterpolateAndGetTangentFast  (  float  tf, 
out Vector3  position,  
out Vector3  tangent,  
Space  space = Space.Self 

) 
Gets the position and normalized tangent at a point on the spline segment Is Faster than calling Interpolate(float, Space) and Interpolate(float, Space) separately Instead of computing the exact value, this method uses a linear interpolation between cached points for faster result
tf  TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end. This is the "time" parameter used in the splines' formulas. A point's TF is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline 
position  the output position 
tangent  the output tangent 
space  The space (local/object or global/world) in which the returned result is expressed 
Vector3 InterpolateByDistance  (  float  distance, 
Space  space = Space.Self 

) 
Gets the position of a point on the spline segment
distance  The distance between the spline's start and the point you are interested in. Value should be in the range from 0 to Length inclusive 
space  The space (local/object or global/world) in which the returned result is expressed 
Vector3 InterpolateByDistanceFast  (  float  distance, 
Space  space = Space.Self 

) 
Gets the position of a point on the spline segment. Instead of computing the exact value, this method uses a linear interpolation between cached points for faster result
distance  The distance between the spline's start and the point you are interested in. Value should be in the range from 0 to Length inclusive 
space  The space (local/object or global/world) in which the returned result is expressed 
Vector3 InterpolateFast  (  float  tf, 
Space  space = Space.Self 

) 
Gets the position of a point on the spline segment. Instead of computing the exact value, this method uses a linear interpolation between cached points for faster result
tf  TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end. This is the "time" parameter used in the splines' formulas. A point's TF is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline 
space  The space (local/object or global/world) in which the returned result is expressed 
bool IsControlPointAnOrientationAnchor  (  CurvySplineSegment  controlPoint  ) 
Is the control point an orientation anchor? The answer is related to the control point's serialized OrientationAnchor value, plus it's position in the spline.
controlPoint 
bool IsControlPointASegment  (  CurvySplineSegment  controlPoint  ) 
Is the control point the start of a segment?
controlPoint 
bool IsControlPointVisible  (  CurvySplineSegment  controlPoint  ) 
Is the control point part of a segment (whether starting it or ending it)
controlPoint 
bool IsPlanar  (  out int  ignoreAxis  ) 
Checks if the curve is planar
ignoreAxis  returns the axis that can be ignored (0=x,1=y,2=z) 
bool IsPlanar  (  out bool  xplanar, 
out bool  yplanar,  
out bool  zplanar  
) 
Checks if the curve is planar
xplanar  whether the xaxis is planar 
yplanar  whether the yaxis is planar 
zplanar  whether the zaxis is planar 
bool IsPlanar  (  CurvyPlane  plane  ) 
Determines if the spline is at zero position on a certain plane
plane  the plane the spline should be tested against 
void JoinWith  (  CurvySplineSegment  destCP  ) 
Insert this spline after another spline's destination Control Point and delete this spline
destCP  the Control Point of the destination spline 
void MakePlanar  (  CurvyPlane  plane  ) 
Forces the spline to be at zero position on a certain plane
plane  the plane the should be on 
void MakePlanar  (  int  axis  ) 
Equalize one axis of the spline to match the first control points's value
axis  the axis to equalize (0=x,1=y,2=z) 
void MoveControlPoints  (  int  startIndex, 
int  count,  
CurvySplineSegment  destCP  
) 
Moves ControlPoints from this spline, inserting them after a destination ControlPoint of another spline
startIndex  ControlPointIndex of the first CP to move 
count  number of ControlPoints to move 
destCP  ControlPoint at the destination spline to insert after 
void Normalize  (  ) 
Applies a spline's scale to it's Control Points and resets scale
void Refresh  (  ) 
Refreshs the spline
This is called automatically on the next Update() if any changes are pending
float SegmentToTF  (  CurvySplineSegment  segment  ) 
Gets a TF value from a segment TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end.This is the "time" parameter used in the splines' formulas. A point's F is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline
segment  a segment 
float SegmentToTF  (  CurvySplineSegment  segment, 
float  localF  
) 
Gets a TF value from a segment and a local F TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end.This is the "time" parameter used in the splines' formulas. A point's F is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline
segment  a segment 
localF  F of this segment in the range 0..1 
void SetDirty  (  CurvySplineSegment  dirtyControlPoint, 
SplineDirtyingType  dirtyingType  
) 
Marks a Control Point to get recalculated on next call to Refresh(). Will also mark connected control points and control points that depend on the current one through the FollowUp feature.
dirtyControlPoint  the Control Point to dirty 
dirtyingType  Defines what aspect should be dirtied 
void SetDirtyAll  (  ) 
Ensures the whole spline (curve & orientation) will be recalculated on next call to Refresh()
void SetDirtyAll  (  SplineDirtyingType  dirtyingType, 
bool  dirtyConnectedControlPoints  
) 
Ensure the whole spline will be recalculated on next call to Refresh()
dirtyingType  Defines what aspect should be dirtied 
dirtyConnectedControlPoints  whether to set dirty other splines's control points connected to one of this spline's control points 
void SetDirtyPartial  (  CurvySplineSegment  dirtyControlPoint, 
SplineDirtyingType  dirtyingType  
) 
Marks a Control Point to get recalculated on next call to Refresh(). Will also mark connected control points and control points that depend on the current one through the FollowUp feature. Be aware, this method, and unlike SetDirty, will not mark as dirty the control points connected to the "controlPoint" parameter
dirtyControlPoint  the Control Point to dirty 
dirtyingType  Defines what aspect should be dirtied 
void SetFirstControlPoint  (  CurvySplineSegment  controlPoint  ) 
Defines the given Control Point to be the first Control Point of the spline
controlPoint  One of this spline's control points 
void SetFromString  (  string  fieldAndValue  ) 
Eventfriendly helper that sets a field or property value
fieldAndValue  e.g. "MyValue=42" 
Vector3 SetPivot  (  float  xRel = 0 , 
float  yRel = 0 , 

float  zRel = 0 , 

bool  preview = false 

) 
Sets the pivot of the spline
xRel  1 to 1 
yRel  1 to 1 
zRel  1 to 1 
preview  if true, only return the new pivot position 
void Simplify  (  CurvySplineSegment  fromCP = null , 
CurvySplineSegment  toCP = null 

) 
Simplifies the spline, i.e. remove segments from a certain range
fromCP  starting ControlPoint 
toCP  ending ControlPoint 
CurvySpline Split  (  CurvySplineSegment  controlPoint  ) 
Splits this spline with the parameter controlPoint becoming the first Control Point of the new spline
void Subdivide  (  CurvySplineSegment  fromCP = null , 
CurvySplineSegment  toCP = null 

) 
Subdivides the spline, i.e. adds additional segments to a certain range
fromCP  starting ControlPoint 
toCP  ending ControlPoint 
void SyncSplineFromHierarchy  (  ) 
Rebuilds the ControlPoints list from the hierarchy. It sets the spline as Dirty

static 
KochanekBartels/TCBInterpolation
T0  Pn1 (In Tangent) 
P0  Pn 
P1  Pn+1 
T1  Pn+2 (Out Tangent) 
f  f in the range 0..1 
FT0  Start Tension 
FC0  Start Continuity 
FB0  Start Bias 
FT1  End Tension 
FC1  End Continuity 
FB1  End Bias 
float TFToDistance  (  float  tf, 
CurvyClamping  clamping = CurvyClamping.Clamp 

) 
Converts a TF value to a distance
tf  TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end.This is the "time" parameter used in the splines' formulas. A point's F is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline 
clamping  Clamping to use 
CurvySplineSegment TFToSegment  (  float  tf, 
out float  localF,  
out bool  isOnSegmentStart,  
out bool  isOnSegmentEnd,  
CurvyClamping  clamping  
) 
Gets the segment and the local F for a certain TF
tf  TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end.This is the "time" parameter used in the splines' formulas. A point's F is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline 
localF  gets the remaining localF in the range 0..1 
isOnSegmentStart  Is True if the given distance is positioned at the returned segment's start 
isOnSegmentEnd  Is True if the given distance is positioned at the returned segment's end 
clamping  Clamping to use 
CurvySplineSegment TFToSegment  (  float  tf, 
out float  localF,  
CurvyClamping  clamping  
) 
Gets the segment and the local F for a certain TF
tf  TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end.This is the "time" parameter used in the splines' formulas. A point's F is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline 
localF  gets the remaining localF in the range 0..1 
clamping  Clamping to use 
CurvySplineSegment TFToSegment  (  float  tf, 
CurvyClamping  clamping  
) 
Gets the segment for a certain TF
tf  TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end.This is the "time" parameter used in the splines' formulas. A point's F is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline 
clamping  Clamping to use 
CurvySplineSegment TFToSegment  (  float  tf  ) 
Gets the segment for a certain TF clamped to 0..1
tf  TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end.This is the "time" parameter used in the splines' formulas. A point's F is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline 
CurvySplineSegment TFToSegment  (  float  tf, 
out float  localF  
) 
Gets the segment and the local F for a certain TF clamped to 0..1
tf  TF stands for Total Fragment. It's a value ranging from 0 to 1 inclusive. 0 means the spline's start and 1 means the spline's end.This is the "time" parameter used in the splines' formulas. A point's F is not proportional to its distance from the spline's start. Depending on the spline, a value of 0.5 does not always mean the middle, distance wise, of the spline 
localF  gets the remaining localF in the range 0..1 
Vector3 ToLocalDirection  (  Vector3  localDirection  ) 
Transforms direction from world space to local space
Vector3 ToLocalPosition  (  Vector3  worldPosition  ) 
Transforms position from world space to local space
Vector3 ToWorldDirection  (  Vector3  localDirection  ) 
Transforms direction from local space to world space
Vector3 ToWorldPosition  (  Vector3  localPosition  ) 
Transforms position from local space to world space
bool ShowGizmos = true 
Whether to show the Gizmos enabled in the view settings or not at all

getset 
Whether the first/last Control Point should act as the end tangent, too.
Ignored by linear splines and Bezier ones

getset 
Gets or sets the default Handle distance for Bezier splines

getset 
Global Bias
This only applies to TCB interpolation

get 
The bounding box of the spline, in world space

getset 
Used only when Interpolation is CurvyInterpolation.BSpline The degree of the piecewise polynomial functions Is in the range [2; control points count  1]

getset 
Gets or sets the cache density Defines how densely the cached points are. When the value is 100, the number of cached points per world distance unit is equal to the spline's MaxPointsPerUnit

get 
Gets total Cache Size

getset 
Whether the spline should automatically refresh when a Control Point's position change
Enable this if you animate a Control Point's transform!

getset 
Whether this spline is closed or not
AutoEndTangents's value can be updated depending on Close value

getset 
Global Continuity
This only applies to TCB interpolation

get 
Gets the number of Control Points

get 
The list of control points

get 
Gets the number of Segments

get 
When a spline is dirty, this means that it's cached data is no more up to date, and should be updated. The update is done automatically each frame when needed, or manually by calling Refresh

get 
Gets the first segment of the spline

get 
Gets the first visible Control Point (equals the first segment or this[0])
Can be null, for example for a CatmullRom spline whith only two splines and AutoEndTangent set to false

getset 
Gets or sets Spline color

getset 
Gets or sets selected segment color

get 
Returns true if the global position, rotation or scale of the spline has changed this frame

getset 
The interpolation method used by this spline
AutoEndTangents's value can be updated depending on Interpolation value

getset 
Used only when Interpolation is CurvyInterpolation.BSpline Make the curve pass through the first and last control points by increasing the multiplicity of the first and last knots. In technical terms, when this parameter is true, the knot vector is [0, 0, ...,0, 1, 2, ..., N1, N, N, ..., N]. When false, it is [0, 1, 2, ..., N1, N]

get 
Whether the spline is fully initialized and all segments loaded

get 
Gets the last segment of the spline

get 
Gets the last visible Control Point (i.e. the end CP of the last segment)
Is null if spline has no segments

get 
Gets the total length of the Spline or SplineGroup
The accuracy depends on the current Granularity (higher Granularity means more exact values)

getset 
The maximum number of sampling points per world distance unit. Sampling is used in caching or shape extrusion for example

getset 
Callback after a Control Point has been added and the spline was refreshed

getset 
Callback after one or more Control Points have been added or deleted
This executes last, after individual add/delete events and OnRefresh

getset 
Callback before a Control Point is about to be added

getset 
Callback before a Control Point is about to be deleted. Return false to cancel the execution.

getset 
Is triggered when the global position, rotation or scale of the spline changes. The triggering instance of CurvySpline is passed as a parameter of the delegate
This is triggered at the very end of the spline updating method. UpdateIn

getset 

getset 
Orientation mode

getset 
The local 2D plane to restrict the spline's control point in

getset 
Whether to restrict Control Points to a local 2D plane

getset 
Global Tension
This only applies to TCB interpolation

get 
Gets the Segment at a certain index
idx  an index in the range 0..Count 

getset 

getset 
Whether to use GameObject pooling for Control Points at runtime

getset 
Whether to use threading where applicable or not. Threading is currently not supported when targeting WebGL and Universal Windows Platform