8#include "Containers/Array.h"
12#include "Containers/Map.h"
13#include "Containers/Set.h"
32#include "Misc/Optional.h"
58#include "AssetData.generated.h"
174 SkipAssetRegistryTagsGathering = 1 << 0,
175 AllowBlueprintClass = 1 << 1,
180#if WITH_EDITORONLY_DATA
182 UE_DEPRECATED(5.1,
"FName asset paths have been deprecated. Use GetSoftObjectPath to get the path this asset will use in memory when loaded or GetObjectPathString() if you were just doing ObjectPath.ToString()")
210#if WITH_EDITORONLY_DATA
233#if !UE_STRIP_DEPRECATED_PROPERTIES
234 UE_DEPRECATED(5.1,
"Use SetChunkIDs/GetChunkIDs/AddChunkID instead.")
266 UE_DEPRECATED(5.1,
"Class names are now represented by path names. Please use a version of FAssetData constructor that uses FTopLevelAssetPath.")
289 return PackageName ==
Other.PackageName && AssetName ==
Other.AssetName;
294 return PackageName !=
Other.PackageName || AssetName !=
Other.AssetName;
300 if (PackageName ==
Other.PackageName)
302 return Other.AssetName.LexicalLess(AssetName);
304 return Other.PackageName.LexicalLess(PackageName);
310 if (PackageName ==
Other.PackageName)
312 return AssetName.LexicalLess(
Other.AssetName);
320 return !PackageName.
IsNone() && !AssetName.IsNone();
350 return GetSoftObjectPath();
357 AppendObjectPath(Builder);
358 return FString(Builder);
387#if WITH_EDITORONLY_DATA
456 return IsRedirectorClassName(AssetClassPath);
461 return Object && IsRedirectorClassName(
Object->GetClass()->GetClassPathName());
480 template<
typename BaseClass>
483 return IsInstanceOf(BaseClass::StaticClass(), ResolveClass);
494#if WITH_EDITORONLY_DATA
502 Builder << PackageName <<
'.' << AssetName;
510 AppendObjectPath(Builder);
511 String.Append(FString(Builder));
553#if WITH_EDITORONLY_DATA
557 AppendObjectPath(Builder);
646 template <
typename ValueType>
650 template<
typename Func>
657 template <
typename ValueType>
658 ValueType GetTagValueRef(
const FName Tag)
const;
663 return FastGetAsset(
false) !=
nullptr;
677 for (
const auto TagValue: TagsAndValues)
699 if (Data.IsInstanceOf(DesiredClass))
711 UClass* DesiredClass = T::StaticClass();
721 template<
class Archive>
725 static_cast<Archive&
>(Ar).SerializeTagsAndBundles(
Ad);
731 template<
class Archive>
735 static_cast<Archive&
>(Ar).SerializeTagsAndBundlesOldVersion(
Ad, Version);
774 return HashCombine(GetTypeHash(AssetData.PackageName), GetTypeHash(AssetData.AssetName));
790template <
typename ValueType>
841template <
typename ValueType>
855inline FString FAssetData::GetTagValueRef<FString>(
FName Tag)
const
900 if (
Key < RHS.
Key)
return true;
901 if (RHS.
Key <
Key)
return false;
916 return Value.Write(Writer);
976#if WITH_EDITORONLY_DATA
1004 return CustomVersions.
Get();
1028 bool IsReadOnly()
const {
return (Flags & FLAG_PACKAGE_READ_ONLY) != 0; }
1045#if WITH_EDITORONLY_DATA
1049 UE_DEPRECATED(5.6,
"No longer supported in non-editor configurations, to save memory.")
1080 FLAG_LICENSEE_VERSION = 1u << 0,
1081 FLAG_HAS_VIRTUALIZED_PAYLOADS = 1u << 1,
1082 FLAG_PACKAGE_READ_ONLY = 1u << 2,
1084 FLAG_PACKAGE_LOCATION_IODISPATCHER = 1u << 30,
1085 FLAG_PACKAGE_LOCATION_FILESYSTEM = 1u << 31,
1087 FLAG_PACKAGE_LOCATION_TO_ENUM_SHIFT_SIZE = 30u,
1096#if WITH_EDITORONLY_DATA
1147 UE_DEPRECATED(5.1,
"bShowShowNativePackages is deprecated, please use bShowShowCodePackages instead.")
#define NULL
Definition oodle2base.h:134
EGLSurface EGLint const EGLint * names
Definition AndroidOpenGLFunctions.h:11
#define check(expr)
Definition AssertionMacros.h:314
COREUOBJECT_API const FName GAssetBundleDataName
EResolveClass
Definition AssetData.h:151
FAssetDataTagMapSharedView LoadTags(FAssetRegistryReader &Reader)
Definition AssetRegistryArchive.cpp:327
EAssetRegistryTagsCaller
Definition AssetRegistryTagsContext.h:32
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#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
#define ENUM_CLASS_FLAGS(Enum)
Definition EnumClassFlags.h:6
return true
Definition ExternalRpcRegistry.cpp:601
void LexFromString(EAudioFeature &OutFeature, const TCHAR *String)
Definition IOSAppDelegate.cpp:163
#define DECLARE_LOG_CATEGORY_EXTERN(CategoryName, DefaultVerbosity, CompileTimeVerbosity)
Definition LogMacros.h:361
#define UE_LOG(CategoryName, Verbosity, Format,...)
Definition LogMacros.h:270
const bool
Definition NetworkReplayStreaming.h:178
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
@ PKG_AccessSpecifierEpicInternal
Objects in this package can only be referenced in a different plugin or mount point by Epic.
Definition ObjectMacros.h:142
@ PKG_NotExternallyReferenceable
Objects in this package cannot be referenced in a different plugin or mount point (i....
Definition ObjectMacros.h:141
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define USTRUCT(...)
Definition ObjectMacros.h:746
@ LOAD_None
No flags.
Definition ObjectMacros.h:69
EPackageExtension
Definition PackagePath.h:39
EAssetAccessSpecifier
Definition Package.h:204
constexpr uint32 HashCombine(uint32 A, uint32 C)
Definition TypeHash.h:36
UPackage * FindPackage(UObject *InOuter, const TCHAR *PackageName)
Definition UObjectGlobals.cpp:924
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
Definition AssetRegistry.Build.cs:6
Definition Archive.h:1208
Definition AssetDataTagMap.h:303
int32 Num() const
Definition AssetDataTagMap.h:376
FAssetTagValueRef FindTag(FName Tag) const
Definition AssetDataTagMap.h:353
void ForEach(Func Fn) const
Definition AssetDataTagMap.h:390
COREUOBJECT_API void Shrink()
** Shrinks the contained map */
Definition AssetDataTagMap.cpp:1599
Definition AssetDataTagMap.h:289
Definition AssetData.h:946
TArray< FName > ImportedClasses
Definition AssetData.h:967
COREUOBJECT_API FIoHash GetPackageSavedHash() const
Definition AssetData.cpp:1120
bool IsLicenseeVersion() const
Definition AssetData.h:1020
COREUOBJECT_API void SetPackageSavedHash(const FIoHash &InHash)
Definition AssetData.cpp:1129
COREUOBJECT_API void SerializeForCache(FArchive &Ar)
Definition AssetData.cpp:1109
TMap< FIoChunkId, FIoHash > ChunkHashes
Definition AssetData.h:964
void SetCustomVersions(TConstArrayView< UE::AssetRegistry::FPackageCustomVersion > InCustomVersions)
Definition AssetData.h:1010
FAssetPackageData()
Definition AssetData.h:990
bool IsReadOnly() const
Definition AssetData.h:1028
FPackageFileVersion FileVersionUE
Definition AssetData.h:973
COREUOBJECT_API void SerializeForCacheOldVersion(FArchive &Ar, FAssetRegistryVersion::Type Version)
Definition AssetData.cpp:1115
SIZE_T GetAllocatedSize() const
Definition AssetData.h:1039
void SetIsReadOnly(bool bValue)
Definition AssetData.h:1029
FPackageName::EPackageLocationFilter GetPackageLocation() const
Definition AssetData.h:1070
void SetCustomVersions(TConstArrayView< FCustomVersion > InCustomVersions)
Definition AssetData.h:1006
void SetIsLicenseeVersion(bool bValue)
Definition AssetData.h:1021
int32 FileVersionLicenseeUE
Definition AssetData.h:982
COREUOBJECT_API bool TryNetworkRead(FCbFieldView Field)
Definition AssetData.cpp:1188
int64 DiskSize
Definition AssetData.h:970
FMD5Hash CookedHash
Definition AssetData.h:949
EPackageExtension Extension
Definition AssetData.h:951
bool HasVirtualizedPayloads() const
Definition AssetData.h:1024
TConstArrayView< UE::AssetRegistry::FPackageCustomVersion > GetCustomVersions() const
Definition AssetData.h:1002
void SetCustomVersions(TArray< UE::AssetRegistry::FPackageCustomVersion > &&InCustomVersions)
Definition AssetData.h:1014
COREUOBJECT_API void NetworkWrite(FCbWriter &Writer) const
Definition AssetData.cpp:1152
void SetHasVirtualizedPayloads(bool bValue)
Definition AssetData.h:1025
void SetPackageLocation(FPackageName::EPackageLocationFilter PackageLocation)
Definition AssetData.h:1060
Definition AssetDataTagMap.h:182
COREUOBJECT_API FString AsString() const
Definition AssetDataTagMap.cpp:1419
bool IsSet() const
Definition AssetDataTagMap.h:242
COREUOBJECT_API FText AsText() const
Definition AssetDataTagMap.cpp:1439
COREUOBJECT_API FName AsName() const
Definition AssetDataTagMap.cpp:1424
Definition CompactBinary.h:610
Definition CompactBinaryWriter.h:68
Definition LinkerInstancingContext.h:99
Definition NameTypes.h:617
CORE_API FString ToString() const
Definition UnrealNames.cpp:3537
FORCEINLINE bool LexicalLess(const FName &Other) const
Definition NameTypes.h:821
FORCEINLINE bool IsNone() const
Definition NameTypes.h:827
Definition UnrealType.h:3087
EPackageLocationFilter
Definition PackageName.h:405
Definition SetUtilities.h:95
Definition ArrayView.h:139
UE_NODEBUG UE_FORCEINLINE_HINT SIZE_T GetAllocatedSize(void) const
Definition Array.h:1059
Definition UnrealString.h.inl:34
Definition SharedPointer.h:692
Definition ContainerAllocationPolicies.h:894
Definition StringBuilder.h:509
bool FindLastChar(CharType Search, int32 &OutIndex) const
Definition StringView.h:763
bool Equals(TStringView< OtherCharType > OtherView, ESearchCase::Type SearchCase=ESearchCase::CaseSensitive) const
Definition StringView.h:306
ViewType Mid(int32 Position, int32 CharCount=MAX_int32) const
Definition StringView.h:606
Definition AssetData.h:928
static COREUOBJECT_API FPackageCustomVersionsHandle FindOrAdd(TConstArrayView< FCustomVersion > InCustomVersions)
Definition AssetData.cpp:1340
TConstArrayView< FPackageCustomVersion > Get() const
Definition AssetData.h:930
friend class FPackageCustomVersionRegistry
Definition AssetData.h:939
COREUOBJECT_API friend FArchive & operator<<(FArchive &Ar, FPackageCustomVersionsHandle &Handle)
Definition AssetData.cpp:1361
Definition VersePath.h:14
Type
Definition LogVerbosity.h:17
@ Warning
Definition LogVerbosity.h:34
@ IgnoreCase
Definition CString.h:26
Definition FieldSystemNoiseAlgo.cpp:6
Definition AssetRegistryImpl.h:48
void ConcatenateOuterPathAndObjectName(FStringBuilderBase &Builder, FName OuterPath, FName ObjectName)
Definition AssetData.cpp:114
FAssetPathParts SplitIntoOuterPathAndAssetName(FStringView InObjectPath)
Definition AssetData.cpp:103
Definition PackageReader.h:15
Definition AdvancedWidgetsModule.cpp:13
Definition AssetBundleData.h:82
Definition AssetData.h:162
FString GetFullName() const
Definition AssetData.h:393
bool operator>(const FAssetData &Other) const
Definition AssetData.h:298
bool HasAnyPackageFlags(uint32 FlagsToCheck) const
Definition AssetData.h:587
UObject * GetAsset(TSet< FName > LoadTags={}) const
Definition AssetData.h:575
bool IsUAsset() const
Definition AssetData.h:329
bool IsAssetLoaded() const
Definition AssetData.h:661
bool HasAllPackageFlags(uint32 FlagsToCheck) const
Definition AssetData.h:598
bool operator==(const FAssetData &Other) const
Definition AssetData.h:287
void GetFullName(FString &OutFullName) const
Definition AssetData.h:401
friend UE_FORCEINLINE_HINT uint32 GetTypeHash(const FAssetData &AssetData)
Definition AssetData.h:772
PRAGMA_DISABLE_DEPRECATION_WARNINGS FAssetData()
Definition AssetData.h:257
bool IsRedirector() const
Definition AssetData.h:454
TSharedPtr< FAssetBundleData, ESPMode::ThreadSafe > TaggedAssetBundles
Definition AssetData.h:230
FAssetDataTagMapSharedView TagsAndValues
Definition AssetData.h:225
static T * GetFirstAsset(const TArray< FAssetData > &Assets)
Definition AssetData.h:709
FAssetData & operator=(FAssetData &&)=default
TConstArrayView< int32 > FChunkArrayView
Definition AssetData.h:242
void AppendObjectPath(FString &String) const
Definition AssetData.h:507
bool IsInstanceOf(const UClass *BaseClass, EResolveClass ResolveClass=EResolveClass::No) const
Definition AssetData.h:474
static FAssetData GetFirstAssetDataOfClass(const TArray< FAssetData > &Assets, const UClass *DesiredClass)
Definition AssetData.h:694
static bool IsRedirector(UObject *Object)
Definition AssetData.h:459
ValueType GetTagValueRef(const FName Tag) const
Definition AssetData.h:842
static const TCHAR * GetCollectionTagPrefix()
Definition AssetData.h:166
EAssetAccessSpecifier GetAssetAccessSpecifier() const
Definition AssetData.h:604
FAssetData & operator=(const FAssetData &)=default
void PrintAssetData() const
Definition AssetData.h:667
bool operator!=(const FAssetData &Other) const
Definition AssetData.h:292
void GetExportTextName(FString &OutExportTextName) const
Definition AssetData.h:427
void EnumerateTags(Func Fn) const
Definition AssetData.h:651
void Shrink()
Definition AssetData.h:382
void AppendObjectPath(FStringBuilderBase &Builder) const
Definition AssetData.h:487
ECreationFlags
Definition AssetData.h:172
void GetExportTextName(FStringBuilderBase &OutExportTextNameBuilder) const
Definition AssetData.h:437
FAssetData(FAssetData &&)=default
FSoftObjectPath ToSoftObjectPath() const
Definition AssetData.h:348
void SerializeForCacheOldVersion(Archive &&Ar, FAssetRegistryVersion::Type Version=FAssetRegistryVersion::LatestVersion)
Definition AssetData.h:732
bool FindTag(const FName InTagName) const
Definition AssetData.h:640
FString GetObjectPathString() const
Definition AssetData.h:354
void SerializeForCache(Archive &&Ar)
Definition AssetData.h:722
UPackage * GetPackage() const
Definition AssetData.h:619
FAssetData(const FAssetData &)=default
bool GetTagValue(FName Tag, ValueType &OutValue) const
Definition AssetData.h:791
UObject * FastGetAsset(bool bLoad=false, TSet< FName > LoadTags={}) const
Definition AssetData.h:525
bool IsValid() const
Definition AssetData.h:318
void GetFullName(FStringBuilderBase &OutFullNameBuilder) const
Definition AssetData.h:410
bool operator<(const FAssetData &Other) const
Definition AssetData.h:308
FString GetExportTextName() const
Definition AssetData.h:419
bool IsInstanceOf(EResolveClass ResolveClass=EResolveClass::No) const
Definition AssetData.h:481
Definition AssetDataTagMap.h:27
Definition AssetData.h:71
Type
Definition AssetData.h:73
@ AddedHeader
Definition AssetData.h:101
@ HardSoftDependencies
Definition AssetData.h:75
@ ExternalActorToWorldIsEditorOnly
Definition AssetData.h:106
@ VersionPlusOne
Definition AssetData.h:110
@ RemoveAssetPathFNames
Definition AssetData.h:100
@ ManageDependenciesCookRule
Definition AssetData.h:107
@ ClassPaths
Definition AssetData.h:99
@ MarshalledTextAsUTF8String
Definition AssetData.h:104
@ ObjectResourceOptionalVersionChange
Definition AssetData.h:97
@ LatestVersion
Definition AssetData.h:111
@ AddedCookedMD5Hash
Definition AssetData.h:80
@ PreVersioning
Definition AssetData.h:74
@ WorkspaceDomain
Definition AssetData.h:94
@ PackageFileSummaryVersionChange
Definition AssetData.h:96
@ PackageImportedClasses
Definition AssetData.h:95
@ AddedHardManage
Definition AssetData.h:79
@ PackageSavedHash
Definition AssetData.h:105
@ ChangedAssetData
Definition AssetData.h:77
@ AddedDependencyFlags
Definition AssetData.h:81
@ AddedChunkHashes
Definition AssetData.h:98
@ AssetPackageDataHasExtension
Definition AssetData.h:102
@ RemovedMD5Hash
Definition AssetData.h:78
@ AddAssetRegistryState
Definition AssetData.h:76
@ AssetPackageDataHasPackageLocation
Definition AssetData.h:103
@ FixedTags
Definition AssetData.h:82
COREUOBJECT_API static const FGuid GUID
Definition AssetData.h:115
static COREUOBJECT_API bool SerializeVersion(FArchive &Ar, FAssetRegistryVersion::Type &Version)
Definition AssetData.cpp:972
Definition CustomVersion.h:40
Definition SecureHash.h:133
static UE_FORCEINLINE_HINT void * Memzero(void *Dest, SIZE_T Count)
Definition UnrealMemory.h:131
Definition ObjectVersion.h:762
Definition PrimaryAssetId.h:126
Definition SoftObjectPath.h:56
Definition TopLevelAssetPath.h:38
COREUOBJECT_API void AppendString(FWideStringBuilderBase &Builder) const
Definition TopLevelAssetPath.cpp:21
COREUOBJECT_API FString ToString() const
Definition TopLevelAssetPath.cpp:58
Definition Optional.h:131
Definition StructOpsTypeTraits.h:11
@ WithIdenticalViaEquality
Definition StructOpsTypeTraits.h:18
Definition StructOpsTypeTraits.h:46
Definition AssetData.h:888
friend bool LoadFromCompactBinary(const FCbFieldView &Field, FPackageCustomVersion &Value)
Definition AssetData.h:919
FPackageCustomVersion(const FGuid &InKey, const int32 InVersion)
Definition AssetData.h:893
friend FCbWriter & operator<<(FCbWriter &Writer, const FPackageCustomVersion &Value)
Definition AssetData.h:914
bool operator==(const FPackageCustomVersion &RHS) const
Definition AssetData.h:904
friend FArchive & operator<<(FArchive &Ar, FPackageCustomVersion &CustomVersion)
Definition AssetData.h:908
int32 Version
Definition AssetData.h:890
bool operator<(const FPackageCustomVersion &RHS) const
Definition AssetData.h:898
FPackageCustomVersion()=default
FGuid Key
Definition AssetData.h:889
Definition AssetData.h:132
FStringView OuterPath
Definition AssetData.h:133
FStringView InnermostName
Definition AssetData.h:134