source: trunk/VUT/GtpVisibility/src/VisibilityManager.cpp @ 99

Revision 99, 2.6 KB checked in by mattausch, 19 years ago (diff)
RevLine 
[59]1#include "VisibilityManager.h"
2#include "StopAndWaitCullingManager.h"
3#include "CoherentHierarchicalCullingManager.h"
4#include "FrustumCullingManager.h"
[65]5#include "DummyPreprocessingManager.h"
6#include "DummyQueryManager.h"
[59]7
8namespace GtpVisibility {
[95]9
[74]10//-----------------------------------------------------------------------
11VisibilityManager::VisibilityManager(VisibilityEnvironment *visEnvironment):
[94]12mVisibilityThreshold(0), mCullingManager(NULL)
[59]13{
14        mVisibilityEnvironment = visEnvironment;
[74]15       
[99]16        //SetCullingManager(VisibilityEnvironment::COHERENT_HIERARCHICAL_CULLING);
17        SetCullingManager(VisibilityEnvironment::FRUSTUM_CULLING);
[65]18
19        mQueryManager = new DummyQueryManager(0);
20        mPreprocessingManager = new DummyPreprocessingManager(0);
[59]21}
[74]22//-----------------------------------------------------------------------
[59]23VisibilityManager::~VisibilityManager()
24{
25        delete mCullingManager;
26}
[74]27//-----------------------------------------------------------------------
28void VisibilityManager::SetCullingManager(
29        VisibilityEnvironment::CullingManagerType ocmType)
[59]30{
[94]31        // change only if necessary
32        if (!mCullingManager || (mCullingManagerType != ocmType))
[59]33        {
[92]34                // delete old culling manager
[94]35                if(mCullingManager)
36                        delete mCullingManager;
[59]37
[92]38                mCullingManagerType = ocmType;
39               
[59]40                switch (ocmType)
41                {
[74]42                case VisibilityEnvironment::STOP_AND_WAIT_CULLING:
43                        mCullingManager = new StopAndWaitCullingManager();
[59]44                        break;
45
46                case VisibilityEnvironment::COHERENT_HIERARCHICAL_CULLING:
[74]47                        mCullingManager = new CoherentHierarchicalCullingManager();
[59]48                        break;
49
50                case VisibilityEnvironment::FRUSTUM_CULLING:
[74]51                        mCullingManager = new FrustumCullingManager();
[59]52                        break;
53                default:
[74]54                        mCullingManager = new StopAndWaitCullingManager();
[59]55                        break;
56                }
57        }
58}
[74]59//-----------------------------------------------------------------------
60void VisibilityManager::SetVisibilityCullingThreshold(unsigned int visibilityThreshold)
61{
62        mVisibilityThreshold = visibilityThreshold;
63        mCullingManager->SetVisibilityThreshold(mVisibilityThreshold);
64}
65//-----------------------------------------------------------------------
[59]66CullingManager *VisibilityManager::GetCullingManager()
67{
68        return mCullingManager;
69}
[74]70//-----------------------------------------------------------------------
[59]71void VisibilityManager::ApplyVisibilityCulling()
72{
73        mCullingManager->RenderScene();
74}
[92]75VisibilityEnvironment::CullingManagerType VisibilityManager::GetCullingManagerType()
76{
77        return mCullingManagerType;
78}
[74]79//-----------------------------------------------------------------------
[59]80} // namespace GtpVisibility
Note: See TracBrowser for help on using the repository browser.