Class SplineUtility
A collection of methods for extracting information about Spline types.
Inherited Members
Namespace: UnityEngine.Splines
Assembly: Unity.Splines.dll
Syntax
public static class SplineUtility
Remarks
SplineUtility
methods do not consider Transform values except where explicitly requested. To perform operations in world space, you can use the SplineContainer evaluate methods or build a NativeSpline with a constructor that accepts a matrix and evaluate that spline.
Fields
CatmullRomTension
The tension value for a Catmull-Rom type spline. Use with SetTangentMode(TangentMode) and SetAutoSmoothTension(int, float) to control the curvature of the spline at control points.
Declaration
public const float CatmullRomTension = 0.5
Field Value
Type | Description |
---|---|
float |
DefaultTension
The default tension value used for AutoSmooth knots. Use with SetTangentMode(TangentMode) and SetAutoSmoothTension(int, float) to control the curvature of the spline at control points.
Declaration
public const float DefaultTension = 0.33333334
Field Value
Type | Description |
---|---|
float |
DrawResolutionDefault
The default resolution used when unrolling a curve to draw a preview in the Scene View.
Pick resolution is used when determining how many segments are required to unroll a curve. Unrolling is the process of calculating a series of line segments to approximate a curve. Some functions in SplineUtility allow you to specify a resolution. Lower resolution means fewer segments, while higher resolutions result in more segments. Use lower resolutions where performance is critical and accuracy is not paramount. Use higher resolution where a fine degree of accuracy is necessary and performance is less important.
Declaration
public const int DrawResolutionDefault = 10
Field Value
Type | Description |
---|---|
int |
PickResolutionDefault
The default resolution used when unrolling a curve to hit test while picking (selecting a spline with a cursor).
Pick resolution is used when determining how many segments are required to unroll a curve. Unrolling is the process of calculating a series of line segments to approximate a curve. Some functions in SplineUtility allow you to specify a resolution. Lower resolution means fewer segments, while higher resolutions result in more segments. Use lower resolutions where performance is critical and accuracy is not paramount. Use higher resolution where a fine degree of accuracy is necessary and performance is less important.
Declaration
public const int PickResolutionDefault = 4
Field Value
Type | Description |
---|---|
int |
PickResolutionMax
The maximum resolution allowed when unrolling a curve to hit test while picking (selecting a spline with a cursor).
Pick resolution is used when determining how many segments are required to unroll a curve. Unrolling is the process of calculating a series of line segments to approximate a curve. Some functions in SplineUtility allow you to specify a resolution. Lower resolution means fewer segments, while higher resolutions result in more segments. Use lower resolutions where performance is critical and accuracy is not paramount. Use higher resolution where a fine degree of accuracy is necessary and performance is less important.
Declaration
public const int PickResolutionMax = 64
Field Value
Type | Description |
---|---|
int |
PickResolutionMin
The minimum resolution allowable when unrolling a curve to hit test while picking (selecting a spline with a cursor).
Pick resolution is used when determining how many segments are required to unroll a curve. Unrolling is the process of calculating a series of line segments to approximate a curve. Some functions in SplineUtility allow you to specify a resolution. Lower resolution means fewer segments, while higher resolutions result in more segments. Use lower resolutions where performance is critical and accuracy is not paramount. Use higher resolution where a fine degree of accuracy is necessary and performance is less important.
Declaration
public const int PickResolutionMin = 2
Field Value
Type | Description |
---|---|
int |
Methods
AddSpline<T>(T)
Creates a new spline and adds it to the ISplineContainer.
Declaration
public static Spline AddSpline<T>(this T container) where T : ISplineContainer
Parameters
Type | Name | Description |
---|---|---|
T | container | The target container. |
Returns
Type | Description |
---|---|
Spline | Returns the spline that was created and added to the container. |
Type Parameters
Name | Description |
---|---|
T | A type that implements ISplineContainer. |
AddSpline<T>(T, Spline)
Add a new Spline to the ISplineContainer.
Declaration
public static void AddSpline<T>(this T container, Spline spline) where T : ISplineContainer
Parameters
Type | Name | Description |
---|---|---|
T | container | The target container. |
Spline | spline | The spline to append to this container. |
Type Parameters
Name | Description |
---|---|
T | A type that implements ISplineContainer. |
AreKnotLinked(ISplineContainer, SplineKnotIndex, SplineKnotIndex)
Checks if two knots from an ISplineContainer are linked together.
Declaration
public static bool AreKnotLinked(this ISplineContainer container, SplineKnotIndex knotA, SplineKnotIndex knotB)
Parameters
Type | Name | Description |
---|---|---|
ISplineContainer | container | The target SplineContainer. |
SplineKnotIndex | knotA | The first knot to check. |
SplineKnotIndex | knotB | The second knot to check against. |
Returns
Type | Description |
---|---|
bool |
CalculateLength<T>(T, float4x4)
Calculate the length of a spline when transformed by a matrix.
Declaration
public static float CalculateLength<T>(this T spline, float4x4 transform) where T : ISpline
Parameters
Type | Name | Description |
---|---|---|
T | spline | |
float4x4 | transform |
Returns
Type | Description |
---|---|
float |
Type Parameters
Name | Description |
---|---|
T | A type implementing ISpline. |
CalculateUpVector<T>(T, float)
Calculate the normal (up) vector of a spline. This is a more accurate but more expensive operation than EvaluateUpVector<T>(T, float).
Declaration
public static float3 CalculateUpVector<T>(this T spline, float t) where T : ISpline
Parameters
Type | Name | Description |
---|---|---|
T | spline | The NativeSpline to evaluate. |
float | t | A value between 0 and 1 representing a ratio of the curve. |
Returns
Type | Description |
---|---|
float3 | An up vector |
Type Parameters
Name | Description |
---|---|
T | A type implementing ISpline. |
ConvertIndexUnit<T>(T, float, PathIndexUnit)
Given a normalized interpolation ratio, calculate the associated interpolation value in another PathIndexUnit regarding a specific spline.
Declaration
public static float ConvertIndexUnit<T>(this T spline, float t, PathIndexUnit targetPathUnit) where T : ISpline
Parameters
Type | Name | Description |
---|---|---|
T | spline | The Spline to use for the conversion. |
float | t | Normalized interpolation ratio (0 to 1). |
PathIndexUnit | targetPathUnit | The PathIndexUnit to which |
Returns
Type | Description |
---|---|
float | The interpolation value converted to targetPathUnit. |
Type Parameters
Name | Description |
---|---|
T | A type implementing ISpline. |
ConvertIndexUnit<T>(T, float, PathIndexUnit, PathIndexUnit)
Given an interpolation value using one of the various PathIndexUnit types, calculate the associated interpolation value in another PathIndexUnit regarding a specific spline.
Declaration
public static float ConvertIndexUnit<T>(this T spline, float value, PathIndexUnit fromPathUnit, PathIndexUnit targetPathUnit) where T : ISpline
Parameters
Type | Name | Description |
---|---|---|
T | spline | The spline to use for the conversion. |
float | value | Interpolation value in the original PathIndexUnit |
PathIndexUnit | fromPathUnit | The PathIndexUnit for the original interpolation value type. |
PathIndexUnit | targetPathUnit | The PathIndexUnit to which |
Returns
Type | Description |
---|---|
float | The interpolation value converted to targetPathUnit. |
Type Parameters
Name | Description |
---|---|
T | A type implementing ISpline. |
CopyKnotLinks<T>(T, int, int)
Copies knot links between two splines of the same ISplineContainer.
Declaration
public static void CopyKnotLinks<T>(this T container, int srcSplineIndex, int destSplineIndex) where T : ISplineContainer
Parameters
Type | Name | Description |
---|---|---|
T | container | The target SplineContainer. |
int | srcSplineIndex | The index of the source spline to copy from. |
int | destSplineIndex | The index of the destination spline to copy to. |
Type Parameters
Name | Description |
---|---|
T | A type implementing ISplineContainer. |
Remarks
The knot links will only be copied if both of the spline indices are valid and both splines have the same amount of knots.
CurveToSplineT<T>(T, float)
Given an interpolation value for a curve, calculate the relative normalized spline interpolation.
Declaration
public static float CurveToSplineT<T>(this T spline, float curve) where T : ISpline
Parameters
Type | Name | Description |
---|---|---|
T | spline | The target spline. |
float | curve | A curve index and normalized interpolation. The curve index is represented by the integer part of the float, and interpolation is the fractional part. This is the format used by Knot. |
Returns
Type | Description |
---|---|
float | An interpolation value relative to normalized Spline length (0 to 1). |
Type Parameters
Name | Description |
---|---|
T | A type implementing ISpline. |
See Also
DuplicateSpline(ISplineContainer, SplineKnotIndex, SplineKnotIndex, out int)
Duplicate a spline between 2 knots of a source spline.
Declaration
public static void DuplicateSpline(this ISplineContainer container, SplineKnotIndex fromKnot, SplineKnotIndex toKnot, out int newSplineIndex)
Parameters
Type | Name | Description |
---|---|---|
ISplineContainer | container | The target SplineContainer. |
SplineKnotIndex | fromKnot | The start knot to use to duplicate the spline. |
SplineKnotIndex | toKnot | The end knot to use to duplicate the spline. |
int | newSplineIndex | The index of the new created spline in the container. |
Exceptions
Type | Condition |
---|---|
ArgumentException | Thrown when the provided knots aren't valid or aren't on the same spline. |
EvaluateAcceleration<T>(T, float)
Return an interpolated acceleration at ratio t.
Declaration
public static float3 EvaluateAcceleration<T>(this T spline, float t) where T : ISpline
Parameters
Type | Name | Description |
---|---|---|
T | spline | The spline to interpolate. |
float | t | A value between 0 and 1 representing the ratio along the curve. |
Returns
Type | Description |
---|---|
float3 | An acceleration on the spline. |
Type Parameters
Name | Description |
---|---|
T | A type implementing ISpline. |
EvaluateCurvatureCenter<T>(T, float)
Return the curvature center at ratio t. The curvature center represents the center of the circle that is tangent to the curve at t. This circle is in the plane defined by the curve velocity (tangent) and the curve acceleration at that point.
Declaration
public static float3 EvaluateCurvatureCenter<T>(this T spline, float t) where T : ISpline
Parameters
Type | Name | Description |
---|---|---|
T | spline | The spline to interpolate. |
float | t | A value between 0 and 1 representing the ratio along the curve. |
Returns
Type | Description |
---|---|
float3 | A point representing the curvature center associated to the position at t on the spline. |
Type Parameters
Name | Description |
---|---|
T | A type implementing ISpline. |
EvaluateCurvature<T>(T, float)
Return an interpolated curvature at ratio t.
Declaration
public static float EvaluateCurvature<T>(this T spline, float t) where T : ISpline
Parameters
Type | Name | Description |
---|---|---|
T | spline | The spline to interpolate. |
float | t | A value between 0 and 1 representing the ratio along the curve. |
Returns
Type | Description |
---|---|
float | A curvature on the spline. |
Type Parameters
Name | Description |
---|---|
T | A type implementing ISpline. |
EvaluateNurbs(float, List<float3>, List<double>, int, out float3)
Computes the interpolated position for NURBS defined by order, controlPoints, and knotVector at ratio t.
Declaration
public static bool EvaluateNurbs(float t, List<float3> controlPoints, List<double> knotVector, int order, out float3 position)
Parameters
Type | Name | Description |
---|---|---|
float | t | The value between knotVector[0] and knotVector[-1] that represents the ratio along the curve. |
List<float3> | controlPoints | The control points for the NURBS. |
List<double> | knotVector | The knot vector for the NURBS. There must be at least order + controlPoints.Length - 1 knots. |
int | order | The order of the curve. For example, 4 for a cubic curve or 3 for quadratic. |
float3 | position | The output variable for the float3 position at t. |
Returns
Type | Description |
---|---|
bool | True if successful. |
EvaluatePosition<T>(T, float)
Return an interpolated position at ratio t.
Declaration
public static float3 EvaluatePosition<T>(this T spline, float t) where T : ISpline
Parameters
Type | Name | Description |
---|---|---|
T | spline | The spline to interpolate. |
float | t | A value between 0 and 1 representing the ratio along the curve. |
Returns
Type | Description |
---|---|
float3 | A position on the spline. |
Type Parameters
Name | Description |
---|---|
T | A type implementing ISpline. |
EvaluateTangent<T>(T, float)
Return an interpolated direction at ratio t.
Declaration
public static float3 EvaluateTangent<T>(this T spline, float t) where T : ISpline
Parameters
Type | Name | Description |
---|---|---|
T | spline | The spline to interpolate. |
float | t | A value between 0 and 1 representing the ratio along the curve. |
Returns
Type | Description |
---|---|
float3 | A direction on the spline. |
Type Parameters
Name | Description |
---|---|
T | A type implementing ISpline. |
EvaluateUpVector<T>(T, float)
Evaluate the normal (up) vector of a spline.
Declaration
public static float3 EvaluateUpVector<T>(this T spline, float t) where T : ISpline
Parameters
Type | Name | Description |
---|---|---|
T | spline | The spline to evaluate. |
float | t | A value between 0 and 1 representing a ratio of the curve. |
Returns
Type | Description |
---|---|
float3 | An up vector |
Type Parameters
Name | Description |
---|---|
T | A type implementing ISpline. |
Evaluate<T>(T, float, out float3, out float3, out float3)
Compute interpolated position, direction and upDirection at ratio t. Calling this method to get the 3 vectors is faster than calling independently EvaluatePosition, EvaluateDirection and EvaluateUpVector for the same time t as it reduces some redundant computation.
Declaration
public static bool Evaluate<T>(this T spline, float t, out float3 position, out float3 tangent, out float3 upVector) where T : ISpline
Parameters
Type | Name | Description |
---|---|---|
T | spline | The spline to interpolate. |
float | t | A value between 0 and 1 representing the ratio along the curve. |
float3 | position | Output variable for the float3 position at t. |
float3 | tangent | Output variable for the float3 tangent at t. |
float3 | upVector | Output variable for the float3 up direction at t. |
Returns
Type | Description |
---|---|
bool | True if successful. |
Type Parameters
Name | Description |
---|---|
T | A type implementing ISpline. |
FitSplineToPoints(List<float3>, float, bool, out Spline)
Computes a Spline to approximate the curve formed by the list of provided points within the given error threshold.
Declaration
public static bool FitSplineToPoints(List<float3> points, float errorThreshold, bool closed, out Spline spline)
Parameters
Type | Name | Description |
---|---|---|
List<float3> | points | The list of Unity.Mathematics.float3 points that define the curve to approximate. |
float | errorThreshold | The error threshold to use. Represents the largest distance between any of the provided points and the curve. |
bool | closed | Whether to close the Spline. |
Spline | spline | The output Spline fitted to the points, or an empty spline if could not be fitted. |
Returns
Type | Description |
---|---|
bool | Whether a curve could be fitted according to the provided error threshold. |
GetAutoSmoothKnot(float3, float3, float3)
Gets a BezierKnot with its tangents and rotation calculated using the previous and next knot positions.
Declaration
public static BezierKnot GetAutoSmoothKnot(float3 position, float3 previous, float3 next)
Parameters
Type | Name | Description |
---|---|---|
float3 | position | The position of the knot. |
float3 | previous | The knot that immediately precedes the requested knot. |
float3 | next | The knot that immediately follows the requested knot. |
Returns
Type | Description |
---|---|
BezierKnot | A BezierKnot with tangent and rotation values calculated from the previous and next knot positions. |
GetAutoSmoothKnot(float3, float3, float3, float3)
Gets a BezierKnot with its tangents and rotation calculated using the previous and next knot positions.
Declaration
public static BezierKnot GetAutoSmoothKnot(float3 position, float3 previous, float3 next, float3 normal)
Parameters
Type | Name | Description |
---|---|---|
float3 | position | The position of the knot. |
float3 | previous | The knot that immediately precedes the requested knot. |
float3 | next | The knot that immediately follows the requested knot. |
float3 | normal | The normal vector of the knot. |
Returns
Type | Description |
---|---|
BezierKnot | A BezierKnot with tangent and rotation values calculated from the previous and next knot positions. |
GetAutoSmoothKnot(float3, float3, float3, float3, float)
Gets a BezierKnot with its tangents and rotation calculated using the previous and next knot positions.
Declaration
public static BezierKnot GetAutoSmoothKnot(float3 position, float3 previous, float3 next, float3 normal, float tension = 0.33333334)
Parameters
Type | Name | Description |
---|---|---|
float3 | position | The position of the knot. |
float3 | previous | The knot that immediately precedes the requested knot. |
float3 | next | The knot that immediately follows the requested knot. |
float3 | normal | The normal vector of the knot. |
float | tension | Set the length of the tangent vectors. |
Returns
Type | Description |
---|---|
BezierKnot | A BezierKnot with tangent and rotation values calculated from the previous and next knot positions. |
GetAutoSmoothTangent(float3, float3, float)
Calculates a tangent from the previous and next knot positions.
Declaration
public static float3 GetAutoSmoothTangent(float3 previous, float3 next, float tension = 0.33333334)
Parameters
Type | Name | Description |
---|---|---|
float3 | previous | The position of the previous BezierKnot. |
float3 | next | The position of the next BezierKnot. |
float | tension | Set the length of the tangent vectors. |
Returns
Type | Description |
---|---|
float3 | Returns a tangent calculated from the previous and next knot positions. |
GetAutoSmoothTangent(float3, float3, float3, float)
Gets a tangent from the previous, current, and next knot positions.
Declaration
public static float3 GetAutoSmoothTangent(float3 previous, float3 current, float3 next, float tension = 0.33333334)
Parameters
Type | Name | Description |
---|---|---|
float3 | previous | The position of the previous BezierKnot. |
float3 | current | The position of the current BezierKnot. |
float3 | next | The position of the next BezierKnot. |
float | tension | The length of the tangent vectors. |
Returns
Type | Description |
---|---|
float3 | Returns a tangent calculated from the previous, current, and next knot positions. |
GetBounds<T>(T)
Calculate the bounding box of a Spline.
Declaration
public static Bounds GetBounds<T>(this T spline) where T : ISpline
Parameters
Type | Name | Description |
---|---|---|
T | spline | The spline for which to calculate bounds. |
Returns
Type | Description |
---|---|
Bounds | The bounds of a spline. |
Type Parameters
Name | Description |
---|---|
T | A type implementing ISpline. |
GetBounds<T>(T, float4x4)
Creates a bounding box for a spline.
Declaration
public static Bounds GetBounds<T>(this T spline, float4x4 transform) where T : ISpline
Parameters
Type | Name | Description |
---|---|---|
T | spline | The spline to calculate bounds for. |
float4x4 | transform | The matrix to transform the spline's elements with. |
Returns
Type | Description |
---|---|
Bounds | The bounds of a spline. |
Type Parameters
Name | Description |
---|---|
T | A type implementing ISpline. |
GetCatmullRomTangent(float3, float3)
Calculates a tangent from the previous and next knot positions.
Declaration
public static float3 GetCatmullRomTangent(float3 previous, float3 next)
Parameters
Type | Name | Description |
---|---|---|
float3 | previous | The position of the previous BezierKnot. |
float3 | next | The position of the next BezierKnot. |
Returns
Type | Description |
---|---|
float3 | Returns a tangent calculated from the previous and next knot positions. |
GetCurveCount<T>(T)
Calculates the number of curves in a spline.
Declaration
public static int GetCurveCount<T>(this T spline) where T : ISpline
Parameters
Type | Name | Description |
---|---|---|
T | spline |
Returns
Type | Description |
---|---|
int | The number of curves in a spline. |
Type Parameters
Name | Description |
---|---|
T | A type implementing ISpline. |
GetNearestPoint<T>(T, float3, out float3, out float, int, int)
Calculate the point on a spline nearest to a point.
Declaration
public static float GetNearestPoint<T>(T spline, float3 point, out float3 nearest, out float t, int resolution = 4, int iterations = 2) where T : ISpline
Parameters
Type | Name | Description |
---|---|---|
T | spline | The input spline to search for nearest point. |
float3 | point | The input point to compare. |
float3 | nearest | The point on a spline nearest to the input point. The accuracy of this value is
affected by the |
float | t | The normalized interpolation ratio corresponding to the nearest point. |
int | resolution | Affects how many segments to split a spline into when calculating the nearest point.
Higher values mean smaller and more segments, which increases accuracy at the cost of processing time.
The minimum resolution is defined by PickResolutionMin, and the maximum is defined by
PickResolutionMax.
In most cases, the default resolution is appropriate. Use with |
int | iterations | The nearest point is calculated by finding the nearest point on the entire length
of the spline using |
Returns
Type | Description |
---|---|
float | The distance from input point to nearest point on spline. |
Type Parameters
Name | Description |
---|---|
T | A type implementing ISpline. |
GetNearestPoint<T>(T, Ray, out float3, out float, int, int)
Calculate the point on a spline nearest to a ray.
Declaration
public static float GetNearestPoint<T>(T spline, Ray ray, out float3 nearest, out float t, int resolution = 4, int iterations = 2) where T : ISpline
Parameters
Type | Name | Description |
---|---|---|
T | spline | The input spline to search for nearest point. |
Ray | ray | The input ray to search against. |
float3 | nearest | The point on a spline nearest to the input ray. The accuracy of this value is
affected by the |
float | t | The normalized time value to the nearest point. |
int | resolution | Affects how many segments to split a spline into when calculating the nearest point.
Higher values mean smaller and more segments, which increases accuracy at the cost of processing time.
The minimum resolution is defined by PickResolutionMin, and the maximum is defined by
PickResolutionMax.
In most cases, the default resolution is appropriate. Use with |
int | iterations | The nearest point is calculated by finding the nearest point on the entire length
of the spline using |
Returns
Type | Description |
---|---|
float | The distance from ray to nearest point. |
Type Parameters
Name | Description |
---|---|
T | A type implementing ISpline. |
GetNormalizedInterpolation<T>(T, float, PathIndexUnit)
Given an interpolation value in any PathIndexUnit type, calculate the normalized interpolation ratio value relative to a Spline.
Declaration
public static float GetNormalizedInterpolation<T>(T spline, float t, PathIndexUnit originalPathUnit) where T : ISpline
Parameters
Type | Name | Description |
---|---|---|
T | spline | The Spline to use for the conversion, this is necessary to compute Normalized and Distance PathIndexUnits. |
float | t | The |
PathIndexUnit | originalPathUnit | The PathIndexUnit from the original |
Returns
Type | Description |
---|---|
float | The normalized interpolation ratio (0 to 1). |
Type Parameters
Name | Description |
---|---|
T | A type implementing ISpline. |
GetPointAtLinearDistance<T>(T, float, float, out float)
Given a Spline and interpolation ratio, calculate the 3d point at a linear distance from point at spline.EvaluatePosition(t). Returns the corresponding time associated to this 3d position on the Spline.
Declaration
public static float3 GetPointAtLinearDistance<T>(this T spline, float fromT, float relativeDistance, out float resultPointT) where T : ISpline
Parameters
Type | Name | Description |
---|---|---|
T | spline | The Spline on which to compute the point. |
float | fromT | The Spline interpolation ratio |
float | relativeDistance | The relative distance at which the new point should be placed. A negative value will compute a point at a
|
float | resultPointT | The normalized interpolation ratio of the resulting point. |
Returns
Type | Description |
---|---|
float3 | The 3d point from the spline located at a linear distance from the point at t. |
Type Parameters
Name | Description |
---|---|
T | A type implementing ISpline. |
GetSubdivisionCount(float, int)
Gets the number of subdivisions for a spline length and resolution.
Declaration
public static int GetSubdivisionCount(float length, int resolution)
Parameters
Type | Name | Description |
---|---|---|
float | length | The length of the spline to consider. |
int | resolution | The resolution to consider. Higher resolutions result in more precise representations. However, higher resolutions have higher performance requirements. |
Returns
Type | Description |
---|---|
int | The number of subdivisions as calculated for given length and resolution. |
JoinSplinesOnKnots(ISplineContainer, SplineKnotIndex, SplineKnotIndex)
Joins two splines together at the specified knots. The two splines must belong to the same container and the knots must be at an extremity of their respective splines.
Declaration
public static SplineKnotIndex JoinSplinesOnKnots(this ISplineContainer container, SplineKnotIndex mainKnot, SplineKnotIndex otherKnot)
Parameters
Type | Name | Description |
---|---|---|
ISplineContainer | container | The target SplineContainer. |
SplineKnotIndex | mainKnot | The first spline extremity to join. |
SplineKnotIndex | otherKnot | The second spline extremity to join. |
Returns
Type | Description |
---|---|
SplineKnotIndex | The |
Remarks
In case a spline needs to be reversed to join the two extremities, the mainKnot defines which spline will be kept. Hence, the second one will be the reversed one.
Exceptions
Type | Condition |
---|---|
ArgumentException | An exception is thrown on impossible join request (out of bounds parameters, knots on the same spline, non-extremity knots) |
LinkKnots<T>(T, SplineKnotIndex, SplineKnotIndex)
Links two knots in an ISplineContainer. The two knots can be on different splines, but both must be in the referenced SplineContainer. If these knots are linked to other knots, all existing links are kept and updated.
Declaration
public static void LinkKnots<T>(this T container, SplineKnotIndex knotA, SplineKnotIndex knotB) where T : ISplineContainer
Parameters
Type | Name | Description |
---|---|---|
T | container | The target SplineContainer. |
SplineKnotIndex | knotA | The first knot to link. |
SplineKnotIndex | knotB | The second knot to link. |
Type Parameters
Name | Description |
---|---|
T | A type that implements ISplineContainer. |
NextIndex<T>(T, int)
Gets the index of a knot that follows a spline index. This method uses the Count and Closed properties to ensure that it returns the correct index of the knot.
Declaration
public static int NextIndex<T>(this T spline, int index) where T : ISpline
Parameters
Type | Name | Description |
---|---|---|
T | spline | The spline to consider. |
int | index | The current index to consider. |
Returns
Type | Description |
---|---|
int | The knot index after |
Type Parameters
Name | Description |
---|---|
T | A type that implements ISpline. |
Next<T>(T, int)
Gets the BezierKnot after spline[index]. This method uses the Count and Closed properties to ensure that it returns the correct knot.
Declaration
public static BezierKnot Next<T>(this T spline, int index) where T : ISpline
Parameters
Type | Name | Description |
---|---|---|
T | spline | The spline to consider. |
int | index | The current index to consider. |
Returns
Type | Description |
---|---|
BezierKnot | The knot after the knot at spline[index]. |
Type Parameters
Name | Description |
---|---|
T | A type that implements ISpline. |
PreviousIndex<T>(T, int)
Gets the index of a knot that precedes a spline index. This method uses the Count and Closed properties to ensure that it returns the correct index of the knot.
Declaration
public static int PreviousIndex<T>(this T spline, int index) where T : ISpline
Parameters
Type | Name | Description |
---|---|---|
T | spline | The spline to consider. |
int | index | The current index to consider. |
Returns
Type | Description |
---|---|
int | Returns a knot index that precedes the |
Type Parameters
Name | Description |
---|---|
T | A type that implements ISpline. |
Previous<T>(T, int)
Gets the BezierKnot before spline[index]. This method uses the Count and Closed properties to ensure that it returns the correct knot.
Declaration
public static BezierKnot Previous<T>(this T spline, int index) where T : ISpline
Parameters
Type | Name | Description |
---|---|---|
T | spline | The spline to consider. |
int | index | The current index to consider. |
Returns
Type | Description |
---|---|
BezierKnot | The knot before the knot at spline[index]. |
Type Parameters
Name | Description |
---|---|
T | A type that implements ISpline. |
ReducePoints<T>(T, List<float3>, float)
Removes redundant points in a poly line to form a similar shape with fewer points.
Declaration
public static void ReducePoints<T>(T line, List<float3> results, float epsilon = 0.15) where T : IList<float3>
Parameters
Type | Name | Description |
---|---|---|
T | line | The poly line to act on. |
List<float3> | results | A pre-allocated list to be filled with the new reduced line points. |
float | epsilon | The maximum distance from the reduced poly line shape for a point to be discarded. |
Type Parameters
Name | Description |
---|---|
T | The collection type. Usually this will be list or array of float3. |
ReducePoints<T>(T, float)
Removes redundant points in a poly line to form a similar shape with fewer points.
Declaration
public static List<float3> ReducePoints<T>(T line, float epsilon = 0.15) where T : IList<float3>
Parameters
Type | Name | Description |
---|---|---|
T | line | The poly line to act on. |
float | epsilon | The maximum distance from the reduced poly line shape for a point to be discarded. |
Returns
Type | Description |
---|---|
List<float3> | Returns a new list with a poly line matching the shape of the original line with fewer points. |
Type Parameters
Name | Description |
---|---|
T | The collection type. Usually this will be list or array of float3. |
RemoveSplineAt<T>(T, int)
Removes a spline from a ISplineContainer.
Declaration
public static bool RemoveSplineAt<T>(this T container, int splineIndex) where T : ISplineContainer
Parameters
Type | Name | Description |
---|---|---|
T | container | The target container. |
int | splineIndex | The index of the spline to remove from the SplineContainer. |
Returns
Type | Description |
---|---|
bool | Returns true if the spline was removed from the container. |
Type Parameters
Name | Description |
---|---|
T | A type that implements ISplineContainer. |
RemoveSpline<T>(T, Spline)
Removes a spline from a ISplineContainer.
Declaration
public static bool RemoveSpline<T>(this T container, Spline spline) where T : ISplineContainer
Parameters
Type | Name | Description |
---|---|---|
T | container | The target SplineContainer. |
Spline | spline | The spline to remove from the SplineContainer. |
Returns
Type | Description |
---|---|
bool | Returns true if the spline was removed from the container. |
Type Parameters
Name | Description |
---|---|
T | A type that implements ISplineContainer. |
ReorderSpline<T>(T, int, int)
Reorders a spline in a ISplineContainer.
Declaration
public static bool ReorderSpline<T>(this T container, int previousSplineIndex, int newSplineIndex) where T : ISplineContainer
Parameters
Type | Name | Description |
---|---|---|
T | container | The target SplineContainer. |
int | previousSplineIndex | The previous index of the spline to reorder in the SplineContainer. |
int | newSplineIndex | The new index of the spline to reorder in the SplineContainer. |
Returns
Type | Description |
---|---|
bool | Returns true if the spline was reordered in the container. |
Type Parameters
Name | Description |
---|---|
T | A type that implements ISplineContainer. |
ReverseFlow(ISplineContainer, int)
Reverses the flow direction of a spline.
Declaration
public static void ReverseFlow(this ISplineContainer container, int splineIndex)
Parameters
Type | Name | Description |
---|---|---|
ISplineContainer | container | The target SplineContainer. |
int | splineIndex | The index of the spline to reverse. |
ReverseFlow(Spline)
Reverses the flow direction of a spline. Should only be used with Splines that aren't inside any container.
Declaration
public static void ReverseFlow(Spline spline)
Parameters
Type | Name | Description |
---|---|---|
Spline | spline | The spline to reverse. |
ReverseFlow(SplineInfo)
Reverses the flow direction of a spline.
Declaration
public static void ReverseFlow(SplineInfo splineInfo)
Parameters
Type | Name | Description |
---|---|---|
SplineInfo | splineInfo | The spline to reverse. |
SetLinkedKnotPosition<T>(T, SplineKnotIndex)
Sets the position of all knots linked to the knot at index
in an ISplineContainer to the same position.
Declaration
public static void SetLinkedKnotPosition<T>(this T container, SplineKnotIndex index) where T : ISplineContainer
Parameters
Type | Name | Description |
---|---|---|
T | container | The target container. |
SplineKnotIndex | index | The |
Type Parameters
Name | Description |
---|---|
T | A type that implements ISplineContainer. |
SetPivot(SplineContainer, Vector3)
Reset a transform position to a position while keeping knot positions in the same place. This modifies both knot positions and transform position.
Declaration
public static void SetPivot(SplineContainer container, Vector3 position)
Parameters
Type | Name | Description |
---|---|---|
SplineContainer | container | The target spline. |
Vector3 | position | The point in world space to move the pivot to. |
SplineToCurveT<T>(T, float, out float)
Given a normalized interpolation (t) for a spline, calculate the curve index and curve-relative normalized interpolation.
Declaration
public static int SplineToCurveT<T>(this T spline, float splineT, out float curveT) where T : ISpline
Parameters
Type | Name | Description |
---|---|---|
T | spline | The target spline. |
float | splineT | A normalized spline interpolation value to be converted into curve space. |
float | curveT | A normalized curve interpolation value. |
Returns
Type | Description |
---|---|
int | The curve index. |
Type Parameters
Name | Description |
---|---|
T | A type implementing ISpline. |
SplitSplineOnKnot(ISplineContainer, SplineKnotIndex)
Splits a spline in a SplineContainer into two splines at a specified knot.
Declaration
public static SplineKnotIndex SplitSplineOnKnot(this ISplineContainer container, SplineKnotIndex knotInfo)
Parameters
Type | Name | Description |
---|---|---|
ISplineContainer | container | The target SplineContainer. |
SplineKnotIndex | knotInfo | The SplineKnotIndex of the spline to split. |
Returns
Type | Description |
---|---|
SplineKnotIndex | The |
Exceptions
Type | Condition |
---|---|
IndexOutOfRangeException | An exception is thrown when the knot belongs to a spline not contained by the provided container or when the knot index is out of range. |
UnlinkKnots<T>(T, IReadOnlyList<SplineKnotIndex>)
Unlinks several knots from an ISplineContainer. A knot in knots
disconnects from other knots it was linked to.
Declaration
public static void UnlinkKnots<T>(this T container, IReadOnlyList<SplineKnotIndex> knots) where T : ISplineContainer
Parameters
Type | Name | Description |
---|---|---|
T | container | The target SplineContainer. |
IReadOnlyList<SplineKnotIndex> | knots | The knot to unlink. |
Type Parameters
Name | Description |
---|---|
T | A type implementing ISplineContainer. |