#include "OgreOcclusionCullingTerrainSceneTraverser.h" //#include namespace Ogre { //----------------------------------------------------------------------- void OcclusionCullingTerrainSceneTraverser::traverseNode( Camera *cam, SceneNode *node ) { mNumTraversedNodes ++; if(node->numAttachedObjects() > 0) { renderSceneNode(cam, node); } // internal node: add children to priority queue for further processing Node::ChildNodeIterator it = node->getChildIterator(); while (it.hasMoreElements()) { SceneNode* sceneChild = static_cast(it.getNext()); mDistanceQueue->push(sceneChild); } } /* //----------------------------------------------------------------------- void OcclusionCullingTerrainSceneTraverser::renderSceneNode( Camera *cam, SceneNode *node ) { setRenderingMode(MODE_RENDER); //HACK (too slow) mSceneManager->_renderSceneNode(cam, node); //MessageBox( NULL, "myplugin registered", "this is my plugin", MB_OK | MB_ICONERROR | MB_TASKMODAL); } //----------------------------------------------------------------------- bool OcclusionCullingTerrainSceneTraverser::isLeaf( SceneNode *node ) { return (node->numChildren() == 0); } //----------------------------------------------------------------------- void OcclusionCullingTerrainSceneTraverser::pullUpVisibility( SceneNode *node ) { while(node && !node->isNodeVisible()) { node->setNodeVisible(true); node = static_cast(node->getParent()); } } //----------------------------------------------------------------------- void OcclusionCullingTerrainSceneTraverser::renderBoundingBox( SceneNode *node ) { // Render two halfes of the bounding box (using triangle fans) for(int half = 0; half < 2; half ++) { SolidHalfBoundingBox *box = getSolidHalfBoundingBox(half); box->setupBoundingBox(node->_getWorldAABB()); static RenderOperation ro; mSceneManager->useRenderableViewProjMode(box); box->getRenderOperation(ro); ro.srcRenderable = box; mRenderSystem->_render(ro); //mSceneManager->renderSingleObject(getSolidHalfBoundingBox(half), // getSolidHalfBoundingBox(half)->getTechnique()->getPass(0), false); } }*/ }