HierarchyInterface.h

Go to the documentation of this file.
00001 #ifndef _GtpVisibilityHierarchyInterface_H__
00002 #define _GtpVisibilityHierarchyInterface_H__
00003 
00004 #include "DistanceQueue.h"
00005 
00006 namespace GtpVisibility {
00007 
00010 class HierarchyInterface
00011 {
00012 public:
00015         HierarchyInterface();
00016         virtual ~HierarchyInterface();
00021     virtual bool IsLeaf(HierarchyNode *node) = 0;
00025         virtual void TraverseNode(HierarchyNode *node) = 0;
00029         virtual void RenderNode(HierarchyNode *node) = 0;
00033         virtual void PullUpVisibility(HierarchyNode *node) = 0;
00038         virtual OcclusionQuery *IssueOcclusionQuery(HierarchyNode *node) = 0;
00042         void SetSceneRoot(HierarchyNode *root);
00046   HierarchyNode *GetSceneRoot() const {
00047     return mSceneRoot;
00048   }
00053         void InitFrame(HierarchyNode *root);
00054         
00058         int GetFrameId();
00062         DistanceQueue *GetQueue();
00068         virtual bool HasGreaterDistance(HierarchyNode *node1, HierarchyNode *node2) = 0;
00073         virtual bool CheckFrustumVisible(HierarchyNode *node, bool &intersects) = 0;
00077         virtual OcclusionQuery *GetNextOcclusionQuery() = 0;
00082     virtual bool HasGeometry(HierarchyNode *node) = 0;
00087         virtual void SetNodeVisible(HierarchyNode *node, const bool visible) = 0;
00090         virtual bool IsNodeVisible(HierarchyNode *node) = 0;
00095         virtual void SetLastVisited(HierarchyNode *node, const int frameId) = 0;
00098         virtual int LastVisited(HierarchyNode *node) = 0;
00099 
00100 protected:
00101         
00102         unsigned int mFrameId;
00103 
00104         int mCurrentTestIdx;
00105         
00106         //--- statistics
00107         unsigned int mNumSceneNodes;
00108         unsigned int mNumTraversedNodes;
00109         unsigned int mNumRenderedGeometry;
00110         unsigned int mNumRenderedNodes;
00111 
00112         DistanceQueue *mDistanceQueue;
00113         HierarchyNode *mSceneRoot;
00114         //HierarchyNode *mCurrentNode;
00115 };
00116 } // namespace GtpVisibility
00117 #endif // GtpVisisibilityHierarchyInterface_H

Generated on Fri Apr 29 19:47:56 2005 for GameTools Visibility Modules by  doxygen 1.4.2