source: trunk/VUT/OcclusionCullingSceneManager/src/OgreOcclusionCullingOctreeSceneManager.cpp @ 52

Revision 52, 3.6 KB checked in by mattausch, 19 years ago (diff)
RevLine 
[45]1#include "OgreOcclusionCullingOctreeSceneManager.h"
[44]2#include "OgreMath.h"
3#include "OgreIteratorWrappers.h"
4#include "OgreRenderSystem.h"
5#include "OgreCamera.h"
6
7#include <windows.h>
8
9namespace Ogre {
10        //-----------------------------------------------------------------------
[45]11        OcclusionCullingOctreeSceneManager::OcclusionCullingOctreeSceneManager()
[44]12        {
[45]13                mOcclusionCullingOctreeSceneTraverser =
14                        new OcclusionCullingOctreeSceneTraverser(this, mDestRenderSystem);
[44]15
16                //mDisplayNodes = true;
17                //mShowBoundingBoxes = true;
[52]18                //mShowBoxes = true;
19                //mMaxDepth = 20;
[44]20        }
21        //-----------------------------------------------------------------------
[45]22        OcclusionCullingOctreeSceneManager::~OcclusionCullingOctreeSceneManager()
[44]23        {
[45]24                delete mOcclusionCullingOctreeSceneTraverser;
[44]25        }
26        //-----------------------------------------------------------------------
[45]27        void OcclusionCullingOctreeSceneManager::_renderVisibleObjects(void)
[44]28        {
29                //-- render background
30                clearSpecialCaseRenderQueues();
31                addSpecialCaseRenderQueue(RENDER_QUEUE_BACKGROUND);
32                addSpecialCaseRenderQueue(RENDER_QUEUE_SKIES_EARLY);
33       
34                setSpecialCaseRenderQueueMode(SceneManager::SCRQM_INCLUDE);
35                SceneManager::_renderVisibleObjects( );
36                _deleteRenderedQueueGroups();
37
38                //-- render visible objects (i.e., all but overlay)
39                clearSpecialCaseRenderQueues();
40                addSpecialCaseRenderQueue(RENDER_QUEUE_OVERLAY);
41                setSpecialCaseRenderQueueMode(SceneManager::SCRQM_EXCLUDE);
42
[45]43                mOcclusionCullingOctreeSceneTraverser->setSceneRoot(mOctree);
44                mOcclusionCullingOctreeSceneTraverser->renderScene(mCameraInProgress);
[52]45
[44]46                _deleteRenderedQueueGroups();
47
[52]48                //-- render rest, e.g., overlay
[44]49                clearSpecialCaseRenderQueues();
[52]50                SceneManager::_renderVisibleObjects();
51                //_deleteRenderedQueueGroups();
[44]52        }
53        //-----------------------------------------------------------------------
[45]54        void OcclusionCullingOctreeSceneManager::_findVisibleObjects(Camera* cam, bool onlyShadowCasters)
[44]55        {
56                // must be empty because objects are found and rendered in an interleaved fashion
57                // in _renderVisibibleObjects
58        }
59        //-----------------------------------------------------------------------
[45]60        void OcclusionCullingOctreeSceneManager::_updateSceneGraph(Camera* cam)
[44]61        {
[52]62                mOcclusionCullingOctreeSceneTraverser->setNumSceneNodes((int)mSceneNodes.size());
[45]63                mOcclusionCullingOctreeSceneTraverser->setRenderSystem(mDestRenderSystem);
[44]64       
[45]65                mOcclusionCullingOctreeSceneTraverser->setNumOctreeNodes(mNumOctreeNodes);
[44]66
[45]67                OctreeSceneManager::_updateSceneGraph(cam);
[44]68        }
69        //-----------------------------------------------------------------------
[45]70        bool OcclusionCullingOctreeSceneManager::setOption( const String & key, const void * val )
[44]71        {
[45]72                return mOcclusionCullingOctreeSceneTraverser->setOption( key, val) || OctreeSceneManager::setOption( key, val );
[44]73        }
74        //-----------------------------------------------------------------------
[45]75        bool OcclusionCullingOctreeSceneManager::getOption( const String & key, void *val )
[44]76        {
[45]77                return mOcclusionCullingOctreeSceneTraverser->getOption( key, val) || OctreeSceneManager::getOption( key, val ) ;
[44]78        }
79        //-----------------------------------------------------------------------
[45]80        bool OcclusionCullingOctreeSceneManager::getOptionValues( const String & key, StringVector  &refValueList )
[44]81        {
[45]82                return OctreeSceneManager::getOptionValues( key, refValueList );
[44]83        }
84        //-----------------------------------------------------------------------
[45]85        bool OcclusionCullingOctreeSceneManager::getOptionKeys( StringVector & refKeys )
[44]86        {
[45]87                return mOcclusionCullingOctreeSceneTraverser->getOptionKeys ( refKeys ) || OctreeSceneManager::getOptionKeys( refKeys );
[44]88        }
89}       
Note: See TracBrowser for help on using the repository browser.