Ignore:
Timestamp:
11/09/06 19:41:31 (18 years ago)
Author:
bittner
Message:

visibility filter updates

File:
1 edited

Legend:

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

    r1736 r1737  
    24212421void BvHierarchy::CollectObjects(const AxisAlignedBox3 &box, ObjectContainer &objects) 
    24222422{ 
    2423         stack<BvhNode *> nodeStack; 
    2424  
    2425         nodeStack.push(mRoot); 
    2426  
    2427         while (!nodeStack.empty())  
    2428         { 
    2429                 BvhNode *node = nodeStack.top(); 
    2430  
    2431                 nodeStack.pop(); 
    2432  
    2433                 if (node->IsLeaf())  
    2434                 { 
    2435                         BvhLeaf *leaf = (BvhLeaf *)node; 
    2436  
    2437                         ObjectContainer::const_iterator oit, oit_end = leaf->mObjects.end(); 
    2438  
    2439                         for (oit = leaf->mObjects.begin(); oit != oit_end; ++oit)  
    2440                         { 
    2441                                 Intersectable *object = *oit; 
    2442                                 if (Overlap(box, object->GetBox()))  
    2443                                 { 
    2444                                         object->Mail(); 
    2445                                         objects.push_back(object); 
    2446                                 } 
     2423  stack<BvhNode *> nodeStack; 
     2424 
     2425  nodeStack.push(mRoot); 
     2426 
     2427  while (!nodeStack.empty())  
     2428        { 
     2429          BvhNode *node = nodeStack.top(); 
     2430           
     2431          nodeStack.pop(); 
     2432           
     2433          if (node->IsLeaf())  
     2434                { 
     2435                  BvhLeaf *leaf = (BvhLeaf *)node; 
     2436                  if (Overlap(box, leaf->GetBoundingBox())) { 
     2437                        Intersectable *object = GetOrCreateBvhIntersectable(leaf); 
     2438                        if (!object->Mailed()) { 
     2439                          object->Mail(); 
     2440                          objects.push_back(object); 
    24472441                        } 
     2442                  } 
    24482443                }  
    2449                 else  
    2450                 { 
    2451                         BvhInterior *interior = (BvhInterior *)node; 
    2452  
    2453                         if (Overlap(box, interior->GetBoundingBox())) 
    2454                                 nodeStack.push(interior->GetFront()); 
    2455  
    2456                         if (Overlap(box, interior->GetBoundingBox())) 
    2457                                 nodeStack.push(interior->GetBack()); 
    2458                 } 
    2459         } 
    2460 } 
    2461  
    2462 } 
     2444          else  
     2445                { 
     2446                  BvhInterior *interior = (BvhInterior *)node; 
     2447                   
     2448                  if (Overlap(box, interior->GetBoundingBox())) 
     2449                        nodeStack.push(interior->GetFront()); 
     2450                   
     2451                  if (Overlap(box, interior->GetBoundingBox())) 
     2452                        nodeStack.push(interior->GetBack()); 
     2453                } 
     2454        } 
     2455} 
     2456 
     2457} 
Note: See TracChangeset for help on using the changeset viewer.