mirror of
https://github.com/Linloir/SceneEditor.git
synced 2025-12-19 00:18:12 +08:00
[CORE][ADD] Embed terrain hit test
This commit is contained in:
parent
54c5e6d52e
commit
8bdf5cc390
@ -71,6 +71,7 @@ void SceneViewer::extractShaderResource(const QString& shaderName) {
|
|||||||
Renderable* SceneViewer::hitTest(const Ray& ray) {
|
Renderable* SceneViewer::hitTest(const Ray& ray) {
|
||||||
HitRecord newRecord = HitRecord();
|
HitRecord newRecord = HitRecord();
|
||||||
Renderable* newObject = nullptr;
|
Renderable* newObject = nullptr;
|
||||||
|
// Object hit test
|
||||||
for (int i = 0; i < _objects.size(); i++) {
|
for (int i = 0; i < _objects.size(); i++) {
|
||||||
Logger::debug("Testing object " + std::to_string(i));
|
Logger::debug("Testing object " + std::to_string(i));
|
||||||
Renderable* obj = _objects[i];
|
Renderable* obj = _objects[i];
|
||||||
@ -90,6 +91,18 @@ Renderable* SceneViewer::hitTest(const Ray& ray) {
|
|||||||
newObject = obj;
|
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;
|
_hitRecord = newRecord;
|
||||||
return newObject;
|
return newObject;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user