X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fcamera.cpp;h=7bf15bf66ccc1209101ce711c2b69c5cf14d72cb;hb=4ef32c5a4a5bdb6da8383f66d8265715eb2ed4f9;hp=8804d115b36574cdab2618fb441f0d1a50958696;hpb=4d0ef1687987a0801469c7262f81efd36636605a;p=blank.git diff --git a/src/camera.cpp b/src/camera.cpp index 8804d11..7bf15bf 100644 --- a/src/camera.cpp +++ b/src/camera.cpp @@ -1,5 +1,7 @@ #include "camera.hpp" +#include "geometry.hpp" + #include #include @@ -7,18 +9,11 @@ namespace blank { Camera::Camera() -: FPSController() -, fov(45.0f) +: fov(PI_0p25) , aspect(1.0f) , near_clip(0.1f) -, far_clip(100.0f) -, projection(glm::perspective(fov, aspect, near_clip, far_clip)) -, view(glm::inverse(Transform())) -, vp(projection) { - -} - -Camera::~Camera() { +, far_clip(256.0f) +, projection(glm::perspective(fov, aspect, near_clip, far_clip)) { } @@ -52,21 +47,6 @@ void Camera::Clip(float near, float far) { UpdateProjection(); } -Ray Camera::Aim() const { - const glm::mat4 inv_vp(glm::inverse(vp)); - glm::vec4 from = inv_vp * glm::vec4(0.0f, 0.0f, -1.0f, 1.0f); - from /= from.w; - glm::vec4 to = inv_vp * glm::vec4(0.0f, 0.0f, 1.0f, 1.0f); - to /= to.w; - return Ray{ glm::vec3(from), glm::normalize(glm::vec3(to - from)) }; -} - - -void Camera::Update(int dt) { - FPSController::Update(dt); - view = glm::inverse(Transform()); - vp = projection * view; -} void Camera::UpdateProjection() { projection = glm::perspective(fov, aspect, near_clip, far_clip);