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 "krpch.h"
13
14#include "glm/glm.hpp"
15
16namespace Karma
17{
24 {
25 public:
32 Camera(const glm::vec3& initialCameraPosition);
33
39 virtual ~Camera();
40
49 const glm::vec3& GetPosition() const { return m_Position; }
50
57 float GetRotation() const { return m_Rotation; }
58
68 void LeftMouseButtonPressed();
69
75 void LeftMouseButtonReleased();
76
83 void ComputeCameraFront();
84
91 void SetPosition(const glm::vec3& position);
92
102 void SetRotation(float rotation) { m_Rotation = rotation; RecalculateViewMatrix(); }
103
110 inline void SetCameraFront(const glm::vec3& front) { m_CameraFront = front; }
111
118 inline void SetCameraUp(const glm::vec3& up) { m_CameraUp = up; }
119
126 void MoveForward(float amount);
127
134 void MoveSideways(float amount);
135
142 void MoveUp(float amount);
143
150 void RotateAboutYAxis(float amount);
151
158 void RotateAboutXAxis(float amount);
159
165 const glm::mat4& GetProjectionMatrix() const { return m_ProjectionMatrix; }
166
172 const glm::mat4& GetViewMatirx() const { return m_ViewMatrix; }
173
174 private:
175 void RecalculateViewMatrix();
176
177 protected:
178 void InitializePitchRoll();
179
180 protected:
181 glm::mat4 m_ProjectionMatrix;
182 glm::mat4 m_ViewMatrix;
183
184 glm::vec3 m_Position;
185 glm::vec3 m_CameraFront;
186 glm::vec3 m_CameraUp;
187 float m_Rotation = 0.0f;
188
189 bool m_IsLeftMouseButtonPressed = false;
190 float m_LastMouseX, m_LastMouseY;
191
192 const float m_Sensitivity = 0.1f;
193 float m_Roll = 0.0f;
194 float m_Pitch = 0.0f;
195 };
196}
#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
const glm::vec3 & GetPosition() const
Getter for current position of the Camers.
Definition Camera.h:49
void SetCameraUp(const glm::vec3 &up)
Set the up vector of Camera.
Definition Camera.h:118
const glm::mat4 & GetViewMatirx() const
Getter for ViewMatrix.
Definition Camera.h:172
float GetRotation() const
Getter for current rotation.
Definition Camera.h:57
void SetCameraFront(const glm::vec3 &front)
Set the front vector of Camera.
Definition Camera.h:110
const glm::mat4 & GetProjectionMatrix() const
Getter for ProjectionMatrix.
Definition Camera.h:165
void SetRotation(float rotation)
Sets the current rotation of the Camera.
Definition Camera.h:102