[CORE][ADD] Embed terrain hit test

This commit is contained in:
Linloir 2022-12-19 19:29:33 +08:00
parent 54c5e6d52e
commit 8bdf5cc390
No known key found for this signature in database
GPG Key ID: 58EEB209A0F2C366

View File

@ -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;
}