4#include <glm/gtc/constants.hpp>
5#include <glm/gtc/matrix_transform.hpp>
6#include <glm/gtx/quaternion.hpp>
25 explicit Camera(
float fov = glm::radians(45.0f),
float nearPlane = 0.1f,
float farPlane = 1000.0f)
65 void SetPerspective(
float fov,
float aspect,
float nearPlane,
float farPlane)
73 [[nodiscard]]
float GetFOV()
const
77 [[nodiscard]]
float GetNearPlane()
const
81 [[nodiscard]]
float GetFarPlane()
const
86 [[nodiscard]]
const glm::vec3& GetPosition()
const
90 [[nodiscard]]
const glm::vec3& GetRotationEuler()
const
95 [[nodiscard]]
const glm::mat4& GetViewMatrix()
const
99 [[nodiscard]]
const glm::mat4& GetProjectionMatrix()
const
104 [[nodiscard]] glm::vec3 GetForward()
const
106 return glm::normalize(glm::rotate(GetRotationQuat(), glm::vec3(0, 0, -1)));
109 [[nodiscard]] glm::vec3 GetRight()
const
111 return glm::normalize(glm::rotate(GetRotationQuat(), glm::vec3(1, 0, 0)));
114 [[nodiscard]] glm::vec3 GetUp()
const
116 return glm::normalize(glm::rotate(GetRotationQuat(), glm::vec3(0, 1, 0)));
120 [[nodiscard]] glm::quat GetRotationQuat()
const
125 void RecalculateView()
127 auto rotation = GetRotationQuat();
128 auto target =
m_Position + glm::rotate(rotation, glm::vec3(0, 0, -1));
A base 3D camera class with perspective projection.
Definition Camera.hpp:17
glm::vec3 m_Position
World-space position.
Definition Camera.hpp:137
void SetRotation(const glm::vec3 &rotEuler)
Sets rotation in Euler angles (degrees), recalculates view matrix.
Definition Camera.hpp:52
float m_FOV
Field of view in radians.
Definition Camera.hpp:133
glm::mat4 m_ViewMatrix
View matrix.
Definition Camera.hpp:140
void SetPosition(const glm::vec3 &pos)
Sets world position and recalculates the view matrix.
Definition Camera.hpp:46
Camera(float fov=glm::radians(45.0f), float nearPlane=0.1f, float farPlane=1000.0f)
Constructs a camera with a perspective projection.
Definition Camera.hpp:25
glm::vec3 m_RotationEuler
Rotation in degrees (pitch, yaw, roll).
Definition Camera.hpp:138
float m_Near
Near clipping plane.
Definition Camera.hpp:134
float m_Far
Far clipping plane.
Definition Camera.hpp:135
glm::mat4 m_ProjectionMatrix
Projection matrix.
Definition Camera.hpp:141
void SetPerspective(float fov, float aspect, float nearPlane, float farPlane)
Sets the perspective projection matrix.
Definition Camera.hpp:65