UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
WorldComposition.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 "WorldComposition.generated.h"
9
10class ULevel;
11class ULevelStreaming;
12
17{
22
23 // Long package name
25 // Found LOD levels since last rescan
27 // Tile information
29 // Timestamp when we have changed streaming level state
31
33 {
34 Ar << D.PackageName << D.Info << D.LODPackageNames;
35 return Ar;
36 }
37
40 {
45
46 bool Matches( const FWorldCompositionTile& Candidate ) const
47 {
48 return Candidate.PackageName == PackageName;
49 }
50
52 };
53};
54
64
71UCLASS(config=Engine, MinimalAPI)
73{
75
77
79 ENGINE_API void UpdateStreamingState();
80
82 ENGINE_API void UpdateStreamingState(const FVector& InLocation);
83 ENGINE_API void UpdateStreamingState(const FVector* InLocation, int32 Num);
84 ENGINE_API void UpdateStreamingStateCinematic(const FVector* InLocation, int32 Num);
85
86#if WITH_EDITOR
91
93#endif// WITH_EDITOR
94
99 ENGINE_API void EvaluateWorldOriginLocation(const FVector& ViewLocation);
100
104
106 ENGINE_API bool IsDistanceDependentLevel(FName PackageName) const;
107
109 ENGINE_API FString GetWorldRoot() const;
110
112 ENGINE_API UWorld* GetWorld() const override final;
113
115 static ENGINE_API void OnLevelPostLoad(ULevel* InLevel);
116
118 ENGINE_API void OnLevelPreSave(ULevel* InLevel);
119
121 ENGINE_API void OnLevelPostSave(ULevel* InLevel);
122
124 ENGINE_API void OnLevelAddedToWorld(ULevel* InLevel);
125
127 ENGINE_API void OnLevelRemovedFromWorld(ULevel* InLevel);
128
130 ENGINE_API FIntVector GetLevelOffset(ULevel* InLevel) const;
131
133 ENGINE_API FBox GetLevelBounds(ULevel* InLevel) const;
134
136 ENGINE_API void Rescan();
137
139 ENGINE_API void ReinitializeForPIE();
140
142 ENGINE_API bool DoesTileExists(const FName& TilePackageName) const;
143
145 ENGINE_API FTilesList& GetTilesList();
146
147#if WITH_EDITOR
149 ENGINE_API FWorldTileInfo GetTileInfo(const FName& InPackageName) const;
150
153
156
159
160 // Event to enable/disable world composition in the world
163
164 // Event when world composition was successfully enabled/disabled in the world
167
168#endif //WITH_EDITOR
169
170private:
171 // UObject interface
172 ENGINE_API virtual void PostInitProperties() override;
173 ENGINE_API virtual void Serialize(FArchive& Ar) override;
174 ENGINE_API virtual void PostDuplicate(bool bDuplicateForPIE) override;
175 ENGINE_API virtual void PostLoad() override;
176 // UObject interface
177
179 void PopulateStreamingLevels();
180
182 void CaclulateTilesAbsolutePositions();
183
185 void Reset();
186
188 ULevelStreaming* CreateStreamingLevel(const FWorldCompositionTile& Info) const;
189
191 void FixupForPIE(int32 PIEInstanceID);
192
197 int32 FindTileIndexByName(const FName& InPackageName) const;
198 FWorldCompositionTile* FindTileByName(const FName& InPackageName) const;
199
201 bool IsDistanceDependentLevel(int32 TileIdx) const;
202
204 bool CommitTileStreamingState(UWorld* PersistentWorld, int32 TileIdx, bool bShouldBeLoaded, bool bShouldBeVisible, bool bShouldBlock, int32 LODIdx);
205
206public:
207#if WITH_EDITOR
208 UE_DEPRECATED(4.26, "No longer used; use bTemporarilyDisableOriginTracking instead.")
210
211 // Hack for a World Browser to be able to temporarily show hidden levels
212 // regardless of current world origin and without offsetting them temporarily
214#endif //WITH_EDITOR
215
216private:
217 // Path to current world composition (long PackageName)
218 FString WorldRoot;
219
220 // List of all tiles participating in the world composition
221 FTilesList Tiles;
222
223public:
224 // Streaming level objects for each tile
227
228 // Time threshold between tile streaming state changes
229 UPROPERTY(config)
230 double TilesStreamingTimeThreshold;
231
232 // Whether all distance dependent tiles should be loaded and visible during cinematic
233 UPROPERTY(config)
234 bool bLoadAllTilesDuringCinematic;
235
236 // Whether to rebase origin in 3D space, otherwise only on XY plane
237 UPROPERTY(config)
238 bool bRebaseOriginIn3DSpace;
239
240#if WITH_EDITORONLY_DATA
241 // Whether all tiles locations are locked
242 UPROPERTY()
244#endif
245
246 // Maximum distance to current view point where we should initiate origin rebasing
247 UPROPERTY(config)
248 float RebaseOriginDistance;
249};
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
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
#define DECLARE_DELEGATE_RetVal_TwoParams(ReturnValueType, DelegateName, Param1Type, Param2Type)
Definition DelegateCombinations.h:63
#define DECLARE_MULTICAST_DELEGATE_OneParam(DelegateName, Param1Type)
Definition DelegateCombinations.h:49
@ Num
Definition MetalRHIPrivate.h:234
const bool
Definition NetworkReplayStreaming.h:178
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_UCLASS_BODY(...)
Definition ObjectMacros.h:768
#define UCLASS(...)
Definition ObjectMacros.h:776
USkinnedMeshComponent float
Definition SkinnedMeshComponent.h:60
Definition Engine.Build.cs:7
Definition Archive.h:1208
Definition NameTypes.h:617
Definition WorldCompositionUtility.h:98
Definition Array.h:670
Definition LevelStreaming.h:139
Definition Level.h:423
Definition Object.h:95
Definition WorldComposition.h:73
Definition World.h:918
Definition WorldComposition.h:59
int32 TileIdx
Definition WorldComposition.h:60
ULevelStreaming * StreamingLevel
Definition WorldComposition.h:61
int32 LODIndex
Definition WorldComposition.h:62
Definition WorldComposition.h:40
FPackageNameMatcher(const FName &InPackageName)
Definition WorldComposition.h:41
bool Matches(const FWorldCompositionTile &Candidate) const
Definition WorldComposition.h:46
const FName & PackageName
Definition WorldComposition.h:51
Definition WorldComposition.h:17
FWorldCompositionTile()
Definition WorldComposition.h:18
TArray< FName > LODPackageNames
Definition WorldComposition.h:26
FName PackageName
Definition WorldComposition.h:24
friend FArchive & operator<<(FArchive &Ar, FWorldCompositionTile &D)
Definition WorldComposition.h:32
FWorldTileInfo Info
Definition WorldComposition.h:28
double StreamingLevelStateChangeTime
Definition WorldComposition.h:30
Definition ObjectPtr.h:488