00001 #ifndef _OctreeHierarchyInterface_H__ 00002 #define _OctreeHierarchyInterface_H__ 00003 00004 #include <OgreOctree.h> 00005 #include "OgrePlatformHierarchyInterface.h" 00006 00007 namespace Ogre { 00011 class OctreeHierarchyInterface : public PlatformHierarchyInterface 00012 { 00013 public: 00014 OctreeHierarchyInterface(SceneManager *sm, RenderSystem *rsys); 00015 00020 void SetNumOctreeNodes(unsigned int num); 00021 00026 //bool getOption( const String &, void * ); 00027 //bool getOptionKeys( StringVector &refKeys ); 00028 void PullUpVisibility(GtpVisibility::HierarchyNode *node); 00033 void TraverseNode(GtpVisibility::HierarchyNode *node); 00034 void RenderNode(GtpVisibility::HierarchyNode *node); 00035 bool IsLeaf(GtpVisibility::HierarchyNode *node); 00036 bool HasGeometry(GtpVisibility::HierarchyNode *node); 00037 bool HasGreaterDistance(GtpVisibility::HierarchyNode *node1, 00038 GtpVisibility::HierarchyNode *node2); 00039 00040 void SetNodeVisible(GtpVisibility::HierarchyNode *node, const bool visible); 00041 void SetLastVisited(GtpVisibility::HierarchyNode *node, const int frameId); 00042 00043 bool IsNodeVisible(GtpVisibility::HierarchyNode *node); 00044 int LastVisited(GtpVisibility::HierarchyNode *node); 00045 00046 protected: 00051 AxisAlignedBox *GetBoundingBox(GtpVisibility::HierarchyNode *node); 00056 Real GetSquaredViewDepth(const Camera* cam, const AxisAlignedBox* box) const; 00057 unsigned int mNumOctreeNodes; 00058 }; 00059 } // namespace Ogre 00060 00061 #endif // OctreeHierarchyInterface_H