#ifndef _BspHierarchyInterface_H__ #define _BspHierarchyInterface_H__ #include "OgrePlatformHierarchyInterface.h" namespace Ogre { /** This class implements the hierarchy interface for the Ogre bsp hierarchy. */ class BspHierarchyInterface : public PlatformHierarchyInterface { public: BspHierarchyInterface(SceneManager *sm, RenderSystem *rsys); /** Gets the given option for the scene traverser. @remarks See setOption */ //bool getOption( const String &, void * ); //bool getOptionKeys( StringVector &refKeys ); void PullUpVisibility(GtpVisibility::HierarchyNode *node); /** Traverses given node. @param node current node @remark pushes children on distance queue */ void TraverseNode(GtpVisibility::HierarchyNode *node); void RenderNode(GtpVisibility::HierarchyNode *node); bool IsLeaf(GtpVisibility::HierarchyNode *node) const; bool HasGeometry(GtpVisibility::HierarchyNode *node) const; float GetSquaredDistance(GtpVisibility::HierarchyNode *node) const; void SetNodeVisible(GtpVisibility::HierarchyNode *node, const bool visible); void SetLastVisited(GtpVisibility::HierarchyNode *node, const unsigned int frameId); bool IsNodeVisible(GtpVisibility::HierarchyNode *node) const; unsigned int LastVisited(GtpVisibility::HierarchyNode *node) const; protected: /** Returns pointer to the bounding box of the node. @param node current hierarchy node @returns bounding box of current node */ AxisAlignedBox *GetBoundingBox(GtpVisibility::HierarchyNode *node); unsigned int mNumOctreeNodes; }; } // namespace Ogre #endif // BspHierarchyInterface_H