#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); 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; AxisAlignedBox *GetBoundingBox(GtpVisibility::HierarchyNode *node); void VisualizeCulledNode(GtpVisibility::HierarchyNode *node, GtpVisibility::CullingType type); /*bool FindVisibleObjects(GtpVisibility::HierarchyNode *node, InfoContainer *visibleGeometry, bool includeChildren = false);*/ void GetGeometry(GtpVisibility::HierarchyNode *node, GtpVisibility::GeometryList *geometryList, bool includeChildren); }; } // namespace Ogre #endif // SceneNodeHierarchyInterface_H