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

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