#ifndef _SceneNodeHierarchyInterface_H__ #define _SceneNodeHierarchyInterface_H__ #include "OgrePlatformHierarchyInterface.h" #include "VisibilityInfo.h" #include "QueryManager.h" namespace Ogre { /** This class implements the hierarchy interface for the Ogre scene node hierarchy. */ class SceneNodeHierarchyInterface: public PlatformHierarchyInterface { public: /** Construction taking the current scene manager and the current rendersystem as argument @param sm current scene manager @param rsys current render system */ SceneNodeHierarchyInterface(SceneManager *sm, RenderSystem *rsys); bool IsLeaf(GtpVisibility::HierarchyNode *node) const; void TraverseNode(GtpVisibility::HierarchyNode *node); void RenderNode(GtpVisibility::HierarchyNode *node); void PullUpVisibility(GtpVisibility::HierarchyNode *node) const; bool HasGeometry(GtpVisibility::HierarchyNode *node) const; float GetSquaredDistance(GtpVisibility::HierarchyNode *node) const; void SetNodeVisible(GtpVisibility::HierarchyNode *node, const bool visible) const; void SetLastVisited(GtpVisibility::HierarchyNode *node, const unsigned int frameId) const; bool IsNodeVisible(GtpVisibility::HierarchyNode *node) const; unsigned int LastVisited(GtpVisibility::HierarchyNode *node) const; AxisAlignedBox *GetBoundingBox(GtpVisibility::HierarchyNode *node); void VisualizeCulledNode(GtpVisibility::HierarchyNode *node, GtpVisibility::CullingType type) const; void GetNodeGeometryList(GtpVisibility::HierarchyNode *node, GtpVisibility::GeometryVector *geometryList, bool includeChildren); }; } // namespace Ogre #endif // SceneNodeHierarchyInterface_H