UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
PackageReader.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
10
11struct FAssetData;
13class FLinkerTables;
18
20{
21public:
24
25 // Note: Keep up to date with LexToString implementation
45
48 {
50 bool bUsedInGame = true;
51 };
52
55 ASSETREGISTRY_API bool OpenPackageFile(FStringView LongPackageName, FStringView PackageFilename,
57 ASSETREGISTRY_API bool OpenPackageFile(FArchive* Loader, FStringView LongPackageName = FStringView(),
61
69
90
93
96
106
108 enum class EReadOptions
109 {
110 None = 0,
111 PackageData = 1 << 0,
112 Dependencies = 1 << 1,
114 };
117
118 // Farchive implementation to redirect requests to the Loader
119 ASSETREGISTRY_API virtual void Serialize( void* V, int64 Length ) override;
121 ASSETREGISTRY_API virtual void Seek( int64 InPos ) override;
122 ASSETREGISTRY_API virtual int64 Tell() override;
123 ASSETREGISTRY_API virtual int64 TotalSize() override;
124 ASSETREGISTRY_API virtual FArchive& operator<<( FName& Name ) override;
125 virtual FString GetArchiveName() const override
126 {
127 return PackageFilename;
128 }
129
130private:
132 bool ReadAssetDataFromThumbnailCache(TArray<FAssetData*>& AssetDataList);
134 bool ReadAssetRegistryDataFromCookedPackage(TArray<FAssetData*>& AssetDataList, bool& bOutIsCookedWithoutAssetData);
135 bool StartSerializeSection(int64 Offset);
136
138 bool SerializeNameMap();
139 bool SerializeImportMap();
140 bool SerializeExportMap();
141 bool SerializeDependsMap();
142 bool SerializeImportedClasses(const TArray<FObjectImport>& InImportMap, TArray<FName>& OutClassNames);
143 bool SerializeSoftPackageReferenceList();
144 bool SerializeSoftObjectPathMap();
145 bool SerializeGatherableTextDataMap();
146 bool SerializeThumbnailMap();
148 bool SerializeSearchableNamesMap(FLinkerTables& OutSearchableNames);
149 bool SerializeAssetRegistryDependencyData(TBitArray<>& OutImportUsedInGame, TBitArray<>& OutSoftPackageUsedInGame,
151 bool SerializePackageTrailer(FAssetPackageData& PackageData);
152
153 void ApplyRelocationToImportMapAndSoftPackageReferenceList(FStringView LoadedPackageName,
156 static void ConvertLinkerTableToPaths(FName PackageName, TArray<FObjectExport>& ExportMap,
158
160 uint32 GetPackageFlags() const;
161
162 FString LongPackageName;
163 FString PackageFilename;
164 /*
165 * Loader is the interface used to read the bytes from the package's repository. All interpretation of the bytes is
166 * done by serializing into *this, which is also an FArchive.
167 */
168 FArchive* Loader = nullptr;
169 FPackageFileSummary PackageFileSummary;
170 TArray<FName> NameMap;
171 TArray<FObjectImport> ImportMap;
172 TArray<FObjectExport> ExportMap;
174 TArray<FName> SoftPackageReferenceList;
175 TArray<FSoftObjectPath> SoftObjectPathMap;
176 TArray<FGatherableTextData> GatherableTextDataMap;
178 int64 PackageFileSize = 0;
179 int64 AssetRegistryDependencyDataOffset = INDEX_NONE;
180 // Defined as uint32 to avoid including AssetData.h in this header
181 uint32 AssetRegistryVersion = static_cast<uint32>(~0);
182 bool bLoaderOwner = false;
183};
185
@ INDEX_NONE
Definition CoreMiscDefines.h:150
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
FPlatformTypes::int64 int64
A 64-bit signed integer.
Definition Platform.h:1127
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
ASSETREGISTRY_API const TCHAR * LexToString(FPackageReader::EOpenPackageResult Result)
Definition PackageReader.cpp:26
TStringView< TCHAR > FStringView
Definition StringFwd.h:45
uint32 Offset
Definition VulkanMemory.cpp:4033
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition ArchiveUObject.h:17
friend FArchive & operator<<(FArchive &Ar, ANSICHAR &Value)
Definition Archive.h:1387
Definition Archive.h:1208
Definition AssetData.h:946
Definition Linker.h:65
Definition NameTypes.h:617
Definition PackageDependencyData.h:12
Definition PackageReader.h:20
ASSETREGISTRY_API bool GetThumbnails(TArray< FObjectFullNameAndThumbnail > &OutThumbnails)
Definition PackageReader.cpp:402
ASSETREGISTRY_API bool ReadEditorOnlyFlags(TBitArray<> &OutImportUsedInGame, TBitArray<> &OutSoftPackageUsedInGame)
Definition PackageReader.cpp:413
virtual ASSETREGISTRY_API bool Precache(int64 PrecacheOffset, int64 PrecacheSize) override
Definition PackageReader.cpp:1383
ASSETREGISTRY_API const FPackageFileSummary & GetPackageFileSummary() const
Definition PackageReader.cpp:327
EOpenPackageResult
Definition PackageReader.h:27
ASSETREGISTRY_API bool GetNames(TArray< FName > &OutNames)
Definition PackageReader.cpp:332
ASSETREGISTRY_API bool TryGetLongPackageName(FString &OutLongPackageName) const
Definition PackageReader.cpp:282
ASSETREGISTRY_API bool GetImports(TArray< FObjectImport > &OutImportMap)
Definition PackageReader.cpp:342
ASSETREGISTRY_API bool ReadLinkerObjects(TMap< FSoftObjectPath, FObjectData > &OutExports, TMap< FSoftObjectPath, FObjectData > &OutImports, TMap< FName, bool > &OutSoftPackageReferences)
Definition PackageReader.cpp:497
ASSETREGISTRY_API bool GetSoftPackageReferenceList(TArray< FName > &OutSoftPackageReferenceList)
Definition PackageReader.cpp:372
ASSETREGISTRY_API bool ReadImportedClasses(TArray< FName > &OutClassNames)
Definition PackageReader.cpp:426
ASSETREGISTRY_API bool OpenPackageFile(FStringView PackageFilename, EOpenPackageResult *OutErrorCode=nullptr)
Definition PackageReader.cpp:102
EReadOptions
Definition PackageReader.h:109
ASSETREGISTRY_API bool GetExports(TArray< FObjectExport > &OutExportMap)
Definition PackageReader.cpp:352
ASSETREGISTRY_API bool GetSoftObjectPaths(TArray< FSoftObjectPath > &OutSoftObjectPaths)
Definition PackageReader.cpp:382
ASSETREGISTRY_API bool ReadDependencyData(FPackageDependencyData &OutDependencyData, EReadOptions Options)
Definition PackageReader.cpp:726
virtual ASSETREGISTRY_API int64 TotalSize() override
Definition PackageReader.cpp:1405
ASSETREGISTRY_API bool ReadAssetRegistryData(TArray< FAssetData * > &AssetDataList, bool &bOutIsCookedWithoutAssetData)
Definition PackageReader.cpp:439
ASSETREGISTRY_API bool GetDependsMap(TArray< TArray< FPackageIndex > > &OutDependsMap)
Definition PackageReader.cpp:362
virtual ASSETREGISTRY_API int64 Tell() override
Definition PackageReader.cpp:1399
virtual FString GetArchiveName() const override
Definition PackageReader.h:125
ASSETREGISTRY_API ~FPackageReader()
Definition PackageReader.cpp:94
ASSETREGISTRY_API FString GetLongPackageName() const
Definition PackageReader.cpp:295
ASSETREGISTRY_API bool GetGatherableTextData(TArray< FGatherableTextData > &OutText)
Definition PackageReader.cpp:392
ASSETREGISTRY_API FPackageReader()
Definition PackageReader.cpp:88
Definition Array.h:670
Definition UnrealString.h.inl:34
Definition UniquePtr.h:107
Definition PackageReader.h:15
EExtraDependencyFlags
Definition AssetRegistryInterface.h:330
Definition AssetData.h:162
Definition GatherableTextData.h:47
Definition ObjectThumbnail.h:334
Definition PackageFileSummary.h:57
Definition PackageReader.h:48
FSoftObjectPath ClassPath
Definition PackageReader.h:49
bool bUsedInGame
Definition PackageReader.h:50
Definition SoftObjectPath.h:56
Definition Tuple.h:652