Ignore:
Timestamp:
09/02/08 15:29:20 (16 years ago)
Author:
mattausch
Message:
 
File:
1 edited

Legend:

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

    r2894 r2895  
    1212namespace CHCDemoEngine 
    1313{ 
     14 
     15// the number of visibility states 
     16#define NUM_STATES 2 
    1417 
    1518//////// 
     
    149152        inline int CountPrimitives() const; 
    150153 
     154        static void SetCurrentState(int _state) { sCurrentState = _state; } 
     155 
    151156 
    152157protected: 
    153158 
    154         ///////////// 
    155          
    156159        /// the depth of this node 
    157160        unsigned char mDepth; 
     
    160163        /// the parent node 
    161164        BvhNode *mParent; 
    162         /// stores the visibility related info 
    163         VisibilityInfo mVisibility; 
     165 
     166 
     167        ////////////// 
     168        //-- these members define the current state 
     169 
     170        /// stores the visibility related info  
     171        VisibilityInfo mVisibility[NUM_STATES]; 
    164172 
    165173        ///////// 
    166174        //-- used for view frustum culling 
    167175 
    168         int mPlaneMask; 
    169         int mPreferredPlane; 
     176        int mPlaneMask[NUM_STATES]; 
     177        int mPreferredPlane[NUM_STATES]; 
     178 
     179        // the current state 
     180        static int sCurrentState; 
     181 
     182 
     183        //////////////////// 
    170184 
    171185 
     
    221235int BvhNode::GetLastVisitedFrame() const  
    222236{  
    223         return mVisibility.mLastVisitedFrame;  
     237        return mVisibility[sCurrentState].mLastVisitedFrame;  
    224238} 
    225239 
     
    227241void BvhNode::SetLastVisitedFrame(const int lastVisited)  
    228242{  
    229         mVisibility.mLastVisitedFrame = lastVisited;  
     243        mVisibility[sCurrentState].mLastVisitedFrame = lastVisited;  
    230244} 
    231245 
     
    233247bool BvhNode::IsVisible() const  
    234248{  
    235         return mVisibility.mIsVisible;  
     249        return mVisibility[sCurrentState].mIsVisible;  
    236250} 
    237251 
     
    239253void BvhNode::SetVisible(bool visible)  
    240254{  
    241         mVisibility.mIsVisible = visible;  
     255        mVisibility[sCurrentState].mIsVisible = visible;  
    242256} 
    243257 
     
    245259void BvhNode::IncTimesTestedInvisible()  
    246260{  
    247         ++ mVisibility.mTimesInvisible;  
     261        ++ mVisibility[sCurrentState].mTimesInvisible;  
    248262} 
    249263 
     
    251265int BvhNode::GetTimesTestedInvisible() const  
    252266{  
    253         return mVisibility.mTimesInvisible;  
     267        return mVisibility[sCurrentState].mTimesInvisible;  
    254268} 
    255269 
     
    257271void BvhNode::SetTimesTestedInvisible(int t)  
    258272{  
    259         mVisibility.mTimesInvisible = t;  
     273        mVisibility[sCurrentState].mTimesInvisible = t;  
    260274} 
    261275 
     
    263277bool BvhNode::IsViewFrustumCulled() const  
    264278{  
    265         return mVisibility.mIsFrustumCulled;  
     279        return mVisibility[sCurrentState].mIsFrustumCulled;  
    266280} 
    267281 
     
    269283void BvhNode::SetViewFrustumCulled(bool frustumCulled)  
    270284{  
    271         mVisibility.mIsFrustumCulled = frustumCulled;  
     285        mVisibility[sCurrentState].mIsFrustumCulled = frustumCulled;  
    272286} 
    273287 
     
    275289bool BvhNode::IsNew() const  
    276290{  
    277         return mVisibility.mIsNew; 
     291        return mVisibility[sCurrentState].mIsNew; 
    278292} 
    279293 
     
    281295void BvhNode::SetIsNew(bool isNew)  
    282296{  
    283         mVisibility.mIsNew = isNew;  
    284 } 
    285  
     297        mVisibility[sCurrentState].mIsNew = isNew;  
     298} 
     299 
     300 
     301void BvhNode::SetAssumedVisibleFrameId(int t)  
     302{  
     303        mVisibility[sCurrentState].mAssumedVisibleFrameId = t;  
     304} 
     305 
     306 
     307int BvhNode::GetAssumedVisibleFrameId() const  
     308{  
     309        return mVisibility[sCurrentState].mAssumedVisibleFrameId; 
     310} 
     311 
     312 
     313int BvhNode::GetLastQueriedFrame() const 
     314{ 
     315        return mVisibility[sCurrentState].mLastQueriedFrame; 
     316} 
     317 
     318 
     319void BvhNode::SetLastQueriedFrame(int lastTested) 
     320{ 
     321        mVisibility[sCurrentState].mLastQueriedFrame = lastTested; 
     322} 
    286323 
    287324int BvhNode::GetLastRenderedFrame() const  
     
    309346 
    310347 
    311 void BvhNode::SetAssumedVisibleFrameId(int t)  
    312 {  
    313         mVisibility.mAssumedVisibleFrameId = t;  
    314 } 
    315  
    316  
    317 int BvhNode::GetAssumedVisibleFrameId() const  
    318 {  
    319         return mVisibility.mAssumedVisibleFrameId; 
    320 } 
    321  
    322  
    323 int BvhNode::GetLastQueriedFrame() const 
    324 { 
    325         return mVisibility.mLastQueriedFrame; 
    326 } 
    327  
    328  
    329 void BvhNode::SetLastQueriedFrame(int lastTested) 
    330 { 
    331         mVisibility.mLastQueriedFrame = lastTested; 
    332 } 
    333348 
    334349 
Note: See TracChangeset for help on using the changeset viewer.