source: trunk/VUT/OcclusionCullingSceneManager/src/OgreOcclusionCullingTerrainSceneTraverser.cpp @ 37

Revision 37, 2.2 KB checked in by mattausch, 19 years ago (diff)
Line 
1#include "OgreOcclusionCullingTerrainSceneTraverser.h"
2//#include <windows.h>
3
4namespace Ogre {
5        //-----------------------------------------------------------------------
6        void OcclusionCullingTerrainSceneTraverser::traverseNode( Camera *cam, SceneNode *node )
7        {
8                mNumTraversedNodes ++;
9               
10                if(node->numAttachedObjects() > 0)
11                {
12                        renderSceneNode(cam, node);
13                }
14
15                // internal node: add children to priority queue for further processing
16                Node::ChildNodeIterator it = node->getChildIterator();
17                                       
18                while (it.hasMoreElements())                   
19                {
20                        SceneNode* sceneChild = static_cast<SceneNode*>(it.getNext());
21                        mDistanceQueue->push(sceneChild);
22                }
23        }
24/*      //-----------------------------------------------------------------------
25        void OcclusionCullingTerrainSceneTraverser::renderSceneNode( Camera *cam, SceneNode *node )
26        {
27                setRenderingMode(MODE_RENDER);
28               
29                //HACK (too slow)
30                mSceneManager->_renderSceneNode(cam, node);
31                //MessageBox( NULL, "myplugin registered", "this is my plugin", MB_OK | MB_ICONERROR | MB_TASKMODAL);
32        }
33        //-----------------------------------------------------------------------
34        bool OcclusionCullingTerrainSceneTraverser::isLeaf( SceneNode *node )
35        {
36                return (node->numChildren() == 0);
37        }
38        //-----------------------------------------------------------------------
39        void OcclusionCullingTerrainSceneTraverser::pullUpVisibility( SceneNode *node )
40        {
41                while(node && !node->isNodeVisible())
42                {
43                        node->setNodeVisible(true);
44                        node = static_cast<SceneNode *>(node->getParent());
45                }
46        }
47        //-----------------------------------------------------------------------
48        void OcclusionCullingTerrainSceneTraverser::renderBoundingBox( SceneNode *node )
49        {
50                // Render two halfes of the bounding box (using triangle fans)
51                for(int half = 0; half < 2; half ++)
52                {
53                        SolidHalfBoundingBox *box = getSolidHalfBoundingBox(half);
54                       
55                        box->setupBoundingBox(node->_getWorldAABB());
56
57                        static RenderOperation ro;
58                        mSceneManager->useRenderableViewProjMode(box);
59                        box->getRenderOperation(ro);
60                        ro.srcRenderable = box;
61                        mRenderSystem->_render(ro);
62
63                        //mSceneManager->renderSingleObject(getSolidHalfBoundingBox(half),
64                        //      getSolidHalfBoundingBox(half)->getTechnique()->getPass(0), false);
65                }
66        }*/
67}       
Note: See TracBrowser for help on using the repository browser.