Open 3D Engine EMotionFX Gem API Reference 23.10.0
O3DE is an open-source, fully-featured, high-fidelity, modular 3D engine for building games and simulations, available to every industry.
EMotionFX::AnimGraphStateTransition Class Reference

Inherits EMotionFX::AnimGraphObject.

Classes

class  StateFilterLocal
 
class  UniqueData
 

Public Types

enum  EInterpolationType : AZ::u8 { INTERPOLATIONFUNCTION_LINEAR = 0 , INTERPOLATIONFUNCTION_EASECURVE = 1 }
 
enum  EInterruptionMode : AZ::u8 { AlwaysAllowed = 0 , MaxBlendWeight = 1 }
 
enum  EInterruptionBlendBehavior : AZ::u8 { Continue = 0 , Stop = 1 }
 
- Public Types inherited from EMotionFX::AnimGraphObject
enum  { FLAG_DISABLED = 1 << 0 }
 
enum  ECategory {
  CATEGORY_SOURCES = 0 , CATEGORY_BLENDING = 1 , CATEGORY_CONTROLLERS = 2 , CATEGORY_PHYSICS = 3 ,
  CATEGORY_LOGIC = 4 , CATEGORY_MATH = 5 , CATEGORY_MISC = 6 , CATEGORY_TRANSITIONS = 10 ,
  CATEGORY_TRANSITIONCONDITIONS = 11 , CATEGORY_TRIGGERACTIONS = 12
}
 
enum  ESyncMode : AZ::u8 { SYNCMODE_DISABLED = 0 , SYNCMODE_TRACKBASED = 1 , SYNCMODE_CLIPBASED = 2 }
 
enum  EEventMode : AZ::u8 {
  EVENTMODE_LEADERONLY = 0 , EVENTMODE_FOLLOWERONLY = 1 , EVENTMODE_BOTHNODES = 2 , EVENTMODE_MOSTACTIVE = 3 ,
  EVENTMODE_NONE = 4
}
 
enum  EExtractionMode : AZ::u8 { EXTRACTIONMODE_BLEND = 0 , EXTRACTIONMODE_TARGETONLY = 1 , EXTRACTIONMODE_SOURCEONLY = 2 }
 

Public Member Functions

 AnimGraphStateTransition (AnimGraphNode *source, AnimGraphNode *target, AZStd::vector< AnimGraphTransitionCondition * > conditions={}, float duration=0.3f)
 
void Reinit () override
 
void RecursiveReinit () override
 
bool InitAfterLoading (AnimGraph *animGraph) override
 
void Update (AnimGraphInstance *animGraphInstance, float timePassedInSeconds) override
 
void OnRemoveNode (AnimGraph *animGraph, AnimGraphNode *nodeToRemove) override
 
AnimGraphObjectDataCreateUniqueData (AnimGraphInstance *animGraphInstance) override
 
void InvalidateUniqueData (AnimGraphInstance *animGraphInstance) override
 
void RecursiveCollectObjects (AZStd::vector< AnimGraphObject * > &outObjects) const override
 
void ExtractMotion (AnimGraphInstance *animGraphInstance, AnimGraphRefCountedData *sourceData, Transform *outTransform, Transform *outTransformMirrored) const
 
void OnStartTransition (AnimGraphInstance *animGraphInstance)
 
void OnEndTransition (AnimGraphInstance *animGraphInstance)
 
bool GetIsDone (AnimGraphInstance *animGraphInstance) const
 
float GetBlendWeight (AnimGraphInstance *animGraphInstance) const
 
void CalcTransitionOutput (AnimGraphInstance *animGraphInstance, const AnimGraphPose &from, const AnimGraphPose &to, AnimGraphPose *outputPose) const
 
bool CheckIfIsReady (AnimGraphInstance *animGraphInstance) const
 
void SetBlendTime (float blendTime)
 
float GetBlendTime (AnimGraphInstance *animGraphInstance) const
 
const char * GetPaletteName () const override
 
AnimGraphObject::ECategory GetPaletteCategory () const override
 
uint32 GetVisualColor () const
 
bool GetIsStateTransitionNode () const
 
void SetPriority (AZ::u32 priority)
 
AZ::u32 GetPriority () const
 
void SetCanBeInterrupted (bool canBeInterrupted)
 
void SetCanBeInterruptedBy (const AZStd::vector< AZ::u64 > &transitionIds)
 
void SetCanBeInterruptedBy (const AZStd::vector< AnimGraphConnectionId > &transitionIds)
 
bool CanBeInterruptedBy (const AnimGraphStateTransition *transition, AnimGraphInstance *animGraphInstance=nullptr) const
 
const AZStd::vector< AZ::u64 > & GetCanBeInterruptedByTransitionIds () const
 
void SetInterruptionMode (EInterruptionMode mode)
 
EInterruptionMode GetInterruptionMode () const
 
void SetMaxInterruptionBlendWeight (float weight)
 
float GetMaxInterruptionBlendWeight () const
 
void SetInterruptionBlendBehavior (EInterruptionBlendBehavior blendBehavior)
 
EInterruptionBlendBehavior GetInterruptionBlendBehavior () const
 
void SetCanInterruptOtherTransitions (bool canInterruptOtherTransitions)
 
bool GetCanInterruptOtherTransitions () const
 
bool GotInterrupted (AnimGraphInstance *animGraphInstance) const
 
void SetCanInterruptItself (bool canInterruptItself)
 
bool GetCanInterruptItself () const
 
void SetIsDisabled (bool isDisabled)
 
bool GetIsDisabled () const
 
void SetSyncMode (AnimGraphStateTransition::ESyncMode syncMode)
 
ESyncMode GetSyncMode () const
 
void SetEventFilterMode (AnimGraphObject::EEventMode eventMode)
 
EEventMode GetEventFilterMode () const
 
AnimGraphConnectionId GetId () const
 
void SetId (AnimGraphConnectionId id)
 
void SetIsWildcardTransition (bool isWildcardTransition)
 
void SetSourceNode (AnimGraphInstance *animGraphInstance, AnimGraphNode *sourceNode)
 
void SetSourceNode (AnimGraphNode *node)
 
AnimGraphNodeGetSourceNode (AnimGraphInstance *animGraphInstance) const
 
AnimGraphNodeGetSourceNode () const
 
AZ_FORCE_INLINE AnimGraphNodeId GetSourceNodeId () const
 
void SetTargetNode (AnimGraphNode *node)
 
AnimGraphNodeGetTargetNode () const
 
AZ_FORCE_INLINE AnimGraphNodeId GetTargetNodeId () const
 
void SetVisualOffsets (int32 startX, int32 startY, int32 endX, int32 endY)
 
int32 GetVisualStartOffsetX () const
 
int32 GetVisualStartOffsetY () const
 
int32 GetVisualEndOffsetX () const
 
int32 GetVisualEndOffsetY () const
 
EExtractionMode GetExtractionMode () const
 
void SetExtractionMode (EExtractionMode mode)
 
bool GetIsWildcardTransition () const
 
bool CanWildcardTransitionFrom (AnimGraphNode *sourceNode) const
 
AnimGraphStateMachineGetStateMachine () const
 
MCORE_INLINE size_t GetNumConditions () const
 
MCORE_INLINE AnimGraphTransitionConditionGetCondition (size_t index) const
 
AZ::Outcome< size_t > FindConditionIndex (AnimGraphTransitionCondition *condition) const
 
void AddCondition (AnimGraphTransitionCondition *condition)
 
void InsertCondition (AnimGraphTransitionCondition *condition, size_t index)
 
void ReserveConditions (size_t numConditions)
 
void RemoveCondition (size_t index, bool delFromMem=true)
 
void RemoveAllConditions (bool delFromMem=true)
 
void ResetConditions (AnimGraphInstance *animGraphInstance)
 
TriggerActionSetupGetTriggerActionSetup ()
 
const TriggerActionSetupGetTriggerActionSetup () const
 
void SetGroups (const AZStd::vector< AZStd::string > &groups)
 
void SetStateIds (const AZStd::vector< AnimGraphNodeId > &stateIds)
 
void SetInterpolationType (AnimGraphStateTransition::EInterpolationType interpolationType)
 
EInterpolationType GetInterpolationType ()
 
void SetEaseInSmoothness (float easeInSmoothness)
 
void SetEaseOutSmoothness (float easeInSmoothness)
 
virtual void GetAttributeStringForAffectedNodeIds (const AZStd::unordered_map< AZ::u64, AZ::u64 > &convertedIds, AZStd::string &attributesString) const
 
- Public Member Functions inherited from EMotionFX::AnimGraphObject
 AnimGraphObject (AnimGraph *animGraph)
 
virtual void Reinit ()
 
virtual void RecursiveReinit ()
 
virtual AnimGraphObjectDataCreateUniqueData (AnimGraphInstance *animGraphInstance)
 
void InvalidateUniqueDatas ()
 Calls InvalidateUniqueData() for the given object for all anim graph instances. (Used by reflection context)
 
virtual void InvalidateUniqueData (AnimGraphInstance *animGraphInstance)
 
virtual void RecursiveInvalidateUniqueDatas (AnimGraphInstance *animGraphInstance)
 
void ResetUniqueDatas ()
 
void ResetUniqueData (AnimGraphInstance *animGraphInstance)
 
virtual bool InitAfterLoading (AnimGraph *animGraph)=0
 
virtual void RegisterAttributes ()
 
virtual void Unregister ()
 
virtual const char * GetPaletteName () const =0
 
virtual void GetSummary (AZStd::string *outResult) const
 
virtual void GetTooltip (AZStd::string *outResult) const
 
virtual const char * GetHelpUrl () const
 
virtual ECategory GetPaletteCategory () const =0
 
virtual void Update (AnimGraphInstance *animGraphInstance, float timePassedInSeconds)
 
virtual void OnChangeMotionSet (AnimGraphInstance *animGraphInstance, MotionSet *newMotionSet)
 
virtual void OnRemoveNode (AnimGraph *animGraph, AnimGraphNode *nodeToRemove)
 
virtual void RecursiveOnChangeMotionSet (AnimGraphInstance *animGraphInstance, MotionSet *newMotionSet)
 
virtual void OnActorMotionExtractionNodeChanged ()
 
MCORE_INLINE size_t GetObjectIndex () const
 
MCORE_INLINE void SetObjectIndex (size_t index)
 
MCORE_INLINE AnimGraphGetAnimGraph () const
 
MCORE_INLINE void SetAnimGraph (AnimGraph *animGraph)
 
size_t SaveUniqueData (AnimGraphInstance *animGraphInstance, uint8 *outputBuffer) const
 
size_t LoadUniqueData (AnimGraphInstance *animGraphInstance, const uint8 *dataBuffer)
 
virtual void RecursiveCollectObjects (AZStd::vector< AnimGraphObject * > &outObjects) const
 
bool GetHasErrorFlag (AnimGraphInstance *animGraphInstance) const
 
void SetHasErrorFlag (AnimGraphInstance *animGraphInstance, bool hasError)
 
void SyncVisualObject ()
 

Static Public Member Functions

static void Reflect (AZ::ReflectContext *context)
 
- Static Public Member Functions inherited from EMotionFX::AnimGraphObject
static const char * GetCategoryName (ECategory category)
 
static void CalculateMotionExtractionDelta (EExtractionMode extractionMode, AnimGraphRefCountedData *sourceRefData, AnimGraphRefCountedData *targetRefData, float weight, bool hasMotionExtractionNodeInMask, Transform &outTransform, Transform &outTransformMirrored)
 
static void CalculateMotionExtractionDeltaAdditive (EExtractionMode extractionMode, AnimGraphRefCountedData *sourceRefData, AnimGraphRefCountedData *targetRefData, const Transform &basePoseTransform, float weight, bool hasMotionExtractionNodeInMask, Transform &outTransform, Transform &outTransformMirrored)
 
static void Reflect (AZ::ReflectContext *context)
 

Protected Member Functions

float CalculateWeight (float linearWeight) const
 
AZ::Crc32 GetEaseInOutSmoothnessVisibility () const
 
AZ::Crc32 GetVisibilityHideWhenExitOrEntry () const
 
AZ::Crc32 GetVisibilityAllowedStates () const
 
AZ::Crc32 GetVisibilityInterruptionProperties () const
 
AZ::Crc32 GetVisibilityCanBeInterruptedBy () const
 
AZ::Crc32 GetVisibilityMaxInterruptionBlendWeight () const
 

Protected Attributes

AZStd::vector< AnimGraphTransitionCondition * > m_conditions {}
 
StateFilterLocal m_allowTransitionsFrom
 
TriggerActionSetup m_actionSetup
 
AnimGraphNodem_sourceNode = nullptr
 
AnimGraphNodem_targetNode = nullptr
 
AZ::u64 m_sourceNodeId = AnimGraphNodeId::InvalidId
 
AZ::u64 m_targetNodeId = AnimGraphNodeId::InvalidId
 
AZ::u64 m_id = AnimGraphConnectionId::Create()
 
float m_transitionTime = 0.3f
 
float m_easeInSmoothness = 0.0f
 
float m_easeOutSmoothness = 1.0f
 
AZ::s32 m_startOffsetX = 0
 
AZ::s32 m_startOffsetY = 0
 
AZ::s32 m_endOffsetX = 0
 
AZ::s32 m_endOffsetY = 0
 
AZ::u32 m_priority = 0
 
AnimGraphObject::ESyncMode m_syncMode = AnimGraphObject::SYNCMODE_DISABLED
 
AnimGraphObject::EEventMode m_eventMode = AnimGraphObject::EVENTMODE_BOTHNODES
 
AnimGraphObject::EExtractionMode m_extractionMode = AnimGraphObject::EXTRACTIONMODE_BLEND
 
EInterpolationType m_interpolationType = INTERPOLATIONFUNCTION_LINEAR
 
bool m_isWildcardTransition = false
 
bool m_isDisabled = false
 
bool m_canBeInterruptedByOthers = false
 
AZStd::vector< AZ::u64 > m_canBeInterruptedByTransitionIds {}
 
float m_maxInterruptionBlendWeight = 1.0f
 
bool m_canInterruptOtherTransitions = false
 
bool m_allowSelfInterruption = false
 
EInterruptionBlendBehavior m_interruptionBlendBehavior = Continue
 
EInterruptionMode m_interruptionMode = AlwaysAllowed
 
- Protected Attributes inherited from EMotionFX::AnimGraphObject
AnimGraphm_animGraph
 
size_t m_objectIndex
 

Member Function Documentation

◆ CreateUniqueData()

AnimGraphObjectData * EMotionFX::AnimGraphStateTransition::CreateUniqueData ( AnimGraphInstance animGraphInstance)
inlineoverridevirtual

Reimplemented from EMotionFX::AnimGraphObject.

◆ GetId()

AnimGraphConnectionId EMotionFX::AnimGraphStateTransition::GetId ( ) const
inline

Get the unique identification number for the transition.

Returns
The unique identification number.

◆ GetIsWildcardTransition()

bool EMotionFX::AnimGraphStateTransition::GetIsWildcardTransition ( ) const
inline

Check if the transition is a wildcard transition. A wildcard transition is a transition that will be used in case there is no other path from the current to the destination state. It is basically a transition from all nodes to the destination node of the wildcard transition. A wildcard transition does not have a fixed source node.

Returns
True in case the transition is a wildcard transition, false if not.

◆ GetPaletteCategory()

AnimGraphObject::ECategory EMotionFX::AnimGraphStateTransition::GetPaletteCategory ( ) const
overridevirtual

◆ GetPaletteName()

const char * EMotionFX::AnimGraphStateTransition::GetPaletteName ( ) const
overridevirtual

◆ InitAfterLoading()

bool EMotionFX::AnimGraphStateTransition::InitAfterLoading ( AnimGraph animGraph)
overridevirtual

◆ InvalidateUniqueData()

void EMotionFX::AnimGraphStateTransition::InvalidateUniqueData ( AnimGraphInstance animGraphInstance)
overridevirtual

Reimplemented from EMotionFX::AnimGraphObject.

◆ OnRemoveNode()

void EMotionFX::AnimGraphStateTransition::OnRemoveNode ( AnimGraph animGraph,
AnimGraphNode nodeToRemove 
)
overridevirtual

Reimplemented from EMotionFX::AnimGraphObject.

◆ RecursiveCollectObjects()

void EMotionFX::AnimGraphStateTransition::RecursiveCollectObjects ( AZStd::vector< AnimGraphObject * > &  outObjects) const
overridevirtual

Reimplemented from EMotionFX::AnimGraphObject.

◆ RecursiveReinit()

void EMotionFX::AnimGraphStateTransition::RecursiveReinit ( )
overridevirtual

Reimplemented from EMotionFX::AnimGraphObject.

◆ Reinit()

void EMotionFX::AnimGraphStateTransition::Reinit ( )
overridevirtual

Reinitialize the object. Some anim graph objects might have additional member variables which are not reflected. These are mostly used for optimizations, e.g. a condition that stores a parameter name which is reflected but the runtime uses a cached parameter index to prevent runtime lookups. These cached values need to be updated on given events like when e.g. a parameter gets removed or changed or the whole anim graph object gets constructed by a copy and paste operation.

Reimplemented from EMotionFX::AnimGraphObject.

◆ SetId()

void EMotionFX::AnimGraphStateTransition::SetId ( AnimGraphConnectionId  id)
inline

Set the unique identification number for the transition.

Parameters
[in]idThe unique identification number.

◆ SetIsWildcardTransition()

void EMotionFX::AnimGraphStateTransition::SetIsWildcardTransition ( bool  isWildcardTransition)

Set if the transition is a wildcard transition or not. A wildcard transition is a transition that will be used in case there is no other path from the current to the destination state. It is basically a transition from all nodes to the destination node of the wildcard transition. A wildcard transition does not have a fixed source node.

Parameters
[in]isWildcardTransitionPass true in case the transition is a wildcard transition, false if not.

◆ Update()

void EMotionFX::AnimGraphStateTransition::Update ( AnimGraphInstance animGraphInstance,
float  timePassedInSeconds 
)
overridevirtual

Reimplemented from EMotionFX::AnimGraphObject.

Member Data Documentation

◆ m_id

AZ::u64 EMotionFX::AnimGraphStateTransition::m_id = AnimGraphConnectionId::Create()
protected

The unique identification number.

◆ m_isWildcardTransition

bool EMotionFX::AnimGraphStateTransition::m_isWildcardTransition = false
protected

Flag which indicates if the state transition is a wildcard transition or not.


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