source: GTP/trunk/Lib/Vis/OnlineCullingCHC/src/VisibilityManager.cpp @ 2280

Revision 2280, 4.0 KB checked in by mattausch, 17 years ago (diff)

removed dependency on ogre in gtpvisibility

RevLine 
[59]1#include "VisibilityManager.h"
2#include "StopAndWaitCullingManager.h"
3#include "CoherentHierarchicalCullingManager.h"
4#include "FrustumCullingManager.h"
[65]5#include "DummyPreprocessingManager.h"
[2278]6#include "RandomUpdateCullingManager.h"
[2280]7#include "CullingLogManager.h"
[59]8
[2280]9
[59]10namespace GtpVisibility {
[95]11
[74]12//-----------------------------------------------------------------------
13VisibilityManager::VisibilityManager(VisibilityEnvironment *visEnvironment):
[722]14mVisibilityThreshold(0),
15mCullingManager(NULL),
[153]16mQueryManager(NULL),
[100]17mPreprocessingManager(new DummyPreprocessingManager(NULL)),
[147]18mVisibilityEnvironment(visEnvironment),
[155]19mAssumedVisibilityForChc(0)
[59]20{
[720]21#if 1
[107]22        SetCullingManager(VisibilityEnvironment::COHERENT_HIERARCHICAL_CULLING);
[720]23#endif
24#if 0   
25        SetCullingManager(VisibilityEnvironment::STOP_AND_WAIT_CULLING);
26#endif
27#if 0
28        SetCullingManager(VisibilityEnvironment::FRUSTUM_CULLING);
29#endif
[59]30}
[74]31//-----------------------------------------------------------------------
[59]32VisibilityManager::~VisibilityManager()
33{
34        delete mCullingManager;
[153]35        delete mPreprocessingManager;
[2280]36        CullingLogManager::DelSingleton();
[59]37}
[74]38//-----------------------------------------------------------------------
[155]39void VisibilityManager::SetCullingManager(VisibilityEnvironment::
40                                                                                  CullingManagerType ocmType)
[59]41{
[94]42        // change only if necessary
43        if (!mCullingManager || (mCullingManagerType != ocmType))
[59]44        {
[92]45                // delete old culling manager
[100]46                if (mCullingManager)
[103]47                {
[94]48                        delete mCullingManager;
[103]49                }
[155]50
[92]51                mCullingManagerType = ocmType;
52               
[59]53                switch (ocmType)
54                {
[74]55                case VisibilityEnvironment::STOP_AND_WAIT_CULLING:
56                        mCullingManager = new StopAndWaitCullingManager();
[59]57                        break;
58
59                case VisibilityEnvironment::COHERENT_HIERARCHICAL_CULLING:
[155]60                        mCullingManager = new CoherentHierarchicalCullingManager(mAssumedVisibilityForChc);
[59]61                        break;
62
63                case VisibilityEnvironment::FRUSTUM_CULLING:
[2278]64                        //mCullingManager = new FrustumCullingManager();
65                        mCullingManager = new RandomUpdateCullingManager();
[59]66                        break;
[114]67
[59]68                default:
[2280]69                        mCullingManager = new CoherentHierarchicalCullingManager(mAssumedVisibilityForChc);
[59]70                        break;
[114]71
[59]72                }
[114]73
[2280]74                /////////
[254]75                //-- set threshold
[2280]76                mCullingManager->SetVisibilityThreshold(mVisibilityThreshold); 
[59]77        }
78}
[74]79//-----------------------------------------------------------------------
80void VisibilityManager::SetVisibilityCullingThreshold(unsigned int visibilityThreshold)
81{
82        mVisibilityThreshold = visibilityThreshold;
83        mCullingManager->SetVisibilityThreshold(mVisibilityThreshold);
84}
85//-----------------------------------------------------------------------
[59]86CullingManager *VisibilityManager::GetCullingManager()
87{
88        return mCullingManager;
89}
[74]90//-----------------------------------------------------------------------
[59]91void VisibilityManager::ApplyVisibilityCulling()
92{
93        mCullingManager->RenderScene();
94}
[100]95//-----------------------------------------------------------------------
[92]96VisibilityEnvironment::CullingManagerType VisibilityManager::GetCullingManagerType()
97{
98        return mCullingManagerType;
99}
[130]100//-----------------------------------------------------------------------
101void VisibilityManager::SetQueryManager(QueryManager *queryManager)
102{
103        mQueryManager = queryManager;
104}
105//-----------------------------------------------------------------------
106QueryManager *VisibilityManager::GetQueryManager()
107{
108        return mQueryManager;
109}
[153]110//-----------------------------------------------------------------------
[155]111void VisibilityManager::SetAssumedVisibilityForChc(unsigned int assumedVisibility)
112                                                                         
[146]113{
[155]114        mAssumedVisibilityForChc = assumedVisibility;
[146]115
[155]116        // in case we currently use chc
[146]117        if (VisibilityManager::GetCullingManagerType() ==
118                VisibilityEnvironment::COHERENT_HIERARCHICAL_CULLING)
119        {
[2066]120                static_cast<CoherentHierarchicalCullingManager *>(mCullingManager)->
[155]121                                SetAssumedVisibility(assumedVisibility);
[146]122        }
123}
[925]124//-----------------------------------------------------------------------
125VisibilityEnvironment *VisibilityManager::GetVisibilityEnvironment()
126{
127        return mVisibilityEnvironment;
128}
[155]129
[59]130} // namespace GtpVisibility
Note: See TracBrowser for help on using the repository browser.