Grindstone Game Engine
v0.2.0
An open source game engine and toolkit.
Toggle main menu visibility
Loading...
Searching...
No Matches
GizmoRenderer.hpp
1
#pragma once
2
3
#include <glm/glm.hpp>
4
#include <glm/gtc/quaternion.hpp>
5
#include <vector>
6
7
#include <EngineCore/Assets/AssetReference.hpp>
8
#include <EngineCore/Assets/PipelineSet/GraphicsPipelineAsset.hpp>
9
10
namespace
Grindstone::GraphicsAPI {
11
class
CommandBuffer
;
12
class
DescriptorSet
;
13
class
DescriptorSetLayout
;
14
class
GraphicsPipeline
;
15
class
Buffer
;
16
class
VertexArrayObject
;
17
class
RenderPass
;
18
}
19
20
namespace
Grindstone::Editor {
21
class
GizmoRenderer
{
22
public
:
23
void
Initialize();
24
void
SubmitCubeGizmo(
const
glm::mat4& transform, glm::vec3 size, glm::vec4 color = glm::vec4(1.0f));
25
void
SubmitCapsuleGizmo(
const
glm::mat4& transform,
float
height,
float
radius, glm::vec4 color = glm::vec4(1.0f));
26
void
SubmitPlaneGizmo(
const
glm::mat4& transform, glm::vec3 normal,
float
positionAlongNormal, glm::vec4 color = glm::vec4(1.0f));
27
void
SubmitSphereGizmo(
const
glm::mat4& transform,
float
radius, glm::vec4 color = glm::vec4(1.0f));
28
void
Render(
Grindstone::GraphicsAPI::CommandBuffer
* commandBuffer, glm::mat4 projView);
29
protected
:
30
std::array<Grindstone::GraphicsAPI::Buffer*, 3> gizmoUniformBuffers = {};
31
std::array<Grindstone::GraphicsAPI::DescriptorSet*, 3> gizmoDescriptorSets = {};
32
Grindstone::GraphicsAPI::DescriptorSetLayout
* gizmoDescriptorSetLayout =
nullptr
;
33
Grindstone::AssetReference<Grindstone::GraphicsPipelineAsset>
gizmoPipelineSet;
34
GraphicsAPI::VertexInputLayout
gizmoVertexLayout;
35
36
Grindstone::GraphicsAPI::Buffer
* gizmoShapesVertexBuffer =
nullptr
;
37
Grindstone::GraphicsAPI::Buffer
* gizmoShapesIndexBuffer =
nullptr
;
38
Grindstone::GraphicsAPI::VertexArrayObject
* gizmoShapesVao =
nullptr
;
39
40
enum class
ShapeType {
41
Undefined,
42
Cube,
43
Circle,
44
Sphere,
45
Cone,
46
Plane,
47
Capsule,
48
Cyclinder,
49
};
50
51
struct
ShapeMetaData
{
52
uint32_t firstOutlineIndex;
53
uint32_t outlineIndexCount;
54
uint32_t firstFilledIndex;
55
uint32_t filledIndexCount;
56
uint32_t vertexOffset;
57
};
58
59
std::array<ShapeMetaData, 8> shapeMetaData;
60
61
struct
GizmoUniformBuffer
{
62
glm::mat4 transform;
63
glm::vec4 outlineColor;
64
glm::vec4 fillColor;
65
};
66
67
std::vector<GizmoUniformBuffer> dataBuffer;
68
std::vector<ShapeType> drawShapes;
69
size_t
drawCount = 0;
70
71
inline
void
AppendData(
72
ShapeType shapeType,
73
uint32_t& currentVertexOffset, uint32_t& currentOutlineIndexOffset, uint32_t& currentFilledIndexOffset,
74
uint32_t vertexCount, uint32_t outlineIndexCount, uint32_t filledIndexCount
75
);
76
};
77
}
Grindstone::Editor::GizmoRenderer
Definition
GizmoRenderer.hpp:21
Grindstone::GraphicsAPI::Buffer
Definition
Buffer.hpp:49
Grindstone::GraphicsAPI::CommandBuffer
Definition
CommandBuffer.hpp:109
Grindstone::GraphicsAPI::DescriptorSetLayout
Definition
DescriptorSetLayout.hpp:14
Grindstone::GraphicsAPI::DescriptorSet
Definition
DescriptorSet.hpp:15
Grindstone::GraphicsAPI::GraphicsPipeline
Definition
GraphicsPipeline.hpp:20
Grindstone::GraphicsAPI::RenderPass
Definition
RenderPass.hpp:10
Grindstone::GraphicsAPI::VertexArrayObject
Definition
VertexArrayObject.hpp:9
Grindstone::AssetReference
Definition
AssetReference.hpp:45
Grindstone::Editor::GizmoRenderer::GizmoUniformBuffer
Definition
GizmoRenderer.hpp:61
Grindstone::Editor::GizmoRenderer::ShapeMetaData
Definition
GizmoRenderer.hpp:51
Grindstone::GraphicsAPI::VertexInputLayout
Definition
Formats.hpp:894
sources
code
Editor
GizmoRenderer.hpp
Generated by
1.17.0