UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
PackageResourceManager.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "Containers/Array.h"
7#include "Containers/Map.h"
10#include "Delegates/Delegate.h"
12#include "HAL/CriticalSection.h"
13#include "HAL/Platform.h"
14#include "HAL/PlatformFile.h"
15#include "Logging/LogMacros.h"
16#include "Misc/PackageName.h"
17#include "Misc/PackagePath.h"
18#include "Misc/PackageSegment.h"
22#include "Templates/Function.h"
24#include "Templates/UniquePtr.h"
25
26class FArchive;
27class FName;
33class UPackage;
34struct FFileStatData;
35
39
45{
46 Binary, // Standard UnrealFormat, every field marshalled to bytes with Serialize(void*,int)
47 Text, // Text format, use FJsonArchiveInputFormatter
48};
50
73
105
114
120{
121public:
122 // Public API
123
128 virtual ~IPackageResourceManager() = default;
129
138 virtual bool SupportsLocalOnlyPaths() = 0;
139
148 virtual bool SupportsPackageOnlyPaths() = 0;
149
158 COREUOBJECT_API bool DoesPackageExist(const FPackagePath& PackagePath, FPackagePath* OutUpdatedPath = nullptr);
159
169
180
194
207
218 virtual bool TryMatchCaseOnDisk(const FPackagePath& PackagePath, FPackagePath* OutNormalizedPath = nullptr) = 0;
219
229
245
255
272
274 typedef TFunctionRef<bool(const FPackagePath& PackagePath)> FPackagePathVisitor;
277
289 FPackagePathVisitor Callback);
290
300
313 FPackagePathStatVisitor Callback);
314
326
331 COREUOBJECT_API static void Initialize();
332
337 COREUOBJECT_API static void Shutdown();
338
341
342public:
343 // Internal API used by low-level PackageResourceManager users
344 UE_DEPRECATED(5.5, "Use the overload that takes a FBulkDataCookedIndex")
350
352 virtual bool DoesPackageExist(const FPackagePath& PackagePath, FBulkDataCookedIndex CookedIndex,
354
355 UE_DEPRECATED(5.5, "Use the overload that takes a FBulkDataCookedIndex")
361
363 virtual int64 FileSize(const FPackagePath& PackagePath, FBulkDataCookedIndex CookedIndex,
365
366 UE_DEPRECATED(5.5, "Use the overload that takes a FBulkDataCookedIndex")
372
376
377 UE_DEPRECATED(5.5, "Use the overload that takes a FBulkDataCookedIndex")
382
385
386 /* OpenMappedHandleToPackage that takes a PackageSegment */
388 FPackagePath* OutUpdatedPath = nullptr) = 0;
389
393
398
401 FPackageSegmentVisitor Callback) = 0;
402
405
408 FPackageSegmentStatVisitor Callback) = 0;
409
412
413
414 // Preloading Package Archives
415#if WITH_EDITOR
431 COREUOBJECT_API static bool TryRegisterPreloadableArchive(const FPackagePath& PackagePath,
433
444
450 COREUOBJECT_API static bool UnRegisterPreloadableArchive(const FPackagePath& PackagePath);
451
452private:
455#endif
456};
457
458#if WITH_EDITOR
459enum class EEditorDomainEnabled : uint8
460{
461 Disabled,
462 Utilities,
464};
470#endif
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
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
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
#define DECLARE_DELEGATE_RetVal(ReturnValueType, DelegateName)
Definition DelegateCombinations.h:41
#define DECLARE_MULTICAST_DELEGATE(DelegateName)
Definition DelegateCombinations.h:23
#define DECLARE_LOG_CATEGORY_EXTERN(CategoryName, DefaultVerbosity, CompileTimeVerbosity)
Definition LogMacros.h:361
const bool
Definition NetworkReplayStreaming.h:178
EPackageExtension
Definition PackagePath.h:39
EPackageFormat
Definition PackageResourceManager.h:45
EPackageExternalResource
Definition PackageResourceManager.h:107
COREUOBJECT_API EPackageFormat ExtensionToPackageFormat(EPackageExtension Extension)
Definition PackageResourceManager.cpp:279
EPackageSegment
Definition PackageSegment.h:13
uint8_t uint8
Definition binka_ue_file_header.h:8
Definition Archive.h:1208
Definition BulkDataCookedIndex.h:34
static COREUOBJECT_API const FBulkDataCookedIndex Default
Definition BulkDataCookedIndex.h:42
Definition NameTypes.h:617
Definition PackagePath.h:89
Definition PreloadableFile.h:50
Definition AsyncFileHandle.h:211
Definition AsyncFileHandle.h:31
Definition MappedFileHandle.h:115
Definition PackageResourceManager.h:120
virtual void IteratePackagesInLocalOnlyDirectory(FStringView RootDir, FPackageSegmentVisitor Callback)=0
COREUOBJECT_API bool DoesPackageExist(const FPackagePath &PackagePath, FPackagePath *OutUpdatedPath=nullptr)
Definition PackageResourceManager.cpp:70
virtual bool TryMatchCaseOnDisk(const FPackagePath &PackagePath, FPackagePath *OutNormalizedPath=nullptr)=0
virtual FOpenAsyncPackageResult OpenAsyncReadExternalResource(EPackageExternalResource ResourceType, FStringView Identifier)=0
virtual bool SupportsLocalOnlyPaths()=0
COREUOBJECT_API FOpenPackageResult OpenReadPackage(const FPackagePath &PackagePath, FPackagePath *OutUpdatedPath=nullptr)
Definition PackageResourceManager.cpp:80
virtual TUniquePtr< FArchive > OpenReadExternalResource(EPackageExternalResource ResourceType, FStringView Identifier)=0
virtual void IteratePackagesInPath(FStringView PackageMount, FStringView FileMount, FStringView RootRelPath, FPackageSegmentVisitor Callback)=0
static COREUOBJECT_API FSetPackageResourceManager & GetSetPackageResourceManagerDelegate()
Definition PackageResourceManager.cpp:30
virtual FOpenAsyncPackageResult OpenAsyncReadPackage(const FPackagePath &PackagePath, FBulkDataCookedIndex CookedIndex, EPackageSegment PackageSegment)=0
TFunctionRef< bool(const FPackagePath &PackagePath)> FPackagePathVisitor
Definition PackageResourceManager.h:274
static COREUOBJECT_API IPackageResourceManager & Get()
Definition PackageResourceManager.cpp:24
COREUOBJECT_API void IteratePackagesInPath(FStringView PackageMount, FStringView FileMount, FStringView RootRelPath, FPackagePathVisitor Callback)
Definition PackageResourceManager.cpp:110
TFunctionRef< bool(const FPackagePath &PackagePath, EPackageSegment PackageSegment, const FFileStatData &StatData)> FPackageSegmentStatVisitor
Definition PackageResourceManager.h:397
TFunctionRef< bool(const FPackagePath &PackagePath, EPackageSegment PackageSegment)> FPackageSegmentVisitor
Definition PackageResourceManager.h:395
virtual int64 FileSize(const FPackagePath &PackagePath, FBulkDataCookedIndex CookedIndex, EPackageSegment PackageSegment, FPackagePath *OutUpdatedPath=nullptr)=0
virtual void IteratePackagesStatInLocalOnlyDirectory(FStringView RootDir, FPackageSegmentStatVisitor Callback)=0
COREUOBJECT_API int64 FileSize(const FPackagePath &PackagePath, FPackagePath *OutUpdatedPath=nullptr)
Definition PackageResourceManager.cpp:75
COREUOBJECT_API void IteratePackagesInLocalOnlyDirectory(FStringView RootDir, FPackagePathVisitor Callback)
Definition PackageResourceManager.cpp:124
virtual void FindPackagesRecursive(TArray< TPair< FPackagePath, EPackageSegment > > &OutPackages, FStringView PackageMount, FStringView FileMount, FStringView RootRelPath, FStringView BasenameWildcard)=0
virtual FOpenPackageResult OpenReadPackage(const FPackagePath &PackagePath, FBulkDataCookedIndex CookedIndex, EPackageSegment PackageSegment, FPackagePath *OutUpdatedPath=nullptr)=0
static COREUOBJECT_API void Initialize()
Definition PackageResourceManager.cpp:40
COREUOBJECT_API IMappedFileHandle * OpenMappedHandleToPackage(const FPackagePath &PackagePath, FPackagePath *OutUpdatedPath=nullptr)
Definition PackageResourceManager.cpp:90
virtual void IteratePackagesStatInPath(FStringView PackageMount, FStringView FileMount, FStringView RootRelPath, FPackageSegmentStatVisitor Callback)=0
virtual bool SupportsPackageOnlyPaths()=0
COREUOBJECT_API FOpenAsyncPackageResult OpenAsyncReadPackage(const FPackagePath &PackagePath)
Definition PackageResourceManager.cpp:85
virtual bool DoesPackageExist(const FPackagePath &PackagePath, FBulkDataCookedIndex CookedIndex, EPackageSegment PackageSegment, FPackagePath *OutUpdatedPath=nullptr)=0
COREUOBJECT_API void FindPackagesRecursive(TArray< FPackagePath > &OutPackages, FStringView PackageMount, FStringView FileMount, FStringView RootRelPath, FStringView BasenameWildcard)
Definition PackageResourceManager.cpp:95
static COREUOBJECT_API FOnClearPackageResourceManager & GetOnClearPackageResourceManagerDelegate()
Definition PackageResourceManager.cpp:35
COREUOBJECT_API void IteratePackagesStatInPath(FStringView PackageMount, FStringView FileMount, FStringView RootRelPath, FPackagePathStatVisitor Callback)
Definition PackageResourceManager.cpp:137
COREUOBJECT_API void IteratePackagesStatInLocalOnlyDirectory(FStringView RootDir, FPackagePathStatVisitor Callback)
Definition PackageResourceManager.cpp:161
static COREUOBJECT_API void Shutdown()
Definition PackageResourceManager.cpp:62
virtual IMappedFileHandle * OpenMappedHandleToPackage(const FPackagePath &PackagePath, EPackageSegment PackageSegment, FPackagePath *OutUpdatedPath=nullptr)=0
TFunctionRef< bool(const FPackagePath &PackagePath, const FFileStatData &StatData)> FPackagePathStatVisitor
Definition PackageResourceManager.h:276
virtual ~IPackageResourceManager()=default
virtual bool DoesExternalResourceExist(EPackageExternalResource ResourceType, FStringView Identifier)=0
Definition Array.h:670
Definition AssetRegistryState.h:50
Definition UnrealString.h.inl:34
Definition SharedPointer.h:692
Definition UniquePtr.h:107
Definition Package.h:216
Definition GenericPlatformFile.h:195
Definition PackageResourceManager.h:75
FOpenAsyncPackageResult & operator=(const FOpenAsyncPackageResult &)=delete
COREUOBJECT_API ~FOpenAsyncPackageResult()
Definition PackageResourceManager.cpp:296
FOpenAsyncPackageResult(const FOpenAsyncPackageResult &)=delete
FOpenAsyncPackageResult & operator=(FOpenAsyncPackageResult &&)=default
EPackageFormat Format
Definition PackageResourceManager.h:82
FOpenAsyncPackageResult(FOpenAsyncPackageResult &&)=default
FOpenAsyncPackageResult()=default
TUniquePtr< IAsyncReadFileHandle > Handle
Definition PackageResourceManager.h:77
bool bNeedsEngineVersionChecks
Definition PackageResourceManager.h:88
void CopyMetaData(const FOpenPackageResult &Other)
Definition PackageResourceManager.h:99
Definition PackageResourceManager.h:52
EPackageFormat Format
Definition PackageResourceManager.h:59
void CopyMetaData(const FOpenPackageResult &Other)
Definition PackageResourceManager.h:67
TUniquePtr< FArchive > Archive
Definition PackageResourceManager.h:54
bool bNeedsEngineVersionChecks
Definition PackageResourceManager.h:65
Definition Tuple.h:652