Ignore:
Timestamp:
08/10/06 17:08:57 (18 years ago)
Author:
szydlowski
Message:

visualization workin' fine (TM)
demo recording/playback partially implemented

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

Legend:

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

    r1173 r1195  
    1212 
    1313#include "OgreKdTree.h" 
    14 #include "HierarchyInterface.h" 
    1514 
    1615namespace Ogre 
  • GTP/trunk/Lib/Vis/OnlineCullingCHC/OGRE/include/OgreKdTree.h

    r1192 r1195  
    2727#include <stack> 
    2828 
     29#include "HierarchyInterface.h" 
    2930 
    3031 
     
    210211 
    211212                        // Gets this node's parent (NULL if this is the root). 
    212                         Node *getParent(void) const { return mParent; }; 
    213                         // Gets the nodes left & right child nodes, or NULL if not present 
    214                         // or node is leaf 
    215                         virtual Node *getLeftChild(void) const = 0; 
    216                         virtual Node *getRightChild(void) const = 0; 
    217                          
    218                         // returns the level the node is on 
    219                         int getLevel(void) const { return mLevel; }; 
    220  
     213                        KdTree::Node *getParent(void) const { return mParent; }; 
     214 
     215                        // Gets the nodes left & right child nodes, or NULL if not present or node is leaf 
     216                        virtual KdTree::Node *getLeftChild(void) const = 0; 
     217                        virtual KdTree::Node *getRightChild(void) const = 0; 
     218 
     219                        // add contained objects to render queue 
    221220                        virtual void queueVisibleObjects(unsigned long currentFrame,  
    222221                                Camera* cam, RenderQueue* queue, bool onlyShadowCasters, bool showBoxes) = 0; 
     222 
     223                        // add contained geometry (Entities) to list 
     224                        virtual void getGeometryList(GtpVisibility::GeometryVector *geometryList) = 0; 
    223225                         
     226                        // create (when necessary), setup and return wire bounding box representing the node 
    224227                        WireBoundingBox * getWireBoundingBox() 
    225228                        { 
     
    238241                                 
    239242                                return mWBB; 
    240  
    241243                        } 
     244 
     245                        // returns the level the node is on 
     246                        int getLevel(void) const { return mLevel; }; 
    242247 
    243248                        // functions for the CHC hierarchy interface 
     
    270275                        */ 
    271276                        virtual void _updateBounds(bool recurse = true) = 0; 
    272  
     277                         
     278                        /** bounding box of the node**/ 
    273279                        AxisAlignedBox mAABB; 
    274280 
    275                         // for the CHC hierarchy interface 
    276                         /** the real extent of the node. */ 
     281                        /** mounding box of all objects inside the node */ 
    277282                        AxisAlignedBox mWorldAABB; 
    278283                protected: 
     
    283288                        WireBoundingBox * mWBB; 
    284289                         
     290                        // for the CHC hierarchy interface 
    285291                        unsigned int mLastRendered; 
    286292                        unsigned int mLastVisited; 
     
    317323 
    318324                        // a branch should have at least one child 
    319                         virtual Node * getLeftChild() const { return mLeft; }; 
    320                         virtual Node * getRightChild() const { return mRight; }; 
     325                        virtual KdTree::Node * getLeftChild() const { return mLeft; }; 
     326                        virtual KdTree::Node * getRightChild() const { return mRight; }; 
    321327 
    322328                        virtual void queueVisibleObjects(unsigned long currentFrame,  
     
    327333                                                queue->addRenderable(getWireBoundingBox()); 
    328334                        } 
     335 
     336                        // a branch has no geometry, do nothing 
     337                        virtual void getGeometryList(GtpVisibility::GeometryVector *geometryList) { } 
    329338 
    330339                        // branches do not posses geometry => just merge child aabbs 
     
    369378 
    370379                        // a leaf never has children  
    371                         virtual Node * getLeftChild() const { return 0; }; 
    372                         virtual Node * getRightChild() const { return 0; }; 
     380                        virtual KdTree::Node * getLeftChild() const { return 0; }; 
     381                        virtual KdTree::Node * getRightChild() const { return 0; }; 
    373382 
    374383                        virtual void queueVisibleObjects(unsigned long currentFrame,  
    375384                                Camera* cam, RenderQueue* queue, bool onlyShadowCasters, bool showBoxes); 
    376385 
     386                        virtual void getGeometryList(GtpVisibility::GeometryVector *geometryList); 
     387 
    377388                        // update the world aabb based on the contained geometry 
    378389                        virtual void _updateBounds(bool recurse = true); 
     
    394405                struct SplitCandidate 
    395406                { 
    396                         SplitCandidate(PlaneEventList * e, int n, AxisAlignedBox& a, KdTree::Branch * p, Real c, Real d, SplitInfo * b, PlaneEvent::Side s): 
    397                                 events(e), nObjects(n), aabb(a), parent(p), cost(c), decrease(d), best(b), side(s) { }; 
     407                        SplitCandidate(PlaneEventList * e, int n, AxisAlignedBox& a, 
     408                                KdTree::Branch * p, Real c, Real d, SplitInfo * b, PlaneEvent::Side s): 
     409                        events(e), nObjects(n), aabb(a), parent(p), cost(c), decrease(d), best(b), side(s) 
     410                        { }; 
    398411 
    399412                        bool operator < (const SplitCandidate& rhs) const 
     
    504517 
    505518                // test visibility of objects and add to render queue 
    506                 void queueVisibleObjects(Camera* cam, RenderQueue* queue, bool onlyShadowCasters, bool showBoxes = false); 
     519                void queueVisibleObjects(Camera* cam, RenderQueue* queue, bool onlyShadowCasters,  
     520                        bool showBoxes, KdTree::NodeList& visibleNodes); 
     521 
     522                // find visible nodes & place in list 
     523                //void findVisibleNodes(NodeList& visibleNodes, Camera * cam); 
    507524 
    508525                // self-explanatory ... 
     
    536553 
    537554                // recursive rendering function 
    538                 void recQueueVisibleObjects(KdTree::Node * node, unsigned long currentFrame,  
    539                         Camera* cam, RenderQueue* queue, bool onlyShadowCasters, bool showBoxes); 
     555                void recQueueVisibleObjects(KdTree::Node * node, unsigned long currentFrame, Camera* cam, 
     556                        RenderQueue* queue, bool onlyShadowCasters, bool showBoxes, KdTree::NodeList& visibleNodes); 
     557 
     558                // recursively find visible nodes 
     559                //void recFindVisibleNodes(KdTree::Node * node, NodeList& visibleNodes, Camera * cam); 
    540560 
    541561                // the root node of the kdtree 
Note: See TracChangeset for help on using the changeset viewer.