KarmaEngine
Game Engine for practical learning and research purposes
Loading...
Searching...
No Matches
Camera.h
Go to the documentation of this file.
1
10#pragma once
11
12#include "glm/glm.hpp"
13
14namespace Karma
15{
22 {
23 public:
30 Camera(const glm::vec3& initialCameraPosition);
31
37 virtual ~Camera();
38
44 virtual void OnUpdate(float deltaTime);
45
54 const glm::vec3& GetPosition() const { return m_Position; }
55
62 float GetRotation() const { return m_Rotation; }
63
73 void LeftMouseButtonPressed();
74
80 void LeftMouseButtonReleased();
81
88 void ComputeCameraFront();
89
96 void SetPosition(const glm::vec3& position);
97
107 void SetRotation(float rotation) { m_Rotation = rotation; RecalculateViewMatrix(); }
108
115 inline void SetCameraFront(const glm::vec3& front) { m_CameraFront = front; }
116
123 inline void SetCameraUp(const glm::vec3& up) { m_CameraUp = up; }
124
131 void MoveForward(float amount);
132
139 void MoveSideways(float amount);
140
147 void MoveUp(float amount);
148
155 void RotateAboutYAxis(float amount);
156
163 void RotateAboutXAxis(float amount);
164
170 const glm::mat4& GetProjectionMatrix() const { return m_ProjectionMatrix; }
171
177 const glm::mat4& GetViewMatirx() const { return m_ViewMatrix; }
178
184 std::shared_ptr<class UniformBufferObject>& GetViewProjectionUBO() { return m_ViewProjectionUBO; }
185
186 private:
187 void RecalculateViewMatrix();
188
189 protected:
190 void InitializePitchRoll();
191
192 protected:
193 glm::mat4 m_ProjectionMatrix;
194 glm::mat4 m_ViewMatrix;
195
196 glm::vec3 m_Position;
197 glm::vec3 m_CameraFront;
198 glm::vec3 m_CameraUp;
199 float m_Rotation = 0.0f;
200
201 bool m_IsLeftMouseButtonPressed = false;
202 float m_LastMouseX, m_LastMouseY;
203
204 const float m_Sensitivity = 0.1f;
205 float m_Roll = 0.0f;
206 float m_Pitch = 0.0f;
207
208 private:
209 std::shared_ptr<class UniformBufferObject> m_ViewProjectionUBO;
210 };
211}
#define KARMA_API
Defining Karma's API macro for storage class information.
Definition Core.h:41
Camera(const glm::vec3 &initialCameraPosition)
Default constructor.
Definition Camera.cpp:8
virtual void OnUpdate(float deltaTime)
A hook into the game loop for updating camera position and orientation in the level perhaps.
Definition Camera.cpp:34
const glm::vec3 & GetPosition() const
Getter for current position of the Camers.
Definition Camera.h:54
void SetCameraUp(const glm::vec3 &up)
Set the up vector of Camera.
Definition Camera.h:123
const glm::mat4 & GetViewMatirx() const
Getter for ViewMatrix.
Definition Camera.h:177
float GetRotation() const
Getter for current rotation.
Definition Camera.h:62
std::shared_ptr< class UniformBufferObject > & GetViewProjectionUBO()
Getter for ViewProjection UBO.
Definition Camera.h:184
void SetCameraFront(const glm::vec3 &front)
Set the front vector of Camera.
Definition Camera.h:115
const glm::mat4 & GetProjectionMatrix() const
Getter for ProjectionMatrix.
Definition Camera.h:170
void SetRotation(float rotation)
Sets the current rotation of the Camera.
Definition Camera.h:107