From 355a59edb1fec825a721a8df889a8397a54b9f3b Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Fri, 8 Sep 2017 20:10:18 -0700 Subject: [PATCH] fix missing entities in differential traversal --- libraries/entities/src/DiffTraversal.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/libraries/entities/src/DiffTraversal.cpp b/libraries/entities/src/DiffTraversal.cpp index 86296c82de..d69cef5b8e 100644 --- a/libraries/entities/src/DiffTraversal.cpp +++ b/libraries/entities/src/DiffTraversal.cpp @@ -137,9 +137,9 @@ void DiffTraversal::Waypoint::getNextVisibleElementDifferential(DiffTraversal::V ++_nextIndex; if (nextElement) { AACube cube = nextElement->getAACube(); - if ( view.viewFrustum.calculateCubeKeyholeIntersection(cube) != ViewFrustum::OUTSIDE) { + if (view.viewFrustum.calculateCubeKeyholeIntersection(cube) != ViewFrustum::OUTSIDE) { ViewFrustum::intersection lastIntersection = lastView.viewFrustum.calculateCubeKeyholeIntersection(cube); - if (!(lastIntersection == ViewFrustum::INSIDE && nextElement->getLastChanged() < lastView.startTime)) { + if (lastIntersection != ViewFrustum::INSIDE || nextElement->getLastChanged() > lastView.startTime) { next.element = nextElement; // NOTE: for differential case next.intersection is against the lastView // because this helps the "external scan" optimize its culling @@ -153,7 +153,8 @@ void DiffTraversal::Waypoint::getNextVisibleElementDifferential(DiffTraversal::V distance2 = glm::distance2(lastView.viewFrustum.getPosition(), element->getAACube().calcCenter()); if (distance2 >= visibleLimit * visibleLimit) { next.element = nextElement; - next.intersection = lastIntersection; + // element's intersection with lastView was effectively OUTSIDE + next.intersection = ViewFrustum::OUTSIDE; return; } }