Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Oct 20, 2008, 5:40:38 PM (16 years ago)
Author:
rgrieder
Message:

Downgraded Bullet to latest tagged version: 2.72
That should give us more stability.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • code/branches/physics/src/bullet/BulletSoftBody/btSoftBodyConcaveCollisionAlgorithm.cpp

    r1963 r1972  
    5151
    5252btSoftBodyTriangleCallback::btSoftBodyTriangleCallback(btDispatcher*  dispatcher,btCollisionObject* body0,btCollisionObject* body1,bool isSwapped):
    53 m_dispatcher(dispatcher),
    54 m_dispatchInfoPtr(0)
     53          m_dispatcher(dispatcher),
     54        m_dispatchInfoPtr(0)
    5555{
    5656        m_softBody = (btSoftBody*) (isSwapped? body1:body0);
    5757        m_triBody = isSwapped? body0:body1;
    58 
    59         //
    60         // create the manifold from the dispatcher 'manifold pool'
    61         //
    62         //        m_manifoldPtr = m_dispatcher->getNewManifold(m_convexBody,m_triBody);
    63 
     58       
     59          //
     60          // create the manifold from the dispatcher 'manifold pool'
     61          //
     62//        m_manifoldPtr = m_dispatcher->getNewManifold(m_convexBody,m_triBody);
     63
     64          clearCache();
     65}
     66
     67btSoftBodyTriangleCallback::~btSoftBodyTriangleCallback()
     68{
    6469        clearCache();
    65 }
    66 
    67 btSoftBodyTriangleCallback::~btSoftBodyTriangleCallback()
    68 {
    69         clearCache();
    70         //      m_dispatcher->releaseManifold( m_manifoldPtr );
    71 
    72 }
    73 
     70//      m_dispatcher->releaseManifold( m_manifoldPtr );
     71 
     72}
     73 
    7474
    7575void    btSoftBodyTriangleCallback::clearCache()
     
    8989void btSoftBodyTriangleCallback::processTriangle(btVector3* triangle,int partId, int triangleIndex)
    9090{
    91         //just for debugging purposes
     91        //just for debugging purposes
    9292        //printf("triangle %d",m_triangleCount++);
    9393        btCollisionObject* ob = static_cast<btCollisionObject*>(m_triBody);
     
    9595        ci.m_dispatcher1 = m_dispatcher;
    9696
    97         ///debug drawing of the overlapping triangles
     97                ///debug drawing of the overlapping triangles
    9898        if (m_dispatchInfoPtr && m_dispatchInfoPtr->m_debugDraw && m_dispatchInfoPtr->m_debugDraw->getDebugMode() > 0)
    9999        {
     
    108108        btHashKey<btTriIndex> triKey(triIndex.getUid());
    109109
    110 
     110       
    111111        btTriIndex* shapeIndex = m_shapeCache[triKey];
    112112        if (shapeIndex)
     
    117117                //copy over user pointers to temporary shape
    118118                tm->setUserPointer(ob->getRootCollisionShape()->getUserPointer());
    119 
     119               
    120120                btCollisionShape* tmpShape = ob->getCollisionShape();
    121121                ob->internalSetTemporaryCollisionShape( tm );
    122 
     122               
    123123
    124124                btCollisionAlgorithm* colAlgo = ci.m_dispatcher1->findAlgorithm(m_softBody,m_triBody,0);//m_manifoldPtr);
    125 
     125               
    126126                colAlgo->processCollision(m_softBody,m_triBody,*m_dispatchInfoPtr,m_resultOut);
    127127                colAlgo->~btCollisionAlgorithm();
     
    134134
    135135        //btCollisionObject* colObj = static_cast<btCollisionObject*>(m_convexProxy->m_clientObject);
    136 
    137         //      if (m_softBody->getCollisionShape()->getShapeType()==
    138         {
    139                 //              btVector3 other;
     136       
     137//      if (m_softBody->getCollisionShape()->getShapeType()==
     138        {
     139//              btVector3 other;
    140140                btVector3 normal = (triangle[1]-triangle[0]).cross(triangle[2]-triangle[0]);
    141141                normal.normalize();
    142142                normal*= BT_SOFTBODY_TRIANGLE_EXTRUSION;
    143                 //              other=(triangle[0]+triangle[1]+triangle[2])*0.333333f;
    144                 //              other+=normal*22.f;
     143//              other=(triangle[0]+triangle[1]+triangle[2])*0.333333f;
     144//              other+=normal*22.f;
    145145                btVector3       pts[6] = {triangle[0]+normal,
    146146                        triangle[1]+normal,
    147                         triangle[2]+normal,
    148                         triangle[0]-normal,
    149                         triangle[1]-normal,
    150                         triangle[2]-normal};
     147                triangle[2]+normal,
     148                triangle[0]-normal,
     149                triangle[1]-normal,
     150                triangle[2]-normal};
    151151
    152152                btConvexHullShape* tm = new btConvexHullShape(&pts[0].getX(),6);
    153153
    154154
    155                 //              btBU_Simplex1to4 tm(triangle[0],triangle[1],triangle[2],other);
    156 
     155//              btBU_Simplex1to4 tm(triangle[0],triangle[1],triangle[2],other);
     156               
    157157                //btTriangleShape tm(triangle[0],triangle[1],triangle[2]);     
    158                 //      tm.setMargin(m_collisionMarginTriangle);
    159 
     158        //      tm.setMargin(m_collisionMarginTriangle);
     159               
    160160                //copy over user pointers to temporary shape
    161161                tm->setUserPointer(ob->getRootCollisionShape()->getUserPointer());
    162 
     162               
    163163                btCollisionShape* tmpShape = ob->getCollisionShape();
    164164                ob->internalSetTemporaryCollisionShape( tm );
    165 
     165               
    166166
    167167                btCollisionAlgorithm* colAlgo = ci.m_dispatcher1->findAlgorithm(m_softBody,m_triBody,0);//m_manifoldPtr);
     
    170170
    171171                //m_resultOut->setShapeIdentifiers(-1,-1,partId,triangleIndex);
    172                 //      cvxcvxalgo.setShapeIdentifiers(-1,-1,partId,triangleIndex);
    173                 //              cvxcvxalgo.processCollision(m_convexBody,m_triBody,*m_dispatchInfoPtr,m_resultOut);
     172        //      cvxcvxalgo.setShapeIdentifiers(-1,-1,partId,triangleIndex);
     173//              cvxcvxalgo.processCollision(m_convexBody,m_triBody,*m_dispatchInfoPtr,m_resultOut);
    174174                colAlgo->processCollision(m_softBody,m_triBody,*m_dispatchInfoPtr,m_resultOut);
    175175                colAlgo->~btCollisionAlgorithm();
    176176                ci.m_dispatcher1->freeCollisionAlgorithm(colAlgo);
    177 
    178 
     177               
     178               
    179179                ob->internalSetTemporaryCollisionShape( tmpShape );
    180180                triIndex.m_childShape = tm;
     
    183183        }
    184184
    185 
     185       
    186186
    187187}
     
    195195        m_resultOut = resultOut;
    196196
    197 
     197       
    198198        btVector3       aabbWorldSpaceMin,aabbWorldSpaceMax;
    199199        m_softBody->getAabb(aabbWorldSpaceMin,aabbWorldSpaceMax);
     
    218218void btSoftBodyConcaveCollisionAlgorithm::processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut)
    219219{
    220 
    221 
     220       
     221       
    222222        btCollisionObject* convexBody = m_isSwapped ? body1 : body0;
    223223        btCollisionObject* triBody = m_isSwapped ? body0 : body1;
     
    229229                btCollisionObject*      triOb = triBody;
    230230                btConcaveShape* concaveShape = static_cast<btConcaveShape*>( triOb->getCollisionShape());
    231 
    232                 //      if (convexBody->getCollisionShape()->isConvex())
     231               
     232        //      if (convexBody->getCollisionShape()->isConvex())
    233233                {
    234234                        btScalar collisionMarginTriangle = concaveShape->getMargin();
    235 
    236                         //                      resultOut->setPersistentManifold(m_btSoftBodyTriangleCallback.m_manifoldPtr);
     235                                       
     236//                      resultOut->setPersistentManifold(m_btSoftBodyTriangleCallback.m_manifoldPtr);
    237237                        m_btSoftBodyTriangleCallback.setTimeStepAndCounters(collisionMarginTriangle,dispatchInfo,resultOut);
    238238
     
    240240                        //m_dispatcher->clearManifold(m_btSoftBodyTriangleCallback.m_manifoldPtr);
    241241
    242                         //                      m_btSoftBodyTriangleCallback.m_manifoldPtr->setBodies(convexBody,triBody);
     242//                      m_btSoftBodyTriangleCallback.m_manifoldPtr->setBodies(convexBody,triBody);
    243243
    244244
    245245                        concaveShape->processAllTriangles( &m_btSoftBodyTriangleCallback,m_btSoftBodyTriangleCallback.getAabbMin(),m_btSoftBodyTriangleCallback.getAabbMax());
    246 
    247                         //      resultOut->refreshContactPoints();
    248 
    249                 }
    250 
     246                       
     247                //      resultOut->refreshContactPoints();
     248       
     249                }
     250       
    251251        }
    252252
     
    288288                btScalar        m_ccdSphereRadius;
    289289                btScalar        m_hitFraction;
    290 
     290       
    291291
    292292                LocalTriangleSphereCastCallback(const btTransform& from,const btTransform& to,btScalar ccdSphereRadius,btScalar hitFraction)
     
    297297                {                       
    298298                }
    299 
    300 
     299               
     300               
    301301                virtual void processTriangle(btVector3* triangle, int partId, int triangleIndex)
    302302                {
     
    328328
    329329
    330 
    331 
    332 
     330       
     331
     332       
    333333        if (triBody->getCollisionShape()->isConcave())
    334334        {
     
    350350
    351351                btConcaveShape* triangleMesh = (btConcaveShape*) concavebody->getCollisionShape();
    352 
     352               
    353353                if (triangleMesh)
    354354                {
    355355                        triangleMesh->processAllTriangles(&raycastCallback,rayAabbMin,rayAabbMax);
    356356                }
    357 
     357       
    358358
    359359
Note: See TracChangeset for help on using the changeset viewer.