From 8bdf5cc3908e301973c0b38bf4df6f42294d578c Mon Sep 17 00:00:00 2001 From: Linloir <3145078758@qq.com> Date: Mon, 19 Dec 2022 19:29:33 +0800 Subject: [PATCH] [CORE][ADD] Embed terrain hit test --- FinalProject/sceneviewer.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/FinalProject/sceneviewer.cpp b/FinalProject/sceneviewer.cpp index 050c021..5af9f2b 100644 --- a/FinalProject/sceneviewer.cpp +++ b/FinalProject/sceneviewer.cpp @@ -71,6 +71,7 @@ void SceneViewer::extractShaderResource(const QString& shaderName) { Renderable* SceneViewer::hitTest(const Ray& ray) { HitRecord newRecord = HitRecord(); Renderable* newObject = nullptr; + // Object hit test for (int i = 0; i < _objects.size(); i++) { Logger::debug("Testing object " + std::to_string(i)); Renderable* obj = _objects[i]; @@ -90,6 +91,18 @@ Renderable* SceneViewer::hitTest(const Ray& ray) { newObject = obj; } } + // Terrain hit test + HitRecord hitRecord = _terrain->hit(ray); + if (hitRecord.hitted()) { + Logger::debug("Hitted terrain"); + } + else { + Logger::debug("Missed terrain"); + } + if (hitRecord.hitted() && hitRecord.t() < newRecord.t()) { + newRecord = hitRecord; + newObject = nullptr; + } _hitRecord = newRecord; return newObject; }