Ignore:
Timestamp:
01/15/08 23:02:37 (16 years ago)
Author:
bittner
Message:

Havran ray caster updates

File:
1 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/Lib/Vis/Preprocessing/src/Exporter.cpp

    r2575 r2599  
    8383void Exporter::ExportKdIntersectable(const KdIntersectable &kdObj) 
    8484{ 
    85         KdNode *node = kdObj.GetItem(); 
     85        KdNode *root = kdObj.GetItem(); 
    8686        Intersectable::NewMail(); 
    8787 
    88         // todo: traverse to leaves 
    89         if (node->IsLeaf()) 
    90         { 
    91                 // eyport leaf pvs 
    92                 KdLeaf *leaf = static_cast<KdLeaf *>(node); 
    93  
    94                 ObjectContainer::const_iterator oit, oit_end = leaf->mObjects.end(); 
    95  
    96                 for (oit = leaf->mObjects.begin(); oit != oit_end; ++ oit) 
    97                 {        
    98                         Intersectable *obj = *oit; 
    99          
    100                         if (!obj->Mailed()) 
    101                         { 
    102                                 ExportIntersectable(obj); 
    103                                 obj->Mail();                                     
    104                         }                                
    105                 } 
     88        stack<KdNode *> tStack; 
     89 
     90        tStack.push(root); 
     91 
     92        while (!tStack.empty()) { 
     93          KdNode *node = tStack.top(); 
     94          tStack.pop(); 
     95          // todo: traverse to leaves 
     96          if (node->IsLeaf()) 
     97                { 
     98                  // eyport leaf pvs 
     99                  KdLeaf *leaf = static_cast<KdLeaf *>(node); 
     100                   
     101                  ObjectContainer::const_iterator oit, oit_end = leaf->mObjects.end(); 
     102                   
     103                  for (oit = leaf->mObjects.begin(); oit != oit_end; ++ oit) 
     104                        {        
     105                          Intersectable *obj = *oit; 
     106                           
     107                          if (1 || !obj->Mailed()) 
     108                                { 
     109                                  ExportIntersectable(obj); 
     110                                  obj->Mail();                                   
     111                                }                        
     112                        } 
     113                } else { 
     114                  KdInterior *interior = (KdInterior *)node; 
     115                  tStack.push(interior->mBack); 
     116                  tStack.push(interior->mFront); 
     117                   
     118                } 
     119           
    106120        } 
    107121} 
Note: See TracChangeset for help on using the changeset viewer.