A function pointer to a shim to construct a decorator into the desired memory location When called with a nullptr DestPtr, the function returns nullptr and only populates the memory description output argument. This allows the caller to determine how much space to reserve and how to properly align it. This is similar in spirit to various Windows SDK functions.

typedef [FDecorator](API\Plugins\AnimNext\DecoratorBase\FDecorator) *(*)(void *DestPtr, [FDecoratorMemoryLayout](API\Plugins\AnimNext\DecoratorBase\FDecoratorMemoryLayout) &MemoryDesc) DecoratorConstructorFunc


FDecoratorimpl

static constexpr [UE::AnimNext::FDecoratorUID](API\Plugins\AnimNext\DecoratorBase\FDecoratorUID) DecoratorUID = UE::AnimNext::FDecoratorUID(TEXT("FAdditiveDecorator"), 0x7ab3732a );


Returns the decorator mode.

virtual [EDecoratorMode](API\Plugins\AnimNext\DecoratorBase\UE__AnimNext__EDecoratorMode) GetDecoratorMode() const


Returns the globally unique UID for this decorator.

virtual [UE::AnimNext::FDecoratorUID](API\Plugins\AnimNext\DecoratorBase\FDecoratorUID) GetDecoratorUID() const


Base class for additive decorators that override behavior of other decorators.

struct FAdditiveDecorator : public [UE::AnimNext::FDecorator](API\Plugins\AnimNext\DecoratorBase\FDecorator)


Bottom 24 bits are used by the node shared offset while the top 8 bits by the decorator index.

static constexpr uint32 DECORATOR_SHIFT = 24;


Returns the decorator index.


Returns a handle to the node in the shared data segment.


static constexpr uint32 INVALID_SHARED_OFFSET_VALUE = SHARED_OFFSET_MASK;


Returns true if this decorator handle is valid, false otherwise.


static constexpr uint32 SHARED_OFFSET_MASK = ~0u >> (32 - DECORATOR_SHIFT);


Creates a decorator handle pointing to the first decorator of the specified node.

FAnimNextDecoratorHandle ( [UE::AnimNext::FNodeHandle](API\Plugins\AnimNext\DecoratorBase\FNodeHandle) NodeHandle )


Creates a decorator handle pointing to the specified decorator on the specified node.

FAnimNextDecoratorHandle ( [UE::AnimNext::FNodeHandle](API\Plugins\AnimNext\DecoratorBase\FNodeHandle) NodeHandle, uint32 DecoratorIndex_ )


Creates an invalid decorator handle.


FNodeDescription


FDecoratorimpl

static constexpr [UE::AnimNext::FDecoratorUID](API\Plugins\AnimNext\DecoratorBase\FDecoratorUID) DecoratorUID = UE::AnimNext::FDecoratorUID(TEXT("FBaseDecorator"), 0xd23dcf79 );


Returns the decorator mode.


Base class for base decorators that are standalone.

struct FBaseDecorator : public [UE::AnimNext::FDecorator](API\Plugins\AnimNext\DecoratorBase\FDecorator)


Called when a new instance of the decorator is created or destroyed Derived types must override this and forward to the instance data constructor/destructor

void ConstructDecoratorInstance ( [FExecutionContext](API\Plugins\AnimNext\DecoratorBase\FExecutionContext) & Context, [FWeakDecoratorPtr](API\Plugins\AnimNext\DecoratorBase\FWeakDecoratorPtr) DecoratorPtr, const [FAnimNextDecoratorSharedData](API\Plugins\AnimNext\DecoratorBase\FAnimNextDecoratorSharedData) & DecoratorDesc, [FDecoratorInstanceData](API\Plugins\AnimNext\DecoratorBase\FDecoratorInstanceData) & DecoratorInstance ) const


The globally unique UID for this decorator Derived types will have their own DecoratorUID member that hides/aliases/shadows this one

static constexpr [FDecoratorUID](API\Plugins\AnimNext\DecoratorBase\FDecoratorUID) DecoratorUID = FDecoratorUID(TEXT("FDecorator"), 0x4fc735a2);


void DestructDecoratorInstance ( [FExecutionContext](API\Plugins\AnimNext\DecoratorBase\FExecutionContext) & Context, [FWeakDecoratorPtr](API\Plugins\AnimNext\DecoratorBase\FWeakDecoratorPtr) DecoratorPtr, const [FAnimNextDecoratorSharedData](API\Plugins\AnimNext\DecoratorBase\FAnimNextDecoratorSharedData) & DecoratorDesc, [FDecoratorInstanceData](API\Plugins\AnimNext\DecoratorBase\FDecoratorInstanceData) & DecoratorInstance ) const


Empty shared/instance data types Derived types must define an alias for these


Returns a pointer to the specified interface if it is supported. Derived types must override this.

virtual const [IDecoratorInterface](API\Plugins\AnimNext\DecoratorBase\IDecoratorInterface) * GetDecoratorInterface ( [FDecoratorInterfaceUID](API\Plugins\AnimNext\DecoratorBase\FDecoratorInterfaceUID) InterfaceUID ) const


Returns the memory requirements of the derived decorator instance.


Returns theUScriptStructassociated with the shared data for the decorator.

virtual [UScriptStruct](API\Runtime\CoreUObject\UObject\UScriptStruct) * GetDecoratorSharedDataStruct() const


virtual [FDecoratorUID](API\Plugins\AnimNext\DecoratorBase\FDecoratorUID) GetDecoratorUID() const


Takes the editor properties as authored in the graph and converts them into an instance of theFAnimNextDecoratorSharedDataderived type using UE reflection. Decorators can override this function to control how editor only properties are coerced into the runtime shared data instance.

virtual void SaveDecoratorSharedData ( FDecoratorWriter & Writer, const [TMap](API\Runtime\Core\Containers\TMap)< [FString](API\Runtime\Core\Containers\FString), [FString](API\Runtime\Core\Containers\FString) > & Properties, [FAnimNextDecoratorSharedData](API\Plugins\AnimNext\DecoratorBase\FAnimNextDecoratorSharedData) & OutSharedData ) const


Called to serialize decorator shared data.

virtual void SerializeDecoratorSharedData ( [FArchive](API\Runtime\Core\Serialization\FArchive) & Ar, [FAnimNextDecoratorSharedData](API\Plugins\AnimNext\DecoratorBase\FAnimNextDecoratorSharedData) & SharedData ) const


Returns the decorator pointer we are bound to.


Decorators can have shared read-only data that all instances of a graph can use (e.g. hard-coded properties). Shared data must derive fromFAnimNextDecoratorSharedData. Decorators can have instance data (e.g. blend weight). Instance data must derive fromFDecoratorInstanceData.


Queries a node for a pointer to its decorator instance data. If the decorator handle is invalid, a null pointer is returned.

template<class InstanceDataType> InstanceDataType * GetInstanceData() const


Performs a naked cast to the desired interface type.

template<class DecoratorInterfaceType> const DecoratorInterfaceType * GetInterfaceTyped() const


Returns the decorator interface UID when bound, an invalid UID otherwise.


Queries a node for a pointer to its decorator shared data. If the decorator handle is invalid, a null pointer is returned.

template<class SharedDataType> const SharedDataType * GetSharedData() const


Equality and inequality tests.

bool operator== ( const [FDecoratorBinding](API\Plugins\AnimNext\DecoratorBase\FDecoratorBinding) & RHS ) const


bool operator!= ( const [FDecoratorBinding](API\Plugins\AnimNext\DecoratorBase\FDecoratorBinding) & RHS ) const


Creates an empty binding.


Creates a valid binding.

FDecoratorBinding ( const [IDecoratorInterface](API\Plugins\AnimNext\DecoratorBase\IDecoratorInterface) * Interface_, const [FAnimNextDecoratorSharedData](API\Plugins\AnimNext\DecoratorBase\FAnimNextDecoratorSharedData) * SharedData_, [FDecoratorInstanceData](API\Plugins\AnimNext\DecoratorBase\FDecoratorInstanceData) * InstanceData_, [FWeakDecoratorPtr](API\Plugins\AnimNext\DecoratorBase\FWeakDecoratorPtr) DecoratorPtr_ )


Called after the constructor has been called when a new instance is created. This is called after the default constructor. You can override this function by adding a new one with the same name on your derived type. You can also specialize theFAnimNextDecoratorSharedDatawith the derived version as long as the reference can coerce to 'constFAnimNextDecoratorSharedData&'. Decorators are constructed from the bottom to the top.

void Construct ( [FExecutionContext](API\Plugins\AnimNext\DecoratorBase\FExecutionContext) & Context, [FWeakDecoratorPtr](API\Plugins\AnimNext\DecoratorBase\FWeakDecoratorPtr) DecoratorPtr, const [FAnimNextDecoratorSharedData](API\Plugins\AnimNext\DecoratorBase\FAnimNextDecoratorSharedData) & DecoratorDesc )


Called before the destructor has been called when an instance is destroyed. This is called before the default destructor. You can override this function by adding a new one with the same name on your derived type. You can also specialize theFAnimNextDecoratorSharedDatawith the derived version as long as the reference can coerce to 'constFAnimNextDecoratorSharedData&'. Decorators are destructed from the top to the bottom.

void Destruct ( [FExecutionContext](API\Plugins\AnimNext\DecoratorBase\FExecutionContext) & Context, [FWeakDecoratorPtr](API\Plugins\AnimNext\DecoratorBase\FWeakDecoratorPtr) DecoratorPtr, const [FAnimNextDecoratorSharedData](API\Plugins\AnimNext\DecoratorBase\FAnimNextDecoratorSharedData) & DecoratorDesc )


FNodeInstance


Returns a literal string to the interface name.

constexpr const TCHAR * GetInterfaceName() const


Base class for all decorator bindings. A decorator binding contains untyped data about a specific decorator instance.


Returns the interface global UID.


Returns whether this UID is valid or not.


Compares for equality and inequality.

constexpr bool operator== ( [FDecoratorInterfaceUID](API\Plugins\AnimNext\DecoratorBase\FDecoratorInterfaceUID) RHS ) const


constexpr bool operator!= ( [FDecoratorInterfaceUID](API\Plugins\AnimNext\DecoratorBase\FDecoratorInterfaceUID) RHS ) const


Constructs an invalid UID.


Constructs an interface UID.

constexpr FDecoratorInterfaceUID ( const TCHAR * InterfaceName_, uint32 UID_ )


The whole struct is meant to be 'constexpr' to allow inlining in interface queries.


Encapsulates size/alignment details for a decorator.

DecoratorAlignment

The alignment in bytes of an instance of the decorator class which derives fromFDecorator.

DecoratorSize

The size in bytes of an instance of the decorator class which derives fromFDecorator.

InstanceDataAlignment

The alignment in bytes of the instance data for the decorator.

InstanceDataSize

The size in bytes of the instance data for the decorator.

SharedDataAlignment

The alignment in bytes of the shared data for the decorator.

SharedDataSize

The size in bytes of the shared data for the decorator.


Various flags stored in the pointer alignment bits, assumes an alignment of at least 4 bytes.

enum EFlags { IS_WEAK_BIT = 0x01, FLAGS_MASK = 0x03, }


Returns the decorator index this pointer handle references.

constexpr uint32 GetDecoratorIndex() const


Returns true when the pointer is valid, false otherwise.


Returns a pointer to the node instance.

[FNodeInstance](API\Plugins\AnimNext\DecoratorBase\FNodeInstance) * GetNodeInstance() const


Returns true if this pointer handle is weak, false otherwise.


[FDecoratorPtr](API\Plugins\AnimNext\DecoratorBase\FDecoratorPtr) & operator= ( const [FDecoratorPtr](API\Plugins\AnimNext\DecoratorBase\FDecoratorPtr) & DecoratorPtr )


[FDecoratorPtr](API\Plugins\AnimNext\DecoratorBase\FDecoratorPtr) & operator= ( [FDecoratorPtr](API\Plugins\AnimNext\DecoratorBase\FDecoratorPtr) && DecoratorPtr )


Equality and inequality tests.

bool operator== ( const [FDecoratorPtr](API\Plugins\AnimNext\DecoratorBase\FDecoratorPtr) & RHS ) const


bool operator== ( const [FWeakDecoratorPtr](API\Plugins\AnimNext\DecoratorBase\FWeakDecoratorPtr) & RHS ) const


bool operator!= ( const [FDecoratorPtr](API\Plugins\AnimNext\DecoratorBase\FDecoratorPtr) & RHS ) const


bool operator!= ( const [FWeakDecoratorPtr](API\Plugins\AnimNext\DecoratorBase\FWeakDecoratorPtr) & RHS ) const


Clears the handle and renders it invalid.


Constructs an invalid pointer handle.


FDecoratorPtr ( const [FDecoratorPtr](API\Plugins\AnimNext\DecoratorBase\FDecoratorPtr) & DecoratorPtr )


FDecoratorPtr ( [FDecoratorPtr](API\Plugins\AnimNext\DecoratorBase\FDecoratorPtr) && DecoratorPtr )


Constructs a pointer handle to the provided instance.

FDecoratorPtr ( [FNodeInstance](API\Plugins\AnimNext\DecoratorBase\FNodeInstance) * NodeInstance, uint32 DecoratorIndex_ )


FDecoratorPtr &40; FNodeInstance &42; NodeInstance, EFlags Flags, uint32 DecoratorIndex_ &41;


Returns the dynamic array index for this handle when valid, otherwise INDEX_NONE.


FDecoratorInstanceData


Returns the static buffer offset for this handle when valid, otherwise INDEX_NONE.


Returns whether or not this handle is valid and points to a dynamic decorator.


Returns whether or not this handle is valid and points to a static decorator.


Returns whether or not this handle points to a valid decorator.


Compares for equality and inequality.

bool operator== ( [FDecoratorRegistryHandle](API\Plugins\AnimNext\DecoratorBase\FDecoratorRegistryHandle) RHS ) const


bool operator!= ( [FDecoratorRegistryHandle](API\Plugins\AnimNext\DecoratorBase\FDecoratorRegistryHandle) RHS ) const


Default constructed handles are invalid.


FDecoratorRegistryHandle &40; int16 HandleValue_ &41;


Encapsulates a value used as a handle in the decorator registry. When valid, it can be used to retrieve a pointer to the corresponding decorator.


FDecoratorStaticInitHook ( [DecoratorConstructorFunc](API\Plugins\AnimNext\DecoratorBase\DecoratorConstructorFunc) DecoratorConstructor_ )


Allows decorators to automatically register/unregister within the current scope. This can be used during static init.


Returns a literal string to the interface name.

constexpr const TCHAR * GetDecoratorName() const


Constructs an invalid UID.


Returns the decorator global UID.


Constructs a decorator UID.

constexpr FDecoratorUID ( const TCHAR * DecoratorName_, uint32 UID_ )


Allocates a new node instance from a decorator handle If the desired decorator lives in the current parent, a weak handle to it will be returned


The whole struct is meant to be 'constexpr' to allow inlining.


[FDecoratorPtr](API\Plugins\AnimNext\DecoratorBase\FDecoratorPtr) AllocateNodeInstance ( const [FDecoratorBinding](API\Plugins\AnimNext\DecoratorBase\FDecoratorBinding) & ParentBinding, [FAnimNextDecoratorHandle](API\Plugins\AnimNext\DecoratorBase\FAnimNextDecoratorHandle) ChildDecoratorHandle )


If no such decorator exists, nullptr is returned.

template<class DecoratorInterface> bool GetInterface ( [FWeakDecoratorPtr](API\Plugins\AnimNext\DecoratorBase\FWeakDecoratorPtr) DecoratorPtr, [TDecoratorBinding](API\Plugins\AnimNext\DecoratorBase\TDecoratorBinding)< DecoratorInterface > & InterfaceBinding ) const


template<class DecoratorInterface> bool GetInterface ( const [FDecoratorBinding](API\Plugins\AnimNext\DecoratorBase\FDecoratorBinding) & Binding, [TDecoratorBinding](API\Plugins\AnimNext\DecoratorBase\TDecoratorBinding)< DecoratorInterface > & InterfaceBinding ) const


Returns whether this UID is valid or not.


template<class DecoratorInterface> bool GetInterfaceSuper ( [FWeakDecoratorPtr](API\Plugins\AnimNext\DecoratorBase\FWeakDecoratorPtr) DecoratorPtr, [TDecoratorBinding](API\Plugins\AnimNext\DecoratorBase\TDecoratorBinding)< DecoratorInterface > & SuperBinding ) const


template<class DecoratorInterface> bool GetInterfaceSuper ( const [FDecoratorBinding](API\Plugins\AnimNext\DecoratorBase\FDecoratorBinding) & Binding, [TDecoratorBinding](API\Plugins\AnimNext\DecoratorBase\TDecoratorBinding)< DecoratorInterface > & SuperBinding ) const


Returns the current strongly typed traversal context or nullptr if not in a traversal.

template<class TraversalContextType> TraversalContextType & GetTraversalContext() const


Releases a node instance that is no longer referenced.

void ReleaseNodeInstance ( [FNodeInstance](API\Plugins\AnimNext\DecoratorBase\FNodeInstance) * Node )


Creates an execution context for the specified graph.

FExecutionContext ( [TArrayView](API\Runtime\Core\Containers\TArrayView)< const uint8 > GraphSharedData )


FExecutionContext &40; const FExecutionContext & &41;


FExecutionContext &40; FExecutionContext && &41;


Destroys the execution context.


The execution context holds internal state during traversals of the animation graph.


Returns the handle of the node's template in the node template registry.


Returns the node UID, unique to the owning sub-graph.


The maximum number of nodes allowed within a single graph We use 16 bits to represent node UIDs

static constexpr uint32 MAXIMUM_COUNT = std::numeric_limits<uint16>::max();


Largest allowed size for a node description Graphs are currently limited to 64 KB because we use 16 bit offsets within our node/decorator handles We have no particular limit on the node size besides the graph limit (for now)

static constexpr uint32 MAXIMUM_SIZE = 64 * 1024;


Serializes this node description instance and the shared data of each decorator that follows.

void Serialize ( [FArchive](API\Runtime\Core\Serialization\FArchive) & Ar )


FNodeDescription ( uint16 UID_, [FNodeTemplateRegistryHandle](API\Plugins\AnimNext\DecoratorBase\FNodeTemplateRegistryHandle) TemplateHandle_ )


FNodeTemplate


Returns the offset into the shared data relative to the root of the owning sub-graph.


We pack the shared offset on 24 bits, the top 8 bits are truncated.

static constexpr uint32 INVALID_SHARED_OFFSET_VALUE = ~0u >> (32 - 24);


Returns true if this node handle is valid, false otherwise.


Equality and inequality tests.

bool operator== ( [FNodeHandle](API\Plugins\AnimNext\DecoratorBase\FNodeHandle) RHS ) const


bool operator!= ( [FNodeHandle](API\Plugins\AnimNext\DecoratorBase\FNodeHandle) RHS ) const


Creates an invalid node handle.


Creates a node handle for the specified shared offset.


FNodeDescription


Returns a handle to the shared data for this node.


[FNodeInstance](API\Plugins\AnimNext\DecoratorBase\FNodeInstance) & operator= ( const [FNodeInstance](API\Plugins\AnimNext\DecoratorBase\FNodeInstance) & )


Returns the number of live references to this node instance, does not include weak handles.


Returns whether the node instance is valid or not.


FNodeInstance ( const [FNodeInstance](API\Plugins\AnimNext\DecoratorBase\FNodeInstance) & )


FNodeInstance &40; FNodeHandle NodeHandle &41;


FDecoratorTemplate


Returns the template offset for this handle when valid, otherwise INDEX_NONE.


Returns whether or not this handle points to a valid node template.


Compares for equality and inequality.

bool operator== ( [FNodeTemplateRegistryHandle](API\Plugins\AnimNext\DecoratorBase\FNodeTemplateRegistryHandle) RHS ) const


bool operator!= ( [FNodeTemplateRegistryHandle](API\Plugins\AnimNext\DecoratorBase\FNodeTemplateRegistryHandle) RHS ) const


Default constructed handles are invalid.


FNodeTemplateRegistryHandle &40; int16 TemplateOffset_ &41;


Encapsulates a value used as a handle in the node template registry. When valid, it can be used to retrieve a pointer to the corresponding node template.


[FScopedTraversalContext](API\Plugins\AnimNext\DecoratorBase\FScopedTraversalContext) & operator= ( const [FScopedTraversalContext](API\Plugins\AnimNext\DecoratorBase\FScopedTraversalContext) & )


FScopedTraversalContext ( const [FScopedTraversalContext](API\Plugins\AnimNext\DecoratorBase\FScopedTraversalContext) & )


FScopedTraversalContext ( [FExecutionContext](API\Plugins\AnimNext\DecoratorBase\FExecutionContext) & ExecutionContext, [ITraversalContext](API\Plugins\AnimNext\DecoratorBase\ITraversalContext) & TraversalContext )


FExecutionContext


Returns the decorator index this pointer handle references.

constexpr uint32 GetDecoratorIndex() const


Returns a pointer to the node instance.

constexpr [FNodeInstance](API\Plugins\AnimNext\DecoratorBase\FNodeInstance) * GetNodeInstance() const


Returns true when the pointer is valid, false otherwise.


Equality and inequality tests.

bool operator== ( const [FWeakDecoratorPtr](API\Plugins\AnimNext\DecoratorBase\FWeakDecoratorPtr) & RHS ) const


bool operator== ( const [FDecoratorPtr](API\Plugins\AnimNext\DecoratorBase\FDecoratorPtr) & RHS ) const


bool operator!= ( const [FWeakDecoratorPtr](API\Plugins\AnimNext\DecoratorBase\FWeakDecoratorPtr) & RHS ) const


bool operator!= ( const [FDecoratorPtr](API\Plugins\AnimNext\DecoratorBase\FDecoratorPtr) & RHS ) const


Clears the handle and renders it invalid.


Constructs an invalid weak pointer handle.


Constructs a weak pointer handle from a shared pointer handle.

FWeakDecoratorPtr ( const [FDecoratorPtr](API\Plugins\AnimNext\DecoratorBase\FDecoratorPtr) & DecoratorPtr )


FWeakDecoratorPtr ( [FNodeInstance](API\Plugins\AnimNext\DecoratorBase\FNodeInstance) * NodeInstance_, uint32 DecoratorIndex_ )


FDecoratorPtr


virtual [FDecoratorInterfaceUID](API\Plugins\AnimNext\DecoratorBase\FDecoratorInterfaceUID) GetInterfaceUID() const


Derived types will have their own InterfaceUID member that hides/aliases/shadows this one.

static constexpr [FDecoratorInterfaceUID](API\Plugins\AnimNext\DecoratorBase\FDecoratorInterfaceUID) InterfaceUID = FDecoratorInterfaceUID(TEXT("IDecoratorInterface"), 0x402f6df4);


Base type for all decorator interfaces. Used for type safety.


IHierarchy

template<class DecoratorInterfaceType> struct TDecoratorBinding


FExecutionContext


Describes how a decorator behaves once attached to an animation node.

namespace UE { namespace AnimNext { enum EDecoratorMode { Base, Additive, } } }


Flags to control what to compute when evaluating an animation node.

namespace UE { namespace AnimNext { enum EEvaluationFlags { None = 0x00, Trajectory = 0x01, Pose = 0x02, Curves = 0x04, Attributes = 0x08, All = 0xff, } } }


Compares for equality and inequality.

namespace UE { namespace AnimNext { constexpr bool UE::AnimNext::operator== ( [FDecoratorUID](API\Plugins\AnimNext\DecoratorBase\FDecoratorUID) LHS, [FDecoratorUID](API\Plugins\AnimNext\DecoratorBase\FDecoratorUID) RHS ) } }


namespace UE { namespace AnimNext { constexpr bool UE::AnimNext::operator== ( [FDecoratorUID](API\Plugins\AnimNext\DecoratorBase\FDecoratorUID) LHS, uint32 RHS ) } }


namespace UE { namespace AnimNext { constexpr bool UE::AnimNext::operator== ( uint32 LHS, [FDecoratorUID](API\Plugins\AnimNext\DecoratorBase\FDecoratorUID) RHS ) } }


namespace UE { namespace AnimNext { constexpr bool UE::AnimNext::operator!= ( [FDecoratorUID](API\Plugins\AnimNext\DecoratorBase\FDecoratorUID) LHS, [FDecoratorUID](API\Plugins\AnimNext\DecoratorBase\FDecoratorUID) RHS ) } }


namespace UE { namespace AnimNext { constexpr bool UE::AnimNext::operator!= ( [FDecoratorUID](API\Plugins\AnimNext\DecoratorBase\FDecoratorUID) LHS, uint32 RHS ) } }


namespace UE { namespace AnimNext { constexpr bool UE::AnimNext::operator!= ( uint32 LHS, [FDecoratorUID](API\Plugins\AnimNext\DecoratorBase\FDecoratorUID) RHS ) } }


namespace UE { namespace AnimNext { [EEvaluationFlags](API\Plugins\AnimNext\DecoratorBase\UE__AnimNext__EEvaluationFlags) & UE::AnimNext::operator&= ( [EEvaluationFlags](API\Plugins\AnimNext\DecoratorBase\UE__AnimNext__EEvaluationFlags) & Lhs, [EEvaluationFlags](API\Plugins\AnimNext\DecoratorBase\UE__AnimNext__EEvaluationFlags) Rhs ) } }


namespace UE { namespace AnimNext { [EEvaluationFlags](API\Plugins\AnimNext\DecoratorBase\UE__AnimNext__EEvaluationFlags) & UE::AnimNext::operator^= ( [EEvaluationFlags](API\Plugins\AnimNext\DecoratorBase\UE__AnimNext__EEvaluationFlags) & Lhs, [EEvaluationFlags](API\Plugins\AnimNext\DecoratorBase\UE__AnimNext__EEvaluationFlags) Rhs ) } }


namespace UE { namespace AnimNext { constexpr [EEvaluationFlags](API\Plugins\AnimNext\DecoratorBase\UE__AnimNext__EEvaluationFlags) UE::AnimNext::operator& ( [EEvaluationFlags](API\Plugins\AnimNext\DecoratorBase\UE__AnimNext__EEvaluationFlags) Lhs, [EEvaluationFlags](API\Plugins\AnimNext\DecoratorBase\UE__AnimNext__EEvaluationFlags) Rhs ) } }


namespace UE { namespace AnimNext { constexpr [EEvaluationFlags](API\Plugins\AnimNext\DecoratorBase\UE__AnimNext__EEvaluationFlags) UE::AnimNext::operator^ ( [EEvaluationFlags](API\Plugins\AnimNext\DecoratorBase\UE__AnimNext__EEvaluationFlags) Lhs, [EEvaluationFlags](API\Plugins\AnimNext\DecoratorBase\UE__AnimNext__EEvaluationFlags) Rhs ) } }


namespace UE { namespace AnimNext { constexpr bool UE::AnimNext::operator! ( [EEvaluationFlags](API\Plugins\AnimNext\DecoratorBase\UE__AnimNext__EEvaluationFlags) E ) } }


namespace UE { namespace AnimNext { constexpr [EEvaluationFlags](API\Plugins\AnimNext\DecoratorBase\UE__AnimNext__EEvaluationFlags) UE::AnimNext::operator~ ( [EEvaluationFlags](API\Plugins\AnimNext\DecoratorBase\UE__AnimNext__EEvaluationFlags) E ) } }


FEvaluateTraversalContext ( [EEvaluationFlags](API\Plugins\AnimNext\DecoratorBase\UE__AnimNext__EEvaluationFlags) EvaluationFlags_ )


Contains all relevant transient data for an evaluate traversal.

struct FEvaluateTraversalContext : public [UE::AnimNext::ITraversalContext](API\Plugins\AnimNext\DecoratorBase\ITraversalContext)


TODO: Hook up our real pose container.


Contains all relevant transient data for an update traversal.

struct FUpdateTraversalContext : public [UE::AnimNext::ITraversalContext](API\Plugins\AnimNext\DecoratorBase\ITraversalContext)


Called after a decorator's children have been evaluated.

virtual void PostEvaluate ( [FExecutionContext](API\Plugins\AnimNext\DecoratorBase\FExecutionContext) & Context, const [TDecoratorBinding](API\Plugins\AnimNext\DecoratorBase\TDecoratorBinding)< [IEvaluate](API\Plugins\AnimNext\DecoratorInterfaces\IEvaluate) > & Binding ) const


Globally unique UID for this interface

static constexpr [UE::AnimNext::FDecoratorInterfaceUID](API\Plugins\AnimNext\DecoratorBase\FDecoratorInterfaceUID) InterfaceUID = UE::AnimNext::FDecoratorInterfaceUID(TEXT("IEvaluate"), 0xa303e9e7 );


Called before a decorator's children are evaluated.

virtual void PreEvaluate ( [FExecutionContext](API\Plugins\AnimNext\DecoratorBase\FExecutionContext) & Context, const [TDecoratorBinding](API\Plugins\AnimNext\DecoratorBase\TDecoratorBinding)< [IEvaluate](API\Plugins\AnimNext\DecoratorInterfaces\IEvaluate) > & Binding ) const


EEvaluationFlags

struct IEvaluate : public [UE::AnimNext::IDecoratorInterface](API\Plugins\AnimNext\DecoratorBase\IDecoratorInterface)


Appends weak handles to any children we wish to traverse. Decorators are responsible for allocating and releasing child instance data.

virtual void GetChildren ( [FExecutionContext](API\Plugins\AnimNext\DecoratorBase\FExecutionContext) & Context, const [TDecoratorBinding](API\Plugins\AnimNext\DecoratorBase\TDecoratorBinding)< [IHierarchy](API\Plugins\AnimNext\DecoratorInterfaces\IHierarchy) > & Binding, [FChildrenArray](API\Plugins\AnimNext\DecoratorInterfaces\FChildrenArray) & Children ) const


Globally unique UID for this interface

static constexpr [UE::AnimNext::FDecoratorInterfaceUID](API\Plugins\AnimNext\DecoratorBase\FDecoratorInterfaceUID) InterfaceUID = UE::AnimNext::FDecoratorInterfaceUID(TEXT("IHierarchy"), 0x846d8a37 );


This interface exposes hierarchy traversal information to navigate the graph.

struct IHierarchy : public [UE::AnimNext::IDecoratorInterface](API\Plugins\AnimNext\DecoratorBase\IDecoratorInterface)


Returns the play rate of this timeline.

virtual double GetPlayRate ( [FExecutionContext](API\Plugins\AnimNext\DecoratorBase\FExecutionContext) & Context, const [TDecoratorBinding](API\Plugins\AnimNext\DecoratorBase\TDecoratorBinding)< [ITimeline](API\Plugins\AnimNext\DecoratorInterfaces\ITimeline) > & Binding ) const


Globally unique UID for this interface

static constexpr [UE::AnimNext::FDecoratorInterfaceUID](API\Plugins\AnimNext\DecoratorBase\FDecoratorInterfaceUID) InterfaceUID = UE::AnimNext::FDecoratorInterfaceUID(TEXT("ITimeline"), 0x53760727 );


This interface exposes timeline related information.

struct ITimeline : public [UE::AnimNext::IDecoratorInterface](API\Plugins\AnimNext\DecoratorBase\IDecoratorInterface)


Globally unique UID for this interface

static constexpr [UE::AnimNext::FDecoratorInterfaceUID](API\Plugins\AnimNext\DecoratorBase\FDecoratorInterfaceUID) InterfaceUID = UE::AnimNext::FDecoratorInterfaceUID(TEXT("IUpdate"), 0x59d24dc5 );


Called after a decorator's children have been updated.

virtual void PostUpdate ( [FExecutionContext](API\Plugins\AnimNext\DecoratorBase\FExecutionContext) & Context, const [TDecoratorBinding](API\Plugins\AnimNext\DecoratorBase\TDecoratorBinding)< [IUpdate](API\Plugins\AnimNext\DecoratorInterfaces\IUpdate) > & Binding ) const


Called before a decorator's children are updated.

virtual void PreUpdate ( [FExecutionContext](API\Plugins\AnimNext\DecoratorBase\FExecutionContext) & Context, const [TDecoratorBinding](API\Plugins\AnimNext\DecoratorBase\TDecoratorBinding)< [IUpdate](API\Plugins\AnimNext\DecoratorInterfaces\IUpdate) > & Binding ) const


When a node is decorator is visited, PreUpdate is first called on it. It is responsible for forwarding the call to the next decorator that implements this interface on the decorator stack of the node. Once all decorators have had the chance to PreUpdate, the children of the decorator are queried through theIHierarchyinterface. The children will then evaluate and PostUpdate will then be called afterwards on the original decorator.

struct IUpdate : public [UE::AnimNext::IDecoratorInterface](API\Plugins\AnimNext\DecoratorBase\IDecoratorInterface)


const IEvaluate &42; GetInterface&40;&41; const


IEvaluate::PostEvaluate

void PostEvaluate &40; FExecutionContext & Context &41; const


IEvaluate::PreEvaluate

void PreEvaluate &40; FExecutionContext & Context &41; const


IHierarchy::GetChildren

void GetChildren &40; FExecutionContext & Context, FChildrenArray & Children &41; const


Specialization for decorator binding.

template<> struct TDecoratorBinding< IEvaluate > : public [UE::AnimNext::FDecoratorBinding](API\Plugins\AnimNext\DecoratorBase\FDecoratorBinding)


const IHierarchy &42; GetInterface&40;&41; const


Specialization for decorator binding.

template<> struct TDecoratorBinding< IHierarchy > : public [UE::AnimNext::FDecoratorBinding](API\Plugins\AnimNext\DecoratorBase\FDecoratorBinding)


const ITimeline &42; GetInterface&40;&41; const


ITimeline::GetPlayRate

double GetPlayRate &40; FExecutionContext & Context &41; const


Specialization for decorator binding.

template<> struct TDecoratorBinding< ITimeline > : public [UE::AnimNext::FDecoratorBinding](API\Plugins\AnimNext\DecoratorBase\FDecoratorBinding)


IUpdate::PostUpdate

void PostUpdate &40; FExecutionContext & Context &41; const


const IUpdate &42; GetInterface&40;&41; const


IUpdate::PreUpdate

void PreUpdate &40; FExecutionContext & Context &41; const


Specialization for decorator binding.

template<> struct TDecoratorBinding< IUpdate > : public [UE::AnimNext::FDecoratorBinding](API\Plugins\AnimNext\DecoratorBase\FDecoratorBinding)


FAllocatedBlock &40; const FAllocatedBlock & Other &41;


FAllocatedBlock &40; FAllocatedBlock && Other &41;


FAllocatedBlock ( void * InMemory, int32 InNumElem, [FParamTypeHandle](API\Plugins\AnimNext\Param\FParamTypeHandle) InTypeHandle )


USTRUCT wrapper for reference pose.

[USTRUCT](Programming/UnrealArchitecture/Reference/Structs)() struct FAnimNextReferencePose : public [UE::AnimNext::TReferencePose< FDefaultAllocator >](API\Plugins\AnimNext\TReferencePose)


Access the parameter stack, cached on construction.

[FParamStack](API\Plugins\AnimNext\Param\FParamStack) & GetMutableParamStack() const


const [FParamStack](API\Plugins\AnimNext\Param\FParamStack) & GetParamStack() const


[FContext](API\Plugins\AnimNext\FContext) & operator= ( const [FContext](API\Plugins\AnimNext\FContext) & )


[FContext](API\Plugins\AnimNext\FContext) & operator= ( [FContext](API\Plugins\AnimNext\FContext) && Other )


USTRUCT wrapper for LOD pose.

[USTRUCT](Programming/UnrealArchitecture/Reference/Structs)() struct FAnimNextLODPose : public [UE::AnimNext::TLODPose< FDefaultAllocator >](API\Plugins\AnimNext\TLODPose)


FContext ( const [FContext](API\Plugins\AnimNext\FContext) & Other )


FContext ( [FContext](API\Plugins\AnimNext\FContext) && Other )


Context providing methods for mutating & interrogating the anim interface runtime.


template<typename [DataType](API\Plugins\OptimusCore\DataType)> [TArrayView](API\Runtime\Core\Containers\TArrayView)< [DataType](API\Plugins\OptimusCore\DataType) > AsArrayView()


template<typename [DataType](API\Plugins\OptimusCore\DataType)> [TArrayView](API\Runtime\Core\Containers\TArrayView)< [DataType](API\Plugins\OptimusCore\DataType) > AsArrayView() const


template<typename [DataType](API\Plugins\OptimusCore\DataType)> [DataType](API\Plugins\OptimusCore\DataType) * GetPtr()


template<typename [DataType](API\Plugins\OptimusCore\DataType)> const [DataType](API\Plugins\OptimusCore\DataType) * GetPtr() const


template<typename [DataType](API\Plugins\OptimusCore\DataType)> const [DataType](API\Plugins\OptimusCore\DataType) & GetRef() const


template<typename [DataType](API\Plugins\OptimusCore\DataType)> [DataType](API\Plugins\OptimusCore\DataType) & GetRef()


[FDataHandle](API\Plugins\AnimNext\FDataHandle) & operator= ( const [FDataHandle](API\Plugins\AnimNext\FDataHandle) & Other )


[FDataHandle](API\Plugins\AnimNext\FDataHandle) & operator= ( [FDataHandle](API\Plugins\AnimNext\FDataHandle) && Other )


FDataHandle ( [Private::FAllocatedBlock](API\Plugins\AnimNext\FAllocatedBlock) * InAllocatedBlock )


FDataHandle ( const [FDataHandle](API\Plugins\AnimNext\FDataHandle) & Other )


FDataHandle ( [FDataHandle](API\Plugins\AnimNext\FDataHandle) && Other )


Allocates memory for a type, initialized with the default constructor (with optional passed arguments) Returns a refcounted animation data handle Allocated memory will be released once the refcount reaches 0

template<typename [DataType](API\Plugins\OptimusCore\DataType), typename... ArgTypes> [FDataHandle](API\Plugins\AnimNext\FDataHandle) AllocateData ( const int32 NumElements, ArgTypes &&... Args )


static constexpr int32 DEFAULT_BLOCK_SIZE = 32;


Access the global registry.

static [FDataRegistry](API\Plugins\AnimNext\FDataRegistry) * Get()


Returns a ref counted handle to the refence pose of the given skeletal mesh component.

[FDataHandle](API\Plugins\AnimNext\FDataHandle) GetOrGenerateReferencePose ( [USkeletalMeshComponent](API\Runtime\Engine\Components\USkeletalMeshComponent) * SkeletalMeshComponent )


Obtains the data hanle for the passed Id, if it exists. If there is no anim data handle registered, the handle IsValid will be false

[FDataHandle](API\Plugins\AnimNext\FDataHandle) GetRegisteredData ( const [FName](API\Runtime\Core\UObject\FName) & Id ) const


Allocates uninitialized memory for a type (leaving the initialization to the caller) Returns a refcounted animation data handle Allocated memory will be released once the refcount reaches 0

template<typename [DataType](API\Plugins\OptimusCore\DataType)> [FDataHandle](API\Plugins\AnimNext\FDataHandle) PreAllocateMemory ( const int32 NumElements )


Registers an anim data handle with arbitrary data using anFNameNote that AnimDataHandles are refcounted, so this makes them permanent until unregistered

void RegisterData ( const [FName](API\Runtime\Core\UObject\FName) & Id, const [FDataHandle](API\Plugins\AnimNext\FDataHandle) & AnimationDataHandle )


Registers a type and sets the desired preallocation block size If a type is allocated without registering, a default block size of 32 will be used

template<typename [DataType](API\Plugins\OptimusCore\DataType)> void RegisterDataType ( int32 AllocationBlockSize )


Generates and registers a reference pose for the SkeletalMesh asset of the SkeletalMeshComponent and modifies it with the additional required bones or the visibility state of the bones of the SkeletalMeshComponent

[FDataHandle](API\Plugins\AnimNext\FDataHandle) RegisterReferencePose ( [USkeletalMeshComponent](API\Runtime\Engine\Components\USkeletalMeshComponent) * SkeletalMeshComponent )


Removes a previously registered reference pose for the given SkeletalMeshComponent.

void RemoveReferencePose ( [USkeletalMeshComponent](API\Runtime\Engine\Components\USkeletalMeshComponent) * SkeletalMeshComponent )


Unregisters a previously registered anim data handle.

void UnregisterData ( const [FName](API\Runtime\Core\UObject\FName) & Id )


Global registry of animation data Holds ref counted data that gets released when the last DataHandle of that element goes out of scope Calling public functions from multiple threads is expected. Data races are guarded by a FRWLock. TODO : Memory management will have to be implemented to avoid fragmentation and performance reasons


Decompress and retarget animation data using provided RetargetTransforms.

static void DecompressPose ( [FLODPose](API\Plugins\AnimNext\FLODPose) & OutAnimationPoseData, const [FCompressedAnimSequence](API\Runtime\Engine\Animation\FCompressedAnimSequence) & CompressedData, const [FAnimExtractContext](API\Runtime\Engine\Animation\FAnimExtractContext) & ExtractionContext, [FAnimSequenceDecompressionContext](API\Runtime\Engine\Animation\FAnimSequenceDecompressionContex-) & DecompressionContext, const [TArray](API\Runtime\Core\Containers\TArray)< FTransform > & RetargetTransforms, const [FRootMotionReset](API\Runtime\Engine\Animation\FRootMotionReset) & RootMotionReset )


Decompress and retarget animation data.

static void DecompressPose ( [FLODPose](API\Plugins\AnimNext\FLODPose) & OutAnimationPoseData, const [FCompressedAnimSequence](API\Runtime\Engine\Animation\FCompressedAnimSequence) & CompressedData, const [FAnimExtractContext](API\Runtime\Engine\Animation\FAnimExtractContext) & ExtractionContext, [FAnimSequenceDecompressionContext](API\Runtime\Engine\Animation\FAnimSequenceDecompressionContex-) & DecompressionContext, [FName](API\Runtime\Core\UObject\FName) RetargetSource, const [FRootMotionReset](API\Runtime\Engine\Animation\FRootMotionReset) & RootMotionReset )


Extracted fromUAnimSequenceExtracts Animation Data from the provided AnimSequence, using AnimExtractContext extraction parameters

static void GetAnimationPose ( const [UAnimSequence](API\Runtime\Engine\Animation\UAnimSequence) * AnimSequence, [FLODPose](API\Plugins\AnimNext\FLODPose) & OutAnimationPoseData, const [FAnimExtractContext](API\Runtime\Engine\Animation\FAnimExtractContext) & ExtractionContext )


Get Bone Transform of the Time given, relative to Parent for all RequiredBones This returns different transform based on additive or not. Or what kind of additive.

static void GetBonePose ( const [UAnimSequence](API\Runtime\Engine\Animation\UAnimSequence) * AnimSequence, const [FAnimExtractContext](API\Runtime\Engine\Animation\FAnimExtractContext) & ExtractionContext, [FLODPose](API\Plugins\AnimNext\FLODPose) & OutAnimationPoseData, bool bForceUseRawData )


static void GetBonePose_Additive ( const [UAnimSequence](API\Runtime\Engine\Animation\UAnimSequence) * AnimSequence, const [FAnimExtractContext](API\Runtime\Engine\Animation\FAnimExtractContext) & ExtractionContext, [FLODPose](API\Plugins\AnimNext\FLODPose) & OutAnimationPoseData )


static void RetargetBoneTransform ( const [FReferencePose](API\Plugins\AnimNext\FReferencePose) & ReferencePose, const [USkeleton](API\Runtime\Engine\Animation\USkeleton) * SourceSkeleton, const [USkeleton](API\Runtime\Engine\Animation\USkeleton) * TargetSkeleton, const [FName](API\Runtime\Core\UObject\FName) & RetargetSource, FTransform & BoneTransform, const int32 SkeletonBoneIndex, const int32 LODBoneIndex, const bool bIsBakedAdditive, const bool bDisableRetargeting )


static void GetBonePose_AdditiveMeshRotationOnly ( const [UAnimSequence](API\Runtime\Engine\Animation\UAnimSequence) * AnimSequence, const [FAnimExtractContext](API\Runtime\Engine\Animation\FAnimExtractContext) & ExtractionContext, [FLODPose](API\Plugins\AnimNext\FLODPose) & OutAnimationPoseData )


static void RetargetBoneTransform ( const [FReferencePose](API\Plugins\AnimNext\FReferencePose) & ReferencePose, const [USkeleton](API\Runtime\Engine\Animation\USkeleton) * SourceSkeleton, const [USkeleton](API\Runtime\Engine\Animation\USkeleton) * TargetSkeleton, const [FName](API\Runtime\Core\UObject\FName) & SourceName, const [TArray](API\Runtime\Core\Containers\TArray)< FTransform > & RetargetTransforms, FTransform & BoneTransform, const int32 SkeletonBoneIndex, const int32 LODBoneIndex, const bool bIsBakedAdditive, const bool bDisableRetargeting )


Calculate the bone indexes difference from LOD0 for LODIndex.

static void CalculateDifferenceFromParentLOD ( int32 LODIndex, [TArray](API\Runtime\Core\Containers\TArray)< [FGenerationLODData](API\Plugins\AnimNext\FGenerationLODData) > & GenerationLODData )


For each LOD : Check the excluded bones in LOD(N) contain all the bones excluded in LOD(N-1)

static bool CheckExcludedBones ( const int32 NumLODs, const [TArray](API\Runtime\Core\Containers\TArray)< [FGenerationLODData](API\Plugins\AnimNext\FGenerationLODData) > & GenerationLODData, const [USkeletalMesh](API\Runtime\Engine\Engine\USkeletalMesh) * SkeletalMesh )


static void GenerateLODData ( const [USkeletalMeshComponent](API\Runtime\Engine\Components\USkeletalMeshComponent) * SkeletalMeshComponent, const [USkeletalMesh](API\Runtime\Engine\Engine\USkeletalMesh) * SkeletalMesh, const int32 StartLOD, const int32 NumLODs, const [TIndirectArray](API\Runtime\Core\Containers\TIndirectArray)< [FSkeletalMeshLODRenderData](API\Runtime\Engine\Rendering\FSkeletalMeshLODRenderData) > & LODRenderData, const [TArray](API\Runtime\Core\Containers\TArray)< FBoneIndexType > & RequiredBones_LOD0, [TArray](API\Runtime\Core\Containers\TArray)< [FGenerationLODData](API\Plugins\AnimNext\FGenerationLODData) > & GenerationLODData, [TArray](API\Runtime\Core\Containers\TArray)< [FGenerationLODData](API\Plugins\AnimNext\FGenerationLODData) > & GenerationComponentSpaceLODData )


Checks if all sockets of a skeletal mesh are set to always animate, as it is a requirement for generating a single reference pose, where the local space pose and the component space pose use the same bone indexes

static bool CheckSkeletalAllMeshSocketsAlwaysAnimate ( const [USkeletalMesh](API\Runtime\Engine\Engine\USkeletalMesh) * SkeletalMesh )


Utility for taking two arrays of bone indices, which must be strictly increasing, and finding the A - B. That is - any items left in A, after removing B.

static void DifferenceBoneIndexArrays ( const [TArray](API\Runtime\Core\Containers\TArray)< FBoneIndexType > & A, const [TArray](API\Runtime\Core\Containers\TArray)< FBoneIndexType > & B, [TArray](API\Runtime\Core\Containers\TArray)< FBoneIndexType > & Output )


For each LOD : Generates an unified list of bones, in LOD order (if possible) Returns true if the unified list could be created, false otherwise

static bool GenerateOrderedBoneList ( const [USkeletalMesh](API\Runtime\Engine\Engine\USkeletalMesh) * SkeletalMesh, [TArray](API\Runtime\Core\Containers\TArray)< [FGenerationLODData](API\Plugins\AnimNext\FGenerationLODData) > & GenerationLODData, [TArray](API\Runtime\Core\Containers\TArray)< FBoneIndexType > & OrderedBoneList )


Generates the full list of bones required by a LOD, based on the SkeletalRetrieve RequiredBones Compute ExcludedBones versus LOD0 and PreviousLOD Remove ExcludedBonesFromPrevLOD from BonesInAllLODS

static void GenerateRawLODData ( const [USkeletalMeshComponent](API\Runtime\Engine\Components\USkeletalMeshComponent) * SkeletalMeshComponent, const [USkeletalMesh](API\Runtime\Engine\Engine\USkeletalMesh) * SkeletalMesh, const int32 LODIndex, const [TIndirectArray](API\Runtime\Core\Containers\TIndirectArray)< [FSkeletalMeshLODRenderData](API\Runtime\Engine\Rendering\FSkeletalMeshLODRenderData) > & LODRenderData, [TArray](API\Runtime\Core\Containers\TArray)< FBoneIndexType > & OutRequiredBones, [TArray](API\Runtime\Core\Containers\TArray)< FBoneIndexType > & OutFillComponentSpaceTransformsRequiredBones )


Generates the reference pose data from a SkeletalMeshComponent and / or Skeletal Mesh asset If no SkeletalMeshComponent is passed, the reference pose will not exclude invisible bones and will not include shadow shapes required bones If no SkeletalMesh asset is passed, there will be no generation

static bool GenerateReferencePose ( const [USkeletalMeshComponent](API\Runtime\Engine\Components\USkeletalMeshComponent) * SkeletalMeshComponent, const [USkeletalMesh](API\Runtime\Engine\Engine\USkeletalMesh) * SkeletalMesh, [UE::AnimNext::FReferencePose](API\Plugins\AnimNext\FReferencePose) & OutAnimationReferencePose )


Converts AnimBP pose to AnimNext Pose This function expects both poses to have the same LOD (number of bones and indexes) The target pose should be assigned to the correct reference pose prior to this call

static void RemapPose ( int32 LODLevel, const [FPoseContext](API\Runtime\Engine\Animation\FPoseContext) & SourcePose, const [FReferencePose](API\Plugins\AnimNext\FReferencePose) & RefPose, [FLODPose](API\Plugins\AnimNext\FLODPose) & TargetPose )


Converts AnimNext pose to AnimBP Pose This function expects both poses to have the same LOD (number of bones and indexes) The target pose should be assigned to the correct reference pose prior to this call

static void RemapPose ( int32 LODLevel, const [FReferencePose](API\Plugins\AnimNext\FReferencePose) & RefPose, const [FLODPose](API\Plugins\AnimNext\FLODPose) & SourcePose, [FPoseContext](API\Runtime\Engine\Animation\FPoseContext) & TargetPose )


typedef [TLODPose](API\Plugins\AnimNext\TLODPose)< FDefaultAllocator > FLODPoseHeap


Hide the allocator usage

typedef [TReferencePose](API\Plugins\AnimNext\TReferencePose)< FDefaultAllocator > FReferencePose


typedef [TLODPose](API\Plugins\AnimNext\TLODPose)< FAnimStackAllocator > FLODPoseStack


Transform Array using ArrayOfStructs model

typedef [TTransformArrayAoS](API\Plugins\AnimNext\TTransformArrayAoS)< FDefaultAllocator > FTransformArrayAoSHeap


typedef [TTransformArrayAoS](API\Plugins\AnimNext\TTransformArrayAoS)< FAnimStackAllocator > FTransformArrayAoSStack


Transform Array using StructsOfArrays model

typedef [TTransformArraySoA](API\Plugins\AnimNext\TTransformArraySoA)< FDefaultAllocator > FTransformArraySoAHeap


typedef [TTransformArraySoA](API\Plugins\AnimNext\TTransformArraySoA)< FAnimStackAllocator > FTransformArraySoAStack


void operator= ( const FTransform & Transform )


void SetRotation ( const FQuat & InRotation )


void ScaleTranslation ( const [FVector::FReal](API\Runtime\Core\Math\TVector\FReal) & Scale )


void SetScale3D ( const FVector & InScale3D )


void SetTranslation ( const FVector & InTranslation )


FTransformSoAAdapter ( FQuat & InRotation, FVector & InTranslation, FVector & InScale3D )


This enables using a SoA array with operator[].


Helper function returning the alignment of the type.
Alignment of the type.


Get the type of the container described by this parameter.


Get a parameter type handle that represents this type


Helper function returning the size of the type.
Size in bytes of the type.


Get the type of the value described by this parameter.


Get a parameter type based on the passed-in built-in type

template<typename ParamType> static [FAnimNextParamType](API\Plugins\AnimNext\Param\FAnimNextParamType) GetType()


Helper function returning the alignment of the value type. This is identical to GetAlignment for non containers
Alignment of the value type.


Get the pointer to the object that defines the Enum, Struct, or Class.

const [UObject](API\Runtime\CoreUObject\UObject\UObject) * GetValueTypeObject() const


Helper function returning the size of the value type. This is identical to GetSize for non containers
Size in bytes of the value type.


whether this type actually describes a type


Get a string representing this type


Construct a parameter type from the passed in value, container and object type.

FAnimNextParamType ( [EValueType](API\Plugins\StructUtils\EPropertyBagPropertyType) InValueType, [EContainerType](API\Plugins\StructUtils\EPropertyBagContainerType) InContainerType, const [UObject](API\Runtime\CoreUObject\UObject\UObject) * InValueTypeObject )


Representation of a parameter's type. Serializable, but fairly heavyweight to pass around and compare. Faster comparisons and other operations can be performed on UE::AnimNext::FTypeHandle, but they cannot be serialized as they are not stable across runs.


static constexpr uint32 InvalidIndex = ((uint32) 0xffffffff);


Get the index of this param.


[FParamId](API\Plugins\AnimNext\Param\FParamId) & operator= ( const [FParamId](API\Plugins\AnimNext\Param\FParamId) & InName )


Get the name that this parameter was created from.


FParamId ( const [FParamId](API\Plugins\AnimNext\Param\FParamId) & InName )


Make a parameter ID from anFName.

FParamId ( [FName](API\Runtime\Core\UObject\FName) InName )


Make a parameter ID from an index (for internal use)

FParamId &40; uint32 InParameterIndex &41;


Global identifier used to index into dense parameter arrays.


Results forFParamStack::GetParam.

enum EGetParamResult { Succeeded = 0x00, NotInScope = 0x01, IncorrectType = 0x02, Immutable = 0x04, }


enum EParamFlags { None = 0, Mutable = 1 << 0, Embedded = 1 << 1, Reference = 1 << 2, }


Get the param stack for this thread.

static [FParamStack](API\Plugins\AnimNext\Param\FParamStack) & Get()


Get a mutable reference to the value of a parameter given aFParamId.
a mutable reference to the parameter's value. Function asserts if the parameter is not present

template<typename ValueType> ValueType & GetMutableParam ( [FParamId](API\Plugins\AnimNext\Param\FParamId) InParamId, [FParamStack::EGetParamResult](API\Plugins\AnimNext\Param\FParamStack\EGetParamResult) * OutResult )


Get a mutable reference to the value of a parameter given aFName. Using theFParamIdoverload will avoid having to hash theFNameto recover the ID.
a mutable reference to the parameter's value. Function asserts if the parameter is not present

template<typename ValueType> ValueType & GetMutableParam ( [FName](API\Runtime\Core\UObject\FName) InKey, [FParamStack::EGetParamResult](API\Plugins\AnimNext\Param\FParamStack\EGetParamResult) * OutResult )


Get a pointer to a parameter's mutable value given aFParamId.
nullptr if the parameter is not mapped or mutable

template<typename ValueType> ValueType * GetMutableParamPtr ( [FParamId](API\Plugins\AnimNext\Param\FParamId) InParamId, [FParamStack::EGetParamResult](API\Plugins\AnimNext\Param\FParamStack\EGetParamResult) * OutResult )


Get a pointer to a parameter's mutable value given aFName. Using theFParamIdoverload will avoid having to hash theFNameto recover the ID.
nullptr if the parameter is not mapped

template<typename ValueType> ValueType * GetMutableParamPtr ( [FName](API\Runtime\Core\UObject\FName) InKey, [FParamStack::EGetParamResult](API\Plugins\AnimNext\Param\FParamStack\EGetParamResult) * OutResult )


FParamStack::EGetParamResult

[EGetParamResult](API\Plugins\AnimNext\Param\FParamStack\EGetParamResult) GetMutableParamData ( [FParamId](API\Plugins\AnimNext\Param\FParamId) InId, [FParamTypeHandle](API\Plugins\AnimNext\Param\FParamTypeHandle) InTypeHandle, [TArrayView](API\Runtime\Core\Containers\TArrayView)< uint8 > & OutParamData )


Get a const reference to the value of a parameter given aFParamId.
a const reference to the parameter's value. Function asserts if the parameter is not present

template<typename ValueType> const ValueType & GetParam ( [FParamId](API\Plugins\AnimNext\Param\FParamId) InParamId, [FParamStack::EGetParamResult](API\Plugins\AnimNext\Param\FParamStack\EGetParamResult) * OutResult ) const


Get a const reference to the value of a parameter given aFName. Using theFParamIdoverload will avoid having to hash theFNameto recover the ID.
a const reference to the parameter's value. Function asserts if the parameter is not present

template<typename ValueType> const ValueType & GetParam ( [FName](API\Runtime\Core\UObject\FName) InKey, [FParamStack::EGetParamResult](API\Plugins\AnimNext\Param\FParamStack\EGetParamResult) * OutResult ) const


FParamStack::EGetParamResult

[EGetParamResult](API\Plugins\AnimNext\Param\FParamStack\EGetParamResult) GetParamData ( [FParamId](API\Plugins\AnimNext\Param\FParamId) InId, [FParamTypeHandle](API\Plugins\AnimNext\Param\FParamTypeHandle) InTypeHandle, TConstArrayView< uint8 > & OutParamData ) const


Get a pointer to a parameter's value given aFParamId.
nullptr if the parameter is not mapped

template<typename ValueType> const ValueType * GetParamPtr ( [FParamId](API\Plugins\AnimNext\Param\FParamId) InParamId, [FParamStack::EGetParamResult](API\Plugins\AnimNext\Param\FParamStack\EGetParamResult) * OutResult ) const


Get a pointer to a parameter's value given aFName. Using theFParamIdoverload will avoid having to hash theFNameto recover the ID.
nullptr if the parameter is not mapped

template<typename ValueType> const ValueType * GetParamPtr ( [FName](API\Runtime\Core\UObject\FName) InKey, [FParamStack::EGetParamResult](API\Plugins\AnimNext\Param\FParamStack\EGetParamResult) * OutResult ) const


Get the value of a parameter given aFParamId. Potentially performs a copy of the value.
the parameter's value, or a default value if the parameter is not present

template<typename ValueType> ValueType GetParamValue ( [FParamId](API\Plugins\AnimNext\Param\FParamId) InParamId, [FParamStack::EGetParamResult](API\Plugins\AnimNext\Param\FParamStack\EGetParamResult) * OutResult ) const


Get the value of a parameter given aFName. Potentially performs a copy of the value.
the parameter's value, or a default value if the parameter is not present

template<typename ValueType> ValueType GetParamValue ( [FName](API\Runtime\Core\UObject\FName) InKey, [FParamStack::EGetParamResult](API\Plugins\AnimNext\Param\FParamStack\EGetParamResult) * OutResult ) const


Create a cached parameter layer from an instanced property bag.

static [TUniquePtr](API\Runtime\Core\Templates\TUniquePtr)< [FParamStackLayer](API\Plugins\AnimNext\Param\FParamStackLayer) > MakeLayer ( const [FInstancedPropertyBag](API\Plugins\StructUtils\FInstancedPropertyBag) & InInstancedPropertyBag )


Create a cached parameter layer from set of params.

static [TUniquePtr](API\Runtime\Core\Templates\TUniquePtr)< [FParamStackLayer](API\Plugins\AnimNext\Param\FParamStackLayer) > MakeLayer ( TConstArrayView< TPair< [FParamId](API\Plugins\AnimNext\Param\FParamId), FParam >> InParams )


Make a parameter layer from a value

template<typename... ValueType> static [TUniquePtr](API\Runtime\Core\Templates\TUniquePtr)< [FParamStackLayer](API\Plugins\AnimNext\Param\FParamStackLayer) > MakeValueLayer ( [FParamId](API\Plugins\AnimNext\Param\FParamId) InParamId, ValueType &&... InValue )


Make a parameter layer from a value

template<typename... ValueType> static [TUniquePtr](API\Runtime\Core\Templates\TUniquePtr)< [FParamStackLayer](API\Plugins\AnimNext\Param\FParamStackLayer) > MakeValueLayer ( [FName](API\Runtime\Core\UObject\FName) InName, ValueType &&... InValue )


Make a parameter layer from an interleaved parameter list of keys and values

template<typename... Args> static [TUniquePtr](API\Runtime\Core\Templates\TUniquePtr)< [FParamStackLayer](API\Plugins\AnimNext\Param\FParamStackLayer) > MakeValuesLayer ( Args &&... InValues )


Pop a parameter layer.


Push a layer.

void PushLayer ( [FParamStackLayer](API\Plugins\AnimNext\Param\FParamStackLayer) & InLayer )


Push an internally-owned layer. Copies parameter data to internal storage.

void PushLayer ( TConstArrayView< TPair< [FParamId](API\Plugins\AnimNext\Param\FParamId), FParam >> InParams )


Push a value as a parameter layer

template<typename... ValueType> void PushValue ( [FParamId](API\Plugins\AnimNext\Param\FParamId) InParamId, ValueType &&... InValue )


Push a value as a parameter layer

template<typename... ValueType> void PushValue ( [FName](API\Runtime\Core\UObject\FName) InName, ValueType &&... InValue )


Push an interleaved parameter list of keys and values as a parameter layer

template<typename... Args> void PushValues ( Args &&... InValues )


Stack of parameter layers. Acts as an associative container - allows retrieval of parameter calues (by ID) that have been pushed onto the stack in 'layers'. Parameter values (and notably types) on higher stack layers override those on lower layers. Older values and types are restored when a layer is popped. Parameter values, once pushed, can be overridden by subsequent layers, but they cannot be removed until the layer that initially introduces the parameter is popped.


No constructors are accessible with public or protected access.


Byte enum representing built-in parameter types. Types beyond this are Custom and are accessed via an index into the global type array, which is slower

enum EParamType { None = 0, Bool, Byte, Int32, Int64, Float, Double, Name, String, Text, Vector, Vector4, Quat, Transform, MaxBuiltIn = Transform, Custom = 0xff, Max = Custom, }


Make a parameter type handle from aFProperty

static [FParamTypeHandle](API\Plugins\AnimNext\Param\FParamTypeHandle) FromProperty ( const [FProperty](API\Runtime\CoreUObject\UObject\FProperty) * InProperty )


Make a parameter type handle from a property bag property desc

static [FParamTypeHandle](API\Plugins\AnimNext\Param\FParamTypeHandle) FromPropertyBagPropertyDesc ( const [FPropertyBagPropertyDesc](API\Plugins\StructUtils\FPropertyBagPropertyDesc) & Desc )


Make a parameter handle from a raw uint32

static [FParamTypeHandle](API\Plugins\AnimNext\Param\FParamTypeHandle) FromRaw ( uint32 InRawHandle )


Helper function returning the alignment of the type.
Alignment of the type.


Get a parameter type based on the passed-in built-in type

template<typename ParamType> static constexpr [FParamTypeHandle](API\Plugins\AnimNext\Param\FParamTypeHandle) GetHandle()


Helper function returning the size of the type.
Size in bytes of the type.


Get the parameter type that this handle corresponds to


Helper function returning the alignment of the value type. This is identical to GetAlignment for non containers
Alignment of the value type.


Helper function returning the size of the value type. This is identical to GetSize for non containers
Size in bytes of the value type.


Check whether this describes a built-in type (i.e. not a custom type)


Check type invariants - type handle is either:


Return the raw value that this handle uses to represent itself


Get a string representing this type


Representation of a parameter's type. Lightweight to compare and pass around, but not serializable as not stable across runs. Serialization can be performed onFAnimNextParamType.


template<typename T> struct TIsSoftClassPtr


template<typename T> struct TIsSoftObjectPtr


namespace UE { namespace AnimNext { [FParamStack::EGetParamResult](API\Plugins\AnimNext\Param\FParamStack\EGetParamResult) & UE::AnimNext::operator&= ( [FParamStack::EGetParamResult](API\Plugins\AnimNext\Param\FParamStack\EGetParamResult) & Lhs, [FParamStack::EGetParamResult](API\Plugins\AnimNext\Param\FParamStack\EGetParamResult) Rhs ) } }


namespace UE { namespace AnimNext { FParamStack::EParamFlags & UE::AnimNext::operator&= ( FParamStack::EParamFlags & Lhs, FParamStack::EParamFlags Rhs ) } }


namespace UE { namespace AnimNext { [FParamStack::EGetParamResult](API\Plugins\AnimNext\Param\FParamStack\EGetParamResult) & UE::AnimNext::operator^= ( [FParamStack::EGetParamResult](API\Plugins\AnimNext\Param\FParamStack\EGetParamResult) & Lhs, [FParamStack::EGetParamResult](API\Plugins\AnimNext\Param\FParamStack\EGetParamResult) Rhs ) } }


namespace UE { namespace AnimNext { FParamStack::EParamFlags & UE::AnimNext::operator^= ( FParamStack::EParamFlags & Lhs, FParamStack::EParamFlags Rhs ) } }


namespace UE { namespace AnimNext { constexpr [FParamStack::EGetParamResult](API\Plugins\AnimNext\Param\FParamStack\EGetParamResult) UE::AnimNext::operator& ( [FParamStack::EGetParamResult](API\Plugins\AnimNext\Param\FParamStack\EGetParamResult) Lhs, [FParamStack::EGetParamResult](API\Plugins\AnimNext\Param\FParamStack\EGetParamResult) Rhs ) } }


namespace UE { namespace AnimNext { constexpr FParamStack::EParamFlags UE::AnimNext::operator& ( FParamStack::EParamFlags Lhs, FParamStack::EParamFlags Rhs ) } }


namespace UE { namespace AnimNext { constexpr [FParamStack::EGetParamResult](API\Plugins\AnimNext\Param\FParamStack\EGetParamResult) UE::AnimNext::operator^ ( [FParamStack::EGetParamResult](API\Plugins\AnimNext\Param\FParamStack\EGetParamResult) Lhs, [FParamStack::EGetParamResult](API\Plugins\AnimNext\Param\FParamStack\EGetParamResult) Rhs ) } }


namespace UE { namespace AnimNext { constexpr FParamStack::EParamFlags UE::AnimNext::operator^ ( FParamStack::EParamFlags Lhs, FParamStack::EParamFlags Rhs ) } }


namespace UE { namespace AnimNext { constexpr bool UE::AnimNext::operator! ( [FParamStack::EGetParamResult](API\Plugins\AnimNext\Param\FParamStack\EGetParamResult) E ) } }


namespace UE { namespace AnimNext { constexpr bool UE::AnimNext::operator! ( FParamStack::EParamFlags E ) } }


namespace UE { namespace AnimNext { constexpr [FParamStack::EGetParamResult](API\Plugins\AnimNext\Param\FParamStack\EGetParamResult) UE::AnimNext::operator~ ( [FParamStack::EGetParamResult](API\Plugins\AnimNext\Param\FParamStack\EGetParamResult) E ) } }


namespace UE { namespace AnimNext { constexpr FParamStack::EParamFlags UE::AnimNext::operator~ ( FParamStack::EParamFlags E ) } }


True if retargeting is disabled


const [FReferencePose](API\Plugins\AnimNext\FReferencePose) & GetRefPose() const


const [TArrayView](API\Runtime\Core\Containers\TArrayView)< const FBoneIndexType > GetLODBoneIndexes() const


const [USkeleton](API\Runtime\Engine\Animation\USkeleton) * GetSkeletonAsset() const


const [TArrayView](API\Runtime\Core\Containers\TArrayView)< const FBoneIndexType > GetSkeletonToLODBoneIndexes() const


static constexpr int32 INVALID_LOD_LEVEL = -1;


void PrepareForLOD ( const [FReferencePose](API\Plugins\AnimNext\FReferencePose) & InRefPose, int32 InLODLevel, bool bSetRefPose, bool bAdditive )


Disable Retargeting

void SetDisableRetargeting ( bool bDisableRetargeting )


Ignore compressed data and use RAW data instead, for debugging.


Use Source data instead.

void SetUseSourceData ( bool bUseSourceData )


True if we're requesting RAW data instead of compressed data. For debugging.


True if we're requesting Source data instead of RawAnimationData. For debugging.


TLODPose ( const [FReferencePose](API\Plugins\AnimNext\FReferencePose) & InRefPose, int32 InLODLevel, bool bSetRefPose, bool bAdditive )


template<typename AllocatorType> struct TLODPose


const [TArrayView](API\Runtime\Core\Containers\TArrayView)< const FBoneIndexType > GetLODBoneIndexes ( int32 LODLevel ) const


int32 GetLODBoneIndexFromSkeletonBoneIndex ( int32 SkeletionBoneIndex ) const


const FQuat & GetRefPoseRotation ( int32 LODBoneIndex ) const


int32 GetNumBonesForLOD ( int32 LODLevel ) const


const FVector & GetRefPoseScale3D ( int32 LODBoneIndex ) const


FTransform GetRefPoseTransform ( int32 LODBoneIndex ) const


const FVector & GetRefPoseTranslation ( int32 LODBoneIndex ) const


int32 GetSkeletonBoneIndexFromLODBoneIndex ( int32 LODBoneIndex ) const


const [TArrayView](API\Runtime\Core\Containers\TArrayView)< const FBoneIndexType > GetSkeletonToLODBoneIndexes ( int32 LODLevel ) const


void Initialize ( const [FReferenceSkeleton](API\Runtime\Engine\FReferenceSkeleton) & RefSkeleton, const [TArray](API\Runtime\Core\Containers\TArray)< [TArray](API\Runtime\Core\Containers\TArray)< FBoneIndexType >> & InLODBoneIndexes, const [TArray](API\Runtime\Core\Containers\TArray)< [TArray](API\Runtime\Core\Containers\TArray)< FBoneIndexType >> & InSkeletonToLODBoneIndexes, const [TArray](API\Runtime\Core\Containers\TArray)< int32, AllocatorType > & InLODNumBones, bool bFastPath )


template<typename AllocatorType> struct TReferencePose


typedef [TTransformArraySoA](API\Plugins\AnimNext\TTransformArraySoA)< AllocatorType > TTransformArray


Set this transform array to the weighted blend of the supplied two transforms.

void Blend ( const [TTransformArrayAoS](API\Plugins\AnimNext\TTransformArrayAoS) & AtomArray1, const [TTransformArrayAoS](API\Plugins\AnimNext\TTransformArrayAoS) & AtomArray2, float BlendWeight )


void CopyTransforms ( const [TTransformArrayAoS](API\Plugins\AnimNext\TTransformArrayAoS) & Other, int32 Index, int32 NumTransforms )


[TArray](API\Runtime\Core\Containers\TArray)< FTransform > & GetTransforms()


const [TArray](API\Runtime\Core\Containers\TArray)< FTransform > & GetTransforms() const


[TTransformArrayAoS](API\Plugins\AnimNext\TTransformArrayAoS) & operator= ( [TTransformArrayAoS](API\Plugins\AnimNext\TTransformArrayAoS) && Other )


[TTransformArrayAoS](API\Plugins\AnimNext\TTransformArrayAoS) & operator= ( const [TTransformArrayAoS](API\Plugins\AnimNext\TTransformArrayAoS) & Other )


const FTransform & operator[] ( int32 Index ) const


void SetIdentity ( bool bAdditiveIdentity )


void SetNum ( int32 NumTransforms, bool bAllowShrinking )


Default empty (no memory) Transform.


Create a TransformArray of N elements.

TTransformArrayAoS ( const int NumTransforms )


TTransformArrayAoS ( [TTransformArrayAoS](API\Plugins\AnimNext\TTransformArrayAoS) && Other )


TTransformArrayAoS ( const [TTransformArrayAoS](API\Plugins\AnimNext\TTransformArrayAoS) & Other )


template<typename AllocatorType> struct TTransformArrayAoS


void Blend ( const [TTransformArraySoA](API\Plugins\AnimNext\TTransformArraySoA) & AtomArray1, const [TTransformArraySoA](API\Plugins\AnimNext\TTransformArraySoA) & AtomArray2, float BlendWeight )


void CopyTransforms ( const [TTransformArraySoA](API\Plugins\AnimNext\TTransformArraySoA) & Other, int32 Index, int32 NumTransforms )


[TTransformArraySoA](API\Plugins\AnimNext\TTransformArraySoA) & operator= ( const [TTransformArraySoA](API\Plugins\AnimNext\TTransformArraySoA) & Other )


[TTransformArraySoA](API\Plugins\AnimNext\TTransformArraySoA) & operator= ( [TTransformArraySoA](API\Plugins\AnimNext\TTransformArraySoA) && Other )


const [FTransformSoAAdapter](API\Plugins\AnimNext\FTransformSoAAdapter) operator[] ( int Index ) const


[FTransformSoAAdapter](API\Plugins\AnimNext\FTransformSoAAdapter) operator[] ( int Index )


TTransformArraySoA ( const [TTransformArraySoA](API\Plugins\AnimNext\TTransformArraySoA) & Other )


TTransformArraySoA ( [TTransformArraySoA](API\Plugins\AnimNext\TTransformArraySoA) && Other )


Create a TransformArray of N elements. Optionally initializes to identity (default)

TTransformArraySoA ( int NumTransforms, bool bSetIdentity, bool bAdditiveIdentity )


Transform Array Test using StructOfArrays model

template<typename AllocatorType> struct TTransformArraySoA


namespace UE { namespace AnimNext { enum ELODPoseFlags { None = 0, Additive = 1 << 0, DisableRetargeting = 1 << 1, UseRawData = 1 << 2, UseSourceData = 1 << 3, } } }


namespace UE { namespace AnimNext { enum EReferencePoseGenerationFlags { None = 0, FastPath = 1 << 0, } } }


namespace UE { namespace AnimNext { enum ETransformFlags { None = 0, ComponentSpaceSet = 1 << 0, } } }


namespace UE { namespace AnimNext { [ELODPoseFlags](API\Plugins\AnimNext\UE__AnimNext__ELODPoseFlags) & UE::AnimNext::operator&= ( [ELODPoseFlags](API\Plugins\AnimNext\UE__AnimNext__ELODPoseFlags) & Lhs, [ELODPoseFlags](API\Plugins\AnimNext\UE__AnimNext__ELODPoseFlags) Rhs ) } }


namespace UE { namespace AnimNext { [EReferencePoseGenerationFlags](API\Plugins\AnimNext\UE__AnimNext__EReferencePoseGene-) & UE::AnimNext::operator&= ( [EReferencePoseGenerationFlags](API\Plugins\AnimNext\UE__AnimNext__EReferencePoseGene-) & Lhs, [EReferencePoseGenerationFlags](API\Plugins\AnimNext\UE__AnimNext__EReferencePoseGene-) Rhs ) } }


namespace UE { namespace AnimNext { [ELODPoseFlags](API\Plugins\AnimNext\UE__AnimNext__ELODPoseFlags) & UE::AnimNext::operator^= ( [ELODPoseFlags](API\Plugins\AnimNext\UE__AnimNext__ELODPoseFlags) & Lhs, [ELODPoseFlags](API\Plugins\AnimNext\UE__AnimNext__ELODPoseFlags) Rhs ) } }


namespace UE { namespace AnimNext { [EReferencePoseGenerationFlags](API\Plugins\AnimNext\UE__AnimNext__EReferencePoseGene-) & UE::AnimNext::operator^= ( [EReferencePoseGenerationFlags](API\Plugins\AnimNext\UE__AnimNext__EReferencePoseGene-) & Lhs, [EReferencePoseGenerationFlags](API\Plugins\AnimNext\UE__AnimNext__EReferencePoseGene-) Rhs ) } }


namespace UE { namespace AnimNext { constexpr [ELODPoseFlags](API\Plugins\AnimNext\UE__AnimNext__ELODPoseFlags) UE::AnimNext::operator& ( [ELODPoseFlags](API\Plugins\AnimNext\UE__AnimNext__ELODPoseFlags) Lhs, [ELODPoseFlags](API\Plugins\AnimNext\UE__AnimNext__ELODPoseFlags) Rhs ) } }


namespace UE { namespace AnimNext { constexpr [ELODPoseFlags](API\Plugins\AnimNext\UE__AnimNext__ELODPoseFlags) UE::AnimNext::operator^ ( [ELODPoseFlags](API\Plugins\AnimNext\UE__AnimNext__ELODPoseFlags) Lhs, [ELODPoseFlags](API\Plugins\AnimNext\UE__AnimNext__ELODPoseFlags) Rhs ) } }


namespace UE { namespace AnimNext { constexpr [EReferencePoseGenerationFlags](API\Plugins\AnimNext\UE__AnimNext__EReferencePoseGene-) UE::AnimNext::operator^ ( [EReferencePoseGenerationFlags](API\Plugins\AnimNext\UE__AnimNext__EReferencePoseGene-) Lhs, [EReferencePoseGenerationFlags](API\Plugins\AnimNext\UE__AnimNext__EReferencePoseGene-) Rhs ) } }


namespace UE { namespace AnimNext { constexpr bool UE::AnimNext::operator! ( [ELODPoseFlags](API\Plugins\AnimNext\UE__AnimNext__ELODPoseFlags) E ) } }


namespace UE { namespace AnimNext { constexpr bool UE::AnimNext::operator! ( [EReferencePoseGenerationFlags](API\Plugins\AnimNext\UE__AnimNext__EReferencePoseGene-) E ) } }


namespace UE { namespace AnimNext { constexpr [ELODPoseFlags](API\Plugins\AnimNext\UE__AnimNext__ELODPoseFlags) UE::AnimNext::operator~ ( [ELODPoseFlags](API\Plugins\AnimNext\UE__AnimNext__ELODPoseFlags) E ) } }


namespace UE { namespace AnimNext { constexpr [EReferencePoseGenerationFlags](API\Plugins\AnimNext\UE__AnimNext__EReferencePoseGene-) UE::AnimNext::operator~ ( [EReferencePoseGenerationFlags](API\Plugins\AnimNext\UE__AnimNext__EReferencePoseGene-) E ) } }


namespace UE { namespace AnimNext { constexpr [EReferencePoseGenerationFlags](API\Plugins\AnimNext\UE__AnimNext__EReferencePoseGene-) UE::AnimNext::operator& ( [EReferencePoseGenerationFlags](API\Plugins\AnimNext\UE__AnimNext__EReferencePoseGene-) Lhs, [EReferencePoseGenerationFlags](API\Plugins\AnimNext\UE__AnimNext__EReferencePoseGene-) Rhs ) } }