#include "VisibilityManager.h" #include "StopAndWaitCullingManager.h" #include "CoherentHierarchicalCullingManager.h" #include "FrustumCullingManager.h" #include "DummyPreprocessingManager.h" #include "DummyQueryManager.h" namespace GtpVisibility { //----------------------------------------------------------------------- VisibilityManager::VisibilityManager(VisibilityEnvironment *visEnvironment): mVisibilityThreshold(0) { mVisibilityEnvironment = visEnvironment; mCullingManagerType = VisibilityEnvironment::STOP_AND_WAIT_CULLING; mCullingManager = new StopAndWaitCullingManager(); mQueryManager = new DummyQueryManager(0); mPreprocessingManager = new DummyPreprocessingManager(0); } //----------------------------------------------------------------------- VisibilityManager::~VisibilityManager() { delete mCullingManager; } //----------------------------------------------------------------------- void VisibilityManager::SetCullingManager( VisibilityEnvironment::CullingManagerType ocmType) { if (mCullingManagerType != ocmType) { // delete old culling manager delete mCullingManager; mCullingManagerType = ocmType; switch (ocmType) { case VisibilityEnvironment::STOP_AND_WAIT_CULLING: mCullingManager = new StopAndWaitCullingManager(); break; case VisibilityEnvironment::COHERENT_HIERARCHICAL_CULLING: mCullingManager = new CoherentHierarchicalCullingManager(); break; case VisibilityEnvironment::FRUSTUM_CULLING: mCullingManager = new FrustumCullingManager(); break; default: mCullingManager = new StopAndWaitCullingManager(); break; } } } //----------------------------------------------------------------------- void VisibilityManager::SetVisibilityCullingThreshold(unsigned int visibilityThreshold) { mVisibilityThreshold = visibilityThreshold; mCullingManager->SetVisibilityThreshold(mVisibilityThreshold); } //----------------------------------------------------------------------- CullingManager *VisibilityManager::GetCullingManager() { return mCullingManager; } //----------------------------------------------------------------------- void VisibilityManager::ApplyVisibilityCulling() { mCullingManager->RenderScene(); } VisibilityEnvironment::CullingManagerType VisibilityManager::GetCullingManagerType() { return mCullingManagerType; } //----------------------------------------------------------------------- } // namespace GtpVisibility