From fc880b397a3e062318acd95045d26c3e7026ab6a Mon Sep 17 00:00:00 2001 From: karl Date: Sat, 2 Jan 2021 16:40:46 +0100 Subject: [PATCH] Add mouse direction getter for CollisionSystem --- ECS/Components/MouseLook.h | 2 ++ ECS/Systems/CollisionSystem.h | 7 +++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/ECS/Components/MouseLook.h b/ECS/Components/MouseLook.h index b98d072..eb00a70 100644 --- a/ECS/Components/MouseLook.h +++ b/ECS/Components/MouseLook.h @@ -11,6 +11,8 @@ struct MouseLook { explicit MouseLook(float sensitivity) : sensitivity(sensitivity) {} + glm::vec3 get_look_direction() { return glm::mat3_cast(rotation) * glm::vec3(0, 0, -1); } + float sensitivity; double yaw = 0.0; diff --git a/ECS/Systems/CollisionSystem.h b/ECS/Systems/CollisionSystem.h index 77e569e..d427c72 100644 --- a/ECS/Systems/CollisionSystem.h +++ b/ECS/Systems/CollisionSystem.h @@ -78,8 +78,10 @@ class CollisionSystem : public EntitySystem { glm::vec3 origin_glm = transform->get_origin(); Vector origin = Vector(origin_glm.x, origin_glm.y, origin_glm.z); - // TODO: Get mouse look direction - Ray ray(origin, Vector(0, 0, -3)); + glm::vec3 direction_glm = mouse_look->get_look_direction(); + Vector direction = Vector(direction_glm.x, direction_glm.y, direction_glm.z); + + Ray ray(origin, direction * 5.0); Triangle *result = kdtree->intersect_ray(ray); @@ -87,6 +89,7 @@ class CollisionSystem : public EntitySystem { std::cout << result->p1[0] << ", " << result->p1[1] << ", " << result->p1[2] << std::endl; } + // TODO: Also output visually }); }