UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
MirrorDataTable.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "Engine/DataTable.h"
6#include "BoneContainer.h"
8#include "MirrorDataTable.generated.h"
9
11UENUM()
13{
14 enum Type : int
15 {
18 Curve,
20 Custom
21 };
22}
23
24
26UENUM()
39
40
42USTRUCT()
44{
46
47 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Mirroring)
49
50 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Mirroring)
51 FName MirroredName;
52
53 UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Mirroring)
54 TEnumAsByte<EMirrorRowType::Type> MirrorEntryType;
55
58 , MirroredName(NAME_None)
59 , MirrorEntryType(EMirrorRowType::Bone) {}
60
63 ENGINE_API bool operator==(FMirrorTableRow const& Other) const;
64 ENGINE_API bool operator!=(FMirrorTableRow const& Other) const;
65 ENGINE_API bool operator<(FMirrorTableRow const& Other) const;
66};
67
68
70USTRUCT()
72{
74
75 UPROPERTY(EditAnywhere, Category = Mirroring)
76 FName FindExpression;
77
78 UPROPERTY(EditAnywhere, Category = Mirroring)
79 FName ReplaceExpression;
80
81 UPROPERTY(EditAnywhere, Category = Mirroring)
82 TEnumAsByte<EMirrorFindReplaceMethod::Type> FindReplaceMethod;
83
85 : FindExpression(NAME_None)
86 , ReplaceExpression(NAME_None)
87 , FindReplaceMethod(EMirrorFindReplaceMethod::Prefix) {}
88
90 : FindExpression(InFindExpression)
91 , ReplaceExpression(InReplaceExpression)
92 , FindReplaceMethod(Method)
93 {
94 }
95};
96
100UCLASS(MinimalAPI, BlueprintType, hideCategories = (ImportOptions, ImportSource) /* AutoExpandCategories = "MirrorDataTable,ImportOptions"*/)
102{
104
105 friend class UMirrorDataTableFactory;
106
107public:
109
111
112#if WITH_EDITOR
113 ENGINE_API virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override;
114#endif // WITH_EDITOR
115
123 ENGINE_API static FName GetSettingsMirrorName(FName InName);
124
133 ENGINE_API static FName GetMirrorName(FName InName, const TArray<FMirrorFindReplaceExpression>& MirrorFindReplaceExpressions);
134
143
144
152
160 ENGINE_API void FillCompactPoseAndComponentRefRotations(
161 const FBoneContainer& BoneContainer,
164
165#if WITH_EDITOR
171#endif // WITH_EDITOR
172
179 ENGINE_API FName FindReplace(FName InName) const;
180
196 ENGINE_API static FName FindBestMirroredBone(
197 const FName InBoneName,
200 const float SearchThreshold = 2.0f);
201
202public:
203
204 UPROPERTY(EditAnywhere, Category = CreateTable)
205 TArray<FMirrorFindReplaceExpression> MirrorFindReplaceExpressions;
206
207 UPROPERTY(EditAnywhere, Category = Mirroring)
208 TEnumAsByte<EAxis::Type> MirrorAxis;
209
210 UPROPERTY(EditAnywhere, Category = Mirroring)
211 bool bMirrorRootMotion = true;
212
213 UPROPERTY(EditAnywhere, AssetRegistrySearchable, Category = Skeleton)
215
216 // Index of the mirror bone for a given bone index in the reference skeleton, or INDEX_NONE if the bone is not mirrored
218
219 UE_DEPRECATED(5.3, "UID-based mirroring has been remove, please use CurveToMirrorCurveMap.")
220 TArray<SmartName::UID_Type> CurveMirrorSourceUIDArray;
221
222 UE_DEPRECATED(5.3, "UID-based mirroring has been remove, please use CurveToMirrorCurveMap.")
223 TArray<SmartName::UID_Type> CurveMirrorTargetUIDArray;
224
225 // Map from animation curve to mirrored animation curve
226 TMap<FName, FName> CurveToMirrorCurveMap;
227
228 // Map from animation notify to mirrored animation notify
229 TMap<FName, FName> AnimNotifyToMirrorAnimNotifyMap;
230
231 // Map from sync marker to mirrored sync marker
232 TMap<FName, FName> SyncToMirrorSyncMap;
233
234protected:
235
236 // Fill BoneToMirrorBoneIndex, CurveMirrorSourceUIDArray, CurveMirrorTargetUIDArray and NotifyToMirrorNotifyIndex based on the Skeleton and Table Contents
237 ENGINE_API void FillMirrorArrays();
238};
239
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
return true
Definition ExternalRpcRegistry.cpp:601
bool operator<(const FTextFormatString &LHS, const FTextFormatString &RHS)
Definition ITextFormatArgumentModifier.h:147
UE_FORCEINLINE_HINT bool operator!=(const FIndexedPointer &Other) const
Definition LockFreeList.h:76
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define UCLASS(...)
Definition ObjectMacros.h:776
#define UENUM(...)
Definition ObjectMacros.h:749
#define USTRUCT(...)
Definition ObjectMacros.h:746
Definition NameTypes.h:617
Definition UObjectGlobals.h:1292
Definition Array.h:670
Definition EnumAsByte.h:22
Definition UnrealString.h.inl:34
Definition DataTable.h:81
Definition CustomBoneIndexArray.h:43
Definition MirrorDataTable.h:102
Definition Skeleton.h:295
Definition Axis.h:9
Type
Definition Axis.h:11
Definition MirrorDataTable.h:28
Type
Definition MirrorDataTable.h:30
@ Prefix
Definition MirrorDataTable.h:32
@ RegularExpression
Definition MirrorDataTable.h:36
@ Suffix
Definition MirrorDataTable.h:34
Definition MirrorDataTable.h:13
Type
Definition MirrorDataTable.h:15
@ AnimationNotify
Definition MirrorDataTable.h:17
@ SyncMarker
Definition MirrorDataTable.h:19
Definition AnimationAsset.h:38
Definition BoneContainer.h:192
Definition MirrorDataTable.h:72
FMirrorFindReplaceExpression(FName InFindExpression, FName InReplaceExpression, EMirrorFindReplaceMethod::Type Method)
Definition MirrorDataTable.h:89
Definition MirrorDataTable.h:44
Definition UnrealType.h:6865
Definition ReferenceSkeleton.h:100
Definition BoneIndices.h:79
Definition DataTable.h:37
Definition ObjectPtr.h:488