UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
PackageReload.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"
9#include "CoreMinimal.h"
10#include "HAL/Platform.h"
11#include "HAL/PlatformCrt.h"
14#include "UObject/Object.h"
15#include "UObject/ObjectPtr.h"
20
22class UPackage;
23
45
64
67{
68public:
70 : OldPackage(InOldPackage)
71 , NewPackage(InNewPackage)
72 , RepointedObjects(ObjectPtrWrap(MoveTemp(InRepointedObjects)))
73 , ObjectReferencers()
74 {
75 }
76
81 {
82 return OldPackage;
83 }
84
89 {
90 return NewPackage;
91 }
92
97 {
98 return ObjectPtrDecay(RepointedObjects);
99 }
100
105 template <typename InObjectType, typename OutObjectType>
107 {
108 static_assert(TPointerIsConvertibleFromTo<InObjectType, const volatile UObject>::Value && TPointerIsConvertibleFromTo<OutObjectType, const volatile UObject>::Value, "FPackageReloadedEvent::GetRepointedObject can only be used with UObject types");
109 return GetRepointedObjectInternal((const UObject*)InObject, (const UObject*&)OutRepointedObject);
110 }
111
116 template <typename ObjectType>
117 inline bool RepointObject(ObjectType*& Object) const
118 {
119 static_assert(TPointerIsConvertibleFromTo<ObjectType, const volatile UObject>::Value, "FPackageReloadedEvent::RepointObject can only be used with UObject types");
120 return GetRepointedObjectInternal((const UObject*)Object, (const UObject*&)Object);
121 }
122
128 {
129 return ObjectReferencers;
130 }
131
136 {
137 ObjectReferencers.AddUnique(InObject);
138 }
139
141 {
142 Collector.AddReferencedObjects(RepointedObjects);
143 }
144
145private:
146 bool GetRepointedObjectInternal(const UObject* InObject, const UObject*& OutRepointedObject) const
147 {
148 if (InObject && RepointedObjects.Contains(InObject))
149 {
150 OutRepointedObject = RepointedObjects[InObject];
151 return true;
152 }
153 return false;
154 }
155
156 const UPackage* OldPackage;
157 const UPackage* NewPackage;
159 TArray<TWeakObjectPtr<UObject>> ObjectReferencers;
160};
161
168
178
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
#define UE_FORCEINLINE_HINT
Definition Platform.h:723
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
@ LOAD_None
No flags.
Definition ObjectMacros.h:69
const U & ObjectPtrDecay(const T &Value)
Definition ObjectPtr.h:1744
U & ObjectPtrWrap(T &Value)
Definition ObjectPtr.h:1755
COREUOBJECT_API void ReloadPackages(const TArrayView< FReloadPackageData > &InPackagesToReload, TArray< UPackage * > &OutReloadedPackages, const int32 InNumPackagesPerBatch=1)
Definition PackageReload.cpp:614
COREUOBJECT_API UPackage * ReloadPackage(UPackage *InPackageToReload, const uint32 InLoadFlags)
Definition PackageReload.cpp:604
EPackageReloadPhase
Definition PackageReload.h:48
COREUOBJECT_API void SortPackagesForReload(TArray< UPackage * > &PackagesToReload)
Definition PackageReload.cpp:571
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition PackageReload.h:67
UE_FORCEINLINE_HINT const UPackage * GetNewPackage() const
Definition PackageReload.h:88
bool RepointObject(ObjectType *&Object) const
Definition PackageReload.h:117
UE_FORCEINLINE_HINT const UPackage * GetOldPackage() const
Definition PackageReload.h:80
FPackageReloadedEvent(const UPackage *InOldPackage, const UPackage *InNewPackage, TMap< UObject *, UObject * > InRepointedObjects)
Definition PackageReload.h:69
UE_FORCEINLINE_HINT const TMap< UObject *, UObject * > & GetRepointedObjects() const
Definition PackageReload.h:96
UE_FORCEINLINE_HINT void AddObjectReferencer(UObject *InObject)
Definition PackageReload.h:135
UE_FORCEINLINE_HINT const TArray< TWeakObjectPtr< UObject > > & GetObjectReferencers() const
Definition PackageReload.h:127
void AddReferencedObjects(FReferenceCollector &Collector)
Definition PackageReload.h:140
bool GetRepointedObject(InObjectType *InObject, OutObjectType *&OutRepointedObject) const
Definition PackageReload.h:106
Definition UObjectGlobals.h:2492
Definition AssetRegistryInterface.h:454
Definition ArrayView.h:139
Definition Array.h:670
UE_FORCEINLINE_HINT SizeType AddUnique(ElementType &&Item)
Definition Array.h:2993
Definition UnrealString.h.inl:34
Definition Object.h:95
Definition Package.h:216
Definition PackageReload.h:26
UPackage * PackageToReload
Definition PackageReload.h:40
FReloadPackageData(UPackage *InPackageToReload, const uint32 InLoadFlags)
Definition PackageReload.h:33
FReloadPackageData()
Definition PackageReload.h:27
uint32 LoadFlags
Definition PackageReload.h:43
Definition ObjectPtr.h:488
Definition PointerIsConvertibleFromTo.h:60