Ignore:
Timestamp:
01/18/09 02:25:26 (15 years ago)
Author:
mattausch
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/Pvs.h

    r3283 r3284  
    1111class Bvh; 
    1212 
     13struct PvsEntry 
     14{ 
     15        PvsEntry(SceneEntity *ent, float t):  
     16        mEntity(ent) 
     17        //, mTimeStamp(t)  
     18        {} 
     19 
     20        friend bool operator<(const PvsEntry &a, const PvsEntry &b); 
     21 
     22 
     23        /////////////// 
     24 
     25        SceneEntity *mEntity; 
     26        //float mTimeStamp; 
     27}; 
     28 
     29 
     30 
     31 
     32typedef std::vector<PvsEntry> PvsEntryContainer; 
     33 
    1334 
    1435/** Class representing the Potentially Visible Set (PVS) from a view cell. 
     
    1637class Pvs 
    1738{ 
    18  
    1939public: 
    2040 
     
    2242 
    2343        bool Empty() const; 
    24  
    25         void AddEntry(Bvh *bvh, BvhNode *node); 
     44        /** Convencience method adding all scene entities associated with a bvh node. 
     45        */ 
     46        void AddEntry(Bvh *bvh, BvhNode *node, float timeStamp = -1); 
    2647 
    2748        int GetSize() const; 
    2849 
    29         inline SceneEntity *GetEntry(int i) const; 
     50        inline SceneEntity *GetEntity(int i) const; 
     51         
     52        inline PvsEntry GetEntry(int i) const; 
    3053 
    31         inline void AddEntry(SceneEntity *ent, float timeStamp = 0.0f); 
     54        inline void AddEntry(const PvsEntry &entry); 
     55        /* Sort entries by timestamp 
     56        */ 
     57        void Sort(); 
    3258 
    3359 
     
    3561 
    3662        /// vector of PVS entries 
    37         SceneEntityContainer mEntries;  
    38         std::vector<float> mTimeStamps; 
    39  
    40         static bool sStoreTimeStamps; 
     63        PvsEntryContainer mEntries;  
    4164}; 
    4265 
    4366 
    44 inline SceneEntity *Pvs::GetEntry(int i) const  
     67inline SceneEntity *Pvs::GetEntity(int i) const  
     68{ 
     69        return mEntries[i].mEntity;  
     70} 
     71 
     72 
     73inline PvsEntry Pvs::GetEntry(int i) const  
    4574{ 
    4675        return mEntries[i];  
     
    4877 
    4978 
    50 inline void Pvs::AddEntry(SceneEntity *ent, float timeStamp)  
     79inline void Pvs::AddEntry(const PvsEntry &entry)  
    5180{ 
    52         mEntries.push_back(ent);  
    53  
    54         if (sStoreTimeStamps) 
    55         { 
    56                 mTimeStamps.push_back(timeStamp); 
    57         } 
     81        mEntries.push_back(entry); 
    5882} 
    5983 
     
    6589 
    6690 
    67 inline void Pvs::AddEntry(Bvh *bvh, BvhNode *node)  
     91inline void Pvs::AddEntry(Bvh *bvh, BvhNode *node, float timeStamp)  
    6892{ 
    6993        int geometrySize; 
     
    7397        for (int i = 0; i < geometrySize; ++ i) 
    7498        { 
    75                 AddEntry(entities[i]); 
     99                AddEntry(PvsEntry(entities[i], timeStamp)); 
    76100        } 
    77101} 
     102 
    78103 
    79104 
Note: See TracChangeset for help on using the changeset viewer.