Ignore:
Timestamp:
06/20/05 08:13:57 (19 years ago)
Author:
mattausch
Message:

fixed bug with tight octree boxes
added more flexible renderqueue (can delete per flag)
reordered functions in visibility terrain scene manager

Location:
trunk/VUT/work/ogre_changes/Plugins/OctreeSceneManager/src
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/VUT/work/ogre_changes/Plugins/OctreeSceneManager/src/OgreOctree.cpp

    r135 r139  
    3636#include <OgreOctree.h> 
    3737#include <OgreOctreeNode.h> 
     38#include <OgreLogManager.h> 
    3839 
    3940namespace Ogre 
     
    109110                mDepth = 0; 
    110111 
     112        _updateBounds(); 
    111113#endif //GTP_VISIBILITY_MODIFIED_OGRE 
    112114    mNumNodes = 0; 
     
    175177        //mWireBoundingBox->setupBoundingBox(mBox); 
    176178        mWireBoundingBox->setupBoundingBox(mWorldAABB); 
     179 
    177180    return mWireBoundingBox; 
    178181} 
     
    229232        // Reset bounds first 
    230233    mWorldAABB.setNull(); 
    231  
     234   
    232235    // Update bounds from own attached objects 
    233236        NodeList::iterator it, it_end; 
     
    247250            for (int k = 0; k < 2; ++k) 
    248251            { 
    249                 if (mChildren[i][j][k] != 0) 
     252                if (mChildren[i][j][k]) 
    250253                                { 
    251254                                        mWorldAABB.merge(mChildren[i][j][k]->_getWorldAABB()); 
     
    254257        } 
    255258        } 
     259        // HACK: clamp to bounds 
     260        AxisAlignedBox box; 
     261        _getCullBounds(&box); 
     262        mWorldAABB = mWorldAABB.intersection(box);  
     263         
     264        //std::stringstream d; d << "updating box: " << mWorldAABB << ", depth: " << mDepth << "null: " << mBox.isNull(); 
     265        //LogManager::getSingleton().logMessage(d.str()); 
     266 
    256267        // recursively update parent bounds 
    257268        if (mParent) 
  • trunk/VUT/work/ogre_changes/Plugins/OctreeSceneManager/src/OgreOctreeSceneManager.cpp

    r135 r139  
    11761176//----------------------------------------------------------------------- 
    11771177void OctreeSceneManager::_renderOctant(Camera *cam, Octree *octant, bool onlyShadowCasters,  
    1178                                                                            bool leaveTransparentsInQueue)//, bool useZPassQueue) 
     1178                                                                           const int leavePassesInQueue) 
    11791179{ 
    11801180        // delete previously rendered objects from the render queue 
    1181         _deleteRenderedQueueGroups(leaveTransparentsInQueue); 
     1181        _deleteRenderedQueueGroups(leavePassesInQueue); 
    11821182 
    11831183        //Add stuff to be rendered; 
  • trunk/VUT/work/ogre_changes/Plugins/OctreeSceneManager/src/OgreTerrainRenderable.cpp

    r132 r139  
    388388            if (mLastNextLevel != nextLevel) 
    389389            { 
    390                                 //LogManager::getSingleton().logMessage("vbuffer binding"); 
    391                 if (nextLevel > 0) 
    392                 { 
    393                                         //LogManager::getSingleton().logMessage("level > 0"); 
    394                     mTerrain->vertexBufferBinding->setBinding(DELTA_BINDING,  
     390                                if (nextLevel > 0) 
     391                { 
     392                                        mTerrain->vertexBufferBinding->setBinding(DELTA_BINDING,  
    395393                        mDeltaBuffers[nextLevel - 1]); 
    396394                } 
    397395                else 
    398                 { 
    399                                         //LogManager::getSingleton().logMessage("level <= 0 (dummy b)"); 
     396                {                                
    400397                    // bind dummy (incase bindings checked) 
    401398                    mTerrain->vertexBufferBinding->setBinding(DELTA_BINDING,  
     
    406403 
    407404        } 
    408                 //else LogManager::getSingleton().logMessage("no lod morph"); 
    409                 /*std::stringstream d;  
    410                 d << "terrain: " << this->getName() << ", notify camera: " << cam->getName() << ", pos: " << StringConverter::toString(cam->getDerivedPosition()) <<  
    411                         ", distance: " << StringConverter::toString(L) << ", lod level: " << mLastNextLevel 
    412                         << ", render level: " << getRenderLevel() << ", morph factor: " << mLODMorphFactor; 
    413                 LogManager::getSingleton().logMessage(d.str());*/ 
    414  
    415405    } 
    416406    //----------------------------------------------------------------------- 
Note: See TracChangeset for help on using the changeset viewer.