UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
WorldPartitionRuntimeHash.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
4#include "CoreMinimal.h"
6#include "UObject/Object.h"
8#include "Misc/Optional.h"
9#include "Engine/World.h"
10#include "WorldPartition.h"
19#if WITH_EDITOR
20#include "CookPackageSplitter.h"
22#endif
23#include "WorldPartitionRuntimeHash.generated.h"
24
29class UExternalDataLayerInstance;
30
33
36
37UENUM()
46
47USTRUCT()
49{
51
52 UPROPERTY()
53 FString PackageName;
54
55 UPROPERTY()
56 FSoftObjectPath WorldAsset;
57};
58
59UCLASS(Abstract, MinimalAPI)
61{
63
65
66public:
67 //~ Begin UObject Interface
68 virtual class UWorld* GetWorld() const override final { return GetOwningWorld(); }
69#if DO_CHECK
70 virtual void BeginDestroy() override;
71#endif
72 //~ End UObject Interface
73
74 UWorld* GetOwningWorld() const;
75 UWorld* GetOuterWorld() const { return OuterWorld.Get(); }
76
77 ENGINE_API void ForEachStreamingCells(TFunctionRef<void(UWorldPartitionRuntimeCell&)> Func);
78
79 ENGINE_API void OnStreamingObjectLoaded(UWorld* InjectedWorld);
80
81 // ~Being IDataLayerInstanceProvider
82 ENGINE_API virtual TSet<TObjectPtr<UDataLayerInstance>>& GetDataLayerInstances() override;
84 virtual const UExternalDataLayerInstance* GetRootExternalDataLayerInstance() const override { return RootExternalDataLayerInstance; }
85 // ~End IDataLayerInstanceProvider
86 UExternalDataLayerInstance* GetRootExternalDataLayerInstance() { return const_cast<UExternalDataLayerInstance*>(RootExternalDataLayerInstance.Get()); }
87 ENGINE_API const UObject* GetLevelMountPointContextObject() const;
88
89#if WITH_EDITOR
90 UE_DEPRECATED(5.4, "PopulateGeneratorPackageForCook is depreacted and was replaced by OnPopulateGeneratorPackageForCook")
92
93 //~Begin IWorldPartitionCookPackageObject interface
94 virtual bool IsLevelPackage() const override { return false; }
95 virtual const UExternalDataLayerAsset* GetExternalDataLayerAsset() const override { return ExternalDataLayerAsset; }
96 ENGINE_API virtual FString GetPackageNameToCreate() const override;
97 virtual bool OnPrepareGeneratorPackageForCook(TArray<UPackage*>& OutModifiedPackages) override { return true; }
101 //~End IWorldPartitionCookPackageObject interface
102
103 const static TCHAR* GetCookedExternalStreamingObjectName() { return TEXT("RuntimeHashExternalStreamingObjectBase"); }
104 ENGINE_API const FString& GetPackagePathToCreate() const;
105 ENGINE_API void SetPackagePathToCreate(const FString& InPath);
106
107protected:
108 virtual void DumpStateLog(FHierarchicalLogArchive& Ar);
111#endif
112
113public:
116
117 UPROPERTY()
119
122
125
128
129 UPROPERTY()
130 TSet<TObjectPtr<UDataLayerInstance>> DataLayerInstances;
131
132 UPROPERTY()
133 TObjectPtr<const UExternalDataLayerInstance> RootExternalDataLayerInstance;
134
135#if WITH_EDITORONLY_DATA
138
140 TObjectPtr<const UExternalDataLayerAsset> ExternalDataLayerAsset;
141#endif
142
143#if DO_CHECK
145#endif
146
147#if WITH_EDITOR
148 FString PackagePathToCreate;
149#endif
150
151 friend class UWorldPartition;
153};
154
156{
157public:
160
161private:
162 TMap<const UWorldPartitionRuntimeCell*, double> CellToSourceMinSqrDistances;
163};
164
166{
167public:
170 bool IsValid() const { return bIsValid; }
171
172private:
175
176 int32 GetResolvingDataLayersRuntimeStateEpoch() const { check(IsValid()); return DataLayerEffectiveStates->GetUpdateEpoch(); }
177 int32 GetUpdateStreamingStateEpoch() const { check(IsValid()); return UpdateStreamingStateEpoch; }
178 ENGINE_API EDataLayerRuntimeState ResolveDataLayerRuntimeState(const FDataLayerInstanceNames& InDataLayerNames) const;
179
180 bool bIsValid;
181 EWorldPartitionDataLayersLogicOperator DataLayersLogicOperator;
182 const FWorldDataLayersEffectiveStates* DataLayerEffectiveStates;
183 int32 UpdateStreamingStateEpoch;
184
188};
189
190UCLASS(Abstract, Config=Engine, AutoExpandCategories=(WorldPartition), Within=WorldPartition, MinimalAPI)
192{
194
197
198#if WITH_EDITOR
199 virtual void SetDefaultValues() {}
200 virtual bool SupportsHLODs() const { return false; }
203 virtual bool SetupHLODActors(const IStreamingGenerationContext* StreamingGenerationContext, const UWorldPartition::FSetupHLODActorsParams& Params) const { return false; }
204 virtual FName GetDefaultGrid() const { return NAME_None; }
205 virtual bool IsValidGrid(FName GridName, const UClass* ActorClass) const { return false; }
206 virtual bool IsValidHLODLayer(FName GridName, const FSoftObjectPath& HLODLayerPath) const { return false; }
207 virtual void DrawPreview() const {}
208
209 virtual bool HasStreamingContent() const { return false; }
211
212 UE_DEPRECATED(5.5, "StoreStreamingContentToExternalStreamingObject(FName) is deprecated, use StoreStreamingContentToExternalStreamingObject() instead")
214
215 ENGINE_API virtual void FlushStreamingContent();
218
219 //~Begin Deprecation
222 UE_DEPRECATED(5.4, "Use FlushStreamingContent instead.")
224 UE_DEPRECATED(5.4, "PrepareGeneratorPackageForCook is deprecated.")
226 UE_DEPRECATED(5.4, "PopulateGeneratorPackageForCook is deprecated.")
228 UE_DEPRECATED(5.4, "PopulateGeneratedPackageForCook is deprecated.")
230 UE_DEPRECATED(5.4, "GetCellForPackage is deprecated.")
232 //~End Deprecation
233#endif
234
235 virtual void OnBeginPlay() {}
236
237#if WITH_EDITOR
238 // PIE/Game methods
239 ENGINE_API virtual void PrepareEditorGameWorld();
240 ENGINE_API virtual void ShutdownEditorGameWorld();
241
242protected:
246#endif
247
248public:
250 {
251 public:
253 void Reset() { Cells.Reset(); }
254 int32 Num() const { return Cells.Num(); }
256
257 //~Begin Deprecation
258 UE_DEPRECATED(5.5, "Use version that takes FWorldPartitionStreamingContext instead.")
260 //~End Deprecation
261
262 private:
264 };
265
266 // Streaming interface
267 virtual void ForEachStreamingCells(TFunctionRef<bool(const UWorldPartitionRuntimeCell*)> Func) const {}
270 // Computes a hash value of all runtime hash specific dependencies that affects the update of the streaming
271 virtual uint32 ComputeUpdateStreamingHash() const { return 0; }
272
273 ENGINE_API bool IsCellRelevantFor(bool bClientOnlyVisible) const;
274
275 UE_DEPRECATED(5.6, "Use version that has also flags if streaming should block (bOutShouldBlock) instead.")
276 ENGINE_API EWorldPartitionStreamingPerformance GetStreamingPerformance(const TSet<const UWorldPartitionRuntimeCell*>& CellsToActivate) const;
277 ENGINE_API EWorldPartitionStreamingPerformance GetStreamingPerformance(const TSet<const UWorldPartitionRuntimeCell*>& CellsToActivate, bool& bOutShouldBlock) const;
278
279 ENGINE_API virtual bool IsExternalStreamingObjectInjected(URuntimeHashExternalStreamingObjectBase* InExternalStreamingObject) const;
280 ENGINE_API virtual bool InjectExternalStreamingObject(URuntimeHashExternalStreamingObjectBase* ExternalStreamingObject);
281 ENGINE_API virtual bool RemoveExternalStreamingObject(URuntimeHashExternalStreamingObjectBase* ExternalStreamingObject);
282
283 virtual bool Draw2D(FWorldPartitionDraw2DContext& DrawContext) const { return false; }
284 virtual void Draw3D(const TArray<FWorldPartitionStreamingSource>& Sources) const {}
285 virtual bool ContainsRuntimeHash(const FString& Name) const { return false; }
286 virtual bool IsStreaming3D() const { return true; }
287 virtual bool GetShouldMergeStreamingSourceInfo() const { return false; }
288 virtual const FGuid* GetStandaloneHLODActorSourceCellOverride(const FGuid& InActorGuid) const { return nullptr; }
289 virtual const FGuid* GetCustomHLODActorSourceCellOverride(const FGuid& InActorGuid) const { return nullptr; }
290
292 ENGINE_API UWorldPartitionRuntimeCell* CreateRuntimeCell(UClass* CellClass, UClass* CellDataClass, const FString& CellName, const FString& CellInstanceSuffix, UObject* InOuter = nullptr);
293
294protected:
295 UE_DEPRECATED(5.6, "Use version that has also flags if streaming should block (bOutShouldBlock) instead.")
296 virtual EWorldPartitionStreamingPerformance GetStreamingPerformanceForCell(const UWorldPartitionRuntimeCell* Cell) const;
297 virtual EWorldPartitionStreamingPerformance GetStreamingPerformanceForCell(const UWorldPartitionRuntimeCell* Cell, bool& bOutShouldBlock) const;
298
299#if WITH_EDITORONLY_DATA
301 {
303 : Reference(InReference)
304 , Actor(InActor)
305 {}
306
309 };
310
312
314#endif
315
316protected:
317#if WITH_EDITOR
321#endif
322
324
325 virtual bool SupportsWorldAssetStreaming(const FName& InTargetGrid) { return false; }
327 virtual bool UnregisterWorldAssetStreaming(const FGuid& InWorldAssetStreamingGuid) { return false; }
329
330#if WITH_EDITOR
331private:
333 friend class UWorldPartition;
334
337
338public:
341
342 static ENGINE_API void ExecutePreSetupHLODActors(const UWorldPartition* InWorldPartition, const UWorldPartition::FSetupHLODActorsParams& InParams);
343 static ENGINE_API void ExecutePostSetupHLODActors(const UWorldPartition* InWorldPartition, const UWorldPartition::FSetupHLODActorsParams& InParams);
344 virtual void PreSetupHLODActors(const UWorldPartition* InWorldPartition, const UWorldPartition::FSetupHLODActorsParams& InParams) const {}
345 virtual void PostSetupHLODActors(const UWorldPartition* InWorldPartition, const UWorldPartition::FSetupHLODActorsParams& InParams) const {}
346#endif
347};
OODEFFUNC typedef void(OODLE_CALLBACK t_fp_OodleCore_Plugin_Free)(void *ptr)
#define check(expr)
Definition AssertionMacros.h:314
#define PURE_VIRTUAL(func,...)
Definition CoreMiscDefines.h:103
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
EDataLayerRuntimeState
Definition DataLayerInstance.h:26
const bool
Definition NetworkReplayStreaming.h:178
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define GENERATED_UCLASS_BODY(...)
Definition ObjectMacros.h:768
#define UCLASS(...)
Definition ObjectMacros.h:776
#define UENUM(...)
Definition ObjectMacros.h:749
#define USTRUCT(...)
Definition ObjectMacros.h:746
EWorldPartitionStreamingPerformance
Definition WorldPartitionRuntimeHash.h:39
ENGINE_API const TCHAR * EnumToString(EWorldPartitionStreamingPerformance InState)
Definition WorldPartitionRuntimeHash.cpp:53
ENGINE_API float GBlockOnSlowStreamingRatio
Definition WorldPartitionRuntimeHash.cpp:41
ENGINE_API float GSlowStreamingWarningFactor
Definition WorldPartitionRuntimeHash.cpp:35
ENGINE_API float GBlockOnSlowStreamingWarningFactor
Definition WorldPartitionRuntimeHash.cpp:47
ENGINE_API float GSlowStreamingRatio
Definition WorldPartitionRuntimeHash.cpp:29
EStreamingSourceTargetState
Definition WorldPartitionStreamingSource.h:218
EWorldPartitionDataLayersLogicOperator
Definition WorldPartition.h:89
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition Actor.h:257
Definition Engine.Build.cs:7
Definition NameTypes.h:617
Definition UnrealType.h:3087
Definition WorldPartitionStreamingSource.h:11
Definition WorldPartitionDraw2DContext.h:117
Definition DataLayerInstanceProviderInterface.h:19
Definition WorldPartitionCookPackageInterface.h:19
Definition Array.h:670
Definition AssetRegistryState.h:50
Definition AndroidPlatformMisc.h:14
Definition UnrealString.h.inl:34
Definition SubclassOf.h:30
Definition Class.h:3793
Definition ExternalDataLayerAsset.h:16
Definition ExternalDataLayerManager.h:27
Definition Object.h:95
Definition Package.h:216
Definition WorldPartitionRuntimeHash.h:61
virtual const TSet< TObjectPtr< UDataLayerInstance > > & GetDataLayerInstances() const override
Definition WorldPartitionRuntimeHash.h:83
TMap< FName, FName > SubObjectsToCellRemapping
Definition WorldPartitionRuntimeHash.h:115
UExternalDataLayerInstance * GetRootExternalDataLayerInstance()
Definition WorldPartitionRuntimeHash.h:86
virtual const UExternalDataLayerInstance * GetRootExternalDataLayerInstance() const override
Definition WorldPartitionRuntimeHash.h:84
UWorld * GetOuterWorld() const
Definition WorldPartitionRuntimeHash.h:75
Definition RuntimePartition.h:21
Definition WorldPartitionRuntimeCellData.h:16
Definition WorldPartitionRuntimeCell.h:236
Definition WorldPartitionRuntimeHash.h:250
void Reset()
Definition WorldPartitionRuntimeHash.h:253
TSet< const UWorldPartitionRuntimeCell * > & GetCells()
Definition WorldPartitionRuntimeHash.h:255
int32 Num() const
Definition WorldPartitionRuntimeHash.h:254
Definition WorldPartitionRuntimeHash.h:192
virtual TArray< UWorldPartitionRuntimeCell * > GetWorldAssetStreamingCells(const FGuid &InWorldAssetStreamingGuid)
Definition WorldPartitionRuntimeHash.h:328
virtual void ForEachStreamingCellsQuery(const FWorldPartitionStreamingQuerySource &QuerySource, TFunctionRef< bool(const UWorldPartitionRuntimeCell *)> Func, FWorldPartitionQueryCache *QueryCache=nullptr) const
Definition WorldPartitionRuntimeHash.h:268
virtual bool GetShouldMergeStreamingSourceInfo() const
Definition WorldPartitionRuntimeHash.h:287
virtual uint32 ComputeUpdateStreamingHash() const
Definition WorldPartitionRuntimeHash.h:271
TSet< TWeakObjectPtr< URuntimeHashExternalStreamingObjectBase > > InjectedExternalStreamingObjects
Definition WorldPartitionRuntimeHash.h:323
virtual const FGuid * GetStandaloneHLODActorSourceCellOverride(const FGuid &InActorGuid) const
Definition WorldPartitionRuntimeHash.h:288
virtual void Draw3D(const TArray< FWorldPartitionStreamingSource > &Sources) const
Definition WorldPartitionRuntimeHash.h:284
virtual const FGuid * GetCustomHLODActorSourceCellOverride(const FGuid &InActorGuid) const
Definition WorldPartitionRuntimeHash.h:289
virtual void ForEachStreamingCellsSources(const TArray< FWorldPartitionStreamingSource > &Sources, TFunctionRef< bool(const UWorldPartitionRuntimeCell *, EStreamingSourceTargetState)> Func, const FWorldPartitionStreamingContext &Context=FWorldPartitionStreamingContext()) const
Definition WorldPartitionRuntimeHash.h:269
virtual void ForEachStreamingCells(TFunctionRef< bool(const UWorldPartitionRuntimeCell *)> Func) const
Definition WorldPartitionRuntimeHash.h:267
virtual bool ContainsRuntimeHash(const FString &Name) const
Definition WorldPartitionRuntimeHash.h:285
virtual bool IsStreaming3D() const
Definition WorldPartitionRuntimeHash.h:286
virtual bool UnregisterWorldAssetStreaming(const FGuid &InWorldAssetStreamingGuid)
Definition WorldPartitionRuntimeHash.h:327
virtual FGuid RegisterWorldAssetStreaming(const UWorldPartition::FRegisterWorldAssetStreamingParams &InParams)
Definition WorldPartitionRuntimeHash.h:326
virtual bool SupportsWorldAssetStreaming(const FName &InTargetGrid)
Definition WorldPartitionRuntimeHash.h:325
Definition WorldPartitionStreamingPolicy.h:94
Definition WorldPartition.h:142
Definition World.h:918
@ Reference
Definition Protocol6.h:40
Definition WorldPartition.cpp:74
Definition DataLayerInstanceNames.h:10
Definition Guid.h:109
Definition HierarchicalLogArchive.h:14
Definition SoftObjectPath.h:56
Definition WorldDataLayers.h:51
int32 GetUpdateEpoch() const
Definition WorldDataLayers.h:56
Definition WorldPartitionCookPackage.h:20
Definition WorldPartitionRuntimeHash.h:156
void AddCellInfo(const UWorldPartitionRuntimeCell *Cell, const FSphericalSector &SourceShape)
Definition WorldPartitionRuntimeHash.cpp:776
double GetCellMinSquareDist(const UWorldPartitionRuntimeCell *Cell) const
Definition WorldPartitionRuntimeHash.cpp:789
Definition WorldPartitionRuntimeHash.h:49
Definition WorldPartitionRuntimeContainerResolving.h:65
Definition WorldPartitionRuntimeHash.h:166
bool IsValid() const
Definition WorldPartitionRuntimeHash.h:170
ENGINE_API FWorldPartitionStreamingContext()
Definition WorldPartitionRuntimeHash.cpp:805
Definition WorldPartitionStreamingSource.h:240
Definition WorldPartitionStreamingSource.h:344
Definition ObjectPtr.h:488
Definition Optional.h:131
Definition SoftObjectPtr.h:174
Definition WeakObjectPtrTemplates.h:25