
bool  ShowGizmos = true 
 Whether to show the Gizmos enabled in the view settings or not at all More...


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. Return false to cancel the execution 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...


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 (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  Parameters

isUndoable  If true, the clearing of the spline is made undoable (CTRL+Z) in the editor 
More...


 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...

