#include "PrecompiledHeader.h" #include "Camera.h" Camera::Camera(float yFOV, float nearClip, float farClip) { m_FOV = yFOV; m_NearClip = nearClip; m_FarClip = farClip; m_Position = glm::vec3(0.0); UpdateViewMatrix(); } glm::vec3 Camera::Forward() { return m_Orientation * glm::vec3(0, 0, -1); } // //glm::vec3 Camera::Right() //{ // return glm::rotate(glm::vec3(1.f, 0.f, 0.f), -m_Yaw, glm::vec3(0.f, 1.f, 0.f)); //} //glm::mat4 Camera::Orientation() //{ // glm::mat4 orientation(1.f); // orientation = glm::rotate(orientation, m_Pitch, glm::vec3(1.f, 0.f, 0.f)); // orientation = glm::rotate(orientation, m_Yaw, glm::vec3(0.f, 1.f, 0.f)); // return orientation; //} void Camera::SetPosition(glm::vec3 val) { m_Position = val; UpdateViewMatrix(); } void Camera::SetOrientation(glm::quat val) { m_Orientation = val; UpdateViewMatrix(); } //void Camera::Pitch(float val) //{ // m_Pitch = val; // UpdateViewMatrix(); //} // //void Camera::Yaw(float val) //{ // m_Yaw = val; // UpdateViewMatrix(); //} void Camera::UpdateViewMatrix() { m_ViewMatrix = glm::toMat4(glm::inverse(m_Orientation)) * glm::translate(-m_Position); } void Camera::SetFOV(float val) { m_FOV = val; } void Camera::SetNearClip(float val) { m_NearClip = val; } void Camera::SetFarClip(float val) { m_FarClip = val; } glm::mat4 Camera::ProjectionMatrix(float aspectRatio) { return glm::perspective( m_FOV, aspectRatio, m_NearClip, m_FarClip ); }