Files
Nuake/Editor/src/Misc/GizmoDrawer.h
Antoine Pilote dbac1c187f Dynamic gizmos
- Added cylinder collider component
- Dynamic cylinder, capsule, box, sphere gizmos
- Added wireframe for mesh shape
2023-07-15 19:26:37 -04:00

52 lines
1.4 KiB
C++

#pragma once
#include <src/Core/Core.h>
#include <src/Rendering/Buffers/VertexArray.h>
#include <src/Rendering/Buffers/VertexBuffer.h>
#include <src/Rendering/Shaders/ShaderManager.h>
#include <src/Rendering/Vertex.h>
#include <src/Scene/Scene.h>
#include <src/Resource/Model.h>
#include <src/Core/Physics/PhysicsShapes.h>
#include "Gizmos/CapsuleGizmo.h"
#include "Gizmos/CylinderGizmo.h"
using namespace Nuake;
class GizmoDrawer
{
private:
std::map<std::string, Ref<Model>> _gizmos;
std::map<uint32_t, Scope<CapsuleGizmo>> _CapsuleEntity;
std::map<uint32_t, Scope<CylinderGizmo>> _CylinderEntity;
const std::vector<LineVertex> vertices
{
LineVertex {{10000.f, 0.0f, 0.0f}, {1.f, 0.f, 0.f, 1.f}},
LineVertex {{0.0f, 0.0f, 0.0f }, {1.f, 0.f, 0.f, 1.f}},
LineVertex {{0.f, 0.f, 10000.f }, {0.f, 0.f, 1.f, 1.f}},
LineVertex {{0.0f, 0.0f, 0.0f }, {0.f, 0.f, 1.f, 1.f}},
LineVertex {{0.f, 10000.f, 0.0f }, {0.f, 1.f, 0.f, 1.f}},
LineVertex {{0.0f, 0.0f, 0.0f }, {0.f, 1.f, 0.f, 1.f}}
};
std::vector<LineVertex> circleVertices;
Ref<VertexArray> mCircleBuffer;
Ref<VertexBuffer> mCircleVertexBuffer;
std::vector<LineVertex> mBoxVertices;
Ref<VertexArray> mBoxBuffer;
Ref<VertexBuffer> mBoxVertexBuffer;
Ref<VertexArray> mAxisLineBuffer;
Ref<VertexBuffer> mAxisLineVertexBuffer;
Shader* mLineShader;
void GenerateSphereGizmo();
public:
GizmoDrawer();
~GizmoDrawer() = default;
void DrawGizmos(Ref<Scene> scene);
};