1#include "EditorCamera.h"
2#include "common/maths/VectorHelper.h"
4EditorCamera::EditorCamera(
float fov,
float aspect,
float near,
float far)
6 , m_AspectRatio(aspect)
11 m_ViewMatrix = glm::lookAt(m_Position.ToGLM(), m_Position.ToGLM() + m_Front.ToGLM(), m_Up.ToGLM());
12 m_ProjectionMatrix = glm::perspective(glm::radians(m_FOV), m_AspectRatio, m_NearCip, m_FarClip);
16void EditorCamera::ProcessMouseMovement(
float xOffset,
float yOffset,
bool constrainPitch)
18 xOffset *= m_MouseSensitivity;
19 yOffset *= m_MouseSensitivity;
33 updateCameraVectors();
38void EditorCamera::ProcessMouseScroll(
float scrollOffset)
40 if (m_ZoomSensitivity >= 1.0f && m_ZoomSensitivity <= 45.0f)
41 m_ZoomSensitivity -= scrollOffset;
42 if (m_ZoomSensitivity <= 1.0f)
43 m_ZoomSensitivity = 1.0f;
44 if (m_ZoomSensitivity >= 45.0f)
45 m_ZoomSensitivity = 45.0f;
47 updateProjectionMatrix();
51void EditorCamera::updateCameraVectors()
55 front.x = sin(glm::radians(m_Yaw)) * cos(glm::radians(m_Pitch));
56 front.y = -sin(glm::radians(m_Pitch));
57 front.z = -cos(glm::radians(m_Yaw)) * cos(glm::radians(m_Pitch));
58 m_Front = Vivid::Maths::Normalize(front);
61 m_Right = Vivid::Maths::Normalize(Vivid::Maths::Cross(m_Front,
Vivid::Maths::Vec3(0.0f, 1.0f, 0.0f)));
62 m_Up = Vivid::Maths::Normalize(Vivid::Maths::Cross(m_Right, m_Front));
65void EditorCamera::updateProjectionMatrix()
67 m_ProjectionMatrix = glm::perspective(glm::radians(m_FOV), m_AspectRatio, m_NearCip, m_FarClip);
71void EditorCamera::updateViewMatrix()
73 m_ViewMatrix = glm::lookAt(m_Position.ToGLM(), m_Position.ToGLM() + m_Front.ToGLM(), m_Up.ToGLM());
76void EditorCamera::SetPerspective(
float fov,
float aspect,
float near,
float far)
79 m_AspectRatio = aspect;
82 updateProjectionMatrix();
85void EditorCamera::SetViewportSize(
int width,
int height)
87 m_AspectRatio = (float)width / (
float)height;
88 m_ViewportWidth = width;
89 m_ViewportHeight = height;
90 updateProjectionMatrix();
93void EditorCamera::MoveForward()
95 m_Position += m_Front * m_MovementSpeed;
99void EditorCamera::MoveBackward()
101 m_Position -= m_Front * m_MovementSpeed;
105void EditorCamera::MoveLeft()
107 m_Position -= m_Right * m_MovementSpeed;
111void EditorCamera::MoveRight()
113 m_Position += m_Right * m_MovementSpeed;