source: trunk/VUT/Ogre/src/OgreVisibilityOptionsManager.cpp @ 155

Revision 155, 2.5 KB checked in by mattausch, 19 years ago (diff)

added node traversal interface

RevLine 
[75]1#include "OgreVisibilityOptionsManager.h"
2
3namespace Ogre {
4//-----------------------------------------------------------------------
[100]5VisibilityOptionsManager::VisibilityOptionsManager(
6        GtpVisibility::VisibilityManager *visManager,
7        GtpVisibility::HierarchyInterface *hierarchyInterface):
8mVisibilityManager(visManager),
9mHierarchyInterface(hierarchyInterface)
[75]10{
11}
12//-----------------------------------------------------------------------
13bool VisibilityOptionsManager::setOption( const String & key, const void * val )
14{
[100]15        if (key == "Algorithm")
[75]16        {
17                mVisibilityManager->SetCullingManager(*static_cast<const
18                        GtpVisibility::VisibilityEnvironment::CullingManagerType *>(val));
19                return true;
20        }
[100]21        if (key == "Threshold")
[75]22        {
23                mVisibilityManager->SetVisibilityCullingThreshold(*static_cast<const int *>(val));
24                return true;
25        }
[146]26        if (key == "AssumedVisibility")
27        {
[155]28                mVisibilityManager->SetAssumedVisibilityForChc(*static_cast<const int *>(val));
[146]29                return true;
30        }
[155]31        if (key == "TestGeometryForVisibleLeaves")
[86]32        {
[155]33                mHierarchyInterface->TestGeometryForVisibleLeaves(*static_cast<const bool *>(val));
[86]34                return true;
35        }
[75]36       
37        return false;
38}
39//-----------------------------------------------------------------------
40bool VisibilityOptionsManager::getOption( const String & key, void *val )
41{
42        if (key == "NumTraversedNodes")
43        {
44                * static_cast <unsigned int *>(val) =
45                        mHierarchyInterface->GetNumTraversedNodes();
46                return true;
47        }
48        if (key == "NumRenderedNodes")
49        {
50                * static_cast <unsigned int *>(val) =
51                        mHierarchyInterface->GetNumRenderedNodes();
52                return true;
53        }
54        if (key == "NumQueryCulledNodes")
55        {
56                * static_cast <unsigned int *>(val) =
57                        mVisibilityManager->GetCullingManager()->GetNumQueryCulledNodes();
58                return true;
59        }
60        if (key == "NumFrustumCulledNodes")
61        {
62                * static_cast<unsigned int *>(val) =
63                        mVisibilityManager->GetCullingManager()->GetNumFrustumCulledNodes();
64                return true;
65        }
[87]66        if (key == "NumQueriesIssued")
67        {
68                * static_cast<unsigned int *>(val) =
69                        mVisibilityManager->GetCullingManager()->GetNumQueriesIssued();
70                return true;
71        }
[86]72       
[75]73        return false;
74}
75//-----------------------------------------------------------------------
[100]76bool VisibilityOptionsManager::getOptionKeys(StringVector & refKeys)
[75]77{
[155]78        refKeys.push_back("NumRenderedNodes");
79        refKeys.push_back("NumTraversedNodes");
80        refKeys.push_back("NumQueryCulledNodes");
81        refKeys.push_back("NumFrustumCulledNodes");
[75]82       
83        return true;
84}
85} // namespace Ogre
Note: See TracBrowser for help on using the repository browser.