Engine²
Open-source game engine written in C++.
Loading...
Searching...
No Matches
CreateShape.hpp
Go to the documentation of this file.
1/**************************************************************************
2 * EngineSquared v0.2.0
3 *
4 * EngineSquared is a software package, part of the Engine² organization.
5 *
6 * This file is part of the EngineSquared project that is under MIT License.
7 * Copyright © 2025-present by @EngineSquared, All rights reserved.
8 *
9 * EngineSquared is a free software: you can redistribute it and/or modify
10 * it under the terms of the MIT License. See the project's LICENSE file for
11 * the full license text and details.
12 *
13 * @file CreateShape.hpp
14 * @brief Helper functions to generate basic geometric shapes
15 *
16 * This file provides helper functions to create common 3D shapes like cubes,
17 * spheres, planes, etc. with proper vertices, normals, texture coordinates,
18 * and indices.
19 *
20 * @author @EngineSquared
21 * @version 0.2.0
22 * @date 2025-10-28
23 **************************************************************************/
24
25#pragma once
26
27#include "component/Mesh.hpp"
29#include "core/Core.hpp"
30#include "entity/Entity.hpp"
31
32#include <glm/glm.hpp>
33
34namespace Object::Helper {
35
40 float size = 1.0f;
41 glm::vec3 position = glm::vec3(0.0f);
42 glm::quat rotation = glm::quat(1.0f, 0.0f, 0.0f, 0.0f);
43 glm::vec3 scale = glm::vec3(1.0f);
44};
45
64
69 float radius = 0.5f;
70 glm::vec3 position = glm::vec3(0.0f);
71 glm::quat rotation = glm::quat(1.0f, 0.0f, 0.0f, 0.0f);
72 glm::vec3 scale = glm::vec3(1.0f);
73 uint32_t segments = 32u;
74 uint32_t rings = 16u;
75};
76
91
96 float width = 1.0f;
97 float depth = 1.0f;
98 glm::vec3 position = glm::vec3(0.0f);
99 glm::quat rotation = glm::quat(1.0f, 0.0f, 0.0f, 0.0f);
100 glm::vec3 scale = glm::vec3(1.0f);
101 uint32_t subdivisionsX = 1u;
102 uint32_t subdivisionsZ = 1u;
103};
104
119
124 float radiusTop = 0.5f;
125 float radiusBottom = 0.5f;
126 float height = 1.0f;
127 glm::vec3 position = glm::vec3(0.0f);
128 glm::quat rotation = glm::quat(1.0f, 0.0f, 0.0f, 0.0f);
129 glm::vec3 scale = glm::vec3(1.0f);
130 uint32_t segments = 32u;
131 uint32_t heightSegments = 1u;
132};
133
150
155 float radius = 0.5f;
156 float height = 1.0f;
157 glm::vec3 position = glm::vec3(0.0f);
158 glm::quat rotation = glm::quat(1.0f, 0.0f, 0.0f, 0.0f);
159 glm::vec3 scale = glm::vec3(1.0f);
160 uint32_t segments = 32u;
161 uint32_t heightSegments = 4u;
162};
163
172
177 uint32_t width = 10u;
178 uint32_t height = 10u;
179 float spacing = 0.1f;
180 glm::vec3 position = glm::vec3(0.0f);
181 glm::quat rotation = glm::quat(1.0f, 0.0f, 0.0f, 0.0f);
182 glm::vec3 scale = glm::vec3(1.0f);
183};
184
204
209 uint32_t segmentCount = 10u;
210 float segmentLength = 0.1f;
211 glm::vec3 position = glm::vec3(0.0f);
212 glm::quat rotation = glm::quat(1.0f, 0.0f, 0.0f, 0.0f);
213 glm::vec3 scale = glm::vec3(1.0f);
214};
215
234
239 float size = 1.0f;
240 uint32_t gridSize = 5u;
241 glm::vec3 position = glm::vec3(0.0f);
242 glm::quat rotation = glm::quat(1.0f, 0.0f, 0.0f, 0.0f);
243 glm::vec3 scale = glm::vec3(1.0f);
244};
245
269
270} // namespace Object::Helper
The core is the place where all the data of the engine is stored. It contains the registry (entities)...
Definition Core.hpp:33
Wrapper class providing a convenient interface for entity manipulation with the Core....
Definition Entity.hpp:20
Definition CreateShape.cpp:7
Engine::Entity CreateCube(Engine::Core &core, CreateCubeInfo info)
Definition CreateShape.cpp:9
Engine::Entity CreatePlane(Engine::Core &core, CreatePlaneInfo info)
Definition CreateShape.cpp:35
Engine::Entity CreateCloth(Engine::Core &core, CreateClothInfo info)
Definition CreateShape.cpp:75
Engine::Entity CreateJellyCube(Engine::Core &core, CreateJellyCubeInfo info)
Definition CreateShape.cpp:101
Engine::Entity CreateSphere(Engine::Core &core, CreateSphereInfo info)
Definition CreateShape.cpp:22
Engine::Entity CreateCylinder(Engine::Core &core, CreateCylinderInfo info)
Definition CreateShape.cpp:48
Engine::Entity CreateCapsule(Engine::Core &core, CreateCapsuleInfo info)
Create a capsule entity with mesh and transform.
Definition CreateShape.cpp:62
Engine::Entity CreateRope(Engine::Core &core, CreateRopeInfo info)
Definition CreateShape.cpp:88
Struct to hold parameters for creating a capsule.
Definition CreateShape.hpp:154
uint32_t heightSegments
Number of radial segments (default: 32).
Definition CreateShape.hpp:161
glm::vec3 scale
Rotation as quaternion (default: identity).
Definition CreateShape.hpp:159
float radius
Definition CreateShape.hpp:155
float height
Radius of the capsule (default: 0.5).
Definition CreateShape.hpp:156
uint32_t segments
Scale factor (default: 1.0).
Definition CreateShape.hpp:160
glm::vec3 position
Height of the cylindrical part (default: 1.0).
Definition CreateShape.hpp:157
glm::quat rotation
Position in world space (default: origin).
Definition CreateShape.hpp:158
Struct to hold parameters for creating a cloth.
Definition CreateShape.hpp:176
glm::vec3 scale
Rotation as quaternion (default: identity).
Definition CreateShape.hpp:182
uint32_t width
Definition CreateShape.hpp:177
float spacing
Number of vertices along Y axis (default: 10).
Definition CreateShape.hpp:179
glm::quat rotation
Position in world space (default: origin).
Definition CreateShape.hpp:181
glm::vec3 position
Distance between adjacent vertices (default: 0.1).
Definition CreateShape.hpp:180
uint32_t height
Number of vertices along X axis (default: 10).
Definition CreateShape.hpp:178
Struct to hold parameters for creating a cube.
Definition CreateShape.hpp:39
glm::vec3 scale
Rotation as quaternion (default: identity).
Definition CreateShape.hpp:43
glm::vec3 position
Side length of the cube (default: 1.0).
Definition CreateShape.hpp:41
float size
Definition CreateShape.hpp:40
glm::quat rotation
Position in world space (default: origin).
Definition CreateShape.hpp:42
Struct to hold parameters for creating a cylinder.
Definition CreateShape.hpp:123
glm::vec3 scale
Rotation as quaternion (default: identity).
Definition CreateShape.hpp:129
uint32_t segments
Scale factor (default: 1.0).
Definition CreateShape.hpp:130
float height
Radius at the bottom (default: 0.5).
Definition CreateShape.hpp:126
float radiusTop
Definition CreateShape.hpp:124
glm::vec3 position
Height of the cylinder (default: 1.0).
Definition CreateShape.hpp:127
float radiusBottom
Radius at the top (default: 0.5).
Definition CreateShape.hpp:125
glm::quat rotation
Position in world space (default: origin).
Definition CreateShape.hpp:128
uint32_t heightSegments
Number of radial segments (default: 32).
Definition CreateShape.hpp:131
Struct to hold parameters for creating a jelly cube.
Definition CreateShape.hpp:238
glm::vec3 position
Number of vertices per axis (default: 5).
Definition CreateShape.hpp:241
uint32_t gridSize
Side length of the cube (default: 1.0).
Definition CreateShape.hpp:240
glm::quat rotation
Position in world space (default: origin).
Definition CreateShape.hpp:242
float size
Definition CreateShape.hpp:239
glm::vec3 scale
Rotation as quaternion (default: identity).
Definition CreateShape.hpp:243
Struct to hold parameters for creating a plane.
Definition CreateShape.hpp:95
glm::vec3 scale
Rotation as quaternion (default: identity).
Definition CreateShape.hpp:100
uint32_t subdivisionsZ
Number of subdivisions along X (default: 1).
Definition CreateShape.hpp:102
glm::quat rotation
Position in world space (default: origin).
Definition CreateShape.hpp:99
glm::vec3 position
Depth of the plane (Z axis, default: 1.0).
Definition CreateShape.hpp:98
float depth
Width of the plane (X axis, default: 1.0).
Definition CreateShape.hpp:97
uint32_t subdivisionsX
Scale factor (default: 1.0).
Definition CreateShape.hpp:101
float width
Definition CreateShape.hpp:96
Struct to hold parameters for creating a rope.
Definition CreateShape.hpp:208
float segmentLength
Number of segments (default: 10).
Definition CreateShape.hpp:210
uint32_t segmentCount
Definition CreateShape.hpp:209
glm::vec3 scale
Rotation as quaternion (default: identity).
Definition CreateShape.hpp:213
glm::vec3 position
Length of each segment (default: 0.1).
Definition CreateShape.hpp:211
glm::quat rotation
Position in world space (default: origin).
Definition CreateShape.hpp:212
Struct to hold parameters for creating a sphere.
Definition CreateShape.hpp:68
uint32_t segments
Scale factor (default: 1.0).
Definition CreateShape.hpp:73
uint32_t rings
Number of horizontal segments (default: 32).
Definition CreateShape.hpp:74
glm::quat rotation
Position in world space (default: origin).
Definition CreateShape.hpp:71
float radius
Definition CreateShape.hpp:69
glm::vec3 scale
Rotation as quaternion (default: identity).
Definition CreateShape.hpp:72
glm::vec3 position
Radius of the sphere (default: 0.5).
Definition CreateShape.hpp:70