Ignore:
Timestamp:
06/05/06 23:14:04 (18 years ago)
Author:
mattausch
Message:

added mesh instance support
improved support for occlusion queries + other extensions

File:
1 edited

Legend:

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

    r882 r1001  
    647647        for (int i = 0; i < limit; ++i) 
    648648        { 
    649                 Intersectable *object = objects[i];//*it; 
     649                Intersectable *object = objects[i]; 
     650 
    650651                Mesh *mesh = NULL; 
    651652 
     
    658659                        mesh = dynamic_cast<ViewCell *>(object)->GetMesh(); 
    659660                        break; 
    660                         // TODO: handle transformed mesh instances 
     661                case Intersectable::TRANSFORMED_MESH_INSTANCE: 
     662                        { 
     663                                TransformedMeshInstance *mi =  
     664                                        dynamic_cast<TransformedMeshInstance *>(object); 
     665 
     666                                if (!mi->GetMesh()) 
     667                                        break; 
     668 
     669                                mesh = new Mesh(*mi->GetMesh()); 
     670 
     671                                Matrix4x4 m; 
     672                                mi->GetWorldTransform(m); 
     673                                mesh->ApplyTransformation(m); 
     674                                 
     675                                break; 
     676                        } 
    661677                default: 
    662678                        Debug << "intersectable type not supported" << endl; 
     
    667683                { 
    668684                        if (addToBbox) 
    669                         { 
    670685                                mBox.Include(object->GetBox()); // add to BSP tree aabb 
    671                         } 
    672                  
     686                                 
    673687                        AddMeshToPolygons(mesh, polys, mOutOfBoundsCell); 
    674                 } 
     688 
     689                        // cleanup 
     690                        if (object->Type() == Intersectable::TRANSFORMED_MESH_INSTANCE) 
     691                                DEL_PTR(mesh); 
     692                }        
    675693        } 
    676694 
     
    28512869        mPolys.reserve(rhs.mPolys.size()); 
    28522870        mPlanes.reserve(rhs.mPolys.size()); 
    2853  
    28542871 
    28552872        PolygonContainer::const_iterator it, it_end = rhs.mPolys.end(); 
Note: See TracChangeset for help on using the changeset viewer.