8#include "Containers/Array.h"
11#include "Containers/Map.h"
12#include "Containers/Set.h"
36#ifndef UE_ASSETREGISTRY_CACHEDASSETSBYTAG
37#define UE_ASSETREGISTRY_CACHEDASSETSBYTAG WITH_EDITORONLY_DATA
43class FAssetRegistryGenerator;
120 void InitForDevelopment();
161#if UE_ASSETREGISTRY_INDIRECT_ASSETDATA_POINTERS
169#if !UE_ASSETREGISTRY_INDIRECT_ASSETDATA_POINTERS
566#if ASSET_REGISTRY_STATE_DUMPING_ENABLED
597 void EnumerateMutableAssetsByPackageName(
const FName PackageName,
610 template<
class Archive>
633 template<
typename SetKeyFuncs,
typename SetAllocator>
645 template <
bool bLatestVersion>
655 UE::AssetRegistry::Private::FAssetDataPtrIndex AssetIndex,
660 template<
typename BitArrayAllocator>
664 template<
typename BitArrayAllocator>
681 bool IsPackageUnmountedAndFiltered(
const FName PackageName)
const;
688#if UE_ASSETREGISTRY_INDIRECT_ASSETDATA_POINTERS
692#if !UE_ASSETREGISTRY_INDIRECT_ASSETDATA_POINTERS
701 UE::AssetRegistry::Private::FAssetPackageNameMap CachedAssetsByPackageName;
708#if UE_ASSETREGISTRY_CACHEDASSETSBYTAG
709#if !UE_ASSETREGISTRY_INDIRECT_ASSETDATA_POINTERS
740 int32 NumDependsNodes = 0;
741 int32 NumPackageData = 0;
744 bool bCookedGlobalAssetRegistryState =
false;
763 InitForDevelopment();
776inline void FAssetRegistrySerializationOptions::InitForDevelopment()
787 : bLoadDependencies(Options.bSerializeDependencies)
788 , bLoadPackageData(Options.bSerializePackageData)
793#if UE_ASSETREGISTRY_INDIRECT_ASSETDATA_POINTERS
800#if UE_ASSETREGISTRY_INDIRECT_ASSETDATA_POINTERS
815 return GetMutableAssetByObjectPath(Key);
823inline FAssetData* FAssetRegistryState::GetMutableAssetByObjectPath(
833 EnumerateMutableAssetsByPackageName(PackageName, [&Callback](
FAssetData* AssetData)
835 return Callback(AssetData);
839inline void FAssetRegistryState::EnumerateMutableAssetsByPackageName(
const FName PackageName,
844#if !UE_ASSETREGISTRY_INDIRECT_ASSETDATA_POINTERS
846 = CachedAssetsByPackageName.Find(PackageName))
850 if (!Callback(AssetData))
861 if (!Callback(CachedAssets[
Index]))
876 Result.Add(AssetData);
884#if !UE_ASSETREGISTRY_INDIRECT_ASSETDATA_POINTERS
885 const auto*
Array = CachedAssetsByPackageName.Find(PackageName);
898 return Callback(AssetData);
907#if !UE_ASSETREGISTRY_INDIRECT_ASSETDATA_POINTERS
913 if (!Callback(AssetData))
925 if (!Callback(CachedAssets[AssetIndex]))
939#if !UE_ASSETREGISTRY_INDIRECT_ASSETDATA_POINTERS
952 if (!Callback(CachedAssets[AssetIndex]))
963#if UE_ASSETREGISTRY_CACHEDASSETSBYTAG
969 if (!Callback(Pair.Key))
978#if UE_ASSETREGISTRY_CACHEDASSETSBYTAG
981 return CachedClassesByTag.Contains(TagName);
993 for (
const auto& It : CachedAssetsByPackageName)
1006 return CachedAssetsByPackageName.Num();
#define UE_ASSETREGISTRY_INDIRECT_ASSETDATA_POINTERS
Definition AssetDataMap.h:48
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
Definition Archive.h:1208
Definition AssetDataGatherer.h:175
Definition AssetDataTagMap.h:303
Definition AssetDataTagMap.h:289
Definition AssetData.h:946
Definition AssetRegistryState.h:158
int32 GetNumAssets() const
Definition AssetRegistryState.h:999
ASSETREGISTRY_API void RemoveAssetData(FAssetData *AssetData, bool bRemoveDependencyData, bool &bOutRemovedAssetData, bool &bOutRemovedPackageData)
Definition AssetRegistryState.cpp:3387
ASSETREGISTRY_API FAssetPackageData * CreateOrGetAssetPackageData(FName PackageName)
Definition AssetRegistryState.cpp:3911
ASSETREGISTRY_API void RemoveAssetDatas(TArrayView< FAssetData * > AssetDatas, bool bRemoveDependencyData, TBitArray<> &bOutRemovedAssetData, TBitArray<> &bOutRemovedPackageData)
Definition AssetRegistryState.cpp:3397
FAssetRegistryState & operator=(const FAssetRegistryState &)=delete
ASSETREGISTRY_API void InitializeFromExistingAndPrune(const FAssetRegistryState &ExistingState, const TSet< FName > &RequiredPackages, const TSet< FName > &RemovePackages, const TSet< int32 > ChunksToKeep, const FAssetRegistrySerializationOptions &Options)
Definition AssetRegistryState.cpp:260
ASSETREGISTRY_API void GetPrimaryAssetsIds(TSet< FPrimaryAssetId > &OutPrimaryAssets) const
Definition AssetRegistryState.cpp:3868
ASSETREGISTRY_API void ClearDependencies(const FAssetIdentifier &AssetIdentifier, UE::AssetRegistry::EDependencyCategory Category)
Definition AssetRegistryState.cpp:2010
ASSETREGISTRY_API void AddAssetData(FAssetData *AssetData)
Definition AssetRegistryState.cpp:3009
ASSETREGISTRY_API bool GetAssets(const FARCompiledFilter &Filter, const TSet< FName > &PackageNamesToSkip, TArray< FAssetData > &OutAssetData, bool bSkipARFilteredAssets=false) const
Definition AssetRegistryState.cpp:1001
bool ContainsTag(FName TagName) const
Definition AssetRegistryState.h:976
UE::AssetRegistry::Private::FConstAssetDataMap FConstAssetDataMap
Definition AssetRegistryState.h:173
void EnumerateAssetsByClassPathName(const FTopLevelAssetPath ClassPathName, TFunctionRef< bool(const FAssetData *AssetData)> Callback) const
Definition AssetRegistryState.h:934
ASSETREGISTRY_API void AddDependencies(const FAssetIdentifier &AssetIdentifier, TConstArrayView< FAssetDependency > Dependencies)
Definition AssetRegistryState.cpp:2032
void EnumerateAssetsByPackageName(const FName PackageName, TFunctionRef< bool(const FAssetData *AssetData)> Callback) const
Definition AssetRegistryState.h:830
ASSETREGISTRY_API void GetPackagesByName(FStringView PackageName, TArray< FName > &OutPackageNames) const
Definition AssetRegistryState.cpp:1852
friend class FAssetRegistryGenerator
Definition AssetRegistryState.h:746
ASSETREGISTRY_API bool GetAllAssets(const TSet< FName > &PackageNamesToSkip, TArray< FAssetData > &OutAssetData, bool bARFiltering=false) const
Definition AssetRegistryState.cpp:1730
void EnumerateAssetsByPackagePath(FName LongPackagePathName, TFunctionRef< bool(const FAssetData *AssetData)> Callback) const
Definition AssetRegistryState.h:893
ASSETREGISTRY_API ~FAssetRegistryState()
Definition AssetRegistryState.cpp:75
ASSETREGISTRY_API bool ContainsDependency(const FAssetIdentifier &AssetIdentifier, const FAssetIdentifier &QueryAsset, UE::AssetRegistry::EDependencyCategory Category=UE::AssetRegistry::EDependencyCategory::All, const UE::AssetRegistry::FDependencyQuery &Flags=UE::AssetRegistry::FDependencyQuery()) const
Definition AssetRegistryState.cpp:1942
UE::AssetRegistry::Private::FAssetDataMap FAssetDataMap
Definition AssetRegistryState.h:172
ASSETREGISTRY_API void ClearReferencers(const FAssetIdentifier &AssetIdentifier, UE::AssetRegistry::EDependencyCategory Category)
Definition AssetRegistryState.cpp:2062
ASSETREGISTRY_API void EnumerateTagToAssetDatas(TFunctionRef< bool(FName TagName, IAssetRegistry::FEnumerateAssetDatasFunc EnumerateAssets)> Callback) const
Definition AssetRegistryState.cpp:4038
ASSETREGISTRY_API void SetReferencers(const FAssetIdentifier &AssetIdentifier, TConstArrayView< FAssetDependency > Referencers, UE::AssetRegistry::EDependencyCategory Category=UE::AssetRegistry::EDependencyCategory::All)
Definition AssetRegistryState.cpp:2099
ASSETREGISTRY_API FName GetFirstPackageByName(FStringView PackageName) const
Definition AssetRegistryState.cpp:1879
ASSETREGISTRY_API void SetDependencies(const FAssetIdentifier &AssetIdentifier, TConstArrayView< FAssetDependency > Dependencies, UE::AssetRegistry::EDependencyCategory Category=UE::AssetRegistry::EDependencyCategory::All)
Definition AssetRegistryState.cpp:2048
const TMap< FName, const FAssetPackageData * > & GetAssetPackageDataMap() const
Definition AssetRegistryState.h:985
ASSETREGISTRY_API void AddReferencers(const FAssetIdentifier &AssetIdentifier, TConstArrayView< FAssetDependency > Referencers)
Definition AssetRegistryState.cpp:2083
const FAssetData * GetAssetByObjectPath(const FSoftObjectPath &ObjectPath) const
Definition AssetRegistryState.h:807
ASSETREGISTRY_API void EnumerateAllAssets(TFunctionRef< void(const FAssetData &)> Callback, EEnumerateAssetsFlags InEnumerateFlags=EEnumerateAssetsFlags::AllowAll) const
Definition AssetRegistryState.cpp:1745
ASSETREGISTRY_API bool GetDependencies(const FAssetIdentifier &AssetIdentifier, TArray< FAssetIdentifier > &OutDependencies, UE::AssetRegistry::EDependencyCategory Category=UE::AssetRegistry::EDependencyCategory::All, const UE::AssetRegistry::FDependencyQuery &Flags=UE::AssetRegistry::FDependencyQuery()) const
Definition AssetRegistryState.cpp:1898
ASSETREGISTRY_API void EnumerateAssetsByTagName(const FName TagName, TFunctionRef< bool(const FAssetData *AssetData)> Callback) const
Definition AssetRegistryState.cpp:3961
int32 GetNumPackages() const
Definition AssetRegistryState.h:1004
ASSETREGISTRY_API void UpdateAssetData(const FAssetData &NewAssetData, bool bCreateIfNotExists=false)
Definition AssetRegistryState.cpp:3192
ASSETREGISTRY_API void AddTagsToAssetData(const FSoftObjectPath &InObjectPath, FAssetDataTagMap &&InTagsAndValues)
Definition AssetRegistryState.cpp:3050
ASSETREGISTRY_API void FilterTags(const FAssetRegistrySerializationOptions &Options)
Definition AssetRegistryState.cpp:3079
ASSETREGISTRY_API bool EnumerateAssets(const FARCompiledFilter &Filter, const TSet< FName > &PackageNamesToSkip, TFunctionRef< bool(const FAssetData &)> Callback, EEnumerateAssetsFlags InEnumerateFlags=EEnumerateAssetsFlags::AllowUnfilteredArAssets) const
Definition AssetRegistryState.cpp:1522
ASSETREGISTRY_API const FAssetPackageData * GetAssetPackageData(FName PackageName) const
Definition AssetRegistryState.cpp:3880
void EnumerateTags(TFunctionRef< bool(FName TagName)> Callback) const
Definition AssetRegistryState.h:961
FAssetRegistryState()
Definition AssetRegistryState.h:792
ASSETREGISTRY_API bool GetReferencers(const FAssetIdentifier &AssetIdentifier, TArray< FAssetIdentifier > &OutReferencers, UE::AssetRegistry::EDependencyCategory Category=UE::AssetRegistry::EDependencyCategory::All, const UE::AssetRegistry::FDependencyQuery &Flags=UE::AssetRegistry::FDependencyQuery()) const
Definition AssetRegistryState.cpp:1956
ASSETREGISTRY_API void EnumerateAllPaths(TFunctionRef< void(FName PathName)> Callback) const
Definition AssetRegistryState.cpp:1844
static ASSETREGISTRY_API bool LoadFromDisk(const TCHAR *InPath, const FAssetRegistryLoadOptions &InOptions, FAssetRegistryState &OutState, FAssetRegistryVersion::Type *OutVersion=nullptr)
Definition AssetRegistryState.cpp:2410
ASSETREGISTRY_API bool RemovePackageData(FName PackageName)
Definition AssetRegistryState.cpp:3922
TArray< const FAssetData * > CopyAssetsByPackageName(const FName PackageName) const
Definition AssetRegistryState.h:870
ASSETREGISTRY_API bool UpdateAssetDataPackageFlags(FName PackageName, uint32 PackageFlags)
Definition AssetRegistryState.cpp:3375
ASSETREGISTRY_API bool HasAssets(const FName PackagePath, bool bARFiltering=false) const
Definition AssetRegistryState.cpp:983
static ASSETREGISTRY_API bool IsFilterValid(const FARCompiledFilter &Filter)
Definition AssetRegistryState.cpp:3956
void InitializeFromExisting(const FAssetRegistryState &Existing, const FAssetRegistrySerializationOptions &Options, EInitializationMode InitializationMode=EInitializationMode::Rebuild, FAssetRegistryAppendResult *OutAppendResult=nullptr)
Definition AssetRegistryState.h:1009
int32 NumAssetsByPackageName(const FName PackageName) const
Definition AssetRegistryState.h:882
FAssetRegistryState(const FAssetRegistryState &)=delete
void GetPackageNames(TArray< FName > &OutPackageNames) const
Definition AssetRegistryState.h:990
ASSETREGISTRY_API void Reset()
Definition AssetRegistryState.cpp:80
ASSETREGISTRY_API SIZE_T GetAllocatedSize(bool bLogDetailed=false) const
Definition AssetRegistryState.cpp:2628
ASSETREGISTRY_API void PruneAssetData(const TSet< FName > &RequiredPackages, const TSet< FName > &RemovePackages, const TSet< int32 > ChunksToKeep, const FAssetRegistrySerializationOptions &Options)
Definition AssetRegistryState.cpp:745
Definition DependsNode.h:16
Definition NameTypes.h:617
Definition ArrayView.h:139
Definition AssetRegistryState.h:50
Definition UnrealString.h.inl:34
Definition SharedPointer.h:692
Definition ContainerAllocationPolicies.h:894
Definition AssetRegistry.h:21
Definition AssetRegistryImpl.h:394
CORE_API void Reserve(int32 CharacterCount)
Definition String.cpp.inl:307
Definition SoftObjectPath.cpp:24
Definition AssetRegistryImpl.h:48
TSet< const FAssetData *, FCachedAssetKeyFuncs > FConstAssetDataMap
Definition AssetDataMap.h:114
TSet< FAssetData *, FCachedAssetKeyFuncs > FAssetDataMap
Definition AssetDataMap.h:113
Definition PackageReader.h:15
ESerializationTarget
Definition AssetRegistryInterface.h:195
EAppendMode
Definition IAssetRegistry.h:134
EEnumerateAssetsFlags
Definition AssetRegistryInterface.h:211
EDependencyCategory
Definition AssetRegistryInterface.h:71
U16 Index
Definition radfft.cpp:71
Definition ARFilter.h:193
Definition AssetData.h:162
Definition AssetIdentifier.h:12
Definition AssetRegistryState.h:148
TArray< const FAssetData * > UpdatedAssets
Definition AssetRegistryState.h:150
TArray< const FAssetData * > AddedAssets
Definition AssetRegistryState.h:149
Definition AssetRegistryState.h:124
int32 ParallelWorkers
Definition AssetRegistryState.h:130
FAssetRegistryLoadOptions()=default
bool bLoadDependencies
Definition AssetRegistryState.h:128
bool bLoadPackageData
Definition AssetRegistryState.h:129
Definition AssetRegistryState.h:134
TSet< FName > RemovePackages
Definition AssetRegistryState.h:136
TSet< int32 > ChunksToKeep
Definition AssetRegistryState.h:137
FAssetRegistrySerializationOptions Options
Definition AssetRegistryState.h:138
TSet< FPrimaryAssetType > RemoveDependenciesWithoutPackagesKeepPrimaryAssetTypes
Definition AssetRegistryState.h:144
TSet< FName > RequiredPackages
Definition AssetRegistryState.h:135
bool bRemoveDependenciesWithoutPackages
Definition AssetRegistryState.h:141
Definition AssetRegistryState.h:58
bool bSerializePackageData
Definition AssetRegistryState.h:75
bool bUseAssetRegistryTagsAllowListInsteadOfDenyList
Definition AssetRegistryState.h:78
TSet< FString > AssetBundlesDenyList
Definition AssetRegistryState.h:114
bool bSerializeManageDependencies
Definition AssetRegistryState.h:72
bool bFilterAssetDataWithNoTags
Definition AssetRegistryState.h:84
bool bKeepDevelopmentAssetRegistryTags
Definition AssetRegistryState.h:99
bool bFilterDependenciesWithNoTags
Definition AssetRegistryState.h:90
bool bFilterSearchableNames
Definition AssetRegistryState.h:93
void DisableFilters()
Definition AssetRegistryState.h:767
TMap< FTopLevelAssetPath, TSet< FName > > CookFilterlistTagsByClass
Definition AssetRegistryState.h:105
bool bSerializeAssetRegistry
Definition AssetRegistryState.h:63
bool bSerializeDependencies
Definition AssetRegistryState.h:66
bool bSerializeSearchableNameDependencies
Definition AssetRegistryState.h:69
FAssetRegistrySerializationOptions(UE::AssetRegistry::ESerializationTarget Target=UE::AssetRegistry::ESerializationTarget::ForGame)
Definition AssetRegistryState.h:758
TSet< FName > CookTagsAsName
Definition AssetRegistryState.h:108
TSet< FName > CookTagsAsPath
Definition AssetRegistryState.h:111
Type
Definition AssetData.h:73
Definition PrimaryAssetId.h:126
Definition SoftObjectPath.h:56
Definition TopLevelAssetPath.h:38
Definition Optional.h:131
Definition AssetRegistryInterface.h:255
Definition AssetDataMap.h:61