63 lines
1.4 KiB
C++
63 lines
1.4 KiB
C++
#include "Camera.h"
|
|
|
|
Camera::Camera()
|
|
: position(0.0f, 0.0f, 5.0f),
|
|
yaw(-90.0f),
|
|
pitch(0.0f),
|
|
fov(45.0f),
|
|
aspect(4.0f / 3.0f),
|
|
nearPlane(0.1f),
|
|
farPlane(100.0f)
|
|
{
|
|
}
|
|
|
|
Camera::~Camera() {
|
|
}
|
|
|
|
void Camera::Update(float deltaTime) {
|
|
// For now, we do not modify the camera over time.
|
|
// Input or smoothing could be handled here.
|
|
}
|
|
|
|
void Camera::SetPosition(const glm::vec3& pos) {
|
|
position = pos;
|
|
}
|
|
|
|
void Camera::SetRotation(float newYaw, float newPitch) {
|
|
yaw = newYaw;
|
|
pitch = newPitch;
|
|
}
|
|
|
|
glm::mat4 Camera::GetViewMatrix() const {
|
|
// Compute the forward vector from yaw and pitch.
|
|
glm::vec3 front;
|
|
front.x = cos(glm::radians(yaw)) * cos(glm::radians(pitch));
|
|
front.y = sin(glm::radians(pitch));
|
|
front.z = sin(glm::radians(yaw)) * cos(glm::radians(pitch));
|
|
front = glm::normalize(front);
|
|
return glm::lookAt(position, position + front, glm::vec3(0, 1, 0));
|
|
}
|
|
|
|
glm::mat4 Camera::GetProjectionMatrix() const {
|
|
return glm::perspective(glm::radians(fov), aspect, nearPlane, farPlane);
|
|
}
|
|
|
|
void Camera::SetPerspective(float fov, float aspect, float nearPlane, float farPlane) {
|
|
this->fov = fov;
|
|
this->aspect = aspect;
|
|
this->nearPlane = nearPlane;
|
|
this->farPlane = farPlane;
|
|
}
|
|
|
|
glm::vec3 Camera::GetPosition() const {
|
|
return position;
|
|
}
|
|
|
|
float Camera::GetYaw() const {
|
|
return yaw;
|
|
}
|
|
|
|
float Camera::GetPitch() const {
|
|
return pitch;
|
|
}
|