#include "StopAndWaitTraverser.h" #include "SceneEntity.h" namespace CHCDemoEngine { using namespace std; StopAndWaitTraverser::StopAndWaitTraverser() { } void StopAndWaitTraverser::Traverse() { while (!mDistanceQueue.empty()) { BvhNode *node = mDistanceQueue.top(); mDistanceQueue.pop(); if (0 && !IsNodeGeometryVisible(node, 10)) { node->SetVisible(false); continue; } if (mBvh->IsWithinViewFrustum(node)) { // if intersects near plane assume visible and don't issue test if (mBvh->IntersectsNearPlane(node)) { TraverseNode(node); } else { OcclusionQuery *query = IssueOcclusionQuery(node); const bool visible = (query->GetQueryResult() > mVisibilityThreshold); if (visible) { TraverseNode(node); } else { ++ mStats.mNumQueryCulledNodes; } } } else { ++ mStats.mNumFrustumCulledNodes; } } } }