UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
WorldPartitionRuntimeHashSet.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
4#include "CoreMinimal.h"
8#include "WorldPartitionRuntimeHashSet.generated.h"
9
10#define UE_API ENGINE_API
11
12class UHLODLayer;
15
16using FStaticSpatialIndexSorter = FStaticSpatialIndex::TNodeSorterHilbert<FStaticSpatialIndex::FSpatialIndexProfile3D, 65536>;
18
19using FStaticSpatialIndexSorter2D = FStaticSpatialIndex::TNodeSorterHilbert<FStaticSpatialIndex::FSpatialIndexProfile2D, 65536>;
21
23{
24 struct FStreamingDescriptor;
25};
26
28USTRUCT()
30{
32
33
34 UPROPERTY(EditAnywhere, Category = RuntimeSettings)
36
37#if WITH_EDITORONLY_DATA
39 UPROPERTY(EditAnywhere, Category = RuntimeSettings, DisplayName = "HLOD Layers To Include")
41
43 UPROPERTY(Transient, VisibleAnywhere, Category = RuntimeSettings)
45#endif
46
47 UPROPERTY(EditAnywhere, Category = RuntimeSettings, Instanced, Meta = (NoResetToDefault))
49
51 UPROPERTY()
52 bool bIsSpatiallyLoaded = true;
53};
54
56USTRUCT()
58{
60
61
62 UPROPERTY(EditAnywhere, Category = RuntimeSettings, Meta = (EditCondition = "MainLayer != nullptr", HideEditConditionToggle))
64
66 //UE_DEPRECATED(5.7, "This property isn't used anymore")
67 UPROPERTY()
69
71 UPROPERTY(EditAnywhere, Category = RuntimeSettings, Instanced, Meta = (DisplayName = "Main Partition", NoResetToDefault))
73
75 UPROPERTY(EditAnywhere, Category = RuntimeSettings, Meta = (DisplayName = "HLOD Partitions", EditCondition = "MainLayer != nullptr", HideEditConditionToggle, TitleProperty="RowDisplayName"))
77
78#if WITH_EDITOR
80#endif
81};
82
83USTRUCT()
85{
87
90 friend UE::Private::WorldPartition::FStreamingDescriptor;
91
92 void CreatePartitionsSpatialIndex() const;
93 void DestroyPartitionsSpatialIndex() const;
94
95 ENGINE_API int32 GetLoadingRange() const;
96
99 UPROPERTY()
101
102#if WITH_EDITORONLY_DATA
103 UPROPERTY()
104 FString DebugName;
105#endif
106
107 UPROPERTY()
108 int32 LoadingRange = 0;
109
110 UPROPERTY()
112
113 UPROPERTY()
115
116 // Transient
120};
121
122template<>
127
128UCLASS(MinimalAPI)
130{
132
133#if WITH_EDITOR
134 UE_API virtual void DumpStateLog(FHierarchicalLogArchive& Ar) override;
135#endif
136
137public:
138 //~ Begin UObject Interface
139 static UE_API void AddReferencedObjects(UObject* InThis, FReferenceCollector& Collector);
140 //~ End UObject Interface
141
142 UE_API void CreatePartitionsSpatialIndex() const;
143 UE_API void DestroyPartitionsSpatialIndex() const;
144
145 UPROPERTY()
147};
148
149UCLASS(MinimalAPI)
151{
153
154 friend UE::Private::WorldPartition::FStreamingDescriptor;
155 friend class ULevelPackageDiskSizeMetric;
157
158 //~ Begin UObject Interface
159#if WITH_EDITOR
160 ENGINE_API virtual void PostEditChangeChainProperty(FPropertyChangedChainEvent& PropertyChangedEvent) override;
161 ENGINE_API virtual void PostDuplicate(EDuplicateMode::Type DuplicateMode) override;
162 ENGINE_API virtual void PostLoad() override;
163#endif
164 //~ End UObject Interface
165
166public:
167 ENGINE_API virtual bool Draw2D(FWorldPartitionDraw2DContext& DrawContext) const override;
168 ENGINE_API virtual void Draw3D(const TArray<FWorldPartitionStreamingSource>& Sources) const override;
169 ENGINE_API virtual const FGuid* GetStandaloneHLODActorSourceCellOverride(const FGuid& InActorGuid) const override;
170 ENGINE_API virtual const FGuid* GetCustomHLODActorSourceCellOverride(const FGuid& InActorGuid) const override;
171 ENGINE_API void ForEachHLODLayer(TFunctionRef<bool(FName, FName, int32)> Func) const; // RuntimePartitionName, HLODSetupName, HLODSetupIndex
173
174#if WITH_EDITOR
175 // Streaming generation interface
176 ENGINE_API virtual void SetDefaultValues() override;
177 ENGINE_API virtual bool SupportsHLODs() const override;
178 ENGINE_API virtual bool SetupHLODActors(const IStreamingGenerationContext* StreamingGenerationContext, const UWorldPartition::FSetupHLODActorsParams& Params) const override;
180 ENGINE_API virtual FName GetDefaultGrid() const override;
181 ENGINE_API virtual bool IsValidGrid(FName GridName, const UClass* ActorClass) const override;
182 ENGINE_API virtual bool IsValidHLODLayer(FName GridName, const FSoftObjectPath& HLODLayerPath) const override;
183 ENGINE_API virtual void DumpStateLog(FHierarchicalLogArchive& Ar) const override;
184#endif
185
186 // Helpers
188
189#if WITH_EDITOR
190 // Conversions
192#endif
193
194 // External streaming object interface
195#if WITH_EDITOR
196 virtual TSubclassOf<URuntimeHashExternalStreamingObjectBase> GetExternalStreamingObjectClass() const override { return URuntimeHashSetExternalStreamingObject::StaticClass(); }
197#endif
198 ENGINE_API virtual bool InjectExternalStreamingObject(URuntimeHashExternalStreamingObjectBase* ExternalStreamingObject) override;
199 ENGINE_API virtual bool RemoveExternalStreamingObject(URuntimeHashExternalStreamingObjectBase* ExternalStreamingObject) override;
200
201 // Streaming interface
202 ENGINE_API virtual void ForEachStreamingCells(TFunctionRef<bool(const UWorldPartitionRuntimeCell*)> Func) const override;
205
206protected:
207 ENGINE_API virtual bool SupportsWorldAssetStreaming(const FName& InTargetGrid) override;
211
212private:
213 ENGINE_API virtual void OnBeginPlay() override;
214
215#if WITH_EDITOR
216 ENGINE_API virtual bool HasStreamingContent() const override;
218 ENGINE_API virtual void FlushStreamingContent() override;
219
222
223 struct FCellUniqueId
224 {
225 FString Name;
226 FString InstanceSuffix;
227 FGuid Guid;
228 };
229
230 FCellUniqueId GetCellUniqueId(const URuntimePartition::FCellDescInstance& InCellDescInstance) const;
231#endif
232
233 ENGINE_API void ForEachStreamingData(TFunctionRef<bool(const FRuntimePartitionStreamingData&)> Func) const;
234
235 ENGINE_API void UpdateRuntimeDataGridMap();
236
237public:
238 ENGINE_API const URuntimePartition* ResolveRuntimePartition(FName GridName, bool bMainPartitionLayer = false) const;
239
241
242private:
243 void FixupHLODSetup(FRuntimePartitionDesc& RuntimePartition);
244
245 void RemoveIrrelevantCells(FRuntimePartitionStreamingData& StreamingData);
246
248 UPROPERTY(EditAnywhere, Category = RuntimeSettings, Meta = (TitleProperty = "Name"))
249 TArray<FRuntimePartitionDesc> RuntimePartitions;
250
251 UPROPERTY()
252 TArray<FRuntimePartitionStreamingData> RuntimeStreamingData;
253
255 TMap<FGuid, TObjectPtr<URuntimeHashSetExternalStreamingObject>> WorldAssetStreamingObjects;
256
257 UPROPERTY()
258 TMap<FGuid, FGuid> StandaloneHLODActorToSourceCellsMap;
259
260 UPROPERTY()
261 TMap<FGuid, FGuid> CustomHLODActorToSourceCellsMap;
262
263 // Optimized data
264 TMap<FName, TArray<const FRuntimePartitionStreamingData*>> RuntimeSpatiallyLoadedDataGridMap;
265 TArray<const FRuntimePartitionStreamingData*> RuntimeNonSpatiallyLoadedDataGridList;
266
267 friend class FWorldPartitionRuntimeHashSetDetails;
268};
269
270#undef UE_API
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
return true
Definition ExternalRpcRegistry.cpp:601
#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 USTRUCT(...)
Definition ObjectMacros.h:746
#define GENERATED_USTRUCT_BODY(...)
Definition ObjectMacros.h:767
FStaticSpatialIndex::TNodeSorterHilbert< FStaticSpatialIndex::FSpatialIndexProfile2D, 65536 > FStaticSpatialIndexSorter2D
Definition WorldPartitionRuntimeHashSet.h:19
FStaticSpatialIndex::TNodeSorterHilbert< FStaticSpatialIndex::FSpatialIndexProfile3D, 65536 > FStaticSpatialIndexSorter
Definition WorldPartitionRuntimeHashSet.h:16
#define UE_API
Definition WorldPartitionRuntimeHashSet.h:10
EStreamingSourceTargetState
Definition WorldPartitionStreamingSource.h:218
Definition NameTypes.h:617
Definition UObjectGlobals.h:2492
Definition WorldPartitionDraw2DContext.h:117
Definition Array.h:670
Definition AssetRegistryState.h:50
Definition UnrealString.h.inl:34
Definition StaticSpatialIndex.h:841
Definition SubclassOf.h:30
Definition UniquePtr.h:107
Definition Class.h:3793
Definition HLODLayer.h:43
Definition Object.h:95
virtual void PostDuplicate(bool bDuplicateForPIE)
Definition Object.h:538
Definition WorldPartitionRuntimeHash.h:61
Definition WorldPartitionRuntimeHashSet.h:130
Definition RuntimePartitionPersistent.h:10
Definition RuntimePartition.h:21
Definition WorldPartitionRuntimeCell.h:236
Definition WorldPartitionRuntimeHashSet.h:151
ENGINE_API int32 ComputeHLODHierarchyDepth() const
ENGINE_API void ForEachHLODLayer(TFunctionRef< bool(FName, FName, int32)> Func) const
const URuntimePartition * ResolveRuntimePartitionForHLODLayer(FName GridName, const FSoftObjectPath &HLODLayerPath) const
Definition WorldPartitionRuntimeHash.h:192
virtual const FGuid * GetStandaloneHLODActorSourceCellOverride(const FGuid &InActorGuid) const
Definition WorldPartitionRuntimeHash.h:288
virtual const FGuid * GetCustomHLODActorSourceCellOverride(const FGuid &InActorGuid) const
Definition WorldPartitionRuntimeHash.h:289
Definition WorldPartitionRuntimeSpatialHash.h:314
virtual ENGINE_API FGuid RegisterWorldAssetStreaming(const UWorldPartition::FRegisterWorldAssetStreamingParams &InParams) override
Definition WorldPartitionRuntimeSpatialHash.cpp:2016
virtual ENGINE_API bool InjectExternalStreamingObject(URuntimeHashExternalStreamingObjectBase *ExternalStreamingObject) override
Definition WorldPartitionRuntimeSpatialHash.cpp:1827
virtual ENGINE_API void ForEachStreamingCellsSources(const TArray< FWorldPartitionStreamingSource > &Sources, TFunctionRef< bool(const UWorldPartitionRuntimeCell *, EStreamingSourceTargetState)> Func, const FWorldPartitionStreamingContext &Context=FWorldPartitionStreamingContext()) const override
Definition WorldPartitionRuntimeSpatialHash.cpp:1777
virtual ENGINE_API bool RemoveExternalStreamingObject(URuntimeHashExternalStreamingObjectBase *ExternalStreamingObject) override
Definition WorldPartitionRuntimeSpatialHash.cpp:1863
virtual ENGINE_API bool UnregisterWorldAssetStreaming(const FGuid &InWorldAssetStreamingGuid) override
Definition WorldPartitionRuntimeSpatialHash.cpp:2205
virtual ENGINE_API void ForEachStreamingCells(TFunctionRef< bool(const UWorldPartitionRuntimeCell *)> Func) const override
Definition WorldPartitionRuntimeSpatialHash.cpp:1732
virtual ENGINE_API bool SupportsWorldAssetStreaming(const FName &InTargetGrid) override
Definition WorldPartitionRuntimeSpatialHash.cpp:2011
virtual ENGINE_API TArray< UWorldPartitionRuntimeCell * > GetWorldAssetStreamingCells(const FGuid &InWorldAssetStreamingGuid) override
Definition WorldPartitionRuntimeSpatialHash.cpp:2250
virtual ENGINE_API void ForEachStreamingCellsQuery(const FWorldPartitionStreamingQuerySource &QuerySource, TFunctionRef< bool(const UWorldPartitionRuntimeCell *)> Func, FWorldPartitionQueryCache *QueryCache=nullptr) const override
Definition WorldPartitionRuntimeSpatialHash.cpp:1743
Definition WorldPartitionStreamingPolicy.h:94
Type
Definition UObjectGlobals.h:128
Definition OverriddenPropertySet.cpp:45
Definition RuntimePartitionLHGrid.h:12
Definition AdvancedWidgetsModule.cpp:13
Definition WorldPartition.cpp:74
Definition Guid.h:109
Definition HierarchicalLogArchive.h:14
Definition UnrealType.h:7001
Definition WorldPartitionRuntimeHashSet.h:58
Definition WorldPartitionRuntimeHashSet.h:30
Definition WorldPartitionRuntimeHashSet.h:85
Definition SoftObjectPath.h:56
Definition StaticSpatialIndex.h:15
Definition StaticSpatialIndex.h:24
Definition WorldPartitionRuntimeHash.h:156
Definition WorldPartitionRuntimeHash.h:166
Definition WorldPartitionStreamingSource.h:240
Definition ObjectPtr.h:488
Definition StructOpsTypeTraits.h:11
Definition StructOpsTypeTraits.h:46