UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
StairGenerator.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2#pragma once
3
4#include "Containers/Array.h"
6#include "IndexTypes.h"
7#include "Math/MathFwd.h"
8#include "Math/Vector.h"
9#include "Math/Vector2D.h"
10
11
12namespace UE
13{
14namespace Geometry
15{
16
17
22{
23public:
26
28 bool bPolygroupPerQuad = false;
29
31 float StepWidth = 150.0f;
32
34 float StepHeight = 20.0f;
35
37 int NumSteps = 8;
38
39 enum class ESide
40 {
41 Right, // +Y
42 Left, // -Y
43 Front, // -X
44 Top, // +Z
45 Back, // +X
46 Bottom // -Z
47 };
48
49public:
51
54
55private:
57 GEOMETRYCORE_API FMeshShapeGenerator& GenerateSolidStairs();
58
60 GEOMETRYCORE_API FMeshShapeGenerator& GenerateFloatingStairs();
61
68 GEOMETRYCORE_API ESide FaceToSide(int FaceId);
69
70protected:
71 enum class EStairStyle
72 {
73 Solid, // Each step is supported by the floor.
74 Floating // Each step only supported by previous step.
75 };
78
79protected:
85
88 int NumQuads = 0;
90 int NumVerts = 0;
91 int NumAttrs = 0;
92
96
104 int LastFaceId = 0;
105
106protected:
108 GEOMETRYCORE_API virtual void ResetData();
109
129
139 virtual FVector3f GenerateNormal(ESide Side, int VertexId) = 0;
140
156 virtual FVector2f GenerateUV(ESide Side, int Step, int VertexId, float UVScale) = 0;
157
162 virtual float GetMaxDimension() = 0;
163};
164
169{
170public:
172 float StepDepth = 30.0f;
173
174public:
179 virtual ~FLinearStairGenerator() override
180 {
181 }
182
183protected:
185
186protected:
187 GEOMETRYCORE_API virtual FVector3d GenerateVertex(ESide Side, int VertexColumn, int VertexRow) override;
188 GEOMETRYCORE_API virtual FVector3f GenerateNormal(ESide Side, int VertexId) override;
189 GEOMETRYCORE_API virtual FVector2f GenerateUV(ESide Side, int Step, int VertexId, float UVScale) override;
190 GEOMETRYCORE_API virtual float GetMaxDimension() override;
191};
192
197{
198public:
203 virtual ~FFloatingStairGenerator() override
204 {
205 }
206
207protected:
209
210protected:
211 GEOMETRYCORE_API virtual FVector3d GenerateVertex(ESide Side, int VertexColumn, int VertexRow) override;
212 GEOMETRYCORE_API virtual FVector2f GenerateUV(ESide Side, int Step, int VertexId, float UVScale) override;
213};
214
219{
220public:
222 float InnerRadius = 150.0f;
223
225 float CurveAngle = 90.0f;
226
227public:
232 virtual ~FCurvedStairGenerator() override
233 {
234 }
235
236protected:
238
240 bool bIsClockwise = true;
241 float CurveRadians = 0.0f;
243 float OuterRadius = 0.0f;
244 float RadiusRatio = 1.0f;
246
247protected:
248 GEOMETRYCORE_API virtual void ResetData() override;
249 GEOMETRYCORE_API virtual FVector3d GenerateVertex(ESide Side, int VertexColumn, int VertexRow) override;
250 GEOMETRYCORE_API virtual FVector3f GenerateNormal(ESide Side, int VertexId) override;
251 GEOMETRYCORE_API virtual FVector2f GenerateUV(ESide Side, int Step, int VertexId, float UVScale) override;
252 GEOMETRYCORE_API virtual float GetMaxDimension() override;
253};
254
255
260{
261public:
266 virtual ~FSpiralStairGenerator() override
267 {
268 }
269
270protected:
272
273protected:
274 GEOMETRYCORE_API virtual FVector3d GenerateVertex(ESide Side, int VertexColumn, int VertexRow) override;
275 GEOMETRYCORE_API virtual FVector2f GenerateUV(ESide Side, int Step, int VertexId, float UVScale) override;
276};
277
278} // end namespace UE::Geometry
279} // end namespace UE
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
Definition Array.h:670
Definition StairGenerator.h:219
float OuterRadius
Definition StairGenerator.h:243
FVector3f BackNormal
Definition StairGenerator.h:245
virtual ~FCurvedStairGenerator() override
Definition StairGenerator.h:232
bool bIsClockwise
Definition StairGenerator.h:240
float CurveRadiansPerStep
Definition StairGenerator.h:242
float CurveRadians
Definition StairGenerator.h:241
FStairGenerator Super
Definition StairGenerator.h:237
virtual GEOMETRYCORE_API FVector3f GenerateNormal(ESide Side, int VertexId) override
Definition StairGenerator.cpp:1076
float InnerRadius
Definition StairGenerator.h:222
virtual GEOMETRYCORE_API FVector2f GenerateUV(ESide Side, int Step, int VertexId, float UVScale) override
Definition StairGenerator.cpp:1126
virtual GEOMETRYCORE_API FVector3d GenerateVertex(ESide Side, int VertexColumn, int VertexRow) override
Definition StairGenerator.cpp:1050
float RadiusRatio
Definition StairGenerator.h:244
float CurveAngle
Definition StairGenerator.h:225
virtual GEOMETRYCORE_API void ResetData() override
Definition StairGenerator.cpp:1038
virtual GEOMETRYCORE_API float GetMaxDimension() override
Definition StairGenerator.cpp:1227
FCurvedStairGenerator()
Definition StairGenerator.h:228
Definition StairGenerator.h:197
virtual GEOMETRYCORE_API FVector2f GenerateUV(ESide Side, int Step, int VertexId, float UVScale) override
Definition StairGenerator.cpp:992
FFloatingStairGenerator()
Definition StairGenerator.h:199
FLinearStairGenerator Super
Definition StairGenerator.h:208
virtual GEOMETRYCORE_API FVector3d GenerateVertex(ESide Side, int VertexColumn, int VertexRow) override
Definition StairGenerator.cpp:979
virtual ~FFloatingStairGenerator() override
Definition StairGenerator.h:203
Definition StairGenerator.h:169
float StepDepth
Definition StairGenerator.h:172
virtual GEOMETRYCORE_API FVector3f GenerateNormal(ESide Side, int VertexId) override
Definition StairGenerator.cpp:879
virtual GEOMETRYCORE_API FVector2f GenerateUV(ESide Side, int Step, int VertexId, float UVScale) override
Definition StairGenerator.cpp:909
virtual GEOMETRYCORE_API FVector3d GenerateVertex(ESide Side, int VertexColumn, int VertexRow) override
Definition StairGenerator.cpp:866
virtual GEOMETRYCORE_API float GetMaxDimension() override
Definition StairGenerator.cpp:969
virtual ~FLinearStairGenerator() override
Definition StairGenerator.h:179
FLinearStairGenerator()
Definition StairGenerator.h:175
FStairGenerator Super
Definition StairGenerator.h:184
Definition MeshShapeGenerator.h:19
Definition StairGenerator.h:260
virtual GEOMETRYCORE_API FVector2f GenerateUV(ESide Side, int Step, int VertexId, float UVScale) override
Definition StairGenerator.cpp:1264
FCurvedStairGenerator Super
Definition StairGenerator.h:271
FSpiralStairGenerator()
Definition StairGenerator.h:262
virtual ~FSpiralStairGenerator() override
Definition StairGenerator.h:266
virtual GEOMETRYCORE_API FVector3d GenerateVertex(ESide Side, int VertexColumn, int VertexRow) override
Definition StairGenerator.cpp:1238
Definition StairGenerator.h:22
int LeftSideColumnId
Definition StairGenerator.h:95
int NumVerts
Definition StairGenerator.h:90
int RightSideColumnId
Definition StairGenerator.h:94
int RightStartFaceId
Definition StairGenerator.h:98
int LastFaceId
Definition StairGenerator.h:104
virtual GEOMETRYCORE_API void ResetData()
Definition StairGenerator.cpp:829
virtual FVector3f GenerateNormal(ESide Side, int VertexId)=0
bool bScaleUVByAspectRatio
Definition StairGenerator.h:25
int NumQuadsPerSide
Definition StairGenerator.h:87
virtual float GetMaxDimension()=0
int BackStartFaceId
Definition StairGenerator.h:102
EStairStyle
Definition StairGenerator.h:72
int NumQuads
Definition StairGenerator.h:88
float StepWidth
Definition StairGenerator.h:31
int BottomStartFaceId
Definition StairGenerator.h:103
int NumVertsPerSide
Definition StairGenerator.h:89
TArray< int > UVDesc
Definition StairGenerator.h:84
bool bPolygroupPerQuad
Definition StairGenerator.h:28
TArray< int > NormalDesc
Definition StairGenerator.h:83
EStairStyle StairStyle
Definition StairGenerator.h:77
TArray< int > FaceDesc
Definition StairGenerator.h:82
int TopStartFaceId
Definition StairGenerator.h:101
int NumAttrs
Definition StairGenerator.h:91
float StepHeight
Definition StairGenerator.h:34
TArray< TArray< int > > VertexIds
Definition StairGenerator.h:80
ESide
Definition StairGenerator.h:40
int LeftStartFaceId
Definition StairGenerator.h:99
int FrontStartFaceId
Definition StairGenerator.h:100
virtual FVector3d GenerateVertex(ESide Side, int VertexColumn, int VertexRow)=0
virtual GEOMETRYCORE_API ~FStairGenerator() override
int NumSteps
Definition StairGenerator.h:37
virtual GEOMETRYCORE_API FMeshShapeGenerator & Generate() override
Definition StairGenerator.cpp:14
TArray< FIndex2i > VertexIdsToColumnRow
Definition StairGenerator.h:81
virtual FVector2f GenerateUV(ESide Side, int Step, int VertexId, float UVScale)=0
Definition AdvancedWidgetsModule.cpp:13
static TVector< float > Zero()
Definition Vector.h:112