mirror of
https://github.com/Linloir/SceneEditor.git
synced 2025-12-16 23: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) {
|
||||
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;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user