UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
SmartName.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 "Misc/Guid.h"
8#include "UObject/Class.h"
10#include "Animation/AnimTypes.h"
13#include "SmartName.generated.h"
14
15struct FSmartName;
16
17// DEPRECATED - smart names and their mappings are no longer used
18USTRUCT()
20{
22 friend class USkeleton;
23
25
27
28 UE_DEPRECATED(5.3, "FSmartNameMapping functions are no longer used.")
29 ENGINE_API FSmartName AddName(FName InName);
30
31 UE_DEPRECATED(5.3, "FSmartNameMapping functions are no longer used.")
32 ENGINE_API bool GetName(const SmartName::UID_Type& Uid, FName& OutName) const;
33
34 UE_DEPRECATED(5.3, "FSmartNameMapping functions are no longer used.")
35 ENGINE_API void FillUidArray(TArray<SmartName::UID_Type>& Array) const;
36
37 UE_DEPRECATED(5.3, "FSmartNameMapping functions are no longer used.")
38 ENGINE_API void FillNameArray(TArray<FName>& Array) const;
39
40 UE_DEPRECATED(5.3, "FSmartNameMapping functions are no longer used.")
41 ENGINE_API void FillUIDToNameArray(TArray<FName>& Array) const;
42
43 UE_DEPRECATED(5.3, "FSmartNameMapping functions are no longer used.")
44 ENGINE_API void FillCurveTypeArray(TArray<FAnimCurveType>& Array) const;
45
46 UE_DEPRECATED(5.3, "FSmartNameMapping functions are no longer used.")
47 ENGINE_API void FillUIDToCurveTypeArray(TArray<FAnimCurveType>& Array) const;
48
49#if WITH_EDITOR
50 UE_DEPRECATED(5.3, "FSmartNameMapping functions are no longer used.")
51 ENGINE_API bool Rename(const SmartName::UID_Type& Uid, FName NewName);
52
53 UE_DEPRECATED(5.3, "FSmartNameMapping functions are no longer used.")
54 ENGINE_API bool Remove(const SmartName::UID_Type& Uid);
55
56 UE_DEPRECATED(5.3, "FSmartNameMapping functions are no longer used.")
57 ENGINE_API bool Remove(const FName& Name);
58#endif
59
60 UE_DEPRECATED(5.3, "FSmartNameMapping functions are no longer used.")
61 ENGINE_API SmartName::UID_Type FindUID(const FName& Name) const;
62
63 UE_DEPRECATED(5.3, "FSmartNameMapping functions are no longer used.")
64 ENGINE_API bool Exists(const SmartName::UID_Type& Uid) const;
65
66 UE_DEPRECATED(5.3, "FSmartNameMapping functions are no longer used.")
67 ENGINE_API bool Exists(const FName& Name) const;
68
69 UE_DEPRECATED(5.3, "FSmartNameMapping functions are no longer used.")
70 ENGINE_API bool FindSmartName(FName Name, FSmartName& OutName) const;
71
72 UE_DEPRECATED(5.3, "FSmartNameMapping functions are no longer used.")
73 ENGINE_API bool FindSmartNameByUID(SmartName::UID_Type UID, FSmartName& OutName) const;
74
75 UE_DEPRECATED(5.3, "FSmartNameMapping functions are no longer used.")
77
78 UE_DEPRECATED(5.3, "FSmartNameMapping functions are no longer used.")
79 ENGINE_API const FCurveMetaData* GetCurveMetaData(FName CurveName) const;
80
81#if !WITH_EDITOR
82 UE_DEPRECATED(5.3, "FSmartNameMapping functions are no longer used.")
84#endif
85
86 UE_DEPRECATED(5.3, "FSmartNameMapping functions are no longer used.")
88
90
91 UE_DEPRECATED(5.3, "FSmartNameMapping functions are no longer used.")
92 ENGINE_API void InitializeCurveMetaData(class USkeleton* Skeleton);
93
94 UE_DEPRECATED(5.3, "FSmartNameMapping functions are no longer used.")
95 SmartName::UID_Type GetMaxUID() const { return (SmartName::UID_Type)(CurveNameList.Num() - 1); }
96
97 UE_DEPRECATED(5.3, "FSmartNameMapping functions are no longer used.")
98 ENGINE_API void Iterate(TFunction<void(const struct FSmartNameMappingIterator& Iterator)> Callback) const;
99
100private:
101 /*Internal no lock function to prevent re-entrant locking, see API function GetName for documentation.*/
102 ENGINE_API bool GetName_NoLock(const SmartName::UID_Type& Uid, FName& OutName) const;
103
104 /*Internal no lock function to prevent re-entrant locking, see API function Exists for documentation.*/
105 ENGINE_API bool Exists_NoLock(const SmartName::UID_Type& Uid) const;
106
107 /*Internal no lock function to prevent re-entrant locking, see API function Exists for documentation.*/
108 ENGINE_API bool Exists_NoLock(const FName& Name) const;
109
110 /*Internal no lock function to prevent re-entrant locking, see API function FindUID for documentation.*/
111 ENGINE_API SmartName::UID_Type FindUID_NoLock(const FName& Name) const;
112
113 /*Internal no lock function to prevent re-entrant locking, see API function GetCurveMetaData for documentation.*/
114 ENGINE_API const FCurveMetaData* GetCurveMetaData_NoLock(FName CurveName) const;
115
116 // List of curve names, indexed by UID
117 TArray<FName> CurveNameList;
118
119#if !WITH_EDITOR
120 // List of curve metadata, indexed by UID
121 TArray<FCurveMetaData> CurveMetaDataList;
122#endif
123
124 TMap<FName, FCurveMetaData> CurveMetaDataMap;
125};
126
127// Struct for providing access to SmartNameMapping data within FSmartNameMapping::Iterate callback functions
129{
130 public:
131 friend struct FSmartNameMapping;
132
133 UE_DEPRECATED(5.3, "FSmartNameMappingIterator functions are no longer used.")
135 {
136 return Mapping->GetName_NoLock(Index, OutCurveName);
137 }
138
139 UE_DEPRECATED(5.3, "FSmartNameMappingIterator functions are no longer used.")
141 {
142 FName Name;
143 if (Mapping->GetName_NoLock(Index, Name))
144 {
145 return Mapping->GetCurveMetaData_NoLock(Name);
146 }
147 else
148 {
149 return nullptr;
150 }
151 }
152
153 UE_DEPRECATED(5.3, "FSmartNameMappingIterator functions are no longer used.")
154 SmartName::UID_Type GetIndex() const { return Index; }
155
156 private:
157 // This class struct should only be crated by FSmartNameMapping::Iterate
159 Mapping(InMapping), Index(InIndex)
160 {}
161
162 const FSmartNameMapping* Mapping;
164};
165
166USTRUCT()
168{
170
171 UE_DEPRECATED(5.3, "FSmartNameContainer functions are no longer used.")
173
174 UE_DEPRECATED(5.3, "FSmartNameContainer functions are no longer used.")
175 ENGINE_API const FSmartNameMapping* GetContainer(FName ContainerName) const;
176
177 UE_DEPRECATED(5.3, "FSmartNameContainer functions are no longer used.")
178 ENGINE_API void Serialize(FArchive& Ar, bool bIsTemplate);
179
180 UE_DEPRECATED(5.3, "FSmartNameContainer functions are no longer used.")
181 ENGINE_API void PostLoad();
182
184
188 ENGINE_API FSmartNameMapping* GetContainerInternal(const FName& ContainerName);
189 ENGINE_API const FSmartNameMapping* GetContainerInternal(const FName& ContainerName) const;
190
191private:
192 TMap<FName, FSmartNameMapping> NameMappings; // List of smartname mappings
193
194#if WITH_EDITORONLY_DATA
195 // Editor copy of the data we loaded, used to preserve determinism during cooking
197#endif
198};
199
200template<>
202{
203 enum
204 {
205 WithCopy = false,
206 };
207};
208
209USTRUCT()
211{
213
214 // name
215 UPROPERTY(VisibleAnywhere, Category=FSmartName)
216 FName DisplayName;
217
218 // SmartName::UID_Type - for faster access
219 SmartName::UID_Type UID;
220
222 : DisplayName(NAME_None)
223 , UID(SmartName::MaxUID)
224 {}
225
226 UE_DEPRECATED(5.3, "FSmartName functions are no longer used.")
228 : DisplayName(InDisplayName)
229 , UID(InUID)
230 {}
231
232 bool operator==(FSmartName const& Other) const
233 {
234 return (DisplayName == Other.DisplayName && UID == Other.UID);
235 }
236
237 bool operator!=(const FSmartName& Other) const
238 {
239 return !(*this == Other);
240 }
241
242 ENGINE_API bool Serialize(FArchive& Ar);
243
245 {
246 P.Serialize(Ar);
247 return Ar;
248 }
249
250 UE_DEPRECATED(5.3, "FSmartName functions are no longer used.")
251 bool IsValid() const
252 {
253 return UID != SmartName::MaxUID;
254 }
255};
256
257template<>
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
const bool
Definition NetworkReplayStreaming.h:178
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define USTRUCT(...)
Definition ObjectMacros.h:746
EPropertyObjectReferenceType
Definition ObjectMacros.h:533
Definition Archive.h:1208
Definition NameTypes.h:617
Definition Array.h:670
Definition AndroidPlatformMisc.h:14
Definition UnrealString.h.inl:34
UE_FORCEINLINE_HINT FString GetName() const
Definition UObjectBaseUtility.h:439
virtual COREUOBJECT_API bool Rename(const TCHAR *NewName=nullptr, UObject *NewOuter=nullptr, ERenameFlags Flags=REN_None)
Definition Obj.cpp:245
Definition Skeleton.h:295
ENGINE_API FCurveMetaData * GetCurveMetaData(FName CurveName)
Definition Skeleton.cpp:1791
Definition AnimationAsset.h:38
constexpr UID_Type MaxUID
Definition AnimTypes.h:710
uint16 UID_Type
Definition AnimationAsset.h:39
U16 Index
Definition radfft.cpp:71
Definition AnimCurveMetadata.h:17
Definition AnimCurveMetadata.h:39
Definition SmartName.h:168
Definition SmartName.h:129
bool GetName(FName &OutCurveName) const
Definition SmartName.h:134
const FCurveMetaData * GetCurveMetaData() const
Definition SmartName.h:140
SmartName::UID_Type GetIndex() const
Definition SmartName.h:154
Definition SmartName.h:20
Definition SmartName.h:211
GENERATED_USTRUCT_BODY()
friend FArchive & operator<<(FArchive &Ar, FSmartName &P)
Definition SmartName.h:244
bool operator!=(const FSmartName &Other) const
Definition SmartName.h:237
bool operator==(FSmartName const &Other) const
Definition SmartName.h:232
Definition StructOpsTypeTraits.h:11
@ WithIdenticalViaEquality
Definition StructOpsTypeTraits.h:18
@ WithCopy
Definition StructOpsTypeTraits.h:17
@ WithSerializer
Definition StructOpsTypeTraits.h:23
static constexpr EPropertyObjectReferenceType WithSerializerObjectReferences
Definition StructOpsTypeTraits.h:41
Definition StructOpsTypeTraits.h:46