UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
LargeWorldRenderPosition.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
6#include "Math/MathFwd.h"
7#include "Math/Matrix.h"
9#include "Math/Vector.h"
10#include "Math/Vector4.h"
12#include "Math/DoubleFloat.h"
13
14inline constexpr double UE_LWC_RENDER_TILE_SIZE = 2097152.0;
15
16template <typename TScalar>
18{
19private:
21
22public:
24 {
25 return static_cast<TScalar>(UE_LWC_RENDER_TILE_SIZE);
26 }
27
29
30 static TScalar MakeTile(double InValue)
31 {
32 return static_cast<TScalar>(FMath::FloorToDouble(InValue / GetTileSize() + 0.5));
33 }
34
36 {
37 return static_cast<TScalar>(FMath::FloorToDouble((InValue / GetTileSize()) * InQuantization + 0.5) / InQuantization);
38 }
39
41 {
43 }
44
49
57
58 template <typename TResult = float>
59 TResult GetTile() const { return static_cast<TResult>(Tile); }
60 template <typename TResult = float>
61 TResult GetOffset() const { return static_cast<TResult>(Offset); }
62 UE_DEPRECATED(5.2, "GetTileAsDouble is deprecated, please use GetTile<double>() instead.")
64 UE_DEPRECATED(5.2, "GetOffsetAsDouble is deprecated, please use GetOffset<double>() instead.")
66 double GetTileOffset() const { return static_cast<double>(Tile) * GetTileSize(); }
67 double GetAbsolute() const { return GetTileOffset() + Offset; }
68
71
72 template<typename TInputScalar = double>
76
78 {
79 // Tiles are centered on the origin
80 Tile = MakeTile(InAbsolute);
81 Offset = static_cast<TScalar>(InAbsolute - GetTileOffset());
82 Validate(InAbsolute);
83 }
84
85private:
86 CORE_API void Validate(double InAbsolute);
87
88 TScalar Tile;
89 TScalar Offset;
90};
92
93template<typename TScalar>
95{
96private:
99
100public:
101 template<typename TResult = float>
102 UE::Math::TVector<TResult> GetTile() const { return UE::Math::TVector<TResult>(static_cast<TResult>(Tile.X), static_cast<TResult>(Tile.Y), static_cast<TResult>(Tile.Z)); }
103
105 {
106 LWCScalarType X(Tile.X, Offset.X);
107 LWCScalarType Y(Tile.Y, Offset.Y);
108 LWCScalarType Z(Tile.Z, Offset.Z);
109 return FVector(X.GetTileOffset(), Y.GetTileOffset(), Z.GetTileOffset());
110 }
111
112 template<typename TResult = float>
113 UE::Math::TVector<TResult> GetOffset() const { return UE::Math::TVector<TResult>(static_cast<TResult>(Offset.X), static_cast<TResult>(Offset.Y), static_cast<TResult>(Offset.Z)); }
114
116 {
117 LWCScalarType X(Tile.X, Offset.X);
118 LWCScalarType Y(Tile.Y, Offset.Y);
119 LWCScalarType Z(Tile.Z, Offset.Z);
120 return FVector(X.GetAbsolute(), Y.GetAbsolute(), Z.GetAbsolute());
121 }
122
123 template<typename TInputScalar = double>
132
133 template<typename TInputScalar = double>
137
138 template<typename TInputScalar = double>
144
145 template<typename TInputScalar>
149
151 : Tile(0, 0, 0), Offset(0, 0, 0)
152 { }
153
154private:
155 VectorType Tile;
156 VectorType Offset;
157};
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
#define UE_FORCEINLINE_HINT
Definition Platform.h:723
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define X(Name, Desc)
Definition FormatStringSan.h:47
#define FVector
Definition IOSSystemIncludes.h:8
constexpr double UE_LWC_RENDER_TILE_SIZE
Definition LargeWorldRenderPosition.h:14
Definition AdvancedWidgetsModule.cpp:13
Definition LargeWorldRenderPosition.h:95
TLargeWorldRenderPosition(const UE::Math::TVector4< TInputScalar > &InWorldPosition)
Definition LargeWorldRenderPosition.h:134
FVector GetAbsolute() const
Definition LargeWorldRenderPosition.h:115
TLargeWorldRenderPosition(const UE::Math::TVector< TInputScalar > &InWorldPosition)
Definition LargeWorldRenderPosition.h:124
TLargeWorldRenderPosition()
Definition LargeWorldRenderPosition.h:150
TLargeWorldRenderPosition(const UE::Math::TVector< TInputScalar > &InTilePosition, const UE::Math::TVector< TInputScalar > &InRelativePosition)
Definition LargeWorldRenderPosition.h:139
UE::Math::TVector< TResult > GetTile() const
Definition LargeWorldRenderPosition.h:102
FVector GetTileOffset() const
Definition LargeWorldRenderPosition.h:104
TLargeWorldRenderPosition(const TLargeWorldRenderPosition< TInputScalar > &In)
Definition LargeWorldRenderPosition.h:146
UE::Math::TVector< TResult > GetOffset() const
Definition LargeWorldRenderPosition.h:113
Definition LargeWorldRenderPosition.h:18
static TScalar MakeQuantizedTile(double InValue, double InQuantization)
Definition LargeWorldRenderPosition.h:35
static VectorType MakeQuantizedTile(const FVector &InValue, double InQuantization)
Definition LargeWorldRenderPosition.h:45
static CORE_API FMatrix44f MakeClampedToRelativeWorldMatrix(const FVector Origin, const FMatrix &ToWorld)
Definition LargeWorldRenderPosition.cpp:87
static CORE_API FMatrix44f SafeCastMatrix(const FMatrix &Matrix)
Definition LargeWorldRenderPosition.cpp:57
static UE_FORCEINLINE_HINT TScalar GetTileSize()
Definition LargeWorldRenderPosition.h:23
static CORE_API FMatrix44f MakeFromRelativeWorldMatrix(const FVector Origin, const FMatrix &FromWorld)
Definition LargeWorldRenderPosition.cpp:75
static CORE_API FMatrix44f MakeToRelativeWorldMatrix(const FVector Origin, const FMatrix &ToWorld)
Definition LargeWorldRenderPosition.cpp:63
static VectorType MakeTile(const FVector &InValue)
Definition LargeWorldRenderPosition.h:40
TResult GetTile() const
Definition LargeWorldRenderPosition.h:59
static CORE_API FMatrix MakeFromRelativeWorldMatrixDouble(const FVector Origin, const FMatrix &FromWorld)
Definition LargeWorldRenderPosition.cpp:81
static CORE_API FMatrix MakeClampedToRelativeWorldMatrixDouble(const FVector Origin, const FMatrix &ToWorld)
Definition LargeWorldRenderPosition.cpp:93
TLargeWorldRenderScalar()
Definition LargeWorldRenderPosition.h:69
double GetOffsetAsDouble() const
Definition LargeWorldRenderPosition.h:65
double GetTileOffset() const
Definition LargeWorldRenderPosition.h:66
TResult GetOffset() const
Definition LargeWorldRenderPosition.h:61
double GetTileAsDouble() const
Definition LargeWorldRenderPosition.h:63
TLargeWorldRenderScalar(const TLargeWorldRenderScalar< TInputScalar > &In)
Definition LargeWorldRenderPosition.h:73
double GetAbsolute() const
Definition LargeWorldRenderPosition.h:67
TLargeWorldRenderScalar(TScalar InTile, TScalar InOffset)
Definition LargeWorldRenderPosition.h:70
static TScalar MakeTile(double InValue)
Definition LargeWorldRenderPosition.h:30
TLargeWorldRenderScalar(double InAbsolute)
Definition LargeWorldRenderPosition.h:77
static CORE_API FMatrix MakeToRelativeWorldMatrixDouble(const FVector Origin, const FMatrix &ToWorld)
Definition LargeWorldRenderPosition.cpp:69
static CORE_API FVector3f GetTileFor(FVector InPosition)
Definition LargeWorldRenderPosition.cpp:25
Definition Vector4.h:30
T Z
Definition Vector.h:68
T Y
Definition Vector.h:65
T X
Definition Vector.h:62