Grindstone Game Engine v0.2.0
An open source game engine and toolkit.
Loading...
Searching...
No Matches
EditorCamera.hpp
1#pragma once
2
3#include <glm/glm.hpp>
4#include <glm/gtc/quaternion.hpp>
5
6#include "GridRenderer.hpp"
7#include "GizmoRenderer.hpp"
8
9namespace Grindstone {
10 class BaseRenderer;
11 struct TransformComponent;
12 struct CameraComponent;
13
14 namespace GraphicsAPI {
15 class Framebuffer;
16 class Image;
17 class Sampler;
18 class CommandBuffer;
19 class DescriptorSet;
21 class RenderPass;
22 }
23
24 namespace Editor {
25 class EditorCamera {
26 public:
27 static void SetupRenderPasses();
28 EditorCamera();
29 ~EditorCamera();
30 void CaptureMousePick(GraphicsAPI::CommandBuffer* commandBuffer, int x, int y);
31 uint32_t GetMousePickedEntity(GraphicsAPI::CommandBuffer* commandBuffer);
32 uint64_t GetRenderOutput();
33 void Render(GraphicsAPI::CommandBuffer* commandBuffer);
34 void RenderPlayModeCamera(GraphicsAPI::CommandBuffer* commandBuffer);
35 void OffsetRotation(float pitch, float yaw);
36 void OffsetPosition(glm::vec3 offset);
37 void SetPosition(glm::vec3 newPosition);
38 void ResizeViewport(uint32_t width, uint32_t height);
39 void UpdateProjectionMatrix();
40 void UpdateViewMatrix();
41 glm::mat4& GetProjectionMatrix();
42 glm::mat4& GetViewMatrix();
43 BaseRenderer* GetRenderer() const;
44
45 glm::vec3 GetPosition() const;
46 glm::vec3 GetForward() const;
47 glm::vec3 GetRight() const;
48 glm::vec3 GetUp() const;
49
50 bool isGridEnabled = true;
51 bool isBoundingSphereGizmoEnabled = false;
52 bool isBoundingBoxGizmoEnabled = false;
53 bool isColliderGizmoEnabled = true;
54 private:
55
56 GizmoRenderer gizmoRenderer;
57 GridRenderer gridRenderer;
58 std::array<GraphicsAPI::Image*, 3> renderTarget;
59 std::array<GraphicsAPI::Image*, 3> depthTarget;
60 GraphicsAPI::Sampler* sampler = nullptr;
61 GraphicsAPI::DescriptorSetLayout* descriptorSetLayout = nullptr;
62 std::array<GraphicsAPI::DescriptorSet*, 3> descriptorSet;
63
64 GraphicsAPI::DescriptorSetLayout* mousePickDescriptorSetLayout = nullptr;
65 std::array<GraphicsAPI::Image*, 3> mousePickRenderTarget{};
66 std::array<GraphicsAPI::Framebuffer*, 3> mousePickFramebuffer{};
67 std::array<GraphicsAPI::DescriptorSet*, 3> mousePickDescriptorSet{};
68 std::array<GraphicsAPI::Buffer*, 3> mousePickMatrixBuffer{};
69 std::array<GraphicsAPI::Buffer*, 3> mousePickResponseBuffer{};
70
71 BaseRenderer* renderer = nullptr;
72 glm::mat4 projection;
73 glm::mat4 view;
74 glm::vec3 position = glm::vec3();
75 glm::vec3 eulerAngles = glm::vec3();
76 glm::quat rotation = glm::quat();
77 uint32_t width = 800;
78 uint32_t height = 600;
79 float fieldOfView = glm::radians(80.0f);
80 float nearPlaneDistance = 0.1f;
81 float farPlaneDistance = 150.f;
82 };
83 }
84}
Definition BaseRenderer.hpp:20
Definition GizmoRenderer.hpp:21
Definition GridRenderer.hpp:20
Definition CommandBuffer.hpp:90
Definition DescriptorSetLayout.hpp:13
Definition DescriptorSet.hpp:15
Definition Framebuffer.hpp:16
Definition Image.hpp:49
Definition RenderPass.hpp:10
Definition Sampler.hpp:31
Definition CameraComponent.hpp:15
Definition TransformComponent.hpp:12