UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
FAnimMontageInstance Struct Reference

#include <AnimMontage.h>

Public Member Functions

ENGINE_API void MontageSync_Follow (struct FAnimMontageInstance *NewLeaderMontageInstance)
 
ENGINE_API void MontageSync_StopLeading ()
 
ENGINE_API void MontageSync_StopFollowing ()
 
ENGINE_API void MontageSync_PreUpdate ()
 
ENGINE_API void MontageSync_PostUpdate ()
 
float GetWeight () const
 
float GetDesiredWeight () const
 
float GetBlendTime () const
 
int32 GetSyncGroupIndex () const
 
FName GetSyncGroupName () const
 
void SetWeight (float InValue)
 
void SetDesiredWeight (float InValue)
 
const FAlphaBlendGetBlend () const
 
ENGINE_API FAnimMontageInstance ()
 
ENGINE_API FAnimMontageInstance (UAnimInstance *InAnimInstance)
 
ENGINE_API void Play (float InPlayRate=1.f)
 
ENGINE_API void Play (float InPlayRate, const FMontageBlendSettings &BlendInSettings)
 
ENGINE_API void Stop (const FAlphaBlend &InBlendOut, bool bInterrupt=true)
 
ENGINE_API void Stop (const FMontageBlendSettings &InBlendOutSettings, bool bInterrupt=true)
 
ENGINE_API void Pause ()
 
ENGINE_API void Initialize (class UAnimMontage *InMontage)
 
ENGINE_API bool JumpToSectionName (FName const &SectionName, bool bEndOfSection=false)
 
ENGINE_API bool SetNextSectionName (FName const &SectionName, FName const &NewNextSectionName)
 
ENGINE_API bool SetNextSectionID (int32 const &SectionID, int32 const &NewNextSectionID)
 
bool IsValid () const
 
bool IsPlaying () const
 
void SetPlaying (bool bInPlaying)
 
bool IsStopped () const
 
bool IsActive () const
 
ENGINE_API void Terminate ()
 
ENGINE_API bool CanUseMarkerSync () const
 
int32 GetInstanceID () const
 
float GetPosition () const
 
float GetPlayRate () const
 
float GetDeltaMoved () const
 
float GetPreviousPosition () const
 
float GetBlendStartAlpha () const
 
const FAnimMontageInstanceGetMontageSyncLeader () const
 
const UBlendProfileGetActiveBlendProfile () const
 
const EBlendProfileMode GetActiveBlendProfileMode () const
 
void SetPosition (float const &InPosition)
 
void SetPlayRate (float const &InPlayRate)
 
void PushDisableRootMotion ()
 
void PopDisableRootMotion ()
 
bool IsRootMotionDisabled () const
 
void SetNextPositionWithEvents (float InPosition)
 
void SetNextPositionWithEvents (float InFromPosition, float InToPosition)
 
ENGINE_API void UpdateWeight (float DeltaTime)
 
ENGINE_API bool SimulateAdvance (float DeltaTime, float &InOutPosition, struct FRootMotionMovementParams &OutRootMotionParams) const
 
ENGINE_API void Advance (float DeltaTime, struct FRootMotionMovementParams *OutRootMotionParams, bool bBlendRootMotion)
 
ENGINE_API FName GetCurrentSection () const
 
ENGINE_API FName GetNextSection () const
 
ENGINE_API int32 GetNextSectionID (int32 const &CurrentSectionID) const
 
ENGINE_API FName GetSectionNameFromID (int32 const &SectionID) const
 
ENGINE_API void AddReferencedObjects (FReferenceCollector &Collector)
 
ENGINE_API void HandleEvents (float PreviousTrackPos, float CurrentTrackPos, const FBranchingPointMarker *BranchingPointMarker)
 

Static Public Member Functions

static ENGINE_API UAnimMontageSetSequencerMontagePosition (FName SlotName, USkeletalMeshComponent *SkeletalMeshComponent, int32 &InOutInstanceId, UAnimSequenceBase *InAnimSequence, float InFromPosition, float InToPosition, float Weight, bool bLooping, bool bPlaying)
 
static ENGINE_API UAnimMontagePreviewSequencerMontagePosition (FName SlotName, USkeletalMeshComponent *SkeletalMeshComponent, int32 &InOutInstanceId, UAnimSequenceBase *InAnimSequence, float InFromPosition, float InToPosition, float Weight, bool bLooping, bool bFireNotifies, bool bPlaying)
 
static ENGINE_API UAnimMontageSetSequencerMontagePosition (FName SlotName, UAnimInstance *AnimInstance, int32 &InOutInstanceId, UAnimSequenceBase *InAnimSequence, float InFromPosition, float InToPosition, float Weight, bool bLooping, bool bPlaying)
 
static ENGINE_API UAnimMontagePreviewSequencerMontagePosition (FName SlotName, USkeletalMeshComponent *SkeletalMeshComponent, UAnimInstance *AnimInstance, int32 &InOutInstanceId, UAnimSequenceBase *InAnimSequence, float InFromPosition, float InToPosition, float Weight, bool bLooping, bool bFireNotifies, bool bPlaying)
 

Public Attributes

TObjectPtr< class UAnimMontageMontage
 
FOnMontageEnded OnMontageEnded
 
FOnMontageBlendingOutStarted OnMontageBlendingOutStarted
 
FOnMontageBlendedInEnded OnMontageBlendedInEnded
 
FOnMontageSectionChanged OnMontageSectionChanged
 
bool bPlaying
 
float DefaultBlendTimeMultiplier
 
FDeltaTimeRecord DeltaTimeRecord
 
FMarkerTickRecord MarkerTickRecord
 
TArray< FPassedMarkerMarkersPassedThisTick
 
bool bDidUseMarkerSyncThisTick
 
bool bEnableAutoBlendOut
 

Friends

struct FMontageSubStepper
 

Constructor & Destructor Documentation

◆ FAnimMontageInstance() [1/2]

FAnimMontageInstance::FAnimMontageInstance ( )

◆ FAnimMontageInstance() [2/2]

FAnimMontageInstance::FAnimMontageInstance ( UAnimInstance InAnimInstance)

Member Function Documentation

◆ AddReferencedObjects()

void FAnimMontageInstance::AddReferencedObjects ( FReferenceCollector Collector)

◆ Advance()

void FAnimMontageInstance::Advance ( float  DeltaTime,
struct FRootMotionMovementParams OutRootMotionParams,
bool  bBlendRootMotion 
)

Limit number of iterations for performance. This can get out of control if PlayRate is set really high, or there is a hitch, and Montage is looping for example.

If we're hitting our max number of iterations for whatever reason, make sure we're not accumulating too much time, and go out of range.

◆ CanUseMarkerSync()

bool FAnimMontageInstance::CanUseMarkerSync ( ) const

return true if it can use marker sync

◆ GetActiveBlendProfile()

const UBlendProfile * FAnimMontageInstance::GetActiveBlendProfile ( ) const
inline

◆ GetActiveBlendProfileMode()

const EBlendProfileMode FAnimMontageInstance::GetActiveBlendProfileMode ( ) const
inline

◆ GetBlend()

const FAlphaBlend & FAnimMontageInstance::GetBlend ( ) const
inline

Get the current blend info.

◆ GetBlendStartAlpha()

float FAnimMontageInstance::GetBlendStartAlpha ( ) const
inline

◆ GetBlendTime()

float FAnimMontageInstance::GetBlendTime ( ) const
inline

◆ GetCurrentSection()

FName FAnimMontageInstance::GetCurrentSection ( ) const

◆ GetDeltaMoved()

float FAnimMontageInstance::GetDeltaMoved ( ) const
inline

◆ GetDesiredWeight()

float FAnimMontageInstance::GetDesiredWeight ( ) const
inline

◆ GetInstanceID()

int32 FAnimMontageInstance::GetInstanceID ( ) const
inline

Getters

◆ GetMontageSyncLeader()

const FAnimMontageInstance * FAnimMontageInstance::GetMontageSyncLeader ( ) const
inline

◆ GetNextSection()

FName FAnimMontageInstance::GetNextSection ( ) const

◆ GetNextSectionID()

int32 FAnimMontageInstance::GetNextSectionID ( int32 const &  CurrentSectionID) const

◆ GetPlayRate()

float FAnimMontageInstance::GetPlayRate ( ) const
inline

◆ GetPosition()

float FAnimMontageInstance::GetPosition ( ) const
inline

◆ GetPreviousPosition()

float FAnimMontageInstance::GetPreviousPosition ( ) const
inline

◆ GetSectionNameFromID()

FName FAnimMontageInstance::GetSectionNameFromID ( int32 const &  SectionID) const

◆ GetSyncGroupIndex()

int32 FAnimMontageInstance::GetSyncGroupIndex ( ) const
inline

◆ GetSyncGroupName()

FName FAnimMontageInstance::GetSyncGroupName ( ) const
inline

◆ GetWeight()

float FAnimMontageInstance::GetWeight ( ) const
inline

Get Weight

◆ HandleEvents()

void FAnimMontageInstance::HandleEvents ( float  PreviousTrackPos,
float  CurrentTrackPos,
const FBranchingPointMarker BranchingPointMarker 
)

Delegate function handlers

◆ Initialize()

void FAnimMontageInstance::Initialize ( class UAnimMontage InMontage)

◆ IsActive()

bool FAnimMontageInstance::IsActive ( ) const
inline

Returns true if this montage is active (valid and not blending out)

◆ IsPlaying()

bool FAnimMontageInstance::IsPlaying ( ) const
inline

◆ IsRootMotionDisabled()

bool FAnimMontageInstance::IsRootMotionDisabled ( ) const
inline

◆ IsStopped()

bool FAnimMontageInstance::IsStopped ( ) const
inline

◆ IsValid()

bool FAnimMontageInstance::IsValid ( ) const
inline

◆ JumpToSectionName()

bool FAnimMontageInstance::JumpToSectionName ( FName const &  SectionName,
bool  bEndOfSection = false 
)

◆ MontageSync_Follow()

void FAnimMontageInstance::MontageSync_Follow ( struct FAnimMontageInstance NewLeaderMontageInstance)

Montage to Montage Synchronization.

A montage can only have a single leader. A leader can have multiple followers. Loops cause no harm. If Follower gets ticked before Leader, then synchronization will be performed with a frame of lag. Essentially correcting the previous frame. Which is enough for simple cases (i.e. no timeline jumps from notifies). If Follower gets ticked after Leader, then synchronization will be exact and support more complex cases (i.e. timeline jumps). This can be enforced by setting up tick pre-requisites if desired.

◆ MontageSync_PostUpdate()

void FAnimMontageInstance::MontageSync_PostUpdate ( )

PostUpdate - Sync if updated after Leader.

◆ MontageSync_PreUpdate()

void FAnimMontageInstance::MontageSync_PreUpdate ( )

PreUpdate - Sync if updated before Leader.

◆ MontageSync_StopFollowing()

void FAnimMontageInstance::MontageSync_StopFollowing ( )

Stop following our leader

◆ MontageSync_StopLeading()

void FAnimMontageInstance::MontageSync_StopLeading ( )

Stop leading, release all followers.

◆ Pause()

void FAnimMontageInstance::Pause ( )

◆ Play() [1/2]

void FAnimMontageInstance::Play ( float  InPlayRate,
const FMontageBlendSettings BlendInSettings 
)

◆ Play() [2/2]

void FAnimMontageInstance::Play ( float  InPlayRate = 1.f)

◆ PopDisableRootMotion()

void FAnimMontageInstance::PopDisableRootMotion ( )
inline

◆ PreviewSequencerMontagePosition() [1/2]

UAnimMontage * FAnimMontageInstance::PreviewSequencerMontagePosition ( FName  SlotName,
USkeletalMeshComponent *  SkeletalMeshComponent,
int32 InOutInstanceId,
UAnimSequenceBase InAnimSequence,
float  InFromPosition,
float  InToPosition,
float  Weight,
bool  bLooping,
bool  bFireNotifies,
bool  bPlaying 
)
static

◆ PreviewSequencerMontagePosition() [2/2]

UAnimMontage * FAnimMontageInstance::PreviewSequencerMontagePosition ( FName  SlotName,
USkeletalMeshComponent *  SkeletalMeshComponent,
UAnimInstance AnimInstance,
int32 InOutInstanceId,
UAnimSequenceBase InAnimSequence,
float  InFromPosition,
float  InToPosition,
float  Weight,
bool  bLooping,
bool  bFireNotifies,
bool  bPlaying 
)
static

◆ PushDisableRootMotion()

void FAnimMontageInstance::PushDisableRootMotion ( )
inline

◆ SetDesiredWeight()

void FAnimMontageInstance::SetDesiredWeight ( float  InValue)
inline

Set the Desired Weight

◆ SetNextPositionWithEvents() [1/2]

void FAnimMontageInstance::SetNextPositionWithEvents ( float  InFromPosition,
float  InToPosition 
)
inline

Set the evaluation range of this animation for the next animation update tick. Will trigger events and notifies for that range.

◆ SetNextPositionWithEvents() [2/2]

void FAnimMontageInstance::SetNextPositionWithEvents ( float  InPosition)
inline

Set the next position of this animation for the next animation update tick. Will trigger events and notifies since last position.

◆ SetNextSectionID()

bool FAnimMontageInstance::SetNextSectionID ( int32 const &  SectionID,
int32 const &  NewNextSectionID 
)

◆ SetNextSectionName()

bool FAnimMontageInstance::SetNextSectionName ( FName const &  SectionName,
FName const &  NewNextSectionName 
)

◆ SetPlaying()

void FAnimMontageInstance::SetPlaying ( bool  bInPlaying)
inline

◆ SetPlayRate()

void FAnimMontageInstance::SetPlayRate ( float const &  InPlayRate)
inline

◆ SetPosition()

void FAnimMontageInstance::SetPosition ( float const &  InPosition)
inline

Setters

◆ SetSequencerMontagePosition() [1/2]

UAnimMontage * FAnimMontageInstance::SetSequencerMontagePosition ( FName  SlotName,
UAnimInstance AnimInstance,
int32 InOutInstanceId,
UAnimSequenceBase InAnimSequence,
float  InFromPosition,
float  InToPosition,
float  Weight,
bool  bLooping,
bool  bPlaying 
)
static

◆ SetSequencerMontagePosition() [2/2]

UAnimMontage * FAnimMontageInstance::SetSequencerMontagePosition ( FName  SlotName,
USkeletalMeshComponent *  SkeletalMeshComponent,
int32 InOutInstanceId,
UAnimSequenceBase InAnimSequence,
float  InFromPosition,
float  InToPosition,
float  Weight,
bool  bLooping,
bool  bPlaying 
)
static

static functions that are used by sequencer montage support

◆ SetWeight()

void FAnimMontageInstance::SetWeight ( float  InValue)
inline

Set the weight

◆ SimulateAdvance()

bool FAnimMontageInstance::SimulateAdvance ( float  DeltaTime,
float InOutPosition,
struct FRootMotionMovementParams OutRootMotionParams 
) const

Simulate is same as Advance, but without calling any events or touching any of the instance data. So it performs a simulation of advancing the timeline.

◆ Stop() [1/2]

void FAnimMontageInstance::Stop ( const FAlphaBlend InBlendOut,
bool  bInterrupt = true 
)

◆ Stop() [2/2]

void FAnimMontageInstance::Stop ( const FMontageBlendSettings InBlendOutSettings,
bool  bInterrupt = true 
)

◆ Terminate()

void FAnimMontageInstance::Terminate ( )

◆ UpdateWeight()

void FAnimMontageInstance::UpdateWeight ( float  DeltaTime)

Montage Tick happens in 2 phases

first is to update weight of current montage only this will make sure that all nodes will get up-to-date weight information when update comes in for them

second is normal tick. This tick has to happen later when all node ticks to accumulate and update curve data/notifies/branching points

Friends And Related Symbol Documentation

◆ FMontageSubStepper

Member Data Documentation

◆ bDidUseMarkerSyncThisTick

bool FAnimMontageInstance::bDidUseMarkerSyncThisTick

◆ bEnableAutoBlendOut

bool FAnimMontageInstance::bEnableAutoBlendOut

◆ bPlaying

bool FAnimMontageInstance::bPlaying

◆ DefaultBlendTimeMultiplier

float FAnimMontageInstance::DefaultBlendTimeMultiplier

◆ DeltaTimeRecord

FDeltaTimeRecord FAnimMontageInstance::DeltaTimeRecord

◆ MarkersPassedThisTick

TArray<FPassedMarker> FAnimMontageInstance::MarkersPassedThisTick

◆ MarkerTickRecord

FMarkerTickRecord FAnimMontageInstance::MarkerTickRecord

◆ Montage

TObjectPtr<class UAnimMontage> FAnimMontageInstance::Montage

◆ OnMontageBlendedInEnded

FOnMontageBlendedInEnded FAnimMontageInstance::OnMontageBlendedInEnded

◆ OnMontageBlendingOutStarted

FOnMontageBlendingOutStarted FAnimMontageInstance::OnMontageBlendingOutStarted

◆ OnMontageEnded

FOnMontageEnded FAnimMontageInstance::OnMontageEnded

◆ OnMontageSectionChanged

FOnMontageSectionChanged FAnimMontageInstance::OnMontageSectionChanged

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