UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
TBaseBlendedCurve< InAllocatorType, InElementType > Struct Template Reference

#include <AnimCurveTypes.h>

+ Inheritance diagram for TBaseBlendedCurve< InAllocatorType, InElementType >:

Public Types

typedef InAllocatorType AllocatorType
 
typedef InElementType ElementType
 
typedef UE::Anim::TNamedValueArray< AllocatorType, ElementTypeSuper
 
- Public Types inherited from UE::Anim::TNamedValueArray< InAllocatorType, InElementType >
typedef InAllocatorType AllocatorType
 
typedef InElementType ElementType
 

Public Member Functions

void InitFrom (TArray< uint16 > const *InUIDToArrayIndexLUT)
 
template<typename OtherAllocator , typename OtherElementType >
void InitFrom (const TBaseBlendedCurve< OtherAllocator, OtherElementType > &InCurveToInitFrom)
 
void InvalidateCurveWeight (SmartName::UID_Type InUid)
 
void InvalidateCurveWeight (FName InName)
 
void Set (SmartName::UID_Type InUid, float InValue)
 
void Set (FName InName, float InValue)
 
void SetFlags (FName InName, UE::Anim::ECurveElementFlags InFlags)
 
float Get (SmartName::UID_Type InUid) const
 
float Get (FName InName) const
 
UE::Anim::ECurveElementFlags GetFlags (FName InName) const
 
float Get (SmartName::UID_Type InUid, bool &OutIsValid, float InDefaultValue=0.f) const
 
float Get (FName InName, bool &OutHasElement, float InDefaultValue=0.0f) const
 
void Mirror (FName InName0, FName InName1)
 
int32 GetArrayIndexByUID (SmartName::UID_Type InUid) const
 
bool IsEnabled (SmartName::UID_Type InUid) const
 
template<typename AllocatorA , typename ElementTypeA , typename AllocatorB , typename ElementTypeB >
void Lerp (const TBaseBlendedCurve< AllocatorA, ElementTypeA > &A, const TBaseBlendedCurve< AllocatorB, ElementTypeB > &B, float Alpha)
 
template<typename OtherAllocator , typename OtherElementType >
void LerpTo (const TBaseBlendedCurve< OtherAllocator, OtherElementType > &Other, float Alpha)
 
template<typename AllocatorA , typename ElementTypeA , typename AllocatorB , typename ElementTypeB >
void LerpValid (const TBaseBlendedCurve< AllocatorA, ElementTypeA > &A, const TBaseBlendedCurve< AllocatorB, ElementTypeB > &B, float Alpha)
 
template<typename OtherAllocator , typename OtherElementType >
void LerpToValid (const TBaseBlendedCurve< OtherAllocator, OtherElementType > &Other, float Alpha)
 
template<typename OtherAllocator , typename OtherElementType >
void ConvertToAdditive (const TBaseBlendedCurve< OtherAllocator, OtherElementType > &BaseCurve)
 
template<typename OtherAllocator , typename OtherElementType >
void Accumulate (const TBaseBlendedCurve< OtherAllocator, OtherElementType > &AdditiveCurve, float Weight)
 
template<typename OtherAllocator , typename OtherElementType >
void UseMaxValue (const TBaseBlendedCurve< OtherAllocator, OtherElementType > &CurveToCombine)
 
template<typename OtherAllocator , typename OtherElementType >
void UseMinValue (const TBaseBlendedCurve< OtherAllocator, OtherElementType > &CurveToCombine)
 
template<typename OtherAllocator , typename OtherElementType >
void CombinePreserved (const TBaseBlendedCurve< OtherAllocator, OtherElementType > &CurveToCombine)
 
template<typename OtherAllocator , typename OtherElementType >
void Combine (const TBaseBlendedCurve< OtherAllocator, OtherElementType > &CurveToCombine)
 
template<typename OtherAllocator , typename OtherElementType >
void Override (const TBaseBlendedCurve< OtherAllocator, OtherElementType > &CurveToOverrideFrom, float Weight)
 
template<typename OtherAllocator , typename OtherElementType >
void Override (const TBaseBlendedCurve< OtherAllocator, OtherElementType > &CurveToOverrideFrom)
 
void OverrideMove (TBaseBlendedCurve &CurveToOverrideFrom)
 
int32 NumValid () const
 
template<typename OtherAllocator , typename OtherElementType >
void CopyFrom (const TBaseBlendedCurve< OtherAllocator, OtherElementType > &InCurveToCopyFrom)
 
void MoveFrom (TBaseBlendedCurve &CurveToMoveFrom)
 
void Reserve (int32 InNumElements)
 
bool IsValid () const
 
void SetFilter (const UE::Anim::FCurveFilter *InFilter)
 
const UE::Anim::FCurveFilterGetFilter () const
 
- Public Member Functions inherited from UE::Anim::TNamedValueArray< InAllocatorType, InElementType >
template<typename... ArgTypes>
void Add (ArgTypes &&... Args)
 
void AppendNames (TConstArrayView< FName > InNameArray)
 
void AppendNames (std::initializer_list< const FName > InInputArgs)
 
void Empty ()
 
void Reserve (int32 InNumElements)
 
bool HasElement (FName InName) const
 
template<typename PredicateType >
void ForEachElement (PredicateType InPredicate) const
 
int32 Num () const
 
int32 Max () const
 
void Shrink ()
 

Static Public Member Functions

static int32 GetValidElementCount (TArray< uint16 > const *InUIDToArrayIndexLUT)
 

Friends

template<typename OtherAllocator , typename OtherElementType >
struct TBaseBlendedCurve
 
struct UE::Anim::FCurveUtils
 

Additional Inherited Members

- Static Public Attributes inherited from UE::Anim::FBaseBlendedCurve_DEPRECATED
static ENGINE_API TArray< floatCurveWeights
 
static ENGINE_API TBitArray ValidCurveWeights
 
static ENGINE_API TArray< uint16 > const * UIDToArrayIndexLUT
 
static ENGINE_API uint16 NumValidCurveCount
 
static ENGINE_API bool bInitialized
 
- Protected Member Functions inherited from UE::Anim::TNamedValueArray< InAllocatorType, InElementType >
void SortElementsIfRequired () const
 
void CheckSorted () const
 
void CheckDuplicates () const
 
int32 IndexOf (FName InName) const
 
const ElementTypeFind (FName InName) const
 
ElementTypeFind (FName InName)
 
- Protected Attributes inherited from UE::Anim::TNamedValueArray< InAllocatorType, InElementType >
TArray< ElementType, AllocatorTypeElements
 
bool bSorted = false
 

Detailed Description

template<typename InAllocatorType = FAnimStackAllocator, typename InElementType = UE::Anim::FCurveElement>
struct TBaseBlendedCurve< InAllocatorType, InElementType >

This struct is used to create curve snap shot of current time when extracted

Member Typedef Documentation

◆ AllocatorType

template<typename InAllocatorType = FAnimStackAllocator, typename InElementType = UE::Anim::FCurveElement>
typedef InAllocatorType TBaseBlendedCurve< InAllocatorType, InElementType >::AllocatorType

◆ ElementType

template<typename InAllocatorType = FAnimStackAllocator, typename InElementType = UE::Anim::FCurveElement>
typedef InElementType TBaseBlendedCurve< InAllocatorType, InElementType >::ElementType

◆ Super

Member Function Documentation

◆ Accumulate()

template<typename InAllocatorType = FAnimStackAllocator, typename InElementType = UE::Anim::FCurveElement>
void TBaseBlendedCurve< InAllocatorType, InElementType >::Accumulate ( const TBaseBlendedCurve< OtherAllocator, OtherElementType > &  AdditiveCurve,
float  Weight 
)
inline

Accumulate the input curve with input Weight

◆ Combine()

template<typename InAllocatorType = FAnimStackAllocator, typename InElementType = UE::Anim::FCurveElement>
void TBaseBlendedCurve< InAllocatorType, InElementType >::Combine ( const TBaseBlendedCurve< OtherAllocator, OtherElementType > &  CurveToCombine)
inline

If CurveToCombine contains a valid element, then the value in 'this' is overridden, otherwise the value is not modified.

◆ CombinePreserved()

template<typename InAllocatorType = FAnimStackAllocator, typename InElementType = UE::Anim::FCurveElement>
void TBaseBlendedCurve< InAllocatorType, InElementType >::CombinePreserved ( const TBaseBlendedCurve< OtherAllocator, OtherElementType > &  CurveToCombine)
inline

If 'this' does not contain a valid element, then the value in 'this' is set, otherwise the value is not modified.

◆ ConvertToAdditive()

template<typename InAllocatorType = FAnimStackAllocator, typename InElementType = UE::Anim::FCurveElement>
void TBaseBlendedCurve< InAllocatorType, InElementType >::ConvertToAdditive ( const TBaseBlendedCurve< OtherAllocator, OtherElementType > &  BaseCurve)
inline

Convert current curves to Additive (this - BaseCurve) if overlapping entries are found

◆ CopyFrom()

template<typename InAllocatorType = FAnimStackAllocator, typename InElementType = UE::Anim::FCurveElement>
void TBaseBlendedCurve< InAllocatorType, InElementType >::CopyFrom ( const TBaseBlendedCurve< OtherAllocator, OtherElementType > &  InCurveToCopyFrom)
inline

Copy elements between curves that have different allocators & element types. Does not copy filter.

◆ Get() [1/4]

template<typename InAllocatorType = FAnimStackAllocator, typename InElementType = UE::Anim::FCurveElement>
float TBaseBlendedCurve< InAllocatorType, InElementType >::Get ( FName  InName) const
inline

Get value of curve element named InName. Note that this performs a binary search per-call. Consider using a ForEach* or a bulk API call (e.g. UE::Anim::FCurveUtils::BulkGet) to get multiple element's values.

Parameters
InNamethe name of the curve element to get
Returns
the value of the curve element. If this curve does not contain an element with the supplied name, returns 0.0

◆ Get() [2/4]

template<typename InAllocatorType = FAnimStackAllocator, typename InElementType = UE::Anim::FCurveElement>
float TBaseBlendedCurve< InAllocatorType, InElementType >::Get ( FName  InName,
bool OutHasElement,
float  InDefaultValue = 0.0f 
) const
inline

Get Value of curve named InName with validation and default value Note that this performs a binary search per-call. Consider using a ForEach* or one of the bulk APIs (e.g. UE::Anim::FCurveUtils::BulkGet) call to get multiple element's flags.

Parameters
InNamethe name of the curve element to get
HasElementwhether this curve contains the supplied named element
InDefaultValuethe default value to use in case the curve does not contain the supplied element
Returns
the value of the curve element. If this curve does not contain an element with the supplied name, returns InDefaultValue

◆ Get() [3/4]

template<typename InAllocatorType = FAnimStackAllocator, typename InElementType = UE::Anim::FCurveElement>
float TBaseBlendedCurve< InAllocatorType, InElementType >::Get ( SmartName::UID_Type  InUid) const
inline

◆ Get() [4/4]

template<typename InAllocatorType = FAnimStackAllocator, typename InElementType = UE::Anim::FCurveElement>
float TBaseBlendedCurve< InAllocatorType, InElementType >::Get ( SmartName::UID_Type  InUid,
bool OutIsValid,
float  InDefaultValue = 0.f 
) const
inline

◆ GetArrayIndexByUID()

template<typename InAllocatorType = FAnimStackAllocator, typename InElementType = UE::Anim::FCurveElement>
int32 TBaseBlendedCurve< InAllocatorType, InElementType >::GetArrayIndexByUID ( SmartName::UID_Type  InUid) const
inline

◆ GetFilter()

template<typename InAllocatorType = FAnimStackAllocator, typename InElementType = UE::Anim::FCurveElement>
const UE::Anim::FCurveFilter * TBaseBlendedCurve< InAllocatorType, InElementType >::GetFilter ( ) const
inline

Get the filter referenced by this curve.

◆ GetFlags()

template<typename InAllocatorType = FAnimStackAllocator, typename InElementType = UE::Anim::FCurveElement>
UE::Anim::ECurveElementFlags TBaseBlendedCurve< InAllocatorType, InElementType >::GetFlags ( FName  InName) const
inline

Get flags for curve element named InName Note that this performs a binary search per-call. Consider using a ForEach* call to get multiple element's flags.

Parameters
InNamethe name of the curve element to get
Returns
the flags of the curve element. If this curve does not contain an element with the supplied name, returns UE::Anim::ECurveElementFlags::None

◆ GetValidElementCount()

template<typename InAllocatorType = FAnimStackAllocator, typename InElementType = UE::Anim::FCurveElement>
static int32 TBaseBlendedCurve< InAllocatorType, InElementType >::GetValidElementCount ( TArray< uint16 > const *  InUIDToArrayIndexLUT)
inlinestatic

◆ InitFrom() [1/2]

template<typename InAllocatorType = FAnimStackAllocator, typename InElementType = UE::Anim::FCurveElement>
void TBaseBlendedCurve< InAllocatorType, InElementType >::InitFrom ( const TBaseBlendedCurve< OtherAllocator, OtherElementType > &  InCurveToInitFrom)
inline

Initialize from another curve. Just copies the filter and empties 'this'.

◆ InitFrom() [2/2]

template<typename InAllocatorType = FAnimStackAllocator, typename InElementType = UE::Anim::FCurveElement>
void TBaseBlendedCurve< InAllocatorType, InElementType >::InitFrom ( TArray< uint16 > const *  InUIDToArrayIndexLUT)
inline

◆ InvalidateCurveWeight() [1/2]

template<typename InAllocatorType = FAnimStackAllocator, typename InElementType = UE::Anim::FCurveElement>
void TBaseBlendedCurve< InAllocatorType, InElementType >::InvalidateCurveWeight ( FName  InName)
inline

Invalidate value of the named curve

◆ InvalidateCurveWeight() [2/2]

template<typename InAllocatorType = FAnimStackAllocator, typename InElementType = UE::Anim::FCurveElement>
void TBaseBlendedCurve< InAllocatorType, InElementType >::InvalidateCurveWeight ( SmartName::UID_Type  InUid)
inline

◆ IsEnabled()

template<typename InAllocatorType = FAnimStackAllocator, typename InElementType = UE::Anim::FCurveElement>
bool TBaseBlendedCurve< InAllocatorType, InElementType >::IsEnabled ( SmartName::UID_Type  InUid) const
inline

◆ IsValid()

template<typename InAllocatorType = FAnimStackAllocator, typename InElementType = UE::Anim::FCurveElement>
bool TBaseBlendedCurve< InAllocatorType, InElementType >::IsValid ( ) const
inline

◆ Lerp()

Blend (A, B) using Alpha. Lone valid elements are not preserved.

◆ LerpTo()

template<typename InAllocatorType = FAnimStackAllocator, typename InElementType = UE::Anim::FCurveElement>
void TBaseBlendedCurve< InAllocatorType, InElementType >::LerpTo ( const TBaseBlendedCurve< OtherAllocator, OtherElementType > &  Other,
float  Alpha 
)
inline

Blend with Other using Alpha. Lone valid elements are not preserved. Same as Lerp

◆ LerpToValid()

template<typename InAllocatorType = FAnimStackAllocator, typename InElementType = UE::Anim::FCurveElement>
void TBaseBlendedCurve< InAllocatorType, InElementType >::LerpToValid ( const TBaseBlendedCurve< OtherAllocator, OtherElementType > &  Other,
float  Alpha 
)
inline

Blend with Other using Alpha when both elements are valid, otherwise preserve valid element. Same as LerpValid

◆ LerpValid()

template<typename InAllocatorType = FAnimStackAllocator, typename InElementType = UE::Anim::FCurveElement>
void TBaseBlendedCurve< InAllocatorType, InElementType >::LerpValid ( const TBaseBlendedCurve< AllocatorA, ElementTypeA > &  A,
const TBaseBlendedCurve< AllocatorB, ElementTypeB > &  B,
float  Alpha 
)
inline

Blend with Other using Alpha when both elements are valid, otherwise preserve valid element.

◆ Mirror()

template<typename InAllocatorType = FAnimStackAllocator, typename InElementType = UE::Anim::FCurveElement>
void TBaseBlendedCurve< InAllocatorType, InElementType >::Mirror ( FName  InName0,
FName  InName1 
)
inline

Mirror the values & flags of the two named curves if both exist. If only InName0 exists, InName0 will be renamed to InName1. If only InName1 exists, InName1 will be renamed to InName0.

Parameters
InName0the name of first curve to mirror
InName1the name of second curve to mirror

◆ MoveFrom()

template<typename InAllocatorType = FAnimStackAllocator, typename InElementType = UE::Anim::FCurveElement>
void TBaseBlendedCurve< InAllocatorType, InElementType >::MoveFrom ( TBaseBlendedCurve< InAllocatorType, InElementType > &  CurveToMoveFrom)
inline

Once moved, source is invalid

◆ NumValid()

template<typename InAllocatorType = FAnimStackAllocator, typename InElementType = UE::Anim::FCurveElement>
int32 TBaseBlendedCurve< InAllocatorType, InElementType >::NumValid ( ) const
inline

◆ Override() [1/2]

template<typename InAllocatorType = FAnimStackAllocator, typename InElementType = UE::Anim::FCurveElement>
void TBaseBlendedCurve< InAllocatorType, InElementType >::Override ( const TBaseBlendedCurve< OtherAllocator, OtherElementType > &  CurveToOverrideFrom)
inline

Override with input curve

◆ Override() [2/2]

template<typename InAllocatorType = FAnimStackAllocator, typename InElementType = UE::Anim::FCurveElement>
void TBaseBlendedCurve< InAllocatorType, InElementType >::Override ( const TBaseBlendedCurve< OtherAllocator, OtherElementType > &  CurveToOverrideFrom,
float  Weight 
)
inline

Override with input curve * weight

◆ OverrideMove()

template<typename InAllocatorType = FAnimStackAllocator, typename InElementType = UE::Anim::FCurveElement>
void TBaseBlendedCurve< InAllocatorType, InElementType >::OverrideMove ( TBaseBlendedCurve< InAllocatorType, InElementType > &  CurveToOverrideFrom)
inline

Override with input curve, leaving input curve invalid

◆ Reserve()

template<typename InAllocatorType = FAnimStackAllocator, typename InElementType = UE::Anim::FCurveElement>
void TBaseBlendedCurve< InAllocatorType, InElementType >::Reserve ( int32  InNumElements)
inline

Reserves memory for InNumElements

◆ Set() [1/2]

template<typename InAllocatorType = FAnimStackAllocator, typename InElementType = UE::Anim::FCurveElement>
void TBaseBlendedCurve< InAllocatorType, InElementType >::Set ( FName  InName,
float  InValue 
)
inline

Set value of curve named InName to InValue. Inserts a new value if an element for InName does not already exist. Note that this performs a binary search per-call and can potentially cause a re-sort. Consider using a combiner operation to set multiple element's values.

Parameters
InNamethe name of the curve to set
InValuethe value of the curve to set

◆ Set() [2/2]

template<typename InAllocatorType = FAnimStackAllocator, typename InElementType = UE::Anim::FCurveElement>
void TBaseBlendedCurve< InAllocatorType, InElementType >::Set ( SmartName::UID_Type  InUid,
float  InValue 
)
inline

◆ SetFilter()

template<typename InAllocatorType = FAnimStackAllocator, typename InElementType = UE::Anim::FCurveElement>
void TBaseBlendedCurve< InAllocatorType, InElementType >::SetFilter ( const UE::Anim::FCurveFilter InFilter)
inline

Set the filter referenced by this curve.

◆ SetFlags()

template<typename InAllocatorType = FAnimStackAllocator, typename InElementType = UE::Anim::FCurveElement>
void TBaseBlendedCurve< InAllocatorType, InElementType >::SetFlags ( FName  InName,
UE::Anim::ECurveElementFlags  InFlags 
)
inline

Set flags of curve named InName to InFlags. Inserts a new default value if an element for InName does not already exist and then sets its flags to InFlags. Note that this performs a binary search per-call and can potentially cause a re-sort. Consider using a combiner operation to set multiple element's flags.

Parameters
InNamethe name of the curve to set
InFlagsthe flags of the curve to set

◆ UseMaxValue()

template<typename InAllocatorType = FAnimStackAllocator, typename InElementType = UE::Anim::FCurveElement>
void TBaseBlendedCurve< InAllocatorType, InElementType >::UseMaxValue ( const TBaseBlendedCurve< OtherAllocator, OtherElementType > &  CurveToCombine)
inline

This doesn't blend but combines MAX(current value, CurveToCombine value)

◆ UseMinValue()

template<typename InAllocatorType = FAnimStackAllocator, typename InElementType = UE::Anim::FCurveElement>
void TBaseBlendedCurve< InAllocatorType, InElementType >::UseMinValue ( const TBaseBlendedCurve< OtherAllocator, OtherElementType > &  CurveToCombine)
inline

This doesn't blend but combines MIN(current weight, CurveToCombine weight)

Friends And Related Symbol Documentation

◆ TBaseBlendedCurve

template<typename InAllocatorType = FAnimStackAllocator, typename InElementType = UE::Anim::FCurveElement>
friend struct TBaseBlendedCurve
friend

◆ UE::Anim::FCurveUtils

template<typename InAllocatorType = FAnimStackAllocator, typename InElementType = UE::Anim::FCurveElement>
friend struct UE::Anim::FCurveUtils
friend

The documentation for this struct was generated from the following file: