#ifndef _OcclusionCullingTerrainSceneManager_H__ #define _OcclusionCullingTerrainSceneManager_H__ #include #include #include #include #include #include #include "OgrePrerequisites.h" #include "OgreOcclusionCullingSceneTraverser.h" //#include "OgreSolidHalfBoundingBox.h" using namespace std; namespace Ogre { template class octreeless { public: myless(Camera *cam) { mCamera = cam; } //bool operator() (HierarchyNode *v1, HierarchyNode *v2) const bool operator() (T v1, T v2) const { v1->getCullBounds(&mAabb); return mAabb->getSquaredViewDepth(mCamera) > v2->getSquaredViewDepth(mCamera); } private: Camera *mCamera; AxisAlignedBox mAabb; }; /** Class which implements a scene mangager which uses occlusion queries for culling occluded objects */ class OcclusionCullingTerrainSceneManager: public TerrainSceneManager { public: OcclusionCullingTerrainSceneManager(); ~OcclusionCullingTerrainSceneManager(); //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 *mOcclusionCullingSceneTraverser; }; } #endif // OcclusionCullingTerrainSceneManager_H