UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
SoftObjectPath.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "Algo/Transform.h"
6#include "Containers/Array.h"
7#include "Containers/Set.h"
13#include "CoreTypes.h"
15#include "HAL/ThreadSingleton.h"
16#include "Misc/CString.h"
19#include "Templates/Function.h"
20#include "Templates/TypeHash.h"
22#include "UObject/Class.h"
23#include "UObject/NameTypes.h"
24#include "UObject/Object.h"
26#include "UObject/ObjectPtr.h"
30#include "UObject/UObjectHash.h"
31
32#include "SoftObjectPath.generated.h"
33
34class FArchive;
35class FCbWriter;
36class FOutputDevice;
37struct FPropertyTag;
39
40// Wrapper for UE_DEPRECATED that can be selectively enabled.
41#define UE_SOFTOBJECTPATH_FSTRING_DEPRECATED(Version, Message) /*UE_DEPRECATED(Version, Message)*/
42
45
47
54USTRUCT(BlueprintType, meta=(HasNativeMake="/Script/Engine.KismetSystemLibrary.MakeSoftObjectPath", HasNativeBreak="/Script/Engine.KismetSystemLibrary.BreakSoftObjectPath"))
56{
58public:
59
60 [[nodiscard]] FSoftObjectPath() = default;
63 ~FSoftObjectPath() = default;
64 FSoftObjectPath& operator=(const FSoftObjectPath& Path) = default;
66
68 [[nodiscard]] FSoftObjectPath(const FString& Path)
69 {
70 SetPath(FStringView(Path));
71 }
72 UE_SOFTOBJECTPATH_FSTRING_DEPRECATED(5.6, "FSoftObjectPath with a wide string subpath has been deprecated - please use a UTF8 subpath instead.")
81 UE_DEPRECATED(5.6, "FSoftObjectPath which takes a package name and asset name has been deprecated - please pass FTopLevelAssetPath instead.")
86
93 {
94 SetPath(Path);
95 }
97 {
98 SetPath(Path);
99 }
100 [[nodiscard]] explicit FSoftObjectPath(const WIDECHAR* Path)
101 {
102 SetPath(FWideStringView(Path));
103 }
104 [[nodiscard]] explicit FSoftObjectPath(const ANSICHAR* Path)
105 {
106 SetPath(FAnsiStringView(Path));
107 }
109 {
110 }
111
112 template <typename T>
114 {
115 // Avoid conversion to string if the object is resolved
116 if (InObject.IsResolved())
117 {
118 // reinterpret_cast here is used because T may be an incomplete type, but we only support using TObjectPtr for UObject-derived types
119 SetPath(reinterpret_cast<const UObject*>(InObject.Get()));
120 }
121 else
122 {
123 SetPath(InObject.GetPathName());
124 }
125 }
126
128 {
129 // Avoid conversion to string if the object is resolved
130 if (InObject.IsResolved())
131 {
132 SetPath(InObject.Get());
133 }
134 else
135 {
136 SetPath(InObject.GetPathName());
137 }
138 }
139
141 [[nodiscard]] FSoftObjectPath(const UObject* InObject)
142 {
143 // Avoid conversion to string
144 SetPath(InObject);
145 }
146
148 UE_DEPRECATED(5.6, "FSoftObjectPath::ConstructFromPackageAssetSubpath has been deprecated - please use ConstructFromAssetPathAndSubpath instead.")
149 [[nodiscard]] COREUOBJECT_API static FSoftObjectPath ConstructFromPackageAssetSubpath(FName InPackageName, FName InAssetName, const FString& InSubPathString);
150 UE_DEPRECATED(5.6, "FSoftObjectPath::ConstructFromPackageAsset has been deprecated - please use ConstructFromAssetPath instead.")
151 [[nodiscard]] COREUOBJECT_API static FSoftObjectPath ConstructFromPackageAsset(FName InPackageName, FName InAssetName);
152 UE_SOFTOBJECTPATH_FSTRING_DEPRECATED(5.6, "FSoftObjectPath::ConstructFromAssetPathAndSubpath with a wide string subpath has been deprecated - please use a UTF8 subpath instead.")
156 [[nodiscard]] COREUOBJECT_API static FSoftObjectPath ConstructFromStringPath(FString&& InPath);
157 [[nodiscard]] COREUOBJECT_API static FSoftObjectPath ConstructFromStringPath(FStringView InPath);
158 [[nodiscard]] COREUOBJECT_API static FSoftObjectPath ConstructFromStringPath(FUtf8StringView InPath);
159 [[nodiscard]] COREUOBJECT_API static FSoftObjectPath ConstructFromObject(const UObject* InObject);
160 [[nodiscard]] COREUOBJECT_API static FSoftObjectPath ConstructFromObject(const FObjectPtr& InObject);
161 template <typename T>
163 {
164 return ConstructFromObject(InObject.Get());
165 }
166
168 {
169 SetPath(Path);
170 return *this;
171 }
172 FSoftObjectPath& operator=(const FString& Path)
173 {
174 SetPath(FStringView(Path));
175 return *this;
176 }
178 {
179 SetPath(Path);
180 return *this;
181 }
183 {
184 SetPath(Path);
185 return *this;
186 }
188 {
189 SetPath(FWideStringView(Path));
190 return *this;
191 }
193 {
194 SetPath(FAnsiStringView(Path));
195 return *this;
196 }
198 {
199 Reset();
200 return *this;
201 }
202
204 [[nodiscard]] COREUOBJECT_API FString ToString() const;
205
207 COREUOBJECT_API void ToString(FStringBuilderBase& Builder) const;
208 COREUOBJECT_API void ToString(FUtf8StringBuilderBase& Builder) const;
209
211 COREUOBJECT_API void AppendString(FString& Builder) const;
212 COREUOBJECT_API void AppendString(FStringBuilderBase& Builder) const;
213 COREUOBJECT_API void AppendString(FUtf8StringBuilderBase& Builder) const;
214
217 {
218 return AssetPath;
219 }
220
223 {
224 return FSoftObjectPath(AssetPath);
225 }
226
228 [[nodiscard]] inline FString GetAssetPathString() const
229 {
230 if (AssetPath.IsNull())
231 {
232 return FString();
233 }
234
235 return AssetPath.ToString();
236 }
237
239 UE_SOFTOBJECTPATH_FSTRING_DEPRECATED(5.6, "FSoftObjectPath::GetSubPathString has been deprecated - please use GetSubPathUtf8String() instead.")
241 {
242 return FString(SubPathString);
243 }
245 {
246 return SubPathString;
247 }
248
249 UE_SOFTOBJECTPATH_FSTRING_DEPRECATED(5.6, "FSoftObjectPath::ConstructFromAssetPathAndSubpath with a wide string subpath has been deprecated - please use a UTF8 subpath instead.")
251 {
252 SubPathString = FUtf8String(InSubPathString.MoveTemp());
253 }
258
260 [[nodiscard]] FString GetLongPackageName() const
261 {
262 FName PackageName = GetAssetPath().GetPackageName();
263 return PackageName.IsNone() ? FString() : PackageName.ToString();
264 }
265
268 {
269 return GetAssetPath().GetPackageName();
270 }
271
273 [[nodiscard]] FString GetAssetName() const
274 {
275 FName AssetName = GetAssetPath().GetAssetName();
276 return AssetName.IsNone() ? FString() : AssetName.ToString();
277 }
278
281 {
282 return GetAssetPath().GetAssetName();
283 }
284
287 UE_SOFTOBJECTPATH_FSTRING_DEPRECATED(5.6, "FSoftObjectPath::SetPath with a wide string subpath has been deprecated - please use a UTF8 subpath instead.")
290 COREUOBJECT_API void SetPath(FWideStringView Path);
291 COREUOBJECT_API void SetPath(FAnsiStringView Path);
292 COREUOBJECT_API void SetPath(FUtf8StringView Path);
293 COREUOBJECT_API void SetPath(const UObject* InObject);
294 void SetPath(const WIDECHAR* Path)
295 {
296 SetPath(FWideStringView(Path));
297 }
298 void SetPath(const ANSICHAR* Path)
299 {
300 SetPath(FAnsiStringView(Path));
301 }
302 void SetPath(const FString& Path)
303 {
304 SetPath(FStringView(Path));
305 }
306
309
316
327
333 [[nodiscard]] COREUOBJECT_API UObject* ResolveObject() const;
334
336 void Reset()
337 {
338 AssetPath.Reset();
339 SubPathString.Reset();
340 }
341
344 {
345 return AssetPath.IsValid();
346 }
347
350 {
351 return AssetPath.IsNull();
352 }
353
356 {
357 return !AssetPath.IsNull() && SubPathString.IsEmpty();
358 }
359
362 {
363 return !AssetPath.IsNull() && !SubPathString.IsEmpty();
364 }
365
368 {
369 int32 PathCompare = AssetPath.Compare(Other.AssetPath);
370 if (PathCompare != 0)
371 {
372 return PathCompare < 0;
373 }
374 return SubPathString.Compare(Other.SubPathString) < 0;
375 }
376
379 {
380 int32 PathCompare = AssetPath.CompareFast(Other.AssetPath);
381 if (PathCompare != 0)
382 {
383 return PathCompare < 0;
384 }
385 return SubPathString.Compare(Other.SubPathString) < 0;
386 }
387
391 [[nodiscard]] COREUOBJECT_API bool operator==(FSoftObjectPath const& Other) const;
392
393#if !PLATFORM_COMPILER_HAS_GENERATED_COMPARISON_OPERATORS
395 {
396 return !(*this == Other);
397 }
398#endif
399
400 COREUOBJECT_API bool ExportTextItem(FString& ValueStr, FSoftObjectPath const& DefaultValue, UObject* Parent, int32 PortFlags, UObject* ExportRootScope) const;
401 COREUOBJECT_API bool ImportTextItem(const TCHAR*& Buffer, int32 PortFlags, UObject* Parent, FOutputDevice* ErrorText, FArchive* InSerializingArchive = nullptr);
402 COREUOBJECT_API bool SerializeFromMismatchedTag(struct FPropertyTag const& Tag, FStructuredArchive::FSlot Slot);
403
405 COREUOBJECT_API void SerializePath(FArchive& Ar);
406
408 COREUOBJECT_API void SerializePathWithoutFixup(FArchive& Ar);
409
411 COREUOBJECT_API bool PreSavePath(bool* bReportSoftObjectPathRedirects = nullptr);
412
417 COREUOBJECT_API void PostLoadPath(FArchive* InArchive) const;
418
421
424
426 COREUOBJECT_API bool FixupCoreRedirects();
427
428 [[nodiscard]] inline friend uint32 GetTypeHash(FSoftObjectPath const& This)
429 {
430 uint32 Hash = GetTypeHash(This.AssetPath);
431
432 if (!This.SubPathString.IsEmpty())
433 {
434 Hash = HashCombineFast(Hash, GetTypeHash(This.SubPathString));
435 }
436
437 return Hash;
438 }
439
440 [[nodiscard]] static COREUOBJECT_API FSoftObjectPath GetOrCreateIDForObject(FObjectPtr Object);
442 {
443 return GetOrCreateIDForObject(FObjectPtr(const_cast<UObject*>(Object)));
444 }
445 template <typename T>
447 {
448 // This needs to be a template instead of TObjectPtr<const UObject> because C++ does derived-to-base
449 // pointer conversions ('standard conversion sequences') in more cases than TSmartPtr<Derived>-to-TSmartPtr<Base>
450 // conversions ('user-defined conversions'), meaning it doesn't auto-convert in many real use cases.
451 //
452 // https://en.cppreference.com/w/cpp/language/implicit_conversion
453
454 return GetOrCreateIDForObject(FObjectPtr(Object));
455 }
456
458 static COREUOBJECT_API void AddPIEPackageName(FName NewPIEPackageName);
459
461 static COREUOBJECT_API void ClearPIEPackageNames();
462
463#if WITH_EDITOR
469#endif
470private:
472 UPROPERTY()
473 FTopLevelAssetPath AssetPath;
474
476 UPROPERTY()
477 FUtf8String SubPathString;
478
480 static COREUOBJECT_API TSet<FName> PIEPackageNames;
481
482 [[nodiscard]] COREUOBJECT_API UObject* ResolveObjectInternal() const;
483
485 friend struct Z_Construct_UScriptStruct_FSoftObjectPath_Statics;
486};
487
488template<>
490{
491 enum
492 {
493 WithZeroConstructor = true,
494 WithStructuredSerializer = true,
495 WithCopy = true,
496 WithIdenticalViaEquality = true,
497 WithExportTextItem = true,
498 WithImportTextItem = true,
499 WithStructuredSerializeFromMismatchedTag = true,
500 };
501 static constexpr EPropertyObjectReferenceType WithSerializerObjectReferences = EPropertyObjectReferenceType::Soft;
502};
503
504
507{
508 [[nodiscard]] bool operator()(const FSoftObjectPath& Lhs, const FSoftObjectPath& Rhs) const
509 {
510 return Lhs.FastLess(Rhs);
511 }
512};
513
516{
517 [[nodiscard]] bool operator()(const FSoftObjectPath& Lhs, const FSoftObjectPath& Rhs) const
518 {
519 return Lhs.LexicalLess(Rhs);
520 }
521};
522
524{
525 Path.ToString(Builder);
526 return Builder;
527}
529{
530 Path.ToString(Builder);
531 return Builder;
532}
533
537USTRUCT(BlueprintType, meta=(HasNativeMake="/Script/Engine.KismetSystemLibrary.MakeSoftClassPath", HasNativeBreak="/Script/Engine.KismetSystemLibrary.BreakSoftClassPath"))
539{
541public:
542 [[nodiscard]] FSoftClassPath() = default;
545 ~FSoftClassPath() = default;
546 FSoftClassPath& operator=(const FSoftClassPath& Path) = default;
548
552 [[nodiscard]] FSoftClassPath(const FString& PathString)
553 : FSoftObjectPath(PathString)
554 {
555 }
556
564
569 template<typename T>
571 {
572 if ( IsValid() )
573 {
574 return LoadClass<T>(nullptr, *ToString(), nullptr, LOAD_None, nullptr);
575 }
576
577 return nullptr;
578 }
579
584 [[nodiscard]] COREUOBJECT_API UClass* ResolveClass() const;
585
586 COREUOBJECT_API bool SerializeFromMismatchedTag(const FPropertyTag& Tag, FStructuredArchive::FSlot Slot);
587
588 [[nodiscard]] static COREUOBJECT_API FSoftClassPath GetOrCreateIDForClass(const UClass *InClass);
589
590private:
592 [[nodiscard]] explicit FSoftClassPath(const UObject* InObject)
593 {
594 }
595
597 static COREUOBJECT_API FSoftObjectPath GetOrCreateIDForObject(const UObject *Object);
598};
599
600template<>
615
636
638{
639
645{
646 return CollectType != ESoftObjectPathCollectType::NonPackage;
647}
648
651{
652 return (CollectType != ESoftObjectPathCollectType::NonPackage)
654}
655
661{
662 return (CollectType != ESoftObjectPathCollectType::NonPackage)
665}
666
667}
668
679
681
683{
686
688 {
689 }
690
691 struct FSerializationOptions
692 {
693 FName PackageName;
695 ESoftObjectPathCollectType CollectType;
696 ESoftObjectPathSerializeType SerializeType;
697
698 [[nodiscard]] FSerializationOptions()
700 {
701 }
702
704 : PackageName(InPackageName)
706 , CollectType(InCollectType)
707 , SerializeType(InSerializeType)
708 {
709 }
710 };
711
713public:
723};
724
750
752USTRUCT(BlueprintType)
754{
756
757
760 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = FilePath)
761 FString FilePath;
762};
763
765USTRUCT(BlueprintType)
767{
769
770
773 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Path)
774 FString Path;
775};
776
777// Fixup archive
779{
781 : FixupFunction(InFixupFunction)
782 {
783 this->SetIsSaving(true);
784 this->ArShouldSkipBulkData = true;
785 this->SetShouldSkipCompilingAssets(true);
786 }
787
790 {
791 if (!Value.IsNull() && Value.GetAssetPathString().Equals(OldAssetPathString, ESearchCase::IgnoreCase))
792 {
793 Value = FSoftObjectPath(NewAssetPath, Value.GetSubPathUtf8String());
794 }
795 })
796 {
797 }
798
800 {
801 FixupFunction(Value);
802 return *this;
803 }
804
806 {
807 //do nothing to avoid resolving
808 return *this;
809 }
810
812 {
813 Root->Serialize(*this);
814 TArray<UObject*> SubObjects;
815 GetObjectsWithOuter(Root, SubObjects);
816 for (UObject* Obj : SubObjects)
817 {
818 Obj->Serialize(*this);
819 }
820 }
821
823};
824
826{
827 UE_DEPRECATED(5.1, "This function is only for use in fixing up deprecated APIs.")
840
841 UE_DEPRECATED(5.1, "This function is only for use in fixing up deprecated APIs.")
843 {
845 Out.Reserve(InPaths.Num());
847 Algo::Transform(InPaths, Out, [](FName Name)
848 {
849 FSoftObjectPath Result;
850 Result.SetPath(Name.ToString());
851 return Result;
852 });
854 return Out;
855 }
856}
857
858#if WITH_LOW_LEVEL_TESTS
859#include <ostream>
860COREUOBJECT_API std::ostream& operator<<(std::ostream& Stream, const FSoftObjectPath& Value);
861#endif
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
FPlatformTypes::TYPE_OF_NULLPTR TYPE_OF_NULLPTR
The type of the C++ nullptr keyword.
Definition Platform.h:1157
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
FPlatformTypes::WIDECHAR WIDECHAR
A wide character. Normally a signed type.
Definition Platform.h:1133
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
#define UE_FORCEINLINE_HINT
Definition Platform.h:723
FPlatformTypes::ANSICHAR ANSICHAR
An ANSI character. Normally a signed type.
Definition Platform.h:1131
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define DECLARE_DELEGATE_TwoParams(DelegateName, Param1Type, Param2Type)
Definition DelegateCombinations.h:57
#define PRAGMA_ENABLE_DEPRECATION_WARNINGS
Definition GenericPlatformCompilerPreSetup.h:12
#define PRAGMA_DISABLE_DEPRECATION_WARNINGS
Definition GenericPlatformCompilerPreSetup.h:8
void SerializeForLog(FCbWriter &Writer, const FIoStatus &Status)
Definition IoStatus.cpp:107
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define USTRUCT(...)
Definition ObjectMacros.h:746
@ LOAD_None
No flags.
Definition ObjectMacros.h:69
EPropertyObjectReferenceType
Definition ObjectMacros.h:533
ESoftObjectPathCollectType
Definition SoftObjectPath.h:618
constexpr auto FSoftObjectPath_DefaultPreFixupForPIEFunction
Definition SoftObjectPath.h:46
FStringBuilderBase & operator<<(FStringBuilderBase &Builder, const FSoftObjectPath &Path)
Definition SoftObjectPath.h:523
ESoftObjectPathSerializeType
Definition SoftObjectPath.h:671
#define UE_SOFTOBJECTPATH_FSTRING_DEPRECATED(Version, Message)
Definition SoftObjectPath.h:41
TStringView< TCHAR > FStringView
Definition StringFwd.h:45
TStringView< WIDECHAR > FWideStringView
Definition StringFwd.h:47
TStringView< ANSICHAR > FAnsiStringView
Definition StringFwd.h:46
#define UE_DECLARE_THREAD_SINGLETON_TLS(Type, Api)
Definition ThreadSingleton.h:35
constexpr uint32 HashCombineFast(uint32 A, uint32 B)
Definition TypeHash.h:74
void GetObjectsWithOuter(const class UObjectBase *Outer, TArray< UObject * > &Results, bool bIncludeNestedObjects, EObjectFlags ExclusionFlags, EInternalObjectFlags ExclusionInternalFlags)
Definition UObjectHash.cpp:1551
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition ArchiveUObject.h:17
Definition Archive.h:1208
Definition CompactBinaryWriter.h:68
Definition NameTypes.h:617
CORE_API FString ToString() const
Definition UnrealNames.cpp:3537
FORCEINLINE bool IsNone() const
Definition NameTypes.h:827
Definition OutputDevice.h:133
Definition SoftObjectPath.h:683
Definition StructuredArchiveSlots.h:52
Definition Array.h:670
UE_FORCEINLINE_HINT SizeType Emplace(ArgsType &&... Args)
Definition Array.h:2561
ElementType Pop(EAllowShrinking AllowShrinking=UE::Core::Private::AllowShrinkingByDefault< AllocatorType >())
Definition Array.h:1196
UE_FORCEINLINE_HINT void Reserve(SizeType Number)
Definition Array.h:3016
Definition AssetRegistryState.h:50
Definition AndroidPlatformMisc.h:14
Definition StringView.h:107
Definition ThreadSingleton.h:44
static FORCEINLINE FSoftObjectPathThreadContext & Get()
Definition ThreadSingleton.h:101
Definition Class.h:3793
Definition Object.h:95
void Transform(const InT &Input, OutT &&Output, TransformT Trans)
Definition Transform.h:66
@ IgnoreCase
Definition CString.h:26
Definition SoftObjectPath.h:826
TArray< FName > ConvertSoftObjectPaths(TConstArrayView< FSoftObjectPath > InPaths)
Definition SoftObjectPath.h:828
TArray< FSoftObjectPath > ConvertObjectPathNames(TConstArrayView< FName > InPaths)
Definition SoftObjectPath.h:842
Definition SoftObjectPath.h:638
bool IsObjectType(ESoftObjectPathCollectType CollectType)
Definition SoftObjectPath.h:650
bool IsPackageType(ESoftObjectPathCollectType CollectType)
Definition SoftObjectPath.h:644
bool IsCollectable(ESoftObjectPathCollectType CollectType)
Definition SoftObjectPath.h:660
CORE_API FString ToString() const
Definition Color.cpp:584
Definition SoftObjectPath.h:767
Definition SoftObjectPath.h:754
Definition ObjectPtr.h:55
FORCEINLINE UObject * Get() const
Definition ObjectPtr.h:104
FORCEINLINE bool IsResolved() const
Definition ObjectPtr.h:186
FString GetPathName() const
Definition ObjectPtr.h:223
Definition PropertyTag.h:38
Definition SoftObjectPath.h:539
FSoftClassPath(FSoftClassPath &&Other)=default
FSoftClassPath()=default
FSoftClassPath(const FString &PathString)
Definition SoftObjectPath.h:552
FSoftClassPath(const UClass *InClass)
Definition SoftObjectPath.h:560
FSoftClassPath(const FSoftClassPath &Other)=default
FSoftClassPath & operator=(const FSoftClassPath &Path)=default
FSoftClassPath & operator=(FSoftClassPath &&Path)=default
UClass * TryLoadClass() const
Definition SoftObjectPath.h:570
~FSoftClassPath()=default
Definition SoftObjectPath.h:507
bool operator()(const FSoftObjectPath &Lhs, const FSoftObjectPath &Rhs) const
Definition SoftObjectPath.h:508
Definition SoftObjectPath.h:779
virtual FArchive & operator<<(FObjectPtr &Value) override
Definition SoftObjectPath.h:805
void Fixup(UObject *Root)
Definition SoftObjectPath.h:811
FArchive & operator<<(FSoftObjectPath &Value) override
Definition SoftObjectPath.h:799
FSoftObjectPathFixupArchive(TFunction< void(FSoftObjectPath &)> InFixupFunction)
Definition SoftObjectPath.h:780
FSoftObjectPathFixupArchive(const FString &InOldAssetPathString, const FString &InNewAssetPathString)
Definition SoftObjectPath.h:788
TFunction< void(FSoftObjectPath &)> FixupFunction
Definition SoftObjectPath.h:822
Definition SoftObjectPath.h:516
bool operator()(const FSoftObjectPath &Lhs, const FSoftObjectPath &Rhs) const
Definition SoftObjectPath.h:517
Definition SoftObjectPath.h:727
~FSoftObjectPathSerializationScope()
Definition SoftObjectPath.h:745
FSoftObjectPathSerializationScope(FName SerializingPackageName, FName SerializingPropertyName, ESoftObjectPathCollectType CollectType, ESoftObjectPathSerializeType SerializeType)
Definition SoftObjectPath.h:735
FSoftObjectPathSerializationScope(ESoftObjectPathCollectType CollectType)
Definition SoftObjectPath.h:740
Definition SoftObjectPath.h:56
FSoftObjectPath(FTopLevelAssetPath InAssetPath)
Definition SoftObjectPath.h:88
FSoftObjectPath & operator=(const FSoftObjectPath &Path)=default
FSoftObjectPath & operator=(const FString &Path)
Definition SoftObjectPath.h:172
FSoftObjectPath & operator=(const FTopLevelAssetPath Path)
Definition SoftObjectPath.h:167
FSoftObjectPath(FName InPackageName, FName InAssetName, const FString &InSubPathString)
Definition SoftObjectPath.h:82
FSoftObjectPath(const TObjectPtr< T > &InObject)
Definition SoftObjectPath.h:113
void SetPath(const FString &Path)
Definition SoftObjectPath.h:302
FSoftObjectPath & operator=(const WIDECHAR *Path)
Definition SoftObjectPath.h:187
FSoftObjectPath GetWithoutSubPath() const
Definition SoftObjectPath.h:222
void SetPath(const ANSICHAR *Path)
Definition SoftObjectPath.h:298
bool operator!=(FSoftObjectPath const &Other) const
Definition SoftObjectPath.h:394
FName GetLongPackageFName() const
Definition SoftObjectPath.h:267
bool FastLess(const FSoftObjectPath &Other) const
Definition SoftObjectPath.h:378
friend uint32 GetTypeHash(FSoftObjectPath const &This)
Definition SoftObjectPath.h:428
FSoftObjectPath(FSoftObjectPath &&Other)=default
FSoftObjectPath & operator=(FAnsiStringView Path)
Definition SoftObjectPath.h:182
FSoftObjectPath(FWideStringView Path)
Definition SoftObjectPath.h:92
FSoftObjectPath(TYPE_OF_NULLPTR)
Definition SoftObjectPath.h:108
FSoftObjectPath(const ANSICHAR *Path)
Definition SoftObjectPath.h:104
FSoftObjectPath(FTopLevelAssetPath InAssetPath, TStringOverload< FWideString > InSubPathString)
Definition SoftObjectPath.h:73
static UE_FORCEINLINE_HINT FSoftObjectPath GetOrCreateIDForObject(TObjectPtr< T > Object)
Definition SoftObjectPath.h:446
FTopLevelAssetPath GetAssetPath() const
Definition SoftObjectPath.h:216
~FSoftObjectPath()=default
FSoftObjectPath(const FObjectPtr &InObject)
Definition SoftObjectPath.h:127
FSoftObjectPath()=default
FString GetAssetName() const
Definition SoftObjectPath.h:273
UE_FORCEINLINE_HINT bool IsValid() const
Definition SoftObjectPath.h:343
FString GetAssetPathString() const
Definition SoftObjectPath.h:228
FSoftObjectPath(FAnsiStringView Path)
Definition SoftObjectPath.h:96
FSoftObjectPath & operator=(FWideStringView Path)
Definition SoftObjectPath.h:177
UE_FORCEINLINE_HINT bool IsSubobject() const
Definition SoftObjectPath.h:361
UE_FORCEINLINE_HINT void SetSubPathString(TStringOverload< FUtf8String > InSubPathString)
Definition SoftObjectPath.h:254
FSoftObjectPath(const UObject *InObject)
Definition SoftObjectPath.h:141
FSoftObjectPath & operator=(const ANSICHAR *Path)
Definition SoftObjectPath.h:192
static UE_FORCEINLINE_HINT FSoftObjectPath GetOrCreateIDForObject(const UObject *Object)
Definition SoftObjectPath.h:441
FSoftObjectPath(FTopLevelAssetPath InAssetPath, TStringOverload< FUtf8String > InSubPathString)
Definition SoftObjectPath.h:77
FSoftObjectPath(const WIDECHAR *Path)
Definition SoftObjectPath.h:100
bool LexicalLess(const FSoftObjectPath &Other) const
Definition SoftObjectPath.h:367
UE_FORCEINLINE_HINT bool IsNull() const
Definition SoftObjectPath.h:349
FSoftObjectPath & operator=(TYPE_OF_NULLPTR)
Definition SoftObjectPath.h:197
static FSoftObjectPath ConstructFromObject(const TObjectPtr< T > &InObject)
Definition SoftObjectPath.h:162
UE_FORCEINLINE_HINT bool IsAsset() const
Definition SoftObjectPath.h:355
UE_FORCEINLINE_HINT FString GetSubPathString() const
Definition SoftObjectPath.h:240
FSoftObjectPath & operator=(FSoftObjectPath &&Path)=default
FSoftObjectPath(const FSoftObjectPath &Other)=default
void Reset()
Definition SoftObjectPath.h:336
FSoftObjectPath(const FString &Path)
Definition SoftObjectPath.h:68
FString GetLongPackageName() const
Definition SoftObjectPath.h:260
UE_FORCEINLINE_HINT const FUtf8String & GetSubPathUtf8String() const
Definition SoftObjectPath.h:244
FName GetAssetFName() const
Definition SoftObjectPath.h:280
Definition TopLevelAssetPath.h:38
Definition UObjectThreadContext.h:140
Definition ObjectPtr.h:488
FORCEINLINE bool IsResolved() const
Definition ObjectPtr.h:726
FORCEINLINE FString GetPathName() const
Definition ObjectPtr.h:738
FORCEINLINE T * Get() const
Definition ObjectPtr.h:664
Definition StringOverload.h:31
Definition StructOpsTypeTraits.h:11
@ WithStructuredSerializeFromMismatchedTag
Definition StructOpsTypeTraits.h:29
@ WithZeroConstructor
Definition StructOpsTypeTraits.h:14
@ WithIdenticalViaEquality
Definition StructOpsTypeTraits.h:18
@ WithCopy
Definition StructOpsTypeTraits.h:17
@ WithExportTextItem
Definition StructOpsTypeTraits.h:20
@ WithSerializer
Definition StructOpsTypeTraits.h:23
@ WithImportTextItem
Definition StructOpsTypeTraits.h:21
static constexpr EPropertyObjectReferenceType WithSerializerObjectReferences
Definition StructOpsTypeTraits.h:41
Definition StructOpsTypeTraits.h:46