]> git.localhorst.tv Git - blank.git/blobdiff - src/camera.cpp
basic aiming
[blank.git] / src / camera.cpp
index fbf10bca2e1391a9f88522c0ba5ab9fe040475f1..8804d115b36574cdab2618fb441f0d1a50958696 100644 (file)
@@ -52,6 +52,15 @@ 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);