#ifndef _OcclusionCullingSceneManager_H__ #define _OcclusionCullingSceneManager_H__ #include "OgreSceneNode.h" #include "OgreSceneManager.h" #include "OgreOcclusionCullingSceneTraverser.h" #include "OgrePrerequisites.h" #include "OgreSolidHalfBoundingBox.h" #include using namespace std; namespace Ogre { /** Class which implements a scene mangager which uses occlusion queries for culling occluded objects */ class OcclusionCullingSceneManager : public SceneManager { public: OcclusionCullingSceneManager(); //~OcclusionCullingSceneManager(); /** Overriden from SceneManager. Renders the scene with the specified algorithm /** The algorithm is one of RENDER_CULL_FRUSTUM: renders the scene with view frustum culling only RENDER_STOP_AND_WAIT: renders the scene with the hierarchical stop and wait algorithm RENDER_COHERENT: renders the scene with the coherent hierarchical algorithm */ void _renderVisibleObjects(void); 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 Manager. @remarks See setOption */ virtual bool getOption( const String &, void * ); bool getOptionValues( const String & key, StringVector &refValueList ); bool getOptionKeys( StringVector &refKeys ); protected: OcclusionCullingSceneTraverser mSceneTraverser; }; } #endif // OCCLUSIONCULLINGSCENEMANAGER_H