6#include "Containers/Array.h"
36#if WITH_EDITORONLY_DATA
44#include "Package.generated.h"
137 UE_DEPRECATED(5.1,
"CookedHash is now available through PackageWriter->CommitPackage instead. For waiting on completion in the non-cook case, use UPackage::WaitForAsyncFileWrites.")
178 UE_DEPRECATED(5.6,
"Returning the LinkerSave for comparison is no longer used. Contact Epic if you need this functionality.")
198 return ::IsSuccessful(
Result);
236#if UE_WITH_CONSTINIT_UOBJECT
237 explicit consteval UPackage(UE::CodeGen::ConstInit::FPackageParams
InParams)
243 , bHasBeenFullyLoaded(
false)
244 , bCanBeImported(
false)
283 UE_DEPRECATED(5.0,
"Use PreSavePackageWithContextEvent instead.")
311#if WITH_EDITORONLY_DATA
328#if WITH_EDITORONLY_DATA
332 bool bIsCookedForEditor{
false };
353#if WITH_EDITORONLY_DATA
355 FGuid PersistentGuid;
364 std::atomic<uint32> PackageFlagsPrivate;
374#if !UE_BUILD_SHIPPING
379 float LoadTime = 0.0f;
382 struct FAdditionalInfo
411 UE_DEPRECATED(5.6,
"UMetaData was replaced by FMetaData, this member is only used for migrating t he existing data, do not use.")
415#if WITH_EDITORONLY_DATA
439#if WITH_EDITORONLY_DATA
440 UE_DEPRECATED(5.5,
"No longer used; skiponlyeditoronly is used instead and tracks editoronly references via savepackage results.")
443 UE_DEPRECATED(5.5,
"No longer used; skiponlyeditoronly is used instead and tracks editoronly references via savepackage results.")
468 virtual bool IsAsset()
const override {
return false; }
486 friend class FUnsafeLinkerLoad;
495 AdditionalInfo->LinkerLoad =
InLinker;
500 AdditionalInfo->LinkerLoad =
InLinker;
523 AdditionalInfo->LinkerLicenseeVersion =
InVersion;
528 AdditionalInfo->LinkerLicenseeVersion =
InVersion;
539 else if (!
InVersions.GetAllVersions().IsEmpty())
567#if WITH_EDITORONLY_DATA
568 return PIEInstanceID;
580#if WITH_EDITORONLY_DATA
587 return AdditionalInfo.
IsValid() ? AdditionalInfo->LinkerLoad :
nullptr;
607 void EmptyLinkerCustomVersion()
611 AdditionalInfo->LinkerCustomVersion.Empty();
621#if !UE_BUILD_SHIPPING
633#if !UE_BUILD_SHIPPING
679 bHasBeenFullyLoaded =
false;
689 bHasBeenFullyLoaded =
true;
730 return bCanBeImported;
798 uint32 OldFlags = GetPackageFlags();
806 if (AutoRTFM::IsClosed())
810 OldFlags = PackageFlagsPrivate.exchange(
NewFlags, std::memory_order_relaxed);
814 AutoRTFM::OnAbort([
this, OldFlags]
816 PackageFlagsPrivate.store(OldFlags, std::memory_order_relaxed);
821 PackageFlagsPrivate.store(
NewFlags, std::memory_order_relaxed);
832 uint32 OldFlags = GetPackageFlags();
841 if (AutoRTFM::IsClosed())
845 OldFlags = PackageFlagsPrivate.fetch_or(
FlagsToSet, std::memory_order_relaxed);
849 AutoRTFM::OnAbort([
this, OldFlags,
FlagsToSet]
858 PackageFlagsPrivate.fetch_and(
MaskFlags, std::memory_order_relaxed);
863 PackageFlagsPrivate.fetch_or(
FlagsToSet, std::memory_order_relaxed);
874 uint32 OldFlags = GetPackageFlags();
883 if (AutoRTFM::IsClosed())
887 OldFlags = PackageFlagsPrivate.fetch_and(~
FlagsToClear, std::memory_order_relaxed);
898 PackageFlagsPrivate.fetch_or(
MaskFlags, std::memory_order_relaxed);
903 PackageFlagsPrivate.fetch_and(~
FlagsToClear, std::memory_order_relaxed);
942 Result = PackageFlagsPrivate.load(std::memory_order_relaxed);
1012#if WITH_EDITORONLY_DATA
1016 return ThumbnailMap.IsValid();
1023 return *ThumbnailMap;
1030 return *ThumbnailMap;
1042 return PersistentGuid;
1070 return AdditionalInfo.
IsValid() ? AdditionalInfo->WorldTileInfo.
Get() :
nullptr;
1091 return AdditionalInfo.
IsValid() ? AdditionalInfo->FileSize : 0;
1097#if WITH_EDITORONLY_DATA
1108#if WITH_EDITORONLY_DATA
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define NULL
Definition oodle2base.h:134
#define check(expr)
Definition AssertionMacros.h:314
virtual bool IsPostLoadThreadSafe() const override
@ INDEX_NONE
Definition CoreMiscDefines.h:150
#define UE_INTERNAL
Definition CoreMiscDefines.h:345
#define WITH_EDITORONLY_DATA
Definition CoreMiscDefines.h:24
#define WITH_METADATA
Definition CoreMiscDefines.h:32
@ ConstEval
Definition CoreMiscDefines.h:161
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define DECLARE_MULTICAST_DELEGATE_FourParams(DelegateName, Param1Type, Param2Type, Param3Type, Param4Type)
Definition DelegateCombinations.h:76
#define LLM_SCOPE_BYNAME(...)
Definition LowLevelMemTracker.h:1098
const bool
Definition NetworkReplayStreaming.h:178
uint32 ERenameFlags
Definition ObjectMacros.h:2302
#define REN_None
Definition ObjectMacros.h:2305
@ PKG_RequiresLocalizationGather
Set if the package contains any data to be gathered by localization.
Definition ObjectMacros.h:148
@ PKG_LoadUncooked
This package must be loaded uncooked from IoStore/ZenStore (set only when cooking,...
Definition ObjectMacros.h:149
@ PKG_ContainsMap
Set if the package contains a ULevel/ UWorld object.
Definition ObjectMacros.h:147
@ PKG_AccessSpecifierEpicInternal
Objects in this package can only be referenced in a different plugin or mount point by Epic.
Definition ObjectMacros.h:142
@ PKG_NotExternallyReferenceable
Objects in this package cannot be referenced in a different plugin or mount point (i....
Definition ObjectMacros.h:141
@ PKG_NewlyCreated
Newly created package, not saved yet. In editor only.
Definition ObjectMacros.h:131
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
EObjectFlags
Definition ObjectMacros.h:552
@ RF_NoFlags
No flags, used to avoid a cast.
Definition ObjectMacros.h:555
@ RF_WasLoaded
Flagged on UObjects that were loaded.
Definition ObjectMacros.h:584
#define UCLASS(...)
Definition ObjectMacros.h:776
const FPackageFileVersion GPackageFileUEVersion(VER_LATEST_ENGINE_UE4, EUnrealEngineObjectUE5Version::AUTOMATIC_VERSION)
const int32 GPackageFileLicenseeUEVersion
Definition ObjectVersion.cpp:22
EAssetAccessSpecifier
Definition Package.h:204
bool IsSuccessful(ESavePackageResult Result)
Definition Package.h:101
ESavePackageResult
Definition Package.h:74
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
if(Failed) console_printf("Failed.\n")
Definition Engine.Build.cs:7
Definition Archive.h:1208
UE_FORCEINLINE_HINT bool IsCooking() const
Definition Archive.h:641
UE_FORCEINLINE_HINT bool IsSaving() const
Definition Archive.h:248
Definition CustomVersion.h:111
Definition LinkerLoad.h:124
Definition LinkerSave.h:48
Definition NameTypes.h:617
Definition UObjectGlobals.h:1292
static COREUOBJECT_API FObjectInitializer & Get()
Definition UObjectGlobals.cpp:5001
Definition ObjectSaveContext.h:459
Definition ObjectSaveContext.h:244
Definition UnrealType.h:3087
Definition OutputDevice.h:133
Definition PackageId.h:19
static CORE_API FPackageId FromName(const FName &Name)
Definition PackageId.cpp:26
Definition PackagePath.h:89
COREUOBJECT_API FName GetPackageFName() const
Definition PackagePath.cpp:1151
Definition UObjectGlobals.h:2492
Definition SaveContext.h:588
Definition SavePackage.h:226
Definition ObjectMacros.h:180
Definition WorldCompositionUtility.h:98
Definition ArrayView.h:139
Definition UnrealString.h.inl:34
bool IsValid() const
Definition UniquePtr.h:280
UE_FORCEINLINE_HINT T * Get() const
Definition UniquePtr.h:324
uint8 bHasBeenFullyLoaded
Definition Package.h:318
UE_FORCEINLINE_HINT void SetPackageId(FPackageId InPackageId)
Definition Package.h:1120
bool ContainsMap() const
Definition Package.h:746
void SetPackageFlags(uint32 FlagsToSet)
Definition Package.h:830
float GetLoadTime() const
Definition Package.h:631
bool SetAssetAccessSpecifier(const EAssetAccessSpecifier InAccessSpecifier)
Definition Package.h:987
void ThisContainsMap()
Definition Package.h:736
int32 GetPIEInstanceID() const
Definition Package.h:565
void SetPackageFlagsTo(uint32 NewFlags)
Definition Package.h:796
FWorldTileInfo * GetWorldTileInfo() const
Definition Package.h:1068
UE_FORCEINLINE_HINT bool HasAnyPackageFlags(uint32 FlagsToCheck) const
Definition Package.h:915
static COREUOBJECT_API bool SavePackage(UPackage *InOuter, UObject *InAsset, const TCHAR *Filename, const FSavePackageArgs &SaveArgs)
UE_FORCEINLINE_HINT bool HasAllPackagesFlags(uint32 FlagsToCheck) const
Definition Package.h:926
bool CanBeImported() const
Definition Package.h:728
virtual bool NeedsLoadForClient() const override
Definition Package.h:434
virtual bool NeedsLoadForServer() const override
Definition Package.h:435
static COREUOBJECT_API ESavePackageResult SaveConcurrent(TArrayView< FPackageSaveInfo > InPackages, const FSavePackageArgs &SaveArgs, TArray< FSavePackageResultStruct > &OutResults)
void SetWorldTileInfo(TUniquePtr< FWorldTileInfo > InWorldTileInfo)
Definition Package.h:1074
UE_FORCEINLINE_HINT FPackageId GetPackageIdToLoad() const
Definition Package.h:1126
uint8 bCanBeImported
Definition Package.h:326
DECLARE_MULTICAST_DELEGATE_TwoParams(FPreSavePackageWithContext, class UPackage *, FObjectPreSaveContext)
void MarkAsFullyLoaded()
Definition Package.h:687
void ClearDirtyFlag()
Definition Package.h:643
void SetCanBeImportedFlag(bool bInCanBeImported)
Definition Package.h:718
UPackage(const FObjectInitializer &ObjectInitializer=FObjectInitializer::Get())
Definition Package.h:229
void ThisRequiresLocalizationGather(bool Value)
Definition Package.h:754
UE_FORCEINLINE_HINT void SetIsExternallyReferenceable(bool bValue)
Definition Package.h:961
UE_FORCEINLINE_HINT FPackageId GetPackageId() const
Definition Package.h:1114
DECLARE_MULTICAST_DELEGATE_OneParam(FPreSavePackage, class UPackage *)
static COREUOBJECT_API FSavePackageResultStruct Save(UPackage *InOuter, UObject *InAsset, const TCHAR *Filename, const FSavePackageArgs &SaveArgs)
void SetPIEInstanceID(int32 InPIEInstanceID)
Definition Package.h:578
virtual bool IsNameStableForNetworking() const override
Definition Package.h:431
DECLARE_MULTICAST_DELEGATE_TwoParams(FOnPackageSaved, const FString &, UObject *)
const FCustomVersionContainer & GetLinkerCustomVersions() const
Definition Package.h:600
UE_FORCEINLINE_HINT int64 GetFileSize() const
Definition Package.h:1089
EAssetAccessSpecifier GetAssetAccessSpecifier() const
Definition Package.h:967
void ThisShouldLoadUncooked(const FArchive &Ar)
Definition Package.h:782
const FPackageFileVersion & GetLinkerPackageVersion() const
Definition Package.h:590
UE_FORCEINLINE_HINT void SetChunkIDs(const TArray< int32 > &InChunkIDs)
Definition Package.h:1106
DECLARE_MULTICAST_DELEGATE_TwoParams(FOnPackageMarkedDirty, class UPackage *, bool)
int32 GetLinkerLicenseeVersion() const
Definition Package.h:595
virtual bool IsAsset() const override
Definition Package.h:468
FLinkerLoad * GetLinker() const
Definition Package.h:585
UE_FORCEINLINE_HINT bool IsExternallyReferenceable() const
Definition Package.h:951
DECLARE_MULTICAST_DELEGATE_ThreeParams(FOnPackageSavedWithContext, const FString &, UPackage *, FObjectPostSaveContext)
void ClearPackageFlags(uint32 FlagsToClear)
Definition Package.h:872
bool RequiresLocalizationGather() const
Definition Package.h:771
uint32 GetPackageFlags() const
Definition Package.h:936
DECLARE_MULTICAST_DELEGATE_OneParam(FOnPackageDirtyStateChanged, class UPackage *)
const TArray< int32 > & GetChunkIDs() const
Definition Package.h:1095
void SetLoadTime(float InLoadTime)
Definition Package.h:619
bool IsDirty() const
Definition Package.h:658
FDelegates Delegates
Definition NavigationSystemBase.cpp:234
Definition CookOnTheFly.h:19
Definition PackageHarvester.cpp:207
Definition AdvancedWidgetsModule.cpp:13
@ false
Definition radaudio_common.h:23
Definition AssetData.h:162
Definition AsyncLoading2.cpp:3560
Definition SecureHash.h:133
Definition ObjectVersion.h:762
Definition SavePackage.h:52
Definition SavePackage.h:63
TArray< FName > SoftPackageReferences
Definition Package.h:149
TFuture< FMD5Hash > CookedHash
Definition Package.h:138
uint32 SerializedPackageFlags
Definition Package.h:141
int64 TotalFileSize
Definition Package.h:135
ESavePackageResult Result
Definition Package.h:132
bool IsSuccessful() const
Definition Package.h:196
TArray< FAssetData > SavedAssets
Definition Package.h:146
TArray< FName > UntrackedSoftPackageReferences
Definition Package.h:150
TArray< FName > ImportPackages
Definition Package.h:148
bool operator!=(const FSavePackageResultStruct &Other) const
Definition Package.h:190
COREUOBJECT_API FSavePackageResultStruct()
Definition Package.cpp:95
TPimplPtr< FLinkerSave > LinkerSave
Definition Package.h:144
bool bTargetIsSerialize
Definition Package.h:122
UObject * TargetObject
Definition Package.h:120
bool bSourceIsSerialize
Definition Package.h:121
UObject * SourceObject
Definition Package.h:119