UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
Skeleton.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
8#pragma once
9
10#include "CoreMinimal.h"
12#include "UObject/Object.h"
13#include "HAL/CriticalSection.h"
14#include "Misc/Guid.h"
16#include "ReferenceSkeleton.h"
18#include "Animation/SmartName.h"
20#include "HAL/CriticalSection.h" // jira SOL-6812: Remove this (duplicate include).
24#include "UObject/ObjectKey.h"
25#include "Skeleton.generated.h"
26
28class UAnimSequence;
29class UBlendProfile;
30class URig;
32class USkinnedAsset;
34struct FAssetData;
35enum class EPackageReloadPhase : uint8;
36class USkeleton;
38class USkeleton;
40class FEditableSkeleton;
41
42// Delegate used to control global skeleton compatibility
44
46USTRUCT()
48{
50
51
56 UPROPERTY()
57 TArray<int32> SkeletonToMeshTable;
58
64 UPROPERTY()
65 TArray<int32> MeshToSkeletonTable;
66
67};
68
70UENUM()
87
89#define BONE_TRANS_RT_ORIENT_AND_SCALE_PRECISION (0.001f)
90
92USTRUCT()
94{
96
97#if WITH_EDITORONLY_DATA
99 UPROPERTY()
100 FName Name_DEPRECATED;
101
103 UPROPERTY()
105#endif
106
108 UPROPERTY(EditAnywhere, Category=BoneNode)
109 TEnumAsByte<EBoneTranslationRetargetingMode::Type> TranslationRetargetingMode;
110
112 :
113#if WITH_EDITORONLY_DATA
115#endif
116 TranslationRetargetingMode(EBoneTranslationRetargetingMode::Animation)
117 {
118 }
119
129};
130
132USTRUCT()
134{
136
137 UPROPERTY()
138 FName PoseName;
139
140 UPROPERTY()
141 TArray<FTransform> ReferencePose;
142
143#if WITH_EDITORONLY_DATA
144 UPROPERTY()
146#endif
147
156};
157
158USTRUCT()
160{
162
163 UPROPERTY()
164 TArray<FName> BonesToRemove;
165
166 bool Add(FName BoneName)
167 {
168 if ( BoneName!=NAME_None && !BonesToRemove.Contains(BoneName) )
169 {
170 BonesToRemove.Add(BoneName);
171 return true;
172 }
173
174 return false;
175 }
176
177 void Remove(FName BoneName)
178 {
179 BonesToRemove.Remove(BoneName);
180 }
181
182 bool Contains(FName BoneName)
183 {
184 return (BonesToRemove.Contains(BoneName));
185 }
186};
187
188USTRUCT()
190{
192
193 UPROPERTY()
194 FName NodeName;
195
196 UPROPERTY()
197 FName BoneName;
198
200 : NodeName(NAME_None)
201 , BoneName(NAME_None)
202 {
203 }
204
206 : NodeName(InNodeName)
207 , BoneName(NAME_None)
208 {
209 }
210
212 : NodeName(InNodeName)
213 , BoneName(InBoneName)
214 {
215 }
216};
217
218USTRUCT()
220{
222
223public:
226
227 UPROPERTY()
228 FName GroupName;
229
230 UPROPERTY()
231 TArray<FName> SlotNames;
232
234 : GroupName(DefaultGroupName)
235 {
236 }
237
239 : GroupName(InGroupName)
240 {
241 }
242};
243
245{
246 extern ENGINE_API const FString VirtualBonePrefix;
247
248 ENGINE_API FString AddVirtualBonePrefix(const FString& InName);
249 ENGINE_API FName RemoveVirtualBonePrefix(const FString& InName);
250 ENGINE_API bool CheckVirtualBonePrefix(const FString& InName);
251}
252
253USTRUCT()
255{
257
258public:
259 UPROPERTY()
260 FName SourceBoneName;
261
262 UPROPERTY()
263 FName TargetBoneName;
264
265 UPROPERTY()
266 FName VirtualBoneName;
267
269
271 : SourceBoneName(InSource)
272 , TargetBoneName(InTarget)
273 , VirtualBoneName(InVirtual)
274 {
275 }
276
278 : SourceBoneName(InSource)
279 , TargetBoneName(InTarget)
280 {
281 FString VBNameString = VirtualBoneNameHelpers::AddVirtualBonePrefix(SourceBoneName.ToString() + TEXT("_") + TargetBoneName.ToString());
282 VirtualBoneName = FName(*VBNameString);
283 }
284};
285
286
293UCLASS(hidecategories=Object, MinimalAPI, BlueprintType)
295{
296 friend class UAnimationBlueprintLibrary;
297 friend class FSkeletonDetails;
298
300
303 UPROPERTY(VisibleAnywhere, Category=Skeleton)
305
306#if WITH_EDITORONLY_DATA
308 UPROPERTY()
310
311 // Preview axis to consider as "forward" for the skeleton. Only used for preview purposes.
312 UPROPERTY(EditAnywhere, Category = Preview)
314#endif
315
318
321
324 UPROPERTY()
325 FGuid VirtualBoneGuid;
326
328 void ConvertToFReferenceSkeleton();
329
334 UPROPERTY()
335 TArray<FVirtualBone> VirtualBones;
336
344 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = CompatibleSkeletons)
345 TArray<TSoftObjectPtr<USkeleton>> CompatibleSkeletons;
346
353 UPROPERTY(EditAnywhere, Category = CompatibleSkeletons)
354 bool bUseRetargetModesFromCompatibleSkeleton = false;
355
356public:
357 //~ Begin UObject Interface.
358#if WITH_EDITOR
359 ENGINE_API virtual void PreEditUndo() override;
360 ENGINE_API virtual void PostEditUndo() override;
362#endif
363 ENGINE_API virtual void BeginDestroy() override;
364
367 {
368 return ReferenceSkeleton;
369 }
370
372 const TArray<FVirtualBone>& GetVirtualBones() const { return VirtualBones; }
373
378 UPROPERTY()
380
382 TMap< FName, FReferencePose > AnimRetargetSources;
383
384 UE_DEPRECATED(5.7, "AnimCurveUID is deprecated and no longer used.")
386
387 ENGINE_API FCurveMetaData* GetCurveMetaData(FName CurveName);
388 ENGINE_API const FCurveMetaData* GetCurveMetaData(FName CurveName) const;
389
394 ENGINE_API void ForEachCurveMetaData(TFunctionRef<void(FName, const FCurveMetaData&)> InFunction) const;
395
397 ENGINE_API int32 GetNumCurveMetaData() const;
398
405 ENGINE_API bool AddCurveMetaData(FName CurveName, bool bTransact = true);
406
411 ENGINE_API void GetCurveMetaDataNames(TArray<FName>& OutNames) const;
412
413#if WITH_EDITOR
421 ENGINE_API bool RenameCurveMetaData(FName OldName, FName NewName);
422
428 ENGINE_API bool RemoveCurveMetaData(FName CurveName);
429
436
442 ENGINE_API bool GetCurveMetaDataMaterial(FName CurveName) const;
443
449 ENGINE_API bool GetCurveMetaDataMorphTarget(FName CurveName) const;
450
456 ENGINE_API void SetCurveMetaDataMaterial(FName CurveName, bool bOverrideMaterial);
457
464#endif
465
466 // this is called when you know both flags - called by post serialize and import
467 ENGINE_API void AccumulateCurveMetaData(FName CurveName, bool bMaterialSet, bool bMorphtargetSet);
468
469 ENGINE_API bool AddNewVirtualBone(const FName SourceBoneName, const FName TargetBoneName);
470
471 ENGINE_API bool AddNewVirtualBone(const FName SourceBoneName, const FName TargetBoneName, FName& NewVirtualBoneName);
472
473 ENGINE_API bool AddNewNamedVirtualBone(const FName SourceBoneName, const FName TargetBoneName, const FName NewVirtualBoneName);
474
475 ENGINE_API void RemoveVirtualBones(const TArray<FName>& BonesToRemove);
476
477 ENGINE_API void RenameVirtualBone(const FName OriginalBoneName, const FName NewBoneName);
478
479 void HandleVirtualBoneChanges();
480
481 // return version of AnimCurveUidVersion
482 uint16 GetAnimCurveUidVersion() const;
483
484 const TArray<TSoftObjectPtr<USkeleton>>& GetCompatibleSkeletons() const { return CompatibleSkeletons; }
485
486 UE_DEPRECATED(5.2, "Please use UE::Anim::FSkeletonRemappingRegistry::GetRemapping.")
487 ENGINE_API const FSkeletonRemapping* GetSkeletonRemapping(const USkeleton* SourceSkeleton) const;
488
489 ENGINE_API bool GetUseRetargetModesFromCompatibleSkeleton() const;
490 ENGINE_API void SetUseRetargetModesFromCompatibleSkeleton(bool bUse);
491
492#if WITH_EDITOR
493 // Get existing (seen) sync marker names for this Skeleton
494 const TArray<FName>& GetExistingMarkerNames() const { return ExistingMarkerNames; }
495
496 // Register a new sync marker name
497 void RegisterMarkerName(FName MarkerName) { ExistingMarkerNames.AddUnique(MarkerName); ExistingMarkerNames.Sort(FNameLexicalLess()); }
498
499 // Remove a sync marker name
500 ENGINE_API bool RemoveMarkerName(FName MarkerName);
501
502 // Rename a sync marker name
504#endif
505
506protected:
507 UE_DEPRECATED(5.7, "SmartNames in Skeleton have been deprecated, use CurveMetaData instead.")
508 UPROPERTY()
509 FSmartNameContainer SmartNames_DEPRECATED;
510
511 //Cached marker sync marker names (stripped for non editor)
512 TArray<FName> ExistingMarkerNames;
513
514private:
515 // Refresh skeleton metadata (updates bone indices for linked bone references)
516 void RefreshSkeletonMetaData();
517
518 // Returns the UAnimCurveMetaData from this skeleton's AssetUserData, creating one if it doesn't exist
519 UAnimCurveMetaData* GetOrCreateCurveMetaDataObject();
520
521public:
523 // Blend Profiles
524
526 UPROPERTY(Instanced)
528
530 UFUNCTION(BlueprintPure, Category = Skeleton, meta = (BlueprintThreadSafe))
531 ENGINE_API UBlendProfile* GetBlendProfile(const FName& InProfileName);
532
534 ENGINE_API UBlendProfile* CreateNewBlendProfile(const FName& InProfileName);
535
537 ENGINE_API UBlendProfile* RenameBlendProfile(const FName& InProfileName, const FName& InNewProfileName);
538
540
541 /************************************************************************/
542 /* Slot Groups */
543 /************************************************************************/
544private:
545 // serialized slot groups and slot names.
546 UPROPERTY()
547 TArray<FAnimSlotGroup> SlotGroups;
548
550 TMap<FName, FName> SlotToGroupNameMap;
551
552 void BuildSlotToGroupMap(bool bInRemoveDuplicates = false);
553
554public:
555 ENGINE_API FAnimSlotGroup* FindAnimSlotGroup(const FName& InGroupName);
556 ENGINE_API const FAnimSlotGroup* FindAnimSlotGroup(const FName& InGroupName) const;
557 ENGINE_API const TArray<FAnimSlotGroup>& GetSlotGroups() const;
558 ENGINE_API bool ContainsSlotName(const FName& InSlotName) const;
559
561 ENGINE_API bool RegisterSlotNode(const FName& InSlotName);
562
563 ENGINE_API void SetSlotGroupName(const FName& InSlotName, const FName& InGroupName);
565 ENGINE_API bool AddSlotGroupName(const FName& InNewGroupName);
566 ENGINE_API FName GetSlotGroupName(const FName& InSlotName) const;
567
568 // Edits/removes slot group data
569 // WARNING: Does not verify that the names aren't used anywhere - if it isn't checked
570 // by the caller the names will be recreated when referencing assets load again.
571 ENGINE_API void RemoveSlotName(const FName& InSlotName);
572 ENGINE_API void RemoveSlotGroup(const FName& InSlotName);
573 ENGINE_API void RenameSlotName(const FName& OldName, const FName& NewName);
574
575#if WITH_EDITORONLY_DATA
576private:
578 UPROPERTY(duplicatetransient, AssetRegistrySearchable)
580
582 UPROPERTY(duplicatetransient, AssetRegistrySearchable)
584
586 ENGINE_API virtual void GetAssetRegistryTags(FAssetRegistryTagsContext Context) const override;
587 UE_DEPRECATED(5.4, "Implement the version that takes FAssetRegistryTagsContext instead.")
588 ENGINE_API virtual void GetAssetRegistryTags(TArray<FAssetRegistryTag>& OutTags) const override;
589
590public:
591
593 UPROPERTY()
595
596 /* Attached assets component for this skeleton */
597 UPROPERTY()
599#endif // WITH_EDITORONLY_DATA
600
601private:
603 FOnRetargetSourceChangedMulticaster OnRetargetSourceChanged;
604
605public:
606 typedef FOnRetargetSourceChangedMulticaster::FDelegate FOnRetargetSourceChanged;
607
610 {
611 return OnRetargetSourceChanged.Add(Delegate);
612 }
613
614 const FGuid GetGuid() const
615 {
616 return Guid;
617 }
618
620 {
621 return VirtualBoneGuid;
622 }
623
626 {
627 OnRetargetSourceChanged.Remove(Handle);
628 }
629
631 {
632 OnRetargetSourceChanged.Broadcast();
633 }
634
636
637private:
638 //Use this Lock everytime you change or access SkinnedAssetLinkupCache member.
639 FTransactionallySafeRWLock SkinnedAssetLinkupCacheLock;
640
643
644public:
647
649 virtual USkeletalMesh* GetPreviewMesh(bool bFindIfNotSet = false) override;
650 virtual USkeletalMesh* GetPreviewMesh() const override;
651 virtual void SetPreviewMesh(USkeletalMesh* PreviewMesh, bool bMarkAsDirty=true);
652
653#if WITH_EDITORONLY_DATA
654
655 UE_DEPRECATED(5.4, "Please do not use this function - notifies are stored collectively in the asset registry now rather than centrally on the skeleton")
657
658 /*
659 * Collect animation notifies that are referenced in all animations that use this skeleton (uses the asset registry).
660 * @param OutNotifies All the notifies that were found
661 */
663
664 // Adds a new anim notify to the cached AnimationNotifies array.
666
667 // Removes an anim notify from the cached AnimationNotifies array.
669
670 // Renames an anim notify
672
674
677
680
683
686
692 ENGINE_API int32 ValidatePreviewAttachedObjects();
693
700 ENGINE_API int32 GetChildBones(int32 ParentBoneIndex, TArray<int32> & Children) const;
701
708
712 ENGINE_API bool IsCompatibleForEditor(const FAssetData& AssetData, const TCHAR* InTag = TEXT("Skeleton")) const;
713
717 ENGINE_API bool IsCompatibleForEditor(const FString& SkeletonAssetString) const;
718
721
724
726 ENGINE_API void GetCompatibleAssets(UClass* AssetClass, const TCHAR* InTag, TArray<FAssetData>& OutAssets) const;
727#endif
728
730
731#if WITH_EDITORONLY_DATA
737#endif
738
739public:
740 UFUNCTION(BlueprintCallable, Category=Skeleton)
741 ENGINE_API void AddCompatibleSkeleton(const USkeleton* SourceSkeleton);
742
743 UFUNCTION(BlueprintCallable, Category = Skeleton, DisplayName = "AddCompatibleSkeleton")
744 ENGINE_API void AddCompatibleSkeletonSoft(const TSoftObjectPtr<USkeleton>& SourceSkeleton);
745
746 ENGINE_API void RemoveCompatibleSkeleton(const USkeleton* SourceSkeleton);
747 ENGINE_API void RemoveCompatibleSkeleton(const TSoftObjectPtr<USkeleton>& SourceSkeleton);
748
771 ENGINE_API bool IsCompatibleMesh(const USkinnedAsset* InSkinnedAsset, bool bDoParentChainCheck=true) const;
772
774 ENGINE_API void ClearCacheData();
775
780 ENGINE_API const FSkeletonToMeshLinkup& FindOrAddMeshLinkupData(const USkinnedAsset* InSkinnedAsset);
781
788 ENGINE_API const FSkeletonToMeshLinkup& AddMeshLinkupData(const USkinnedAsset* InSkinnedAsset);
789
802 ENGINE_API bool MergeBonesToBoneTree(const USkinnedAsset* InSkinnedAsset, const TArray<int32> &RequiredRefBones, bool bShowProgress = true);
803
814 ENGINE_API bool MergeAllBonesToBoneTree(const USkinnedAsset* InSkinnedAsset, bool bShowProgress = true);
815
825 ENGINE_API bool RecreateBoneTree(USkinnedAsset* InSkinnedAsset);
826
827
833 ENGINE_API const TArray<FTransform>& GetRefLocalPoses( FName RetargetSource = NAME_None ) const;
834
835#if WITH_EDITORONLY_DATA
842
848#endif
849
858 UE_DEPRECATED(5.2, "GetRawAnimationTrackIndex has been deprecated, use tracks are referenced by name instead")
859 ENGINE_API int32 GetRawAnimationTrackIndex(const int32 InSkeletonBoneIndex, const UAnimSequence* InAnimSeq);
860
867 ENGINE_API int32 GetSkeletonBoneIndexFromMeshBoneIndex(const USkinnedAsset* InSkinnedAsset, const int32 MeshBoneIndex);
868
875 ENGINE_API int32 GetMeshBoneIndexFromSkeletonBoneIndex(const USkinnedAsset* InSkinnedAsset, const int32 SkeletonBoneIndex);
876
877 EBoneTranslationRetargetingMode::Type GetBoneTranslationRetargetingMode(const int32 BoneTreeIdx, bool bDisableRetargeting = false) const
878 {
879 if (!bDisableRetargeting && BoneTree.IsValidIndex(BoneTreeIdx))
880 {
881 return BoneTree[BoneTreeIdx].TranslationRetargetingMode;
882 }
884 }
885
891 ENGINE_API void RebuildLinkup(const USkinnedAsset* InSkinnedAsset);
892
898 void RemoveLinkup(const USkinnedAsset* InSkinnedAsset);
899
900 ENGINE_API void SetBoneTranslationRetargetingMode(const int32 BoneIndex, EBoneTranslationRetargetingMode::Type NewRetargetingMode, bool bChildrenToo=false);
901
902 virtual bool IsPostLoadThreadSafe() const override;
903 ENGINE_API virtual void PostLoad() override;
904 ENGINE_API virtual void PostDuplicate(bool bDuplicateForPIE) override;
905 ENGINE_API virtual void PostInitProperties() override;
906 ENGINE_API virtual void Serialize(FArchive& Ar) override;
907
917 ENGINE_API void UpdateReferencePoseFromMesh(const USkinnedAsset* InSkinnedAsset);
918
919#if WITH_EDITORONLY_DATA
925 ENGINE_API void UpdateRetargetSource( const FName InName );
926#endif
927protected:
939 bool DoesParentChainMatch(int32 StartBoneTreeIndex, const USkinnedAsset* InSkinnedAsset) const;
940
948
949#if WITH_EDITORONLY_DATA
954#endif
963 bool CreateReferenceSkeletonFromMesh(const USkinnedAsset* InSkinnedAsset, const TArray<int32> & RequiredRefBones);
964
965#if WITH_EDITOR
968
971
972public:
973 typedef FOnSkeletonHierarchyChangedMulticaster::FDelegate FOnSkeletonHierarchyChanged;
974
978
980 ENGINE_API void RemoveBonesFromSkeleton(const TArray<FName>& BonesToRemove, bool bRemoveChildBones);
981
982 // Asset registry information for animation notifies
983 ENGINE_API static const FName AnimNotifyTag;
984 ENGINE_API static const FString AnimNotifyTagDelimiter;
985
986 // Asset registry information for animation sync markers
988 ENGINE_API static const FString AnimSyncMarkerTagDelimiter;
989
990 // Asset registry information for animation curves
991 ENGINE_API static const FName CurveNameTag;
992 ENGINE_API static const FString CurveTagDelimiter;
993
994 // Asset registry information for animation attributes
995 ENGINE_API static const FName AttributeTag;
996
997 // Asset registry information for compatible skeletons
999 ENGINE_API static const FString CompatibleSkeletonsTagDelimiter;
1000
1001#endif
1002
1003public:
1004 ENGINE_API USkeletalMeshSocket* FindSocketAndIndex(FName InSocketName, int32& OutIndex) const;
1005 ENGINE_API USkeletalMeshSocket* FindSocket(FName InSocketName) const;
1006
1007private:
1009 void RegenerateGuid();
1010 void RegenerateVirtualBoneGuid();
1011
1012 // Handle skeletons being reloaded via the content browser
1014
1015public:
1016 //~ Begin IInterface_AssetUserData Interface
1017 ENGINE_API virtual void AddAssetUserData(UAssetUserData* InUserData) override;
1018 ENGINE_API virtual void RemoveUserDataOfClass(TSubclassOf<UAssetUserData> InUserDataClass) override;
1019 ENGINE_API virtual UAssetUserData* GetAssetUserDataOfClass(TSubclassOf<UAssetUserData> InUserDataClass) override;
1020 ENGINE_API virtual const TArray<UAssetUserData*>* GetAssetUserDataArray() const override;
1021 //~ End IInterface_AssetUserData Interface
1022protected:
1024 UPROPERTY(EditAnywhere, AdvancedDisplay, Instanced, Category = Skeleton)
1026
1027#if WITH_EDITORONLY_DATA
1029 UPROPERTY(EditAnywhere, AdvancedDisplay, Instanced, Category = Skeleton)
1031#endif
1032
1033
1035 friend class FEditableSkeleton;
1036};
1037
virtual bool IsPostLoadThreadSafe() const override
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#define WITH_EDITORONLY_DATA
Definition CoreMiscDefines.h:24
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
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_DELEGATE_RetVal(ReturnValueType, DelegateName)
Definition DelegateCombinations.h:41
#define DECLARE_MULTICAST_DELEGATE(DelegateName)
Definition DelegateCombinations.h:23
return true
Definition ExternalRpcRegistry.cpp:601
void * FDelegateUserObject
Definition IDelegateInstance.h:107
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#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
EPackageReloadPhase
Definition PackageReload.h:48
void SerializeReferencePose(FArchive &Ar, FReferencePose &P, UObject *Outer)
Definition Skeleton.cpp:66
SmartName::UID_Type SkeletonAnimCurveUID
Definition Skeleton.h:37
if(Failed) console_printf("Failed.\n")
uint8_t uint8
Definition binka_ue_file_header.h:8
uint16_t uint16
Definition binka_ue_file_header.h:7
Definition Archive.h:1208
Definition AssetRegistryTagsContext.h:98
Definition IDelegateInstance.h:14
Definition NameTypes.h:617
Definition PackageReload.h:67
Definition Interface_AssetUserData.h:20
Definition Interface_PreviewMeshProvider.h:20
Definition Sockets.Build.cs:6
Definition ArrayView.h:139
Definition Array.h:670
UE_FORCEINLINE_HINT SizeType AddUnique(ElementType &&Item)
Definition Array.h:2993
Definition EnumAsByte.h:22
Definition AssetRegistryState.h:50
Definition UnrealString.h.inl:34
Definition SubclassOf.h:30
Definition UniquePtr.h:107
Definition AnimCurveMetadata.h:200
Definition AnimSequence.h:203
Definition AssetUserData.h:18
Definition BlendProfile.h:132
Definition Class.h:3793
Definition DataAsset.h:21
Definition CriticalSection.h:14
Definition Object.h:95
Definition SkeletalMeshSocket.h:14
Definition SkeletalMesh.h:440
Definition Skeleton.h:295
const TArray< FVirtualBone > & GetVirtualBones() const
Definition Skeleton.h:372
TSoftObjectPtr< USkeleton > CachedSoftObjectPtr
Definition Skeleton.h:646
FGuid Guid
Definition Skeleton.h:320
FGuid GetVirtualBoneGuid() const
Definition Skeleton.h:619
SmartName::UID_Type AnimCurveUID
Definition Skeleton.h:385
FDelegateHandle RegisterOnRetargetSourceChanged(const FOnRetargetSourceChanged &Delegate)
Definition Skeleton.h:609
void CallbackRetargetSourceChanged()
Definition Skeleton.h:630
const FGuid GetGuid() const
Definition Skeleton.h:614
FOnRetargetSourceChangedMulticaster::FDelegate FOnRetargetSourceChanged
Definition Skeleton.h:606
const TArray< TSoftObjectPtr< USkeleton > > & GetCompatibleSkeletons() const
Definition Skeleton.h:484
TArray< FBoneNode > FBoneTreeType
Definition Skeleton.h:635
FReferenceSkeleton ReferenceSkeleton
Definition Skeleton.h:317
DECLARE_EVENT(USkeleton, FSmartNamesChangedEvent)
const FReferenceSkeleton & GetReferenceSkeleton() const
Definition Skeleton.h:366
void UnregisterOnRetargetSourceChanged(FDelegateHandle Handle)
Definition Skeleton.h:625
Definition SkinnedAsset.h:47
Definition Axis.h:9
Type
Definition Axis.h:11
Definition Skeleton.h:72
Type
Definition Skeleton.h:74
@ Animation
Definition Skeleton.h:76
@ AnimationRelative
Definition Skeleton.h:82
@ OrientAndScale
Definition Skeleton.h:84
@ AnimationScaled
Definition Skeleton.h:80
Definition AnimationAsset.h:38
uint16 UID_Type
Definition AnimationAsset.h:39
Definition Skeleton.h:245
ENGINE_API FName RemoveVirtualBonePrefix(const FString &InName)
Definition Skeleton.cpp:114
ENGINE_API const FString VirtualBonePrefix
ENGINE_API FString AddVirtualBonePrefix(const FString &InName)
Definition Skeleton.cpp:109
ENGINE_API bool CheckVirtualBonePrefix(const FString &InName)
Definition Skeleton.cpp:119
@ false
Definition radaudio_common.h:23
Definition Skeleton.h:220
static ENGINE_API const FName DefaultGroupName
Definition Skeleton.h:224
FAnimSlotGroup(FName InGroupName)
Definition Skeleton.h:238
static ENGINE_API const FName DefaultSlotName
Definition Skeleton.h:225
Definition AssetData.h:162
Definition Skeleton.h:94
FBoneNode(FName InBoneName, int32 InParentIndex)
Definition Skeleton.h:120
Definition Skeleton.h:160
void Remove(FName BoneName)
Definition Skeleton.h:177
bool Contains(FName BoneName)
Definition Skeleton.h:182
Definition AnimCurveMetadata.h:39
Definition Guid.h:109
Definition NameTypes.h:1653
Definition Skeleton.h:190
FNameMapping(FName InNodeName)
Definition Skeleton.h:205
FNameMapping(FName InNodeName, FName InBoneName)
Definition Skeleton.h:211
Definition PreviewAssetAttachComponent.h:74
Definition Skeleton.h:134
Definition ReferenceSkeleton.h:65
Definition ReferenceSkeleton.h:100
Definition SkeletonRemapping.h:11
Definition Skeleton.h:48
Definition SmartName.h:168
Definition Skeleton.h:255
FVirtualBone(FName InSource, FName InTarget)
Definition Skeleton.h:277
FVirtualBone(FName InSource, FName InTarget, FName InVirtual)
Definition Skeleton.h:270
Definition ObjectPtr.h:488
Definition SoftObjectPtr.h:174
Definition Object.h:827