#include "OgreOcclusionCullingSceneManager.h" #include "OgreMath.h" #include "OgreIteratorWrappers.h" #include "OgreRenderSystem.h" #include "OgreCamera.h" #include "OgreHardwareOcclusionQuery.h" //#include "OgreWireBoundingBox.h" #include "OgreSolidHalfBoundingBox.h" #include namespace Ogre { //----------------------------------------------------------------------- OcclusionCullingSceneManager::OcclusionCullingSceneManager() { mOcclusionCullingSceneTraverser = new OcclusionCullingSceneTraverser(this, mDestRenderSystem); } //----------------------------------------------------------------------- OcclusionCullingSceneManager::~OcclusionCullingSceneManager() { delete mOcclusionCullingSceneTraverser; } //----------------------------------------------------------------------- void OcclusionCullingSceneManager::_findVisibleObjects( Camera* cam, bool onlyShadowCasters ) { // empty because we have to find objects in _renderVisibleObjects } //----------------------------------------------------------------------- void OcclusionCullingSceneManager::_renderVisibleObjects( void ) { mOcclusionCullingSceneTraverser->renderScene(mCameraInProgress, mSceneRoot); SceneManager::_renderVisibleObjects( ); } //----------------------------------------------------------------------- /*void OcclusionCullingSceneManager::renderZPass() { traverseNode(mSceneRoot); }*/ //----------------------------------------------------------------------- void OcclusionCullingSceneManager::_updateSceneGraph( Camera* cam ) { mOcclusionCullingSceneTraverser->setNumSceneNodes(mSceneNodes.size()); mOcclusionCullingSceneTraverser->setRenderSystem(mDestRenderSystem); mOcclusionCullingSceneTraverser->preprocess(); SceneManager::_updateSceneGraph(cam); } //----------------------------------------------------------------------- bool OcclusionCullingSceneManager::setOption( const String & key, const void * val ) { mOcclusionCullingSceneTraverser->setOption(key, val); return SceneManager::setOption( key, val ); } //----------------------------------------------------------------------- bool OcclusionCullingSceneManager::getOption( const String & key, void *val ) { mOcclusionCullingSceneTraverser->getOption(key, val); return SceneManager::getOption( key, val ); } //----------------------------------------------------------------------- bool OcclusionCullingSceneManager::getOptionValues( const String & key, StringVector &refValueList ) { return SceneManager::getOptionValues( key, refValueList ); } //----------------------------------------------------------------------- bool OcclusionCullingSceneManager::getOptionKeys( StringVector & refKeys ) { SceneManager::getOptionKeys( refKeys ); mOcclusionCullingSceneTraverser->getOptionKeys( refKeys ); return true; } }