#include "HierarchyInterface.h" #include namespace GtpVisibility { //----------------------------------------------------------------------- HierarchyInterface::HierarchyInterface(): mFrameId(0), mNumTraversedNodes(0), mHierarchyRoot(NULL), mSavedNode(NULL), mCurrentTestIdx(0), mTestGeometryForVisibleLeaves(false) { mDistanceQueue = new DistanceQueue(GtDistance(this)); } //----------------------------------------------------------------------- HierarchyInterface::~HierarchyInterface() { delete mDistanceQueue; } //----------------------------------------------------------------------- void HierarchyInterface::SetHierarchyRoot(HierarchyNode *root) { mHierarchyRoot = root; } //----------------------------------------------------------------------- void HierarchyInterface::InitTraversal() { //-- initialise for front-to-back rendering ++ mFrameId; mCurrentTestIdx = 0; mNumTraversedNodes = 0; mVisibleNodes.clear(); mDistanceQueue->push(mHierarchyRoot); } //----------------------------------------------------------------------- unsigned int HierarchyInterface::GetFrameId() const { return mFrameId; } //----------------------------------------------------------------------- DistanceQueue *HierarchyInterface::GetQueue() { return mDistanceQueue; } //----------------------------------------------------------------------- bool HierarchyInterface::CheckFrustumVisible(HierarchyNode *node) { bool intersects = false; return CheckFrustumVisible(node, intersects); } //----------------------------------------------------------------------- HierarchyNode *HierarchyInterface::GetHierarchyRoot() const { return mHierarchyRoot; } //----------------------------------------------------------------------- unsigned int HierarchyInterface::GetNumTraversedNodes() { return mNumTraversedNodes; } //----------------------------------------------------------------------- unsigned int HierarchyInterface::GetNumRenderedNodes() { return (unsigned int)mVisibleNodes.size(); } //----------------------------------------------------------------------- void HierarchyInterface::TestGeometryForVisibleLeaves(bool testGeometry) { mTestGeometryForVisibleLeaves = testGeometry; } //----------------------------------------------------------------------- std::vector *HierarchyInterface::GetVisibleNodes() { return &mVisibleNodes; } } // namespace GtpVisibility