#ifndef _VisibilitySceneManager_H__ #define _VisibilitySceneManager_H__ #include "OgreSceneNodeHierarchyInterface.h" #include "VisibilityManager.h" #include #include #include namespace Ogre { /** This class implements the default scene manager, using occlusion queries for visibility culling. */ class VisibilitySceneManager: public SceneManager { public: VisibilitySceneManager(const String& name, GtpVisibility::VisibilityManager *visManager); ~VisibilitySceneManager(); /** Overriden from SceneManager. Renders the scene using occlusion culling. @remark the type of algorithm is specified by the occlusion culling manager type using by the visibility manager. */ void _renderVisibleObjects(); void _findVisibleObjects(Camera* cam, bool onlyShadowCasters); void _updateSceneGraph(Camera* cam); /** Sets the given option for the SceneManager @remarks Options are: "Algorithm", int *; */ virtual bool setOption(const String &, const void *); /** Gets the given option for the Scene VisibilityManager. @remarks See setOption */ virtual bool getOption(const String &, void *); bool getOptionValues(const String & key, StringVector &refValueList); bool getOptionKeys( StringVector &refKeys ); /** Sets the visibility manager. @param visManager the visibility manager */ void setVisibilityManager(GtpVisibility::VisibilityManager *visManager); /** See set. */ GtpVisibility::VisibilityManager *getVisibilityManager(); protected: SceneNodeHierarchyInterface *mHierarchyInterface; GtpVisibility::VisibilityManager *mVisibilityManager; bool mUseDepthPass; bool mShowVisualization; bool mVisualizeCulledNodes; }; } // namespace Ogre #endif // VisibilitySceneManager_H