source: trunk/VUT/Ogre/src/OgreVisibilitySceneManager.cpp @ 74

Revision 74, 4.0 KB checked in by mattausch, 19 years ago (diff)

added support for release mode

Line 
1#include <OgreMath.h>
2#include <OgreIteratorWrappers.h>
3#include <OgreRenderSystem.h>
4#include <OgreCamera.h>
5#include "OgreVisibilitySceneManager.h"
6#include "OgreSceneNodeHierarchyInterface.h"
7#include "OgreVisibilityOptionsManager.h"
8
9//#include <windows.h>
10
11namespace Ogre {
12//namespace GtpVisibility {
13//-----------------------------------------------------------------------
14VisibilitySceneManager::VisibilitySceneManager(GtpVisibility::VisibilityManager *visManager)
15:mVisibilityManager(visManager)
16{
17        mHierarchyInterface = new SceneNodeHierarchyInterface(this, mDestRenderSystem);
18}
19//-----------------------------------------------------------------------
20VisibilitySceneManager::~VisibilitySceneManager()
21{
22        delete mHierarchyInterface;
23}
24//-----------------------------------------------------------------------
25void VisibilitySceneManager::_findVisibleObjects(Camera* cam, bool onlyShadowCasters)
26{
27        // empty because we have to find objects in _renderVisibleObjects
28}
29//-----------------------------------------------------------------------
30void VisibilitySceneManager::_renderVisibleObjects()
31{
32                //-- render background
33        clearSpecialCaseRenderQueues();
34        addSpecialCaseRenderQueue(RENDER_QUEUE_BACKGROUND);
35        addSpecialCaseRenderQueue(RENDER_QUEUE_SKIES_EARLY);
36
37        setSpecialCaseRenderQueueMode(SceneManager::SCRQM_INCLUDE);
38        SceneManager::_renderVisibleObjects( );
39#ifdef GTP_VISIBILITY_MODIFIED_OGRE
40        _deleteRenderedQueueGroups();
41#endif
42        //-- render visible objects (i.e., all but overlay)
43        clearSpecialCaseRenderQueues();
44        addSpecialCaseRenderQueue(RENDER_QUEUE_OVERLAY);
45        setSpecialCaseRenderQueueMode(SceneManager::SCRQM_EXCLUDE);
46
47        mHierarchyInterface->InitFrame(mSceneRoot, mCameraInProgress);
48        mVisibilityManager->ApplyVisibilityCulling();
49
50#ifdef GTP_VISIBILITY_MODIFIED_OGRE
51        _deleteRenderedQueueGroups();
52#endif
53
54        //-- render overlay
55        clearSpecialCaseRenderQueues();
56        SceneManager::_renderVisibleObjects( );
57
58        clearSpecialCaseRenderQueues();
59}
60//-----------------------------------------------------------------------
61void VisibilitySceneManager::_updateSceneGraph(Camera* cam)
62{
63        mVisibilityManager->GetCullingManager()->SetHierarchyInterface(mHierarchyInterface);
64        mHierarchyInterface->SetRenderSystem(mDestRenderSystem);
65       
66        SceneManager::_updateSceneGraph(cam);
67}
68//-----------------------------------------------------------------------
69bool VisibilitySceneManager::setOption(const String & key, const void * val)
70{
71        return VisibilityOptionsManager(mVisibilityManager, mHierarchyInterface).
72                setOption(key, val) || SceneManager::setOption(key, val);
73}
74//-----------------------------------------------------------------------
75bool VisibilitySceneManager::getOption(const String & key, void *val)
76{
77        if (key == "NumHierarchyNodes")
78        {
79                * static_cast<unsigned int *>(val) = (unsigned int)mSceneNodes.size();
80                return true;
81        }
82       
83        return VisibilityOptionsManager(mVisibilityManager, mHierarchyInterface).
84                getOption(key, val) && SceneManager::getOption(key, val);
85}
86//-----------------------------------------------------------------------
87bool VisibilitySceneManager::getOptionValues(const String & key, StringVector  &refValueList)
88{
89        return SceneManager::getOptionValues(key, refValueList);
90}
91//-----------------------------------------------------------------------
92bool VisibilitySceneManager::getOptionKeys(StringVector & refKeys)
93{
94        return VisibilityOptionsManager(mVisibilityManager, mHierarchyInterface).
95                getOptionKeys(refKeys) || SceneManager::getOptionKeys(refKeys);
96}
97//-----------------------------------------------------------------------
98void VisibilitySceneManager::setVisibilityManager(GtpVisibility::VisibilityManager *visManager)
99{
100        mVisibilityManager = visManager;
101}
102//-----------------------------------------------------------------------
103GtpVisibility::VisibilityManager *VisibilitySceneManager::getVisibilityManager( void )
104{
105        return mVisibilityManager;
106}
107
108//} // namespace GtpVisibility
109} // namespace Ogre
Note: See TracBrowser for help on using the repository browser.