Grindstone Game Engine v0.2.0
An open source game engine and toolkit.
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
10namespace Grindstone::GraphicsAPI {
11 class CommandBuffer;
12 class DescriptorSet;
14 class GraphicsPipeline;
15 class Buffer;
17 class RenderPass;
18}
19
20namespace Grindstone::Editor {
22 public:
23 void Initialize(class Grindstone::GraphicsAPI::RenderPass* renderPass);
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 Grindstone::GraphicsAPI::Buffer* gizmoUniformBuffer = nullptr;
31 Grindstone::GraphicsAPI::DescriptorSet* gizmoDescriptorSet = nullptr;
32 Grindstone::GraphicsAPI::DescriptorSetLayout* gizmoDescriptorSetLayout = nullptr;
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
52 uint32_t firstIndex;
53 uint32_t indexCount;
54 uint32_t vertexOffset;
55 };
56
57 std::array<ShapeMetaData, 8> shapeMetaData;
58
60 glm::mat4 transform;
61 glm::vec4 color;
62 };
63
64 std::vector<GizmoUniformBuffer> dataBuffer;
65 std::vector<ShapeType> drawShapes;
66 size_t drawCount = 0;
67
68 inline void AppendData(ShapeType shapeType, uint32_t& currentVertexOffset, uint32_t& currentIndexOffset, uint32_t vertexCount, uint32_t indexCount);
69 };
70}
Definition GizmoRenderer.hpp:21
Definition Buffer.hpp:56
Definition CommandBuffer.hpp:59
Definition DescriptorSetLayout.hpp:13
Definition DescriptorSet.hpp:15
Definition GraphicsPipeline.hpp:19
Definition RenderPass.hpp:27
Definition VertexArrayObject.hpp:9
Definition AssetReference.hpp:45