UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
AnimInstance.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
7#include "UObject/Object.h"
12#include "Animation/AnimSync.h"
15#include "AnimInstance.generated.h"
16
17// Post Compile Validation requires WITH_EDITOR
18#define ANIMINST_PostCompileValidation WITH_EDITOR
19
23class UAnimInstance;
24class UCanvas;
25class USkeletalMeshComponent;
26class USkeleton;
27struct FAlphaBlend;
28struct FAlphaBlendArgs;
37struct FCompactPose;
41struct FBoneContainer;
44struct FNodeDebugData;
47class UAnimMontage;
48
50
51namespace UE::Anim
52{
53 struct FHeapAttributeContainer;
54 // DEPRECATED use FInertializationRequest instead
57} // namespace UE::Anim
58
65
66UENUM()
68{
69 //Return value is the length of the montage (in seconds)
71 //Return value is the play duration of the montage (length / play rate, in seconds)
73};
74
80
85
93
96
104
107
110
113
115DECLARE_DELEGATE_ThreeParams(FOnGraphStateChanged, const struct FAnimNode_StateMachine& /*Machine*/, int32 /*PrevStateIndex*/, int32 /*NextStateIndex*/);
116
119
122
123
124USTRUCT()
134
136USTRUCT()
138{
140
141private:
143 const struct FBoneContainer* BoneContainer;
144
146 UPROPERTY()
147 TArray<uint8> ComponentSpaceFlags;
148
149public:
151 : BoneContainer(NULL)
152 {
153 }
154
156 ENGINE_API void AllocateLocalPoses(const FBoneContainer& InBoneContainer, const FA2Pose & LocalPose);
157
159 ENGINE_API void AllocateLocalPoses(const FBoneContainer& InBoneContainer, const FTransformArrayA2 & LocalBones);
160
162 ENGINE_API bool IsValid() const;
163
165 ENGINE_API int32 GetParentBoneIndex(const int32 BoneIndex) const;
166
168 ENGINE_API FTransform GetLocalSpaceTransform(int32 BoneIndex);
169
172
174 ENGINE_API void ConvertToLocalPoses(FA2Pose & LocalPoses) const;
175
176private:
178 ENGINE_API void CalculateComponentSpaceTransform(int32 Index);
179 ENGINE_API void SetComponentSpaceTransform(int32 Index, const FTransform& NewTransform);
180
184 ENGINE_API void ConvertBoneToLocalSpace(int32 BoneIndex);
185
186
187 ENGINE_API void SetLocalSpaceTransform(int32 Index, const FTransform& NewTransform);
188
189 // This is not really best way to protect SetComponentSpaceTransform, but we'd like to make sure that isn't called by anywhere else.
190 friend class FAnimationRuntime;
191};
192
210
221
242
267
299
327
330{
333
336
337 //Is the montage slot part of the active graph this tick
339
340 //Was the montage slot part of the active graph last tick
342
349};
350
351UCLASS(transient, Blueprintable, hideCategories=AnimInstance, BlueprintType, Within=SkeletalMeshComponent, MinimalAPI)
353{
355
357
359
362 TObjectPtr<USkeleton> CurrentSkeleton;
363
364 // Sets where this blueprint pulls Root Motion from
365 UPROPERTY(Category = RootMotion, EditDefaultsOnly)
367
375 UPROPERTY(meta=(BlueprintCompilerGeneratedDefaults))
376 uint8 bUseMultiThreadedAnimationUpdate : 1;
377
379 UPROPERTY(meta = (BlueprintCompilerGeneratedDefaults))
380 uint8 bUsingCopyPoseFromMesh : 1;
381
383 uint8 bNeedsUpdate : 1;
384
386 uint8 bCreatedByLinkedAnimGraph : 1;
387
389 UPROPERTY(EditDefaultsOnly, Category = Notifies)
390 uint8 bReceiveNotifiesFromLinkedInstances : 1;
391
393 UPROPERTY(EditDefaultsOnly, Category = Notifies)
394 uint8 bPropagateNotifiesToLinkedInstances : 1;
395
397 UPROPERTY(EditDefaultsOnly, Category = "Montage")
398 uint8 bUseMainInstanceMontageEvaluationData: 1;
399
400private:
401 // Should UpdateAnimation be called
402 uint8 bUpdateAnimationEnabled;
403
407 uint8 bQueueMontageEvents : 1;
408
410 uint8 bUninitialized : 1;
411
412#if DO_CHECK
415
418
421#endif
422
423public:
424
425 // @todo document
426 ENGINE_API void MakeMontageTickRecord(FAnimTickRecord& TickRecord, class UAnimMontage* Montage, float MoveDelta, float Weight, TArray<FPassedMarker>& MarkersPassedThisTick, FMarkerTickRecord& MarkerTickRecord);
427
430 ENGINE_API float GetSlotNodeGlobalWeight(const FName& SlotNodeName) const;
431
432 // Should Extract Root Motion or not. Return true if we do.
434
437 ENGINE_API float GetSlotMontageGlobalWeight(const FName& SlotNodeName) const;
438
442 ENGINE_API float GetSlotMontageLocalWeight(const FName& SlotNodeName) const;
443
447 ENGINE_API float CalcSlotMontageLocalWeight(const FName& SlotNodeName) const;
448
449 // kismet event functions
450
451 UFUNCTION(BlueprintCallable, Category = "Animation")
452 ENGINE_API virtual APawn* TryGetPawnOwner() const;
453
459 UFUNCTION(BlueprintCallable, Category = "Animation|Pose")
460 ENGINE_API virtual void SavePoseSnapshot(FName SnapshotName);
461
463 ENGINE_API FPoseSnapshot& AddPoseSnapshot(FName SnapshotName);
464
466 UFUNCTION(BlueprintCallable, Category = "Animation|Pose")
467 ENGINE_API void RemovePoseSnapshot(FName SnapshotName);
468
470 ENGINE_API const FPoseSnapshot* GetPoseSnapshot(FName SnapshotName) const;
471
477 UFUNCTION(BlueprintCallable, Category = "Animation|Pose")
478 ENGINE_API virtual void SnapshotPose(UPARAM(ref) FPoseSnapshot& Snapshot);
479
481 ENGINE_API const TMap<FName, FAnimGroupInstance>& GetSyncGroupMapRead() const;
482
484 ENGINE_API const TArray<FAnimTickRecord>& GetUngroupedActivePlayersRead();
485
487 ENGINE_API const TMap<FName, float>& GetAnimationCurves(EAnimCurveType InCurveType) const;
488
490 ENGINE_API void GatherDebugData(FNodeDebugData& DebugData);
491
492 // Can this animation instance run Update or Evaluation work in parallel
493 virtual bool CanRunParallelWork() const { return true; }
494
495 // Are we being evaluated on a worker thread
496 ENGINE_API bool IsRunningParallelEvaluation() const;
497
498 // Can does this anim instance need an update (parallel or not)?
499 ENGINE_API bool NeedsUpdate() const;
500
501 // Get whether we have initialized our animation instance or not. This will return false if UninitializeAnimation() has been called.
502 ENGINE_API bool IsInitialized() const;
503
505 UFUNCTION(BlueprintPure, Category = "Animation|Notifies")
506 bool GetReceiveNotifiesFromLinkedInstances() const { return bReceiveNotifiesFromLinkedInstances; }
507
509 UFUNCTION(BlueprintCallable, Category = "Animation|Notifies")
510 void SetReceiveNotifiesFromLinkedInstances(bool bSet) { bReceiveNotifiesFromLinkedInstances = bSet; }
511
513 UFUNCTION(BlueprintPure, Category = "Animation|Notifies")
514 bool GetPropagateNotifiesToLinkedInstances() const { return bPropagateNotifiesToLinkedInstances; }
515
517 UFUNCTION(BlueprintCallable, Category = "Animation|Notifies")
518 void SetPropagateNotifiesToLinkedInstances(bool bSet) { bPropagateNotifiesToLinkedInstances = bSet; }
519
520 UFUNCTION(BlueprintCallable, Category = "Animation|Linked Anim Graphs|Montage")
521 bool IsUsingMainInstanceMontageEvaluationData() const { return bUseMainInstanceMontageEvaluationData; }
522
523 UFUNCTION(BlueprintCallable, Category = "Animation|Linked Anim Graphs|Montage")
524 void SetUseMainInstanceMontageEvaluationData(bool bSet) { bUseMainInstanceMontageEvaluationData = bSet; }
525
526private:
527 // Does this anim instance need immediate update (rather than parallel)?
528 ENGINE_API bool NeedsImmediateUpdate(float DeltaSeconds, bool bNeedsValidRootMotion) const;
529
530public:
532 UFUNCTION(BlueprintCallable, Category = "Animation")
533 ENGINE_API AActor* GetOwningActor() const;
534
535 // Returns the skeletal mesh component that has created this AnimInstance
536 UFUNCTION(BlueprintCallable, Category = "Animation")
537 ENGINE_API USkeletalMeshComponent* GetOwningComponent() const;
538
540 UFUNCTION(BlueprintCallable, Category = "Animation", meta = (DisplayName="Get Main Anim Instance", BlueprintThreadSafe))
541 ENGINE_API UAnimInstance* Blueprint_GetMainAnimInstance() const;
542
543public:
544
546 UFUNCTION(BlueprintImplementableEvent)
547 ENGINE_API void BlueprintInitializeAnimation();
548
550 UFUNCTION(BlueprintImplementableEvent)
551 ENGINE_API void BlueprintUpdateAnimation(float DeltaTimeX);
552
554 UFUNCTION(BlueprintImplementableEvent)
555 ENGINE_API void BlueprintPostEvaluateAnimation();
556
558 UFUNCTION(BlueprintImplementableEvent)
559 ENGINE_API void BlueprintBeginPlay();
560
562 UFUNCTION(BlueprintImplementableEvent)
563 ENGINE_API void BlueprintLinkedAnimationLayersInitialized();
564
566 UFUNCTION(BlueprintImplementableEvent, meta=(BlueprintThreadSafe))
567 ENGINE_API void BlueprintThreadSafeUpdateAnimation(float DeltaTime);
568
569 ENGINE_API bool CanTransitionSignature() const;
570
571 /*********************************************************************************************
572 * SlotAnimation
573 ********************************************************************************************* */
574public:
575
577 UFUNCTION(BlueprintCallable, Category="Animation|Montage")
578 ENGINE_API UAnimMontage* PlaySlotAnimationAsDynamicMontage(UAnimSequenceBase* Asset, FName SlotNodeName, float BlendInTime = 0.25f, float BlendOutTime = 0.25f, float InPlayRate = 1.f, int32 LoopCount = 1, float BlendOutTriggerTime = -1.f, float InTimeToStartMontageAt = 0.f);
579
581 UFUNCTION(BlueprintCallable, Category = "Animation|Montage")
582 ENGINE_API UAnimMontage* PlaySlotAnimationAsDynamicMontage_WithBlendArgs(UAnimSequenceBase* Asset, FName SlotNodeName, const FAlphaBlendArgs& BlendIn, const FAlphaBlendArgs& BlendOut, float InPlayRate = 1.f, int32 LoopCount = 1, float BlendOutTriggerTime = -1.f, float InTimeToStartMontageAt = 0.f);
583
585 UFUNCTION(BlueprintCallable, Category = "Animation|Montage")
586 ENGINE_API UAnimMontage* PlaySlotAnimationAsDynamicMontage_WithBlendSettings(UAnimSequenceBase* Asset, FName SlotNodeName, const FMontageBlendSettings& BlendInSettings, const FMontageBlendSettings& BlendOutSettings, float InPlayRate = 1.f, int32 LoopCount = 1, float BlendOutTriggerTime = -1.f, float InTimeToStartMontageAt = 0.f);
587
589 UFUNCTION(BlueprintCallable, Category="Animation|Montage")
590 ENGINE_API void StopSlotAnimation(float InBlendOutTime = 0.25f, FName SlotNodeName = NAME_None);
591
593 UFUNCTION(BlueprintPure, Category="Animation|Montage")
594 ENGINE_API bool IsPlayingSlotAnimation(const UAnimSequenceBase* Asset, FName SlotNodeName) const;
595
597 ENGINE_API bool IsPlayingSlotAnimation(const UAnimSequenceBase* Asset, FName SlotNodeName, UAnimMontage*& OutMontage) const;
598
600 UFUNCTION(BlueprintPure, Category="Animation|Montage", meta=(BlueprintThreadSafe))
601 ENGINE_API bool IsSlotActive(FName SlotNodeName) const;
602
604 UFUNCTION(BlueprintPure, Category="Animation|Montage", meta=(BlueprintThreadSafe, DisplayName="GetSlotLocalWeight"))
605 ENGINE_API float Blueprint_GetSlotMontageLocalWeight(FName SlotNodeName) const;
606
607 /*********************************************************************************************
608 * AnimMontage
609 ********************************************************************************************* */
610public:
612 UFUNCTION(BlueprintCallable, Category = "Animation|Montage")
614
616 UFUNCTION(BlueprintCallable, Category = "Animation|Montage")
618
620 UFUNCTION(BlueprintCallable, Category = "Animation|Montage")
622
625 UFUNCTION(BlueprintCallable, Category = "Animation|Montage")
626 ENGINE_API void Montage_Stop(float InBlendOutTime, const UAnimMontage* Montage = NULL);
627
629 UFUNCTION(BlueprintCallable, Category = "Animation|Montage")
630 ENGINE_API void Montage_StopWithBlendOut(const FAlphaBlendArgs& BlendOut, const UAnimMontage* Montage = nullptr);
631
633 UFUNCTION(BlueprintCallable, Category = "Animation|Montage")
634 ENGINE_API void Montage_StopWithBlendSettings(const FMontageBlendSettings& BlendOutSettings, const UAnimMontage* Montage = nullptr);
635
637 UFUNCTION(BlueprintCallable, Category = "Animation|Montage")
638 ENGINE_API void Montage_StopGroupByName(float InBlendOutTime, FName GroupName);
639
641 UFUNCTION(BlueprintCallable, Category = "Animation|Montage")
642 ENGINE_API void Montage_Pause(const UAnimMontage* Montage = NULL);
643
645 UFUNCTION(BlueprintCallable, Category = "Animation|Montage")
646 ENGINE_API void Montage_Resume(const UAnimMontage* Montage);
647
649 UFUNCTION(BlueprintCallable, Category="Animation|Montage")
650 ENGINE_API void Montage_JumpToSection(FName SectionName, const UAnimMontage* Montage = NULL);
651
653 UFUNCTION(BlueprintCallable, Category="Animation|Montage")
654 ENGINE_API void Montage_JumpToSectionsEnd(FName SectionName, const UAnimMontage* Montage = NULL);
655
665 UFUNCTION(BlueprintCallable, Category="Animation|Montage")
666 ENGINE_API void Montage_SetNextSection(FName SectionNameToChange, FName NextSection, const UAnimMontage* Montage = NULL);
667
669 UFUNCTION(BlueprintCallable, Category="Animation|Montage")
670 ENGINE_API void Montage_SetPlayRate(const UAnimMontage* Montage, float NewPlayRate = 1.f);
671
673 UFUNCTION(BlueprintPure, Category="Animation|Montage")
674 ENGINE_API bool Montage_IsActive(const UAnimMontage* Montage) const;
675
678 UFUNCTION(BlueprintPure, Category="Animation|Montage")
679 ENGINE_API bool Montage_IsPlaying(const UAnimMontage* Montage) const;
680
682 UFUNCTION(BlueprintPure, Category="Animation|Montage")
683 ENGINE_API FName Montage_GetCurrentSection(const UAnimMontage* Montage = NULL) const;
684
686 UFUNCTION(BlueprintPure, Category = "Animation|Montage")
687 ENGINE_API float Montage_GetPosition(const UAnimMontage* Montage) const;
688
690 UFUNCTION(BlueprintCallable, Category = "Animation|Montage")
691 ENGINE_API void Montage_SetPosition(const UAnimMontage* Montage, float NewPosition);
692
694 UFUNCTION(BlueprintPure, Category = "Animation|Montage")
695 ENGINE_API bool Montage_GetIsStopped(const UAnimMontage* Montage) const;
696
699 UFUNCTION(BlueprintPure, Category = "Animation|Montage")
700 ENGINE_API float Montage_GetBlendTime(const UAnimMontage* Montage) const;
701
705 UFUNCTION(BlueprintPure, Category = "Animation|Montage")
706 ENGINE_API float Montage_GetPlayRate(const UAnimMontage* Montage) const;
707
711 UFUNCTION(BlueprintPure, Category = "Animation|Montage")
712 ENGINE_API float Montage_GetEffectivePlayRate(const UAnimMontage* Montage) const;
713
715 UFUNCTION(BlueprintPure, Category = "Animation|Montage")
716 ENGINE_API bool DynamicMontage_IsPlayingFrom(const UAnimSequenceBase* Animation) const;
717
718 /*********************************************************************************************
719 * AnimMontage sync. See notes in AnimMontage.h
720 ********************************************************************************************* */
721
726 UFUNCTION(BlueprintCallable, Category = "Montage")
728
731 UFUNCTION(BlueprintCallable, Category = "Montage")
732 ENGINE_API void MontageSync_StopFollowing(const UAnimMontage* MontageFollower);
733
735 UFUNCTION(BlueprintPure, Category = "Animation|Montage")
736 ENGINE_API bool IsAnyMontagePlaying() const;
737
740 UFUNCTION(BlueprintPure, Category = "Animation|Montage")
741 ENGINE_API UAnimMontage* GetCurrentActiveMontage() const;
742
744 UPROPERTY(BlueprintAssignable)
746
748 UPROPERTY(BlueprintAssignable)
750
752 UPROPERTY(BlueprintAssignable)
754
756 UPROPERTY(BlueprintAssignable)
758
760 UPROPERTY(BlueprintAssignable)
761 FOnAllMontageInstancesEndedMCDelegate OnAllMontageInstancesEnded;
762
764 UPROPERTY(BlueprintAssignable)
765 FOnMontageSectionChangedMCDelegate OnMontageSectionChanged;
766
767 /*********************************************************************************************
768 * AnimMontage native C++ interface
769 ********************************************************************************************* */
770public:
771 ENGINE_API void Montage_SetEndDelegate(FOnMontageEnded & InOnMontageEnded, UAnimMontage* Montage = NULL);
772
775 ENGINE_API FOnMontageEnded* Montage_GetEndedDelegate(UAnimMontage* Montage = nullptr);
776
778
779 ENGINE_API void Montage_SetBlendedInDelegate(FOnMontageBlendedInEnded& InOnMontageBlendingIn, UAnimMontage* Montage = nullptr);
780
783 ENGINE_API FOnMontageBlendingOutStarted* Montage_GetBlendingOutDelegate(UAnimMontage* Montage = NULL);
784
785 ENGINE_API void Montage_SetSectionChangedDelegate(FOnMontageSectionChanged& InOnMontageSectionChanged, UAnimMontage* Montage = NULL);
786
789 ENGINE_API FOnMontageSectionChanged* Montage_GetSectionChangedDelegate(UAnimMontage* Montage = NULL);
790
792 ENGINE_API int32 Montage_GetNextSectionID(const UAnimMontage* Montage, int32 const & CurrentSectionID) const;
793
796 ENGINE_API FAnimMontageInstance* GetActiveMontageInstance() const;
797
799 ENGINE_API FAnimMontageInstance* GetActiveInstanceForMontage(const UAnimMontage* Montage) const;
800
802 ENGINE_API FAnimMontageInstance* GetInstanceForMontage(const UAnimMontage* Montage) const;
803
805 ENGINE_API FAnimMontageInstance* GetMontageInstanceForID(int32 MontageInstanceID);
806
808 ENGINE_API void StopAllMontages(float BlendOut);
809
814
815 ENGINE_API virtual void OnMontageInstanceStopped(FAnimMontageInstance & StoppedMontageInstance);
816 ENGINE_API void ClearMontageInstanceReferences(FAnimMontageInstance& InMontageInstance);
817
818 UE_DEPRECATED(4.24, "Function renamed, please use GetLinkedInputPoseNode")
819 FAnimNode_LinkedInputPose* GetSubInputNode(FName InSubInput = NAME_None, FName InGraph = NAME_None) { return GetLinkedInputPoseNode(InSubInput, InGraph); }
820
827
828 UE_DEPRECATED(4.24, "Function renamed, please use GetLinkedAnimGraphInstanceByTag")
829 UAnimInstance* GetSubInstanceByTag(FName InTag) const { return GetLinkedAnimGraphInstanceByTag(InTag); }
830
832 UFUNCTION(BlueprintPure, Category = "Animation|Linked Anim Graphs")
833 ENGINE_API UAnimInstance* GetLinkedAnimGraphInstanceByTag(FName InTag) const;
834
835 UE_DEPRECATED(4.24, "Function renamed, please use GetLinkedAnimGraphInstancesByTag")
836 ENGINE_API void GetSubInstancesByTag(FName InTag, TArray<UAnimInstance*>& OutSubInstances) const;
837
839 UE_DEPRECATED(5.0, "Tags are unique so this function is no longer supported. Please use GetLinkedAnimGraphInstanceByTag instead")
840 UFUNCTION(BlueprintPure, Category = "Animation|Linked Anim Graphs", meta=(DeprecatedFunction, DeprecationMessage="Tags are unique so this function is no longer supported. Please use GetLinkedAnimGraphInstanceByTag instead"))
841 ENGINE_API void GetLinkedAnimGraphInstancesByTag(FName InTag, TArray<UAnimInstance*>& OutLinkedInstances) const;
842
843 UE_DEPRECATED(4.24, "Function renamed, please use LinkAnimGraphByTag")
844 void SetSubInstanceClassByTag(FName InTag, TSubclassOf<UAnimInstance> InClass) { LinkAnimGraphByTag(InTag, InClass); }
845
847 UFUNCTION(BlueprintCallable, Category = "Animation|Linked Anim Graphs")
848 ENGINE_API void LinkAnimGraphByTag(FName InTag, TSubclassOf<UAnimInstance> InClass);
849
850 UE_DEPRECATED(4.24, "Function renamed, please use LinkAnimClassLayers")
851 void SetLayerOverlay(TSubclassOf<UAnimInstance> InClass) { LinkAnimClassLayers(InClass); }
852
859 UFUNCTION(BlueprintCallable, Category = "Animation|Linked Anim Graphs")
860 ENGINE_API virtual void LinkAnimClassLayers(TSubclassOf<UAnimInstance> InClass);
861
862 UE_DEPRECATED(4.24, "Function renamed, please use UnlinkAnimClassLayers")
863 void ClearLayerOverlay(TSubclassOf<UAnimInstance> InClass) { UnlinkAnimClassLayers(InClass); }
864
870 UFUNCTION(BlueprintCallable, Category = "Animation|Linked Anim Graphs")
871 ENGINE_API virtual void UnlinkAnimClassLayers(TSubclassOf<UAnimInstance> InClass);
872
873 UE_DEPRECATED(4.24, "Function renamed, please use GetLinkedAnimLayerInstanceByGroup")
874 UAnimInstance* GetLayerSubInstanceByGroup(FName InGroup) const { return GetLinkedAnimLayerInstanceByGroup(InGroup); }
875
877 UFUNCTION(BlueprintPure, Category = "Animation|Linked Anim Graphs")
878 ENGINE_API UAnimInstance* GetLinkedAnimLayerInstanceByGroup(FName InGroup) const;
879
881 UFUNCTION(BlueprintPure, Category = "Animation|Linked Anim Graphs")
882 ENGINE_API void GetLinkedAnimLayerInstancesByGroup(FName InGroup, TArray<UAnimInstance*>& OutLinkedInstances) const;
883
885 UFUNCTION(BlueprintPure, Category = "Animation|Linked Anim Graphs")
886 ENGINE_API UAnimInstance* GetLinkedAnimLayerInstanceByGroupAndClass(FName InGroup, TSubclassOf<UAnimInstance> InClass) const;
887
888 UE_DEPRECATED(4.24, "Function renamed, please use GetLinkedAnimLayerInstanceByClass")
889 UAnimInstance* GetLayerSubInstanceByClass(TSubclassOf<UAnimInstance> InClass) const { return GetLinkedAnimLayerInstanceByClass(InClass); }
890
892 UFUNCTION(BlueprintPure, Category = "Animation|Linked Anim Graphs")
893 ENGINE_API UAnimInstance* GetLinkedAnimLayerInstanceByClass(TSubclassOf<UAnimInstance> InClass, bool bCheckForChildClass = false) const;
894
896 ENGINE_API void InitializeGroupedLayers(bool bInDeferSubGraphInitialization);
897
899 ENGINE_API void AddExternalNotifyHandler(UObject* ExternalHandlerObject, FName NotifyEventName);
901 ENGINE_API void RemoveExternalNotifyHandler(UObject* ExternalHandlerObject, FName NotifyEventName);
902
903 // Find a subsystem's instance-resident data. If no subsystem of the type exists this will return nullptr.
904 // @param InSubsystemType The subsystem's type
906
907 // Get a subsystem's instance-resident data. If no subsystem of the type exists this will return nullptr.
909 SubsystemType* FindSubsystem()
910 {
911 FAnimSubsystemInstance* Subsystem = FindSubsystem(SubsystemType::StaticStruct());
912 return static_cast<SubsystemType*>(Subsystem);
913 }
914
915 // Get a subsystem's instance-resident data. If no subsystem of the type exists this will assert.
916 template<typename SubsystemType>
918 {
919 FAnimSubsystemInstance* Subsystem = FindSubsystem(SubsystemType::StaticStruct());
920 check(Subsystem);
921 return static_cast<SubsystemType&>(*Subsystem);
922 }
923
924private:
927
928protected:
931
932
933 UE_DEPRECATED(5.5, "This property is deprecated. Please use SlotGroupInertializationRequestDataMap instead")
934 TMap<FName, UE::Anim::FSlotInertializationRequest> SlotGroupInertializationRequestMap;
935
938 TMap<FName, FInertializationRequest> SlotGroupInertializationRequestDataMap;
939
940 /* StopAllMontagesByGroupName needs a BlendMode and BlendProfile to function properly if using non-default ones in your montages. If you want default BlendMode/BlendProfiles, you need to update the calling code to do so. */
941 UE_DEPRECATED(5.0, "Use StopAllMontagesByGroupName with other signature.")
942 ENGINE_API void StopAllMontagesByGroupName(FName InGroupName, const FAlphaBlend& BlendOut);
943
945 ENGINE_API void StopAllMontagesByGroupName(FName InGroupName, const FMontageBlendSettings& BlendOutSettings);
946
948 ENGINE_API virtual void Montage_UpdateWeight(float DeltaSeconds);
950 ENGINE_API virtual void Montage_Advance(float DeltaSeconds);
951
954
955public:
956
959 ENGINE_API void ConditionalFlushCompletedMontages();
960
962 ENGINE_API void RequestMontageInertialization(const UAnimMontage* Montage, float Duration, const UBlendProfile* BlendProfile = nullptr);
963
965 ENGINE_API void RequestMontageInertialization(const UAnimMontage* Montage, const FInertializationRequest& Request);
966
968 UFUNCTION(BlueprintCallable, Category = "Animation|Inertial Blending")
969 ENGINE_API void RequestSlotGroupInertialization(FName InSlotGroupName, float Duration, const UBlendProfile* BlendProfile = nullptr);
970
972 ENGINE_API void QueueMontageBlendingOutEvent(const FQueuedMontageBlendingOutEvent& MontageBlendingOutEvent);
973
975 ENGINE_API void QueueMontageBlendedInEvent(const FQueuedMontageBlendedInEvent& MontageBlendedInEvent);
976
978 ENGINE_API void QueueMontageEndedEvent(const FQueuedMontageEndedEvent& MontageEndedEvent);
979
981 ENGINE_API void QueueMontageSectionChangedEvent(const FQueuedMontageSectionChangedEvent& MontageSectionChangedEvent);
982
983private:
985 ENGINE_API void TriggerQueuedMontageEvents();
986
988 TArray<FQueuedMontageBlendingOutEvent> QueuedMontageBlendingOutEvents;
989
991 TArray<FQueuedMontageBlendedInEvent> QueuedMontageBlendedInEvents;
992
994 TArray<FQueuedMontageEndedEvent> QueuedMontageEndedEvents;
995
997 TArray<FQueuedMontageSectionChangedEvent> QueuedMontageSectionChangedEvents;
998
1000 ENGINE_API void TriggerMontageBlendingOutEvent(const FQueuedMontageBlendingOutEvent& MontageBlendingOutEvent);
1001
1003 ENGINE_API void TriggerMontageBlendedInEvent(const FQueuedMontageBlendedInEvent& MontageBlendedInEvent);
1004
1006 ENGINE_API void TriggerMontageEndedEvent(const FQueuedMontageEndedEvent& MontageEndedEvent);
1007
1009 ENGINE_API void TriggerMontageSectionChangedEvent(const FQueuedMontageSectionChangedEvent& MontageSectionChangedEvent);
1010
1011public:
1012
1013#if DO_CHECK
1015 bool IsPostUpdatingAnimation() const { return bPostUpdatingAnimation; }
1016
1018 bool IsUpdatingAnimation() const { return bUpdatingAnimation; }
1019#endif
1020
1022 UFUNCTION(BlueprintCallable, Category = "Animation|Root Motion")
1023 ENGINE_API void SetRootMotionMode(TEnumAsByte<ERootMotionMode::Type> Value);
1024
1048 UFUNCTION(BlueprintPure, Category="Animation|Asset Player", meta=(DisplayName="Length", BlueprintInternalUseOnly="true", AnimGetter="true", BlueprintThreadSafe))
1049 ENGINE_API float GetInstanceAssetPlayerLength(int32 AssetPlayerIndex);
1050
1052 UFUNCTION(BlueprintPure, Category="Animation|Asset Player", meta = (DisplayName = "Current Time", BlueprintInternalUseOnly = "true", AnimGetter = "true", BlueprintThreadSafe))
1053 ENGINE_API float GetInstanceAssetPlayerTime(int32 AssetPlayerIndex);
1054
1056 UFUNCTION(BlueprintPure, Category="Animation|Asset Player", meta=(DisplayName="Current Time (ratio)", BlueprintInternalUseOnly="true", AnimGetter="true", BlueprintThreadSafe))
1057 ENGINE_API float GetInstanceAssetPlayerTimeFraction(int32 AssetPlayerIndex);
1058
1060 UFUNCTION(BlueprintPure, Category="Animation|Asset Player", meta=(DisplayName="Time Remaining", BlueprintInternalUseOnly="true", AnimGetter="true", BlueprintThreadSafe))
1061 ENGINE_API float GetInstanceAssetPlayerTimeFromEnd(int32 AssetPlayerIndex);
1062
1064 UFUNCTION(BlueprintPure, Category="Animation|Asset Player", meta=(DisplayName="Time Remaining (ratio)", BlueprintInternalUseOnly="true", AnimGetter="true", BlueprintThreadSafe))
1065 ENGINE_API float GetInstanceAssetPlayerTimeFromEndFraction(int32 AssetPlayerIndex);
1066
1068 UFUNCTION(BlueprintPure, Category = "Animation|State Machines", meta = (DisplayName = "Machine Weight", BlueprintInternalUseOnly = "true", AnimGetter = "true", BlueprintThreadSafe))
1069 ENGINE_API float GetInstanceMachineWeight(int32 MachineIndex);
1070
1072 UFUNCTION(BlueprintPure, Category="Animation|State Machines", meta = (DisplayName="State Weight", BlueprintInternalUseOnly = "true", AnimGetter="true", BlueprintThreadSafe))
1073 ENGINE_API float GetInstanceStateWeight(int32 MachineIndex, int32 StateIndex);
1074
1076 UFUNCTION(BlueprintPure, Category="Animation|State Machines", meta = (DisplayName="Current State Time", BlueprintInternalUseOnly = "true", AnimGetter="true", GetterContext="Transition", BlueprintThreadSafe))
1077 ENGINE_API float GetInstanceCurrentStateElapsedTime(int32 MachineIndex);
1078
1080 UFUNCTION(BlueprintPure, Category="Animation|State Machines", meta = (DisplayName="Get Transition Crossfade Duration", BlueprintInternalUseOnly = "true", AnimGetter="true", BlueprintThreadSafe))
1081 ENGINE_API float GetInstanceTransitionCrossfadeDuration(int32 MachineIndex, int32 TransitionIndex);
1082
1084 UFUNCTION(BlueprintPure, Category="Animation|State Machines", meta = (DisplayName="Get Transition Time Elapsed", BlueprintInternalUseOnly = "true", AnimGetter="true", GetterContext="CustomBlend", BlueprintThreadSafe))
1085 ENGINE_API float GetInstanceTransitionTimeElapsed(int32 MachineIndex, int32 TransitionIndex);
1086
1088 UFUNCTION(BlueprintPure, Category="Animation|State Machines", meta = (DisplayName="Get Transition Time Elapsed (ratio)", BlueprintInternalUseOnly = "true", AnimGetter="true", GetterContext="CustomBlend", BlueprintThreadSafe))
1089 ENGINE_API float GetInstanceTransitionTimeElapsedFraction(int32 MachineIndex, int32 TransitionIndex);
1090
1092 UFUNCTION(BlueprintPure, Category="Animation|State Machines", meta = (BlueprintInternalUseOnly = "true", AnimGetter="true", GetterContext="Transition", BlueprintThreadSafe))
1093 ENGINE_API float GetRelevantAnimTimeRemaining(int32 MachineIndex, int32 StateIndex);
1094
1096 UFUNCTION(BlueprintPure, Category = "Animation|State Machines", meta = (BlueprintInternalUseOnly = "true", AnimGetter = "true", GetterContext = "Transition", BlueprintThreadSafe))
1097 ENGINE_API float GetRelevantAnimTimeRemainingFraction(int32 MachineIndex, int32 StateIndex);
1098
1100 UFUNCTION(BlueprintPure, Category = "Animation|State Machines", meta = (BlueprintInternalUseOnly = "true", AnimGetter = "true", GetterContext = "Transition", BlueprintThreadSafe))
1101 ENGINE_API float GetRelevantAnimLength(int32 MachineIndex, int32 StateIndex);
1102
1104 UFUNCTION(BlueprintPure, Category = "Animation|State Machines", meta = (BlueprintInternalUseOnly = "true", AnimGetter = "true", GetterContext = "Transition", BlueprintThreadSafe))
1105 ENGINE_API float GetRelevantAnimTime(int32 MachineIndex, int32 StateIndex);
1106
1108 UFUNCTION(BlueprintPure, Category = "Animation|State Machines", meta = (BlueprintInternalUseOnly = "true", AnimGetter = "true", GetterContext = "Transition", BlueprintThreadSafe))
1109 ENGINE_API float GetRelevantAnimTimeFraction(int32 MachineIndex, int32 StateIndex);
1110
1112 UFUNCTION(BlueprintPure, Category = "Animation|State Machines", meta = (BlueprintThreadSafe, Keywords = "Window,TransitionWindow,NotifyState,NotifyStateTransition"))
1113 ENGINE_API bool WasAnimNotifyStateActiveInAnyState(TSubclassOf<UAnimNotifyState> AnimNotifyStateType);
1114
1116 UFUNCTION(BlueprintPure, Category = "Animation|State Machines", meta = (BlueprintInternalUseOnly = "true", AnimGetter = "true", GetterContext = "Transition", BlueprintThreadSafe, Keywords = "Window,TransitionWindow,NotifyState,NotifyStateTransition"))
1117 ENGINE_API bool WasAnimNotifyStateActiveInStateMachine(int32 MachineIndex, TSubclassOf<UAnimNotifyState> AnimNotifyStateType);
1118
1120 UFUNCTION(BlueprintPure, Category = "Animation|State Machines", meta = (BlueprintInternalUseOnly = "true", AnimGetter = "true", GetterContext = "Transition", BlueprintThreadSafe, Keywords = "Window,TransitionWindow,NotifyState,NotifyStateTransition"))
1121 ENGINE_API bool WasAnimNotifyStateActiveInSourceState(int32 MachineIndex, int32 StateIndex, TSubclassOf<UAnimNotifyState> AnimNotifyStateType);
1122
1124 UFUNCTION(BlueprintPure, Category = "Animation|State Machines", meta = (BlueprintInternalUseOnly = "true", AnimGetter = "true", GetterContext = "Transition", BlueprintThreadSafe, Keywords = "Window,TransitionWindow,NotifyState,NotifyStateTransition"))
1125 ENGINE_API bool WasAnimNotifyTriggeredInSourceState(int32 MachineIndex, int32 StateIndex, TSubclassOf<UAnimNotify> AnimNotifyType);
1126
1128 UFUNCTION(BlueprintPure, Category = "Animation|State Machines", meta = (BlueprintInternalUseOnly = "true", AnimGetter = "true", GetterContext = "Transition", BlueprintThreadSafe, Keywords = "Window,TransitionWindow,NotifyState,NotifyStateTransition"))
1129 ENGINE_API bool WasAnimNotifyNameTriggeredInSourceState(int32 MachineIndex, int32 StateIndex, FName NotifyName);
1130
1132 UFUNCTION(BlueprintPure, Category = "Animation|State Machines", meta = (BlueprintInternalUseOnly = "true", AnimGetter = "true", GetterContext = "Transition", BlueprintThreadSafe, Keywords = "Window,TransitionWindow,NotifyState,NotifyStateTransition"))
1133 ENGINE_API bool WasAnimNotifyTriggeredInStateMachine(int32 MachineIndex, TSubclassOf<UAnimNotify> AnimNotifyType);
1134
1136 UFUNCTION(BlueprintPure, Category = "Animation|State Machines", meta = (BlueprintInternalUseOnly = "true", AnimGetter = "true", GetterContext = "Transition", BlueprintThreadSafe, Keywords = "Window,TransitionWindow,NotifyState,NotifyStateTransition"))
1137 ENGINE_API bool WasAnimNotifyNameTriggeredInStateMachine(int32 MachineIndex, FName NotifyName);
1138
1140 UFUNCTION(BlueprintPure, Category = "Animation|State Machines", meta = (BlueprintInternalUseOnly = "true", AnimGetter = "true", GetterContext = "Transition", BlueprintThreadSafe, Keywords = "Window,TransitionWindow,NotifyState,NotifyStateTransition"))
1141 ENGINE_API bool WasAnimNotifyTriggeredInAnyState(TSubclassOf<UAnimNotify> AnimNotifyType);
1142
1144 UFUNCTION(BlueprintPure, Category = "Animation|State Machines", meta = (BlueprintInternalUseOnly = "true", AnimGetter = "true", GetterContext = "Transition", BlueprintThreadSafe, Keywords = "Window,TransitionWindow,NotifyState,NotifyStateTransition"))
1145 ENGINE_API bool WasAnimNotifyNameTriggeredInAnyState(FName NotifyName);
1146
1148 ENGINE_API const FAnimNode_StateMachine* GetStateMachineInstanceFromName(FName MachineName) const;
1149
1152
1153 ENGINE_API void GetStateMachineIndexAndDescription(FName InMachineName, int32& OutMachineIndex, const FBakedAnimationStateMachine** OutMachineDescription);
1154
1156 ENGINE_API int32 GetSyncGroupIndexFromName(FName SyncGroupName) const;
1157
1159 ENGINE_API int32 GetStateMachineIndex(FName MachineName) const;
1160
1162 ENGINE_API const FAnimNode_StateMachine* GetStateMachineInstance(int32 MachineIndex) const;
1163
1168 ENGINE_API int32 GetInstanceAssetPlayerIndex(FName MachineName, FName StateName, FName InstanceName = NAME_None) const;
1169
1171 ENGINE_API TArray<const FAnimNode_AssetPlayerBase*> GetInstanceAssetPlayers(const FName& GraphName) const;
1172
1174 ENGINE_API TArray<FAnimNode_AssetPlayerBase*> GetMutableInstanceAssetPlayers(const FName& GraphName);
1175
1177 ENGINE_API TArray<const FAnimNode_AssetPlayerRelevancyBase*> GetInstanceRelevantAssetPlayers(const FName& GraphName) const;
1178
1180 ENGINE_API TArray<FAnimNode_AssetPlayerRelevancyBase*> GetMutableInstanceRelevantAssetPlayers(const FName& GraphName);
1181
1183 ENGINE_API const FBakedAnimationStateMachine* GetStateMachineInstanceDesc(FName MachineName) const;
1184
1186 UE_DEPRECATED(5.1, "Please use GetRelevantAssetPlayerInterfaceFromState")
1187 const FAnimNode_AssetPlayerBase* GetRelevantAssetPlayerFromState(int32 MachineIndex, int32 StateIndex) const
1188 {
1189 return nullptr;
1190 }
1191
1193 ENGINE_API const FAnimNode_AssetPlayerRelevancyBase* GetRelevantAssetPlayerInterfaceFromState(int32 MachineIndex, int32 StateIndex) const;
1194
1196
1197public:
1198
1200 UFUNCTION(BlueprintPure, Category="Animation|Skeleton", meta=(BlueprintThreadSafe))
1201 ENGINE_API const UBlendProfile* GetBlendProfileByName(FName InBlendProfileName) const;
1202
1204 UFUNCTION(BlueprintPure, Category="Animation|Curves", meta=(BlueprintThreadSafe))
1205 ENGINE_API float GetCurveValue(FName CurveName) const;
1206
1214 UFUNCTION(BlueprintPure, Category="Animation|Curves", meta=(BlueprintThreadSafe))
1215 ENGINE_API bool GetCurveValueWithDefault(FName CurveName, float DefaultValue, float& OutValue);
1216
1218 UFUNCTION(BlueprintPure, Category = "Animation|Curves", meta=(BlueprintThreadSafe))
1219 ENGINE_API void GetActiveCurveNames(EAnimCurveType CurveType, TArray<FName>& OutNames) const;
1220
1221 /* This returns all curve names. This is the same as calling GetActiveCurveNames with CurveType == AttributeCurve */
1222 UFUNCTION(BlueprintPure, Category = "Animation|Curves", meta=(BlueprintThreadSafe))
1223 ENGINE_API void GetAllCurveNames(TArray<FName>& OutNames) const;
1224
1226 ENGINE_API bool GetCurveValue(FName CurveName, float& OutValue) const;
1227
1229 ENGINE_API void OverrideCurveValue(FName CurveName, float Value);
1230
1232 UFUNCTION(BlueprintPure, Category="Animation|State Machines", meta=(BlueprintInternalUseOnly = "true", AnimGetter = "true", BlueprintThreadSafe))
1233 ENGINE_API FName GetCurrentStateName(int32 MachineIndex);
1234
1236 UFUNCTION(BlueprintCallable, Category="Animation|Morph Targets")
1237 ENGINE_API void SetMorphTarget(FName MorphTargetName, float Value);
1238
1240 UFUNCTION(BlueprintCallable, Category="Animation|Morph Targets")
1241 ENGINE_API void ClearMorphTargets();
1242
1243 UE_DEPRECATED(5.0, "Please use UKismetAnimationLibrary::CalculateDirection instead")
1244 UFUNCTION(BlueprintCallable, Category="Animation", meta=(BlueprintThreadSafe))
1245 ENGINE_API float CalculateDirection(const FVector& Velocity, const FRotator& BaseRotation) const;
1246
1247 //--- AI communication start ---//
1250 UFUNCTION(BlueprintCallable, Category = "Animation", BlueprintAuthorityOnly, Meta=(DeprecatedFunction, DeprecationMessage="Use LockAIResourcesWithAnimation instead"))
1251 ENGINE_API void LockAIResources(bool bLockMovement, bool LockAILogic);
1252
1255 UFUNCTION(BlueprintCallable, Category = "Animation", BlueprintAuthorityOnly, Meta=(DeprecatedFunction, DeprecationMessage="Use UnlockAIResourcesWithAnimation instead"))
1256 ENGINE_API void UnlockAIResources(bool bUnlockMovement, bool UnlockAILogic);
1257 //--- AI communication end ---//
1258
1259 UFUNCTION(BlueprintCallable, Category = "Animation|Synchronization", meta=(BlueprintThreadSafe))
1260 ENGINE_API bool GetTimeToClosestMarker(FName SyncGroup, FName MarkerName, float& OutMarkerTime) const;
1261
1262 UFUNCTION(BlueprintCallable, Category = "Animation|Synchronization", meta=(BlueprintThreadSafe))
1263 ENGINE_API bool HasMarkerBeenHitThisFrame(FName SyncGroup, FName MarkerName) const;
1264
1265 UFUNCTION(BlueprintCallable, Category = "Animation|Synchronization", meta=(BlueprintThreadSafe))
1266 ENGINE_API bool IsSyncGroupBetweenMarkers(FName InSyncGroupName, FName PreviousMarker, FName NextMarker, bool bRespectMarkerOrder = true) const;
1267
1268 UFUNCTION(BlueprintCallable, Category = "Animation|Synchronization", meta=(BlueprintThreadSafe))
1269 ENGINE_API FMarkerSyncAnimPosition GetSyncGroupPosition(FName InSyncGroupName) const;
1270
1272 UFUNCTION(BlueprintCallable, Category="Animation", meta = (BlueprintThreadSafe, Keywords = "Event,Request,Transition"))
1273 ENGINE_API bool RequestTransitionEvent(const FName EventName, const double RequestTimeout, const ETransitionRequestQueueMode QueueMode, const ETransitionRequestOverwriteMode OverwriteMode);
1274
1276 UFUNCTION(BlueprintCallable, Category = "Animation", meta = (BlueprintThreadSafe, Keywords = "Event,Request,Transition"))
1277 ENGINE_API void ClearTransitionEvents(const FName EventName);
1278
1280 UFUNCTION(BlueprintCallable, Category = "Animation", meta = (BlueprintThreadSafe, Keywords = "Event,Request,Transition"))
1281 ENGINE_API void ClearAllTransitionEvents();
1282
1284 UFUNCTION(BlueprintPure, Category = "Transitions", meta = (BlueprintInternalUseOnly = "true", AnimGetter = "true", GetterContext = "Transition", BlueprintThreadSafe, Keywords = "Event,Request,Transition"))
1285 ENGINE_API bool QueryTransitionEvent(int32 MachineIndex, int32 TransitionIndex, FName EventName);
1286
1288 UFUNCTION(BlueprintPure, Category = "Transitions", meta = (BlueprintInternalUseOnly = "true", AnimGetter = "true", GetterContext = "Transition", BlueprintThreadSafe, Keywords = "Event,Request,Transition"))
1289 ENGINE_API bool QueryAndMarkTransitionEvent(int32 MachineIndex, int32 TransitionIndex, FName EventName);
1290
1291public:
1292 //~ Begin UObject Interface
1294 ENGINE_API virtual void BeginDestroy() override;
1295 ENGINE_API virtual void PostInitProperties() override;
1296 static ENGINE_API void AddReferencedObjects(UObject* InThis, FReferenceCollector& Collector);
1297 //~ End UObject Interface
1298
1299#if WITH_EDITORONLY_DATA // ANIMINST_PostCompileValidation
1302 UPROPERTY()
1304
1306 virtual bool PCV_ShouldWarnAboutNodesNotUsingFastPath() const { return false; }
1307 virtual bool PCV_ShouldNotifyAboutNodesNotUsingFastPath() const { return false; }
1308
1309 // Called on the newly created CDO during anim blueprint compilation to allow subclasses a chance to replace animations (experimental)
1310 virtual void ApplyAnimOverridesToCDO(FCompilerResultsLog& MessageLog) {}
1311#endif // WITH_EDITORONLY_DATA
1312
1314 virtual void OnUROSkipTickAnimation() {}
1315
1316 UE_DEPRECATED(4.22, "This function is deprecated, please use OnUROPreInterpolation_AnyThread")
1317 virtual void OnUROPreInterpolation() {}
1318
1324
1327 {
1329 ForceParallelUpdate,
1331 Default
1332 };
1333
1334 // Animation phase trigger
1335 // start with initialize
1336 // update happens in every tick. Can happen in parallel with others if conditions are right.
1337 // evaluate happens when condition is met - i.e. depending on your skeletalmeshcomponent update flag
1338 // post eval happens after evaluation is done
1339 // uninitialize happens when owner is unregistered
1340 // @param bInDeferRootNodeInitialization When set to true, defer init of the blend tree until the first Update() call
1341 ENGINE_API void InitializeAnimation(bool bInDeferRootNodeInitialization = false);
1342
1344 virtual void PreUpdateLinkedInstances(float DeltaSeconds) {}
1345
1347 ENGINE_API void UpdateAnimation(float DeltaSeconds, bool bNeedsValidRootMotion, EUpdateAnimationFlag UpdateFlag = EUpdateAnimationFlag::Default );
1348
1350 ENGINE_API void ParallelUpdateAnimation();
1351
1353 ENGINE_API void PostUpdateAnimation();
1354
1356 ENGINE_API void PreEvaluateAnimation();
1357
1359 ENGINE_API bool ParallelCanEvaluate(const USkeletalMesh* InSkeletalMesh) const;
1360
1362 ENGINE_API void ParallelEvaluateAnimation(bool bForceRefPose, const USkeletalMesh* InSkeletalMesh, FParallelEvaluationData& OutAnimationPoseData);
1363
1364 UE_DEPRECATED(4.26, "Please use ParallelEvaluateAnimation with different signature.")
1365 ENGINE_API void ParallelEvaluateAnimation(bool bForceRefPose, const USkeletalMesh* InSkeletalMesh, FBlendedHeapCurve& OutCurve, FCompactPose& OutPose);
1366
1367 ENGINE_API void PostEvaluateAnimation();
1368 ENGINE_API void UninitializeAnimation();
1369
1370 // the below functions are the native overrides for each phase
1371 // Native initialization override point
1372 ENGINE_API virtual void NativeInitializeAnimation();
1373 // Native update override point. It is usually a good idea to simply gather data in this step and
1374 // for the bulk of the work to be done in NativeThreadSafeUpdateAnimation.
1375 ENGINE_API virtual void NativeUpdateAnimation(float DeltaSeconds);
1376 // Native thread safe update override point. Executed on a worker thread just prior to graph update
1377 // for linked anim instances, only called when the hosting node(s) are relevant
1378 ENGINE_API virtual void NativeThreadSafeUpdateAnimation(float DeltaSeconds);
1379 // Native Post Evaluate override point
1380 ENGINE_API virtual void NativePostEvaluateAnimation();
1381 // Native Uninitialize override point
1382 ENGINE_API virtual void NativeUninitializeAnimation();
1383 // Native override point executed when all Linked Animation Layers are initialized
1384 ENGINE_API virtual void NativeLinkedAnimationLayersInitialized();
1385
1386 // Enable / Disable animation update. This is provided as an optimization to disable linked instances that aren't relevant. Disabling an instance whose graph is still evaluated will assert and causes issues.
1387 void EnableUpdateAnimation(bool bEnable) { bUpdateAnimationEnabled = bEnable; }
1388 bool IsUpdateAnimationEnabled() const { return bUpdateAnimationEnabled != 0; }
1389
1390 // Executed when begin play is called on the owning component
1391 ENGINE_API virtual void NativeBeginPlay();
1392
1393 // Sets up a native transition delegate between states with PrevStateName and NextStateName, in the state machine with name MachineName.
1394 // Note that a transition already has to exist for this to succeed
1395 ENGINE_API void AddNativeTransitionBinding(const FName& MachineName, const FName& PrevStateName, const FName& NextStateName, const FCanTakeTransition& NativeTransitionDelegate, const FName& TransitionName = NAME_None);
1396
1397 // Check for whether a native rule is bound to the specified transition
1398 ENGINE_API bool HasNativeTransitionBinding(const FName& MachineName, const FName& PrevStateName, const FName& NextStateName, FName& OutBindingName);
1399
1400 // Sets up a native state entry delegate from state with StateName, in the state machine with name MachineName.
1401 ENGINE_API void AddNativeStateEntryBinding(const FName& MachineName, const FName& StateName, const FOnGraphStateChanged& NativeEnteredDelegate);
1402
1403 // Check for whether a native entry delegate is bound to the specified state
1404 ENGINE_API bool HasNativeStateEntryBinding(const FName& MachineName, const FName& StateName, FName& OutBindingName);
1405
1406 // Sets up a native state exit delegate from state with StateName, in the state machine with name MachineName.
1407 ENGINE_API void AddNativeStateExitBinding(const FName& MachineName, const FName& StateName, const FOnGraphStateChanged& NativeExitedDelegate);
1408
1409 // Check for whether a native exit delegate is bound to the specified state
1410 ENGINE_API bool HasNativeStateExitBinding(const FName& MachineName, const FName& StateName, FName& OutBindingName);
1411
1412 // Debug output for this anim instance. Info for SyncGroups, Graph, Montages, etc.
1413 ENGINE_API void DisplayDebug(UCanvas* Canvas, const FDebugDisplayInfo& DebugDisplay, float& YL, float& YPos);
1414
1415 // Display debug info about AnimInstance. Can be overridden to add custom info from child classes.
1416 ENGINE_API virtual void DisplayDebugInstance(FDisplayDebugManager& DisplayDebugManager, float& Indent);
1417
1419 UFUNCTION(BlueprintCallable, Category = "Animation|Dynamics")
1420 ENGINE_API void ResetDynamics(ETeleportType InTeleportType);
1421
1422 UE_DEPRECATED(4.20, "Please use ResetDynamics with a ETeleportType argument")
1423 ENGINE_API void ResetDynamics();
1424
1430 UFUNCTION(BlueprintPure, Category = "Animation")
1431 ENGINE_API virtual int32 GetLODLevel() const;
1432
1433public:
1435 ENGINE_API const FGraphTraversalCounter& GetUpdateCounter() const;
1436
1438 ENGINE_API FBoneContainer& GetRequiredBones();
1439 ENGINE_API const FBoneContainer& GetRequiredBones() const;
1440 ENGINE_API const FBoneContainer& GetRequiredBonesOnAnyThread() const;
1441
1443 ETeleportType PendingDynamicResetTeleportType;
1444
1447 FAnimNotifyQueue NotifyQueue;
1448
1453 TArray<FAnimNotifyEvent> ActiveAnimNotifyState;
1454
1456 TArray<FAnimNotifyEventReference> ActiveAnimNotifyEventReference;
1457
1458private:
1460 ENGINE_API void ResetAnimationCurves();
1461
1462public:
1464 ENGINE_API void UpdateCurvesToEvaluationContext(const FAnimationEvaluationContext& InOutContext);
1465
1467 ENGINE_API void UpdateCurvesPostEvaluation();
1468
1470 ENGINE_API void SwapCurveWithEvaluationContext(FAnimationEvaluationContext& InOutContext);
1471
1473 ENGINE_API void UpdateCurves(const FBlendedHeapCurve& InCurves);
1474
1476 ENGINE_API void CopyCurveValues(const UAnimInstance& InSourceInstance);
1477
1479 ENGINE_API void RefreshCurves(USkeletalMeshComponent* Component);
1480
1482 ENGINE_API bool HasMorphTargetCurves() const;
1483
1485 ENGINE_API bool HasActiveCurves() const;
1486
1488 UFUNCTION(BlueprintPure, Category="Animation", meta=(BlueprintThreadSafe))
1489 ENGINE_API float GetDeltaSeconds() const;
1490
1494 ENGINE_API void AppendAnimationCurveList(EAnimCurveType Type, TMap<FName, float>& InOutCurveList) const;
1495
1496
1497 UE_DEPRECATED(4.19, "This function is deprecated. Use AppendAnimationCurveList instead.")
1498 ENGINE_API void GetAnimationCurveList(EAnimCurveType Type, TMap<FName, float>& InOutCurveList) const;
1502 ENGINE_API const TMap<FName, float>& GetAnimationCurveList(EAnimCurveType Type) const;
1503
1504#if WITH_EDITORONLY_DATA
1505 // Maximum playback position ever reached (only used when debugging in Persona)
1506 double LifeTimer;
1507
1508 // Current scrubbing playback position (only used when debugging in Persona)
1510#endif
1511
1512public:
1514
1515private:
1516
1517 // Used to prevent indefinitely flushing montages on a single frame.
1518 uint32 LastMontageFlushFrame = 0u;
1519
1521 TMap<FName, FSimpleMulticastDelegate> ExternalNotifyHandlers;
1522
1523 ENGINE_API bool CheckOnInstanceAndMainInstance(TFunctionRef<bool (FAnimInstanceProxy* )> ProxyLambdaFunc);
1524
1525public:
1526
1527 // Gets the last frame any completed montages where flushed. Only important if a.Montage.FlushCompletedMontagesOnPlay is enabled.
1528 uint32 GetLastMontageFlushFrame() const;
1529
1534 ENGINE_API void RecalcRequiredBones();
1535
1539 ENGINE_API void RecalcRequiredCurves(const UE::Anim::FCurveFilterSettings& CurveFilterSettings);
1540
1541 UE_DEPRECATED(5.3, "Please use RecalcRequiredCurves that takes a FCurveFilterSettings.")
1542 ENGINE_API void RecalcRequiredCurves(const FCurveEvaluationOption& CurveEvalOption);
1543
1545 inline USkeletalMeshComponent* GetSkelMeshComponent() const
1546 {
1547 return GetSkelMeshComponentChecked();
1548 }
1549
1550 ENGINE_API virtual UWorld* GetWorld() const override;
1551
1553 ENGINE_API void TriggerAnimNotifies(float DeltaSeconds);
1554
1556 ENGINE_API void TriggerSingleAnimNotify(const FAnimNotifyEvent* AnimNotifyEvent);
1557
1559 ENGINE_API void TriggerSingleAnimNotify(FAnimNotifyEventReference& EventReference);
1560
1562 ENGINE_API void EndNotifyStates();
1563
1564 UE_DEPRECATED(5.3, "Please use AddCurveValue that takes a CurveName")
1565 void AddCurveValue(const SmartName::UID_Type Uid, float Value) {}
1566
1567 UE_DEPRECATED(5.3, "Please use AddCurveValue that takes a CurveName")
1568 void AddCurveValue(const FSmartNameMapping& Mapping, const FName& CurveName, float Value) {}
1569
1571 ENGINE_API void RecordMachineWeight(const int32 InMachineClassIndex, const float InMachineWeight);
1572
1576 ENGINE_API void AddCurveValue(const FName& CurveName, float Value, bool bMorphtarget = false, bool bMaterial = false);
1577
1579 ENGINE_API void RecordStateWeight(const int32 InMachineClassIndex, const int32 InStateIndex, const float InStateWeight, const float InElapsedTime);
1580
1581protected:
1582#if WITH_EDITORONLY_DATA
1583 // Returns true if a snapshot is being played back and the remainder of Update should be skipped.
1585#endif
1586
1588 ENGINE_API virtual bool HandleNotify(const FAnimNotifyEvent& AnimNotifyEvent);
1589
1591 ENGINE_API USkeletalMeshComponent* GetSkelMeshComponentChecked() const;
1592
1594 ENGINE_API USkeletalMeshComponent* GetSkelMeshComponentUnchecked() const;
1595
1596 // Root Motion
1597public:
1599 ENGINE_API FAnimMontageInstance * GetRootMotionMontageInstance() const;
1600
1602 ENGINE_API FRootMotionMovementParams ConsumeExtractedRootMotion(float Alpha);
1603
1608 ENGINE_API void QueueRootMotionBlend(const FTransform& RootTransform, const FName& SlotName, float Weight);
1609
1610private:
1612 struct FAnimMontageInstance* RootMotionMontageInstance;
1613
1615 struct FQueuedRootMotionBlend
1616 {
1617 FQueuedRootMotionBlend(const FTransform& InTransform, const FName& InSlotName, float InWeight)
1619 , SlotName(InSlotName)
1620 , Weight(InWeight)
1621 {}
1622
1624 FName SlotName;
1625 float Weight;
1626 };
1627
1632 TArray<FQueuedRootMotionBlend> RootMotionBlendQueue;
1633
1634 // Root motion read from proxy (where it is calculated) and stored here to avoid potential stalls by calling GetProxyOnGameThread
1635 FRootMotionMovementParams ExtractedRootMotion;
1636
1637private:
1638 // update montage
1639 ENGINE_API void UpdateMontage(float DeltaSeconds);
1640 ENGINE_API void UpdateMontageSyncGroup();
1641
1642protected:
1643 // Updates the montage data used for evaluation based on the current playing montages
1644 ENGINE_API void UpdateMontageEvaluationData();
1645
1647 ENGINE_API virtual void PreUpdateAnimation(float DeltaSeconds);
1648
1650 ENGINE_API void UpdateCurvesToComponents(USkeletalMeshComponent* Component);
1651
1653 ENGINE_API virtual FAnimInstanceProxy* CreateAnimInstanceProxy();
1654
1656 ENGINE_API virtual void DestroyAnimInstanceProxy(FAnimInstanceProxy* InProxy);
1657
1661 template <typename T /*= FAnimInstanceProxy*/> // @TODO: Cant default parameters to this function on Xbox One until we move off the VS2012 compiler
1663 {
1664 if (InAnimInstance)
1665 {
1668 if (IsSkeletalMeshComponent(OuterObj))
1669 {
1670 HandleExistingParallelEvaluationTask(InAnimInstance->GetSkelMeshComponent());
1671 }
1672 if (InAnimInstance->AnimInstanceProxy == nullptr)
1673 {
1674 InAnimInstance->AnimInstanceProxy = InAnimInstance->CreateAnimInstanceProxy();
1675 }
1676 return static_cast<T*>(InAnimInstance->AnimInstanceProxy);
1677 }
1678
1679 return nullptr;
1680 }
1682 template <typename T /*= FAnimInstanceProxy*/> // @TODO: Cant default parameters to this function on Xbox One until we move off the VS2012 compiler
1684 {
1685 return *GetProxyOnGameThreadStatic<T>(this);
1686 }
1687
1689 template <typename T/* = FAnimInstanceProxy*/> // @TODO: Cant default parameters to this function on Xbox One until we move off the VS2012 compiler
1690 inline const T& GetProxyOnGameThread() const
1691 {
1693 if(IsSkeletalMeshComponent(GetOuter()))
1694 {
1695 HandleExistingParallelEvaluationTask(GetSkelMeshComponent());
1696 }
1697 if(AnimInstanceProxy == nullptr)
1698 {
1699 AnimInstanceProxy = const_cast<UAnimInstance*>(this)->CreateAnimInstanceProxy();
1700 }
1701 return *static_cast<const T*>(AnimInstanceProxy);
1702 }
1703
1705 template <typename T/* = FAnimInstanceProxy*/> // @TODO: Cant default parameters to this function on Xbox One until we move off the VS2012 compiler
1707 {
1708 if(IsSkeletalMeshComponent(GetOuter()))
1709 {
1710 if(IsInGameThread())
1711 {
1712 HandleExistingParallelEvaluationTask(GetSkelMeshComponent());
1713 }
1714 }
1715 if(AnimInstanceProxy == nullptr)
1716 {
1717 AnimInstanceProxy = CreateAnimInstanceProxy();
1718 }
1719 return *static_cast<T*>(AnimInstanceProxy);
1720 }
1721
1723 template <typename T/* = FAnimInstanceProxy*/> // @TODO: Cant default parameters to this function on Xbox One until we move off the VS2012 compiler
1724 inline const T& GetProxyOnAnyThread() const
1725 {
1726 if(IsSkeletalMeshComponent(GetOuter()))
1727 {
1728 if(IsInGameThread())
1729 {
1730 HandleExistingParallelEvaluationTask(GetSkelMeshComponent());
1731 }
1732 }
1733 if(AnimInstanceProxy == nullptr)
1734 {
1735 AnimInstanceProxy = const_cast<UAnimInstance*>(this)->CreateAnimInstanceProxy();
1736 }
1737 return *static_cast<const T*>(AnimInstanceProxy);
1738 }
1739
1742 friend struct FAnimInstanceProxy;
1743
1744public:
1746 ENGINE_API virtual bool ShouldTriggerAnimNotifyState(const UAnimNotifyState* AnimNotifyState) const;
1747
1748protected:
1749 static ENGINE_API bool IsSkeletalMeshComponent(const UObject* Object);
1750 static ENGINE_API void HandleExistingParallelEvaluationTask(USkeletalMeshComponent* Component);
1751
1754
1755public:
1758
1761
1762public:
1764 ENGINE_API void DispatchQueuedAnimEvents();
1765
1767 ENGINE_API void ClearQueuedAnimEvents(bool bShouldUpdateActiveAnimNotifiesSinceLastTick);
1768
1769#if WITH_EDITOR
1770 // Helper function to handle reinstancing in editor
1772
1774 ENGINE_API bool IsBeingDebugged() const;
1775#endif
1776};
OODEFFUNC typedef const int const char * function
Definition oodle2.h:710
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define NULL
Definition oodle2base.h:134
EAnimCurveType
Definition AnimCurveTypes.h:29
UAnimMontage bool UAnimMontage UAnimMontage Montage
Definition AnimInstance.h:84
EMontagePlayReturnType
Definition AnimInstance.h:68
NotifyName
Definition AnimInstance.h:121
TArray< FTransform > FTransformArrayA2
Definition AnimInstance.h:49
const FBranchingPointNotifyPayload BranchingPointPayload
Definition AnimInstance.h:121
ETransitionRequestQueueMode
Definition AnimStateMachineTypes.h:18
ETransitionRequestOverwriteMode
Definition AnimStateMachineTypes.h:25
#define check(expr)
Definition AssertionMacros.h:314
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#define WITH_EDITORONLY_DATA
Definition CoreMiscDefines.h:24
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(DelegateName, Param1Type, Param1Name, Param2Type, Param2Name)
Definition DelegateCombinations.h:62
#define DECLARE_DELEGATE_RetVal(ReturnValueType, DelegateName)
Definition DelegateCombinations.h:41
#define DECLARE_DELEGATE_TwoParams(DelegateName, Param1Type, Param2Type)
Definition DelegateCombinations.h:57
#define DECLARE_DYNAMIC_MULTICAST_DELEGATE(DelegateName)
Definition DelegateCombinations.h:38
#define DECLARE_DELEGATE_OneParam(DelegateName, Param1Type)
Definition DelegateCombinations.h:48
#define DECLARE_DELEGATE_ThreeParams(DelegateName, Param1Type, Param2Type, Param3Type)
Definition DelegateCombinations.h:66
#define DECLARE_DYNAMIC_MULTICAST_DELEGATE_ThreeParams(DelegateName, Param1Type, Param1Name, Param2Type, Param2Name, Param3Type, Param3Name)
Definition DelegateCombinations.h:71
#define DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(DelegateName, Param1Type, Param1Name)
Definition DelegateCombinations.h:53
ETeleportType
Definition EngineTypes.h:2401
return true
Definition ExternalRpcRegistry.cpp:601
const bool
Definition NetworkReplayStreaming.h:178
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define UPARAM(...)
Definition ObjectMacros.h:748
#define UFUNCTION(...)
Definition ObjectMacros.h:745
#define GENERATED_UCLASS_BODY(...)
Definition ObjectMacros.h:768
#define UCLASS(...)
Definition ObjectMacros.h:776
#define UENUM(...)
Definition ObjectMacros.h:749
#define USTRUCT(...)
Definition ObjectMacros.h:746
#define GENERATED_USTRUCT_BODY(...)
Definition ObjectMacros.h:767
FTransform GetComponentSpaceTransform(TArray< uint8 > &ComponentSpaceFlags, TArray< FTransform > &ComponentSpaceTransforms, FReferenceSkeleton &RefSkeleton, int32 TargetIndex)
Definition ReferenceSkeleton.cpp:87
CORE_API bool IsInGameThread()
Definition ThreadingBase.cpp:185
if(Failed) console_printf("Failed.\n")
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Actor.h:257
Definition AnimationRuntime.h:105
Definition Archive.h:1208
Definition DisplayDebugHelpers.h:9
Definition NameTypes.h:617
Definition UnrealType.h:3087
Definition UObjectGlobals.h:2492
Definition AnimClassInterface.h:193
Definition Array.h:670
Definition EnumAsByte.h:22
Definition AssetRegistryState.h:50
Definition UnrealString.h.inl:34
Definition SubclassOf.h:30
Definition AnimInstance.h:353
static T * GetProxyOnGameThreadStatic(UAnimInstance *InAnimInstance)
Definition AnimInstance.h:1662
const T & GetProxyOnGameThread() const
Definition AnimInstance.h:1690
bool ShouldExtractRootMotion() const
Definition AnimInstance.h:433
FPlayMontageAnimNotifyDelegate OnPlayMontageNotifyEnd
Definition AnimInstance.h:1760
FAnimInstanceProxy * AnimInstanceProxy
Definition AnimInstance.h:1753
virtual void OnUROPreInterpolation_AnyThread(FAnimationEvaluationContext &InOutContext)
Definition AnimInstance.h:1323
T & GetProxyOnAnyThread()
Definition AnimInstance.h:1706
const T & GetProxyOnAnyThread() const
Definition AnimInstance.h:1724
FGraphTraversalCounter DebugDataCounter
Definition AnimInstance.h:1513
SubsystemType & GetSubsystem()
Definition AnimInstance.h:917
FPlayMontageAnimNotifyDelegate OnPlayMontageNotifyBegin
Definition AnimInstance.h:1757
T & GetProxyOnGameThread()
Definition AnimInstance.h:1683
virtual void PreUpdateLinkedInstances(float DeltaSeconds)
Definition AnimInstance.h:1344
EUpdateAnimationFlag
Definition AnimInstance.h:1327
TMap< class UAnimMontage *, struct FAnimMontageInstance * > ActiveMontagesMap
Definition AnimInstance.h:930
virtual void OnUROSkipTickAnimation()
Definition AnimInstance.h:1314
bool IsUpdateAnimationEnabled() const
Definition AnimInstance.h:1388
Definition AnimNotifyState.h:25
Definition AnimNotify.h:52
Definition AnimSequenceBase.h:37
Definition BlendProfile.h:132
Definition Canvas.h:159
Definition Class.h:3793
Definition KismetAnimationLibrary.h:19
FORCEINLINE UObject * GetOuter() const
Definition UObjectBase.h:223
Definition Object.h:95
Definition Class.h:1720
Definition SkeletalMesh.h:440
Definition Skeleton.h:295
Definition World.h:918
Definition AnimEnums.h:28
@ IgnoreRootMotion
Definition AnimEnums.h:35
@ RootMotionFromEverything
Definition AnimEnums.h:38
Definition AnimationAsset.h:38
Definition AnimationAsset.h:42
Definition AdvancedWidgetsModule.cpp:13
@ false
Definition radaudio_common.h:23
U16 Index
Definition radfft.cpp:71
Definition AnimInstance.h:138
FA2CSPose()
Definition AnimInstance.h:150
Definition AnimInstance.h:126
Definition AlphaBlend.h:41
Definition AlphaBlend.h:71
Definition AnimationAsset.h:642
Definition AnimInstanceProxy.h:144
friend class USkeletalMeshComponent
Definition AnimInstanceProxy.h:584
Definition AnimMontage.h:335
Definition AnimNode_AssetPlayerBase.h:15
Definition AnimNode_RelevantAssetPlayerBase.h:14
Definition AnimNode_LinkedAnimGraph.h:22
Definition AnimNode_LinkedAnimLayer.h:22
Definition AnimNode_LinkedInputPose.h:14
Definition AnimNode_StateMachine.h:123
Definition AnimNotifyQueue.h:22
Definition AnimTypes.h:277
Definition AnimNotifyQueue.h:161
Definition AnimSubsystemInstance.h:10
Definition AnimationAsset.h:411
Definition SkeletalMeshComponent.h:87
Definition AnimStateMachineTypes.h:364
Definition AnimCurveTypes.h:1049
Definition BoneContainer.h:192
ENGINE_API int32 GetParentBoneIndex(const int32 BoneIndex) const
Definition BoneContainer.cpp:512
Definition AnimNotify.h:24
Definition BonePose.h:347
Definition BoneContainer.h:57
Definition Canvas.h:54
Definition AnimTypes.h:144
Definition AnimInertializationRequest.h:15
Definition AnimationAsset.h:361
Definition AnimationAsset.h:67
Definition AnimInstance.h:330
float NodeGlobalWeight
Definition AnimInstance.h:335
bool bIsRelevantThisTick
Definition AnimInstance.h:338
FMontageActiveSlotTracker()
Definition AnimInstance.h:343
bool bWasRelevantOnPreviousTick
Definition AnimInstance.h:341
float MontageLocalWeight
Definition AnimInstance.h:332
Definition AnimMontage.h:313
Definition AnimInstance.h:302
FOnGraphStateChanged NativeStateDelegate
Definition AnimInstance.h:310
FName StateName
Definition AnimInstance.h:307
FNativeStateBinding(const FName &InMachineName, const FName &InStateName, const FOnGraphStateChanged &InNativeStateDelegate, const FName &InBindingName=NAME_None)
Definition AnimInstance.h:317
FName MachineName
Definition AnimInstance.h:304
Definition AnimInstance.h:270
FName NextStateName
Definition AnimInstance.h:278
FCanTakeTransition NativeTransitionDelegate
Definition AnimInstance.h:281
FName MachineName
Definition AnimInstance.h:272
FName PreviousStateName
Definition AnimInstance.h:275
FNativeTransitionBinding(const FName &InMachineName, const FName &InPreviousStateName, const FName &InNextStateName, const FCanTakeTransition &InNativeTransitionDelegate, const FName &InTransitionName=NAME_None)
Definition AnimInstance.h:288
Definition AnimNodeBase.h:642
Definition AnimInstance.h:60
FCompactPose & OutPose
Definition AnimInstance.h:62
FBlendedHeapCurve & OutCurve
Definition AnimInstance.h:61
UE::Anim::FHeapAttributeContainer & OutAttributes
Definition AnimInstance.h:63
Definition PoseSnapshot.h:11
Definition AnimInstance.h:212
TObjectPtr< class UAnimMontage > Montage
Definition AnimInstance.h:213
FQueuedMontageBlendedInEvent(class UAnimMontage *InMontage, FOnMontageBlendedInEnded InDelegate)
Definition AnimInstance.h:216
FOnMontageBlendedInEnded Delegate
Definition AnimInstance.h:214
Definition AnimInstance.h:195
FOnMontageBlendingOutStarted Delegate
Definition AnimInstance.h:198
TObjectPtr< class UAnimMontage > Montage
Definition AnimInstance.h:196
bool bInterrupted
Definition AnimInstance.h:197
FQueuedMontageBlendingOutEvent(class UAnimMontage *InMontage, bool InbInterrupted, FOnMontageBlendingOutStarted InDelegate)
Definition AnimInstance.h:204
FQueuedMontageBlendingOutEvent()
Definition AnimInstance.h:200
Definition AnimInstance.h:224
FQueuedMontageEndedEvent(class UAnimMontage *InMontage, int32 InInstanceID, bool InbInterrupted, FOnMontageEnded InDelegate)
Definition AnimInstance.h:235
bool bInterrupted
Definition AnimInstance.h:227
int32 MontageInstanceID
Definition AnimInstance.h:226
TObjectPtr< class UAnimMontage > Montage
Definition AnimInstance.h:225
FOnMontageEnded Delegate
Definition AnimInstance.h:228
FQueuedMontageEndedEvent()
Definition AnimInstance.h:230
Definition AnimInstance.h:245
FQueuedMontageSectionChangedEvent(class UAnimMontage *InMontage, int32 InInstanceID, FName SectionName, bool InbLooped, FOnMontageSectionChanged InDelegate)
Definition AnimInstance.h:259
TObjectPtr< class UAnimMontage > Montage
Definition AnimInstance.h:246
int32 MontageInstanceID
Definition AnimInstance.h:247
FOnMontageSectionChanged Delegate
Definition AnimInstance.h:250
bool bLooped
Definition AnimInstance.h:249
FName SectionName
Definition AnimInstance.h:248
FQueuedMontageSectionChangedEvent()
Definition AnimInstance.h:252
Definition AnimationAsset.h:711
Definition SmartName.h:20
Definition SoftObjectPath.h:539
Definition ObjectPtr.h:488
Definition Tuple.h:652
Definition BoneContainer.h:76
Definition AttributesRuntime.h:41