Ignore:
Timestamp:
08/04/06 17:38:52 (18 years ago)
Author:
szydlowski
Message:

occlusion queries in kdtree scene manager working, but performance issues
many features still not implemented (e.g., visualization)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/Lib/Vis/OnlineCullingCHC/OGRE/include/OgreKdTree.h

    r1182 r1183  
    211211                        //virtual void cbInsert(KdTree * caller, KdRenderable * rend) = 0; 
    212212 
    213                         WireBoundingBox * getWireBoundingBox() 
     213                        WireBoundingBox * getWireBoundingBox(bool node = true) 
    214214                        { 
    215215                                if (mWBB == 0) 
    216216                                        mWBB = new WireBoundingBox(); 
    217217 
    218                                 mWBB->setupBoundingBox(mAABB); 
     218                                if (node) 
     219                                        mWBB->setupBoundingBox(mAABB); 
     220                                else 
     221                                        mWBB->setupBoundingBox(mWorldAABB); 
    219222                                 
    220223#ifdef KDTREE_DEBUG 
     224                                SceneManager * sceneManager = Root::getSingleton()._getCurrentSceneManager(); 
    221225                                int level = -1; 
    222226                                bool boxes = false; 
    223                                 if (Root::getSingleton()._getCurrentSceneManager()->getOption("HighlightLevel",&level)) 
     227                                if (sceneManager->getOption("HighlightLevel",&level)) 
    224228                                { 
    225229                                        if (mLevel == level) 
     
    232236                                        { 
    233237                                                mWBB->setMaterial("BaseWhiteNoLighting"); 
    234                                                 if (Root::getSingleton()._getCurrentSceneManager()->getOption("ShowAllBoxes", &boxes)) 
     238                                                if (sceneManager->getOption("ShowAllBoxes", &boxes)) 
    235239                                                { 
    236240                                                        if (boxes) 
     
    279283                        /** Updates bound of the real aabb of kdtree 
    280284                        */ 
    281                         virtual void _updateBounds() = 0; 
    282  
     285                        virtual void _updateBounds(bool recurse = true) = 0; 
    283286 
    284287                        Branch * mParent; 
     
    325328 
    326329                        // branches do not posses geometry => just merge child aabbs 
    327                         virtual void _updateBounds() 
     330                        virtual void _updateBounds(bool recurse = true) 
    328331                        { 
    329332                                // reset box 
     
    336339 
    337340                                // update parent recursively 
    338                                 if (mParent) 
    339                                         mParent->_updateBounds(); 
     341                                if (recurse && mParent) 
     342                                        mParent->_updateBounds(recurse); 
    340343                        } 
    341344                         
     
    365368 
    366369                        // update the world aabb based on the contained geometry 
    367                         virtual void _updateBounds(); 
     370                        virtual void _updateBounds(bool recurse = true); 
    368371 
    369372                        virtual void remove(KdRenderable * rend) 
     
    464467                void dump(void); 
    465468                Real calcCost(void); 
     469 
     470                /** Switches between displaying the bounding box of the node and 
     471                the box of the contained scene nodes 
     472                */ 
     473                inline void setShowNodeAABB(bool show = true) { mShowNodeAABB = show; }; 
     474                inline bool getShowNodeAABB(void) { return mShowNodeAABB; }; 
    466475 
    467476                NodePtr getRoot(void) const { return mKdRoot; }; 
     
    523532                Stats mStats; 
    524533 
     534                // show node or object aabb 
     535                bool mShowNodeAABB; 
     536 
     537 
    525538                // DEBUG 
    526539                void KdTree::dump(KdTree::Node * node); 
Note: See TracChangeset for help on using the changeset viewer.