Ignore:
Timestamp:
08/21/06 17:05:45 (18 years ago)
Author:
szydlowski
Message:

implemented enhanced vis with early abort
also own frame & time counter in demo mode
fixed dependencies in solution file

Location:
GTP/trunk/Lib/Vis/OnlineCullingCHC/OGRE/include
Files:
2 edited

Legend:

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

    r1220 r1250  
    213213                        virtual bool isEmpty() const = 0; 
    214214                        virtual bool hasGeometry() const = 0; 
     215                         
     216                        virtual void mergeLeaves(std::set<Leaf *>& leaves) = 0; 
    215217 
    216218                        // Gets this node's parent (NULL if this is the root). 
     
    223225                        // add contained objects to render queue 
    224226                        virtual void queueVisibleObjects(unsigned long currentFrame,  
    225                                 Camera* cam, RenderQueue* queue, bool onlyShadowCasters, bool showBoxes) = 0; 
     227                                Camera* cam, RenderQueue* queue, bool onlyShadowCasters, bool showBoxes, bool fullVis = false) = 0; 
    226228 
    227229                        // add contained geometry (Entities) to list 
     
    326328                        virtual bool hasGeometry() const { return false; }; 
    327329 
     330                        virtual void mergeLeaves(std::set<Leaf *>& leaves) 
     331                        { 
     332                                for (std::set<Leaf *>::iterator it = mLeaves.begin(); it != mLeaves.end(); it++) 
     333                                        leaves.insert(*it); 
     334                        } 
     335 
    328336                        // a branch should have at least one child 
    329337                        virtual KdTree::Node * getLeftChild() const { return mLeft; }; 
     
    331339 
    332340                        virtual void queueVisibleObjects(unsigned long currentFrame,  
    333                                 Camera* cam, RenderQueue* queue, bool onlyShadowCasters, bool showBoxes) 
     341                                Camera* cam, RenderQueue* queue, bool onlyShadowCasters, bool showBoxes, bool fullVis = false) 
    334342                        { 
    335343                                if (showBoxes) 
    336344                                        if (mLevel == mOwner->getHiLiteLevel() || mOwner->getShowAllBoxes()) 
    337345                                                queue->addRenderable(getWireBoundingBox()); 
     346 
     347                                if (fullVis) 
     348                                        for (std::set<Leaf *>::iterator it = mLeaves.begin(); it != mLeaves.end(); it ++) 
     349                                                (*it)->queueVisibleObjects(currentFrame, cam, queue, onlyShadowCasters, showBoxes, fullVis); 
    338350                        } 
    339351 
     
    347359                                mWorldAABB.setNull(); 
    348360 
     361                                // merge box & leaves 
    349362                                if (mLeft) 
     363                                { 
    350364                                        mWorldAABB.merge(mLeft->mWorldAABB); 
     365                                        mLeft->mergeLeaves(mLeaves); 
     366                                } 
    351367                                if (mRight) 
     368                                { 
    352369                                        mWorldAABB.merge(mRight->mWorldAABB); 
     370                                        mRight->mergeLeaves(mLeaves); 
     371                                } 
    353372 
    354373                                // update parent recursively 
     
    361380                        Plane  * mSplitPlane; 
    362381                        PlaneEvent::Side mPlaneSide; 
     382                protected: 
     383                        std::set<Leaf *> mLeaves; 
    363384                }; 
    364385 
     
    373394 
    374395                        // a leaf is a leaf, dammit 
    375                         virtual bool isLeaf() const { return true; }; 
     396                        virtual bool isLeaf() const { return true; } 
    376397 
    377398                        // a leaf is empty when it does not posses renderables 
    378                         virtual bool isEmpty() const { return mKdRenderables.empty(); }; 
     399                        virtual bool isEmpty() const { return mKdRenderables.empty(); } 
    379400 
    380401                        // a leaf has geometry when it has renderables 
    381                         virtual bool hasGeometry() const { return !mKdRenderables.empty(); }; 
     402                        virtual bool hasGeometry() const { return !mKdRenderables.empty(); } 
     403 
     404                        // a leaf adds itself to the leaf set 
     405                        virtual void mergeLeaves(std::set<Leaf *>& leaves)      { leaves.insert(this); } 
    382406 
    383407                        // a leaf never has children  
     
    386410 
    387411                        virtual void queueVisibleObjects(unsigned long currentFrame,  
    388                                 Camera* cam, RenderQueue* queue, bool onlyShadowCasters, bool showBoxes); 
     412                                Camera* cam, RenderQueue* queue, bool onlyShadowCasters, bool showBoxes, bool fullVis = false); 
    389413 
    390414                        virtual void getGeometryList(GtpVisibility::GeometryVector *geometryList); 
  • GTP/trunk/Lib/Vis/OnlineCullingCHC/OGRE/include/OgreKdTreeCamera.h

    r1212 r1250  
    5151        // enhanced visibility 
    5252        NodeVisibility getVisibilityEnhanced(const AxisAlignedBox& box) const; 
     53 
     54        // DEBUG 
     55        //mutable unsigned int mNumVisQueries; 
    5356protected: 
    5457 
Note: See TracChangeset for help on using the changeset viewer.