00001 #ifndef _BspHierarchyInterface_H__ 00002 #define _BspHierarchyInterface_H__ 00003 00004 #include "OgrePlatformHierarchyInterface.h" 00005 00006 namespace Ogre { 00010 class BspHierarchyInterface : public PlatformHierarchyInterface 00011 { 00012 public: 00013 BspHierarchyInterface(SceneManager *sm, RenderSystem *rsys); 00014 00019 //bool getOption( const String &, void * ); 00020 //bool getOptionKeys( StringVector &refKeys ); 00021 void PullUpVisibility(GtpVisibility::HierarchyNode *node); 00026 void TraverseNode(GtpVisibility::HierarchyNode *node); 00027 void RenderNode(GtpVisibility::HierarchyNode *node); 00028 bool IsLeaf(GtpVisibility::HierarchyNode *node); 00029 bool HasGeometry(GtpVisibility::HierarchyNode *node); 00030 bool HasGreaterDistance(GtpVisibility::HierarchyNode *node1, 00031 GtpVisibility::HierarchyNode *node2); 00032 00033 void SetNodeVisible(GtpVisibility::HierarchyNode *node, const bool visible); 00034 void SetLastVisited(GtpVisibility::HierarchyNode *node, const int frameId); 00035 00036 bool IsNodeVisible(GtpVisibility::HierarchyNode *node); 00037 int LastVisited(GtpVisibility::HierarchyNode *node); 00038 00039 protected: 00044 AxisAlignedBox *GetBoundingBox(GtpVisibility::HierarchyNode *node); 00049 Real GetSquaredViewDepth(const Camera* cam, const AxisAlignedBox* box) const; 00050 unsigned int mNumOctreeNodes; 00051 }; 00052 } // namespace Ogre 00053 00054 #endif // BspHierarchyInterface_H