ThreeLab/Engine/Components/Camera.cpp
2025-04-01 11:53:23 -05:00

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;
}