UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
FilePackageStore.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
6#include "IO/PackageId.h"
8#include "Misc/PackagePath.h"
9
13
15{
16
18{
19 bool Contains(uint32 Offset) const { return Offset >= Begin && Offset <= End; }
20
23};
24
33
48
49// Memory-optimized immutable FPackageId -> FEntryHandle hash map
51{
52public:
53 FPackageIdMap() = default;
58
59 void Empty();
60 const FEntryHandle* Find(FPackageId Key) const;
61 uint32 GetCapacity() const { return MaxValues; }
63 class FConstIterator;
64
65private:
66 uint32 MaxValues = 0;
67 uint32 SlotBits = 0;
68 uint32* Slots = nullptr;
69 uint16* Values = nullptr;
70
71 uint32 NumSlots() const
72 {
73 return SlotBits ? (1u << SlotBits) : 0u;
74 }
75};
76
82
83} // namespace UE::FilePackageStorePrivate
84
85/*
86 * File/container based package store.
87 */
89{
90public:
92 virtual void BeginRead() override;
93 virtual void EndRead() override;
97
100
101private:
102 using FMountedDataRange = UE::FilePackageStorePrivate::FMountedDataRange;
103 using FMountedContainer = UE::FilePackageStorePrivate::FMountedContainer;
105 using FPackageIdMap = UE::FilePackageStorePrivate::FPackageIdMap;
106 using FUncookedPackage = UE::FilePackageStorePrivate::FUncookedPackage;
107
108 FRWLock EntriesLock;
109 FCriticalSection UpdateLock;
110 TArray<FMountedContainer> MountedContainers;
111 TAtomic<uint32> NextSequence{ 0 };
112
113 FPackageIdMap PackageEntries;
114 TArray<uint32> EntryData;
116 TMap<FPackageId, FName> LocalizedPackages;
117 bool bNeedsContainerUpdate = false;
118
119#if WITH_EDITOR
127 bool bNeedsUncookedPackagesUpdate = false;
128
129 uint64 AddUncookedPackagesFromRoot(const FString& RootPath);
131#endif //if WITH_EDITOR
132
133 void Update();
134 FEntryHandle AddNewEntryData(const FFilePackageStoreEntry& Entry, const FFilePackageStoreEntrySoftReferences* SoftReferences);
135 FEntryHandle AddOldEntryData(FEntryHandle OldHandle, TConstArrayView<uint32> OldEntryData);
136 TConstArrayView<FPackageId> GetImportedPackages(FEntryHandle Handle);
137 TConstArrayView<FSHAHash> GetShaderHashes(FEntryHandle Handle);
138 TConstArrayView<uint32> GetSoftReferenceIndices(FEntryHandle Handle);
139};
FPlatformTypes::uint64 uint64
A 64-bit unsigned integer.
Definition Platform.h:1117
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
EPackageStoreEntryStatus
Definition PackageStore.h:38
EPackageExtension
Definition PackagePath.h:39
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
uint32 Offset
Definition VulkanMemory.cpp:4033
uint16_t uint16
Definition binka_ue_file_header.h:7
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition IDelegateInstance.h:14
Definition FilePackageStore.h:89
virtual void EndRead() override
Definition FilePackageStore.cpp:327
virtual EPackageStoreEntryStatus GetPackageStoreEntry(FPackageId PackageId, FName PackageName, FPackageStoreEntry &OutPackageStoreEntry) override
Definition FilePackageStore.cpp:332
virtual bool GetPackageRedirectInfo(FPackageId PackageId, FName &OutSourcePackageName, FPackageId &OutRedirectedToPackageId) override
Definition FilePackageStore.cpp:358
virtual void OnMounted(TSharedRef< const FPackageStoreBackendContext >) override
Definition FilePackageStore.h:91
virtual void BeginRead() override
Definition FilePackageStore.cpp:318
virtual TConstArrayView< uint32 > GetSoftReferences(FPackageId PackageId, TConstArrayView< FPackageId > &OutPackageIds) override
Definition FilePackageStore.cpp:391
Definition NameTypes.h:617
Definition PackageId.h:19
Definition PackageStore.h:189
Definition Array.h:670
Definition Atomic.h:538
Definition UnrealString.h.inl:34
Definition SharedPointer.h:153
Definition CriticalSection.h:14
Definition FilePackageStore.h:51
void Empty()
Definition FilePackageStore.cpp:149
~FPackageIdMap()
Definition FilePackageStore.h:57
FPackageIdMap & operator=(FPackageIdMap &&O)
Definition FilePackageStore.cpp:138
uint64 GetAllocatedSize() const
Definition FilePackageStore.cpp:198
uint32 GetCapacity() const
Definition FilePackageStore.h:61
FPackageIdMap(FPackageIdMap &&O)
Definition FilePackageStore.h:55
Definition FilePackageStore.cpp:18
Definition IoContainerHeader.h:67
Definition IoContainerHeader.h:44
Definition IoContainerHeader.h:110
static UE_FORCEINLINE_HINT void * Memzero(void *Dest, SIZE_T Count)
Definition UnrealMemory.h:131
Definition PackageStore.h:50
Definition Tuple.h:652
Definition FilePackageStore.h:35
static constexpr uint32 OffsetBits
Definition FilePackageStore.h:36
uint32 Offset
Definition FilePackageStore.h:38
uint32 HasPackageIds
Definition FilePackageStore.h:39
FEntryHandle()
Definition FilePackageStore.h:43
uint32 HasSoftRefs
Definition FilePackageStore.h:41
uint32 HasShaderMaps
Definition FilePackageStore.h:40
Definition FilePackageStore.h:26
uint32 Sequence
Definition FilePackageStore.h:29
FMountedDataRange EntryDataRange
Definition FilePackageStore.h:31
uint32 NumMountedPackages
Definition FilePackageStore.h:30
FIoContainerHeader * ContainerHeader
Definition FilePackageStore.h:27
uint32 Order
Definition FilePackageStore.h:28
Definition FilePackageStore.h:18
uint32 Begin
Definition FilePackageStore.h:21
bool Contains(uint32 Offset) const
Definition FilePackageStore.h:19
uint32 End
Definition FilePackageStore.h:22
Definition FilePackageStore.h:78
FName PackageName
Definition FilePackageStore.h:79
EPackageExtension HeaderExtension
Definition FilePackageStore.h:80