aboutsummaryrefslogtreecommitdiff
path: root/src/camera/camera.cpp
diff options
context:
space:
mode:
authorDavid Doan <daviddoan@Davids-MacBook-Pro-193.local>2023-12-13 15:01:49 -0500
committerDavid Doan <daviddoan@Davids-MacBook-Pro-193.local>2023-12-13 15:01:49 -0500
commitab6e60b1c6bd7e7aaabdfa9f0f23135982e96222 (patch)
tree774212212bcfde6c5b44f51d2b52d00e053d03df /src/camera/camera.cpp
parent77e90896ad847482d3ab7b91046bae9c19ba4cb3 (diff)
parent0cc651b784afef1200b34af1f6248c7f4ac75b44 (diff)
Merge branch 'main' of https://github.com/NicholasBottone/the-all-americans-in-cs1230
merge.
Diffstat (limited to 'src/camera/camera.cpp')
-rw-r--r--src/camera/camera.cpp36
1 files changed, 20 insertions, 16 deletions
diff --git a/src/camera/camera.cpp b/src/camera/camera.cpp
index 704be7e..fb63d77 100644
--- a/src/camera/camera.cpp
+++ b/src/camera/camera.cpp
@@ -5,28 +5,32 @@
#include <glm/glm.hpp>
#include <glm/gtc/matrix_transform.hpp> // Include this header for glm::rotate
+void Camera::updateViewMatrix(SceneCameraData cameraData) {
+ m_viewMatrix = Vec4Ops::getViewMatrix4(cameraData.look, cameraData.up, cameraData.over);
+ // add settings.xy rotation
+ m_viewMatrix = glm::rotate(m_viewMatrix, glm::radians(settings.xy), glm::vec3(0.f, 1.f, 0.f));
+ m_viewMatrix = glm::rotate(m_viewMatrix, glm::radians(settings.yz), glm::vec3(1.f, 0.f, 0.f));
+ m_viewMatrix = glm::rotate(m_viewMatrix, glm::radians(settings.xz), glm::vec3(0.f, 0.f, 1.f));
+
+ m_translationVector = -cameraData.pos;
+
+ m_inverseViewMatrix = glm::inverse(m_viewMatrix);
+ m_inverseTranslationVector = -m_translationVector;
+ m_controlPoints = {
+ {cameraData.pos[0], cameraData.pos[1], cameraData.pos[2]},
+ {cameraData.pos[0], cameraData.pos[1] - 2.f, cameraData.pos[2] - 2.f},
+ {cameraData.pos[0] + 2.f, cameraData.pos[1] + 2.f, cameraData.pos[2] -2.f},
+ {cameraData.pos[0] + 2.f, cameraData.pos[1], cameraData.pos[2]}
+ };
+}
+
Camera::Camera(SceneCameraData cameraData) :
m_pos(cameraData.pos),
m_heightAngle(cameraData.heightAngle),
m_focalLength(cameraData.focalLength),
m_aperture(cameraData.aperture)
{
- m_viewMatrix = Vec4Ops::getViewMatrix4(cameraData.look, cameraData.up, cameraData.over);
- // add settings.xy rotation
- m_viewMatrix = glm::rotate(m_viewMatrix, glm::radians(settings.xy), glm::vec3(0.f, 1.f, 0.f));
- m_viewMatrix = glm::rotate(m_viewMatrix, glm::radians(settings.yz), glm::vec3(1.f, 0.f, 0.f));
- m_viewMatrix = glm::rotate(m_viewMatrix, glm::radians(settings.xz), glm::vec3(0.f, 0.f, 1.f));
-
- m_translationVector = -cameraData.pos;
-
- m_inverseViewMatrix = glm::inverse(m_viewMatrix);
- m_inverseTranslationVector = -m_translationVector;
- m_controlPoints = {
- {cameraData.pos[0], cameraData.pos[1], cameraData.pos[2]},
- {cameraData.pos[0], cameraData.pos[1] - 2.f, cameraData.pos[2] - 2.f},
- {cameraData.pos[0] + 2.f, cameraData.pos[1] + 2.f, cameraData.pos[2] -2.f},
- {cameraData.pos[0] + 2.f, cameraData.pos[1], cameraData.pos[2]}
- };
+ updateViewMatrix(cameraData);
}
glm::mat4 Camera::getViewMatrix() const {