#include "OgreVisibilityOptionsManager.h" namespace Ogre { //----------------------------------------------------------------------- VisibilityOptionsManager::VisibilityOptionsManager( GtpVisibility::VisibilityManager *visManager, PlatformHierarchyInterface *hierarchyInterface): mVisibilityManager(visManager), mHierarchyInterface(hierarchyInterface) { } //----------------------------------------------------------------------- bool VisibilityOptionsManager::setOption(const String & key, const void * val) { if (key == "Algorithm") { // delete old queries (not needed for e.g., view frustum culling) // note cannot be deleted because of new ogre occlusion query // implementation there we cannot just delete the queries, so // they would stay! // mHierarchyInterface->ResetQueries(); mVisibilityManager->SetCullingManager(*static_cast(val)); return true; } if (key == "Threshold") { mVisibilityManager->SetVisibilityCullingThreshold(*static_cast(val)); return true; } if (key == "AssumedVisibility") { mVisibilityManager->SetAssumedVisibilityForChc(*static_cast(val)); return true; } if (key == "TestGeometryForVisibleLeaves") { mHierarchyInterface->TestGeometryForVisibleLeaves(*static_cast(val)); return true; } return false; } //----------------------------------------------------------------------- bool VisibilityOptionsManager::getOption( const String & key, void *val ) { if (key == "NumTraversedNodes") { * static_cast (val) = mHierarchyInterface->GetNumTraversedNodes(); return true; } if (key == "NumRenderedNodes") { * static_cast (val) = mHierarchyInterface->GetNumRenderedNodes(); return true; } if (key == "NumQueryCulledNodes") { * static_cast (val) = mVisibilityManager->GetCullingManager()->GetNumQueryCulledNodes(); return true; } if (key == "NumFrustumCulledNodes") { * static_cast(val) = mVisibilityManager->GetCullingManager()->GetNumFrustumCulledNodes(); return true; } if (key == "NumQueriesIssued") { * static_cast(val) = mVisibilityManager->GetCullingManager()->GetNumQueriesIssued(); return true; } return false; } //----------------------------------------------------------------------- bool VisibilityOptionsManager::getOptionKeys(StringVector & refKeys) { refKeys.push_back("NumRenderedNodes"); refKeys.push_back("NumTraversedNodes"); refKeys.push_back("NumQueryCulledNodes"); refKeys.push_back("NumFrustumCulledNodes"); refKeys.push_back("NumQueriesIssued"); return true; } } // namespace Ogre