#include <Spline.h>
Inherited by AZ::BezierSpline, AZ::CatmullRomSpline, and AZ::LinearSpline.
Public Member Functions | |
Spline (const Spline &spline) | |
virtual RaySplineQueryResult | GetNearestAddressRay (const Vector3 &localRaySrc, const Vector3 &localRayDir) const =0 |
virtual PositionSplineQueryResult | GetNearestAddressPosition (const Vector3 &localPos) const =0 |
virtual SplineAddress | GetAddressByDistance (float distance) const =0 |
virtual SplineAddress | GetAddressByFraction (float fraction) const =0 |
virtual Vector3 | GetPosition (const SplineAddress &splineAddress) const =0 |
virtual Vector3 | GetNormal (const SplineAddress &splineAddress) const =0 |
virtual Vector3 | GetTangent (const SplineAddress &splineAddress) const =0 |
virtual float | GetLength (const SplineAddress &splineAddress) const =0 |
virtual float | GetSplineLength () const =0 |
virtual float | GetSegmentLength (size_t index) const =0 |
virtual size_t | GetSegmentCount () const =0 |
virtual u16 | GetSegmentGranularity () const =0 |
virtual void | GetAabb (Aabb &aabb, const Transform &transform=Transform::CreateIdentity()) const =0 |
void | SetClosed (bool closed) |
bool | IsClosed () const |
size_t | GetVertexCount () const |
const AZStd::vector< Vector3 > & | GetVertices () const |
const Vector3 & | GetVertex (size_t index) const |
void | SetCallbacks (const VoidFunction &onChangeElement, const VoidFunction &onChangeContainer, const BoolFunction &onOpenClose) |
void | SetCallbacks (const IndexFunction &onAddVertex, const IndexFunction &onRemoveVertex, const IndexFunction &onUpdateVertex, const VoidFunction &onSetVertices, const VoidFunction &onClearVertices, const BoolFunction &onOpenClose) |
virtual void | OnSplineChanged () |
Static Public Member Functions | |
static void | Reflect (SerializeContext &context) |
Public Attributes | |
VertexContainer< Vector3 > | m_vertexContainer |
Vertices representing the spline. | |
Protected Member Functions | |
virtual void | OnVertexAdded (size_t index) |
Internal function to be overridden by derived spline spline to handle custom logic when a vertex is added. | |
virtual void | OnVerticesSet () |
Internal function to be overridden by derived spline spline to handle custom logic when all vertices are set. | |
virtual void | OnVertexRemoved (size_t index) |
Internal function to be overridden by derived spline to handle custom logic when a vertex is removed. | |
virtual void | OnVerticesCleared () |
Internal function to be overridden by derived spline to handle custom logic when spline is reset (vertices are cleared). | |
Protected Attributes | |
bool | m_closed = false |
Is the spline closed - default is not. | |
Static Protected Attributes | |
static const float | s_splineEpsilon |
Epsilon value for splines to use to check approximate results. | |
Generic base spline class.
|
pure virtual |
Gets the Aabb of the vertices in the spline.
aabb | out param of filled aabb. |
Implemented in AZ::LinearSpline, AZ::BezierSpline, and AZ::CatmullRomSpline.
|
pure virtual |
Return address at distance value - range [0, splineLength].
distance | Distance along the spline. |
Implemented in AZ::LinearSpline, AZ::BezierSpline, and AZ::CatmullRomSpline.
|
pure virtual |
Return address at fractional value - range [0, 1].
fraction | fraction/proportion/percentage along the spline. |
Implemented in AZ::LinearSpline, AZ::BezierSpline, and AZ::CatmullRomSpline.
|
pure virtual |
Returns spline length from the beginning to the specific point.
splineAddress | Address of the point to get the distance to. |
Implemented in AZ::LinearSpline, AZ::BezierSpline, and AZ::CatmullRomSpline.
|
pure virtual |
Return nearest address on spline from position (local space).
localPos | Position in local space of spline (must be transformed prior to being passed). |
Implemented in AZ::LinearSpline, AZ::BezierSpline, and AZ::CatmullRomSpline.
|
pure virtual |
Return nearest address on spline from ray (local space).
localRaySrc | Position of ray in local space of spline (must be transformed prior to being passed). |
localRayDir | Direction of ray in local space of spline (must be transformed prior to being passed). |
Implemented in AZ::LinearSpline, AZ::BezierSpline, and AZ::CatmullRomSpline.
|
pure virtual |
Return normal at SplineAddress (local space).
splineAddress | Address representing a point on the spline. |
Implemented in AZ::LinearSpline, AZ::BezierSpline, and AZ::CatmullRomSpline.
|
pure virtual |
Return position at SplineAddress (local space).
splineAddress | Address representing a point on the spline. |
Implemented in AZ::LinearSpline, AZ::BezierSpline, and AZ::CatmullRomSpline.
|
pure virtual |
Return number of Segments along spline. Explicitly returns the number of valid/real segments in the spline Some splines technically have invalid segments (example: that lie in the range [0 - 1] and [vertexCount - 2, vertexCount -1] - these will be ignored in the segment count calculation).
Implemented in AZ::LinearSpline, AZ::BezierSpline, and AZ::CatmullRomSpline.
|
pure virtual |
Return the number of parts (lines) that make up a segment (higher granularity - smoother curve).
Implemented in AZ::LinearSpline, AZ::BezierSpline, and AZ::CatmullRomSpline.
|
pure virtual |
Returns length the segment between vertices - [index, index + 1].
Implemented in AZ::LinearSpline, AZ::BezierSpline, and AZ::CatmullRomSpline.
|
pure virtual |
Returns total length of spline.
Implemented in AZ::LinearSpline, AZ::BezierSpline, and AZ::CatmullRomSpline.
|
pure virtual |
Return tangent at SplineAddress (local space).
splineAddress | Address representing a point on the spline. |
Implemented in AZ::LinearSpline, AZ::BezierSpline, and AZ::CatmullRomSpline.
|
inline |
Return immutable position of vertex at index (local space).
|
inline |
Return number of vertices composing the spline.
|
inline |
Return immutable stored vertices (local space).
|
inline |
Return if the spline is closed (looping) or not
|
virtual |
Notification that spline has changed
Reimplemented in AZ::BezierSpline.
|
protectedvirtual |
Internal function to be overridden by derived spline spline to handle custom logic when a vertex is added.
Reimplemented in AZ::BezierSpline.
|
protectedvirtual |
Internal function to be overridden by derived spline to handle custom logic when a vertex is removed.
Reimplemented in AZ::BezierSpline.
|
protectedvirtual |
Internal function to be overridden by derived spline to handle custom logic when spline is reset (vertices are cleared).
Reimplemented in AZ::BezierSpline.
|
protectedvirtual |
Internal function to be overridden by derived spline spline to handle custom logic when all vertices are set.
Reimplemented in AZ::BezierSpline.
void AZ::Spline::SetCallbacks | ( | const IndexFunction & | onAddVertex, |
const IndexFunction & | onRemoveVertex, | ||
const IndexFunction & | onUpdateVertex, | ||
const VoidFunction & | onSetVertices, | ||
const VoidFunction & | onClearVertices, | ||
const BoolFunction & | onOpenClose | ||
) |
Override callbacks to be used when spline changes/is modified (specific). (use if you need more fine grained control over modifications to the container)
void AZ::Spline::SetCallbacks | ( | const VoidFunction & | onChangeElement, |
const VoidFunction & | onChangeContainer, | ||
const BoolFunction & | onOpenClose | ||
) |
Override callbacks to be used when spline changes/is modified (general).
void AZ::Spline::SetClosed | ( | bool | closed | ) |
Set whether the spline is closed or not - should its last vertex connect to the first