From 3bb071ae7b630307541f425d61e2a099fc272063 Mon Sep 17 00:00:00 2001 From: karl Date: Sat, 2 Jan 2021 16:14:59 +0100 Subject: [PATCH] Add prototype collision checking It outputs values, but they don't seem quite correct... --- ECS/Systems/CollisionSystem.h | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/ECS/Systems/CollisionSystem.h b/ECS/Systems/CollisionSystem.h index d90f903..f3713c1 100644 --- a/ECS/Systems/CollisionSystem.h +++ b/ECS/Systems/CollisionSystem.h @@ -3,6 +3,7 @@ #include "../../Util/kdtree.h" #include "../Components/LODObjMesh.h" #include "../Components/Mesh.h" +#include "../Components/MouseLook.h" #include "../Components/ObjMesh.h" #include "../Components/Transform.h" #include "../ECS.h" @@ -71,6 +72,25 @@ class CollisionSystem : public EntitySystem { std::cout << kdtree->to_string() << std::endl; } + void tick(World *pWorld, float deltaTime) override { + pWorld->each([&](Entity *ent, ComponentHandle transform, + ComponentHandle mouse_look) { + 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, -1)); + + Triangle *result = kdtree->intersect_ray(ray); + + if (result) { + std::cout << result->p1[0] << ", " << result->p1[2] << ", " << result->p1[3] + << std::endl; + } + // TODO: Also output visually + }); + } + void configure(World *pWorld) override { myWorld = pWorld; } World *myWorld;