Revision: 16476
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=16476
Author:   ben2610
Date:     2008-09-11 22:09:07 +0200 (Thu, 11 Sep 2008)

Log Message:
-----------
Bullet patch for compound ray cast. The patch is filed in Bullet patch tracker 
for inclusion in later revision. If it is not included, apply manually 
extern/bullet2/bullet_compound_raycast.patch

Modified Paths:
--------------
    branches/sim_physics/extern/bullet2/readme.txt
    
branches/sim_physics/extern/bullet2/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp

Added Paths:
-----------
    branches/sim_physics/extern/bullet2/bullet_compound_raycast.patch

Added: branches/sim_physics/extern/bullet2/bullet_compound_raycast.patch
===================================================================
--- branches/sim_physics/extern/bullet2/bullet_compound_raycast.patch           
                (rev 0)
+++ branches/sim_physics/extern/bullet2/bullet_compound_raycast.patch   
2008-09-11 20:09:07 UTC (rev 16476)
@@ -0,0 +1,39 @@
+Index: src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp
+===================================================================
+--- src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp (r\x82vision 
16464)
++++ src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp (copie de 
travail)
+@@ -379,12 +379,16 @@
+                                       btTransform childTrans = 
compoundShape->getChildTransform(i);
+                                       const btCollisionShape* 
childCollisionShape = compoundShape->getChildShape(i);
+                                       btTransform childWorldTrans = 
colObjWorldTransform * childTrans;
++                                      // replace collision shape so that 
callback can determine the triangle
++                                      btCollisionShape* saveCollisionShape = 
collisionObject->getCollisionShape();
++                                      
collisionObject->setCollisionShape((btCollisionShape*)childCollisionShape);
+                                       rayTestSingle(rayFromTrans,rayToTrans,
+                                               collisionObject,
+                                               childCollisionShape,
+                                               childWorldTrans,
+                                               resultCallback);
+-
++                                      // restore
++                                      
collisionObject->setCollisionShape(saveCollisionShape);
+                               }
+                       }
+               }
+@@ -571,11 +575,16 @@
+                                       btTransform childTrans = 
compoundShape->getChildTransform(i);
+                                       const btCollisionShape* 
childCollisionShape = compoundShape->getChildShape(i);
+                                       btTransform childWorldTrans = 
colObjWorldTransform * childTrans;
++                                      // replace collision shape so that 
callback can determine the triangle
++                                      btCollisionShape* saveCollisionShape = 
collisionObject->getCollisionShape();
++                                      
collisionObject->setCollisionShape((btCollisionShape*)childCollisionShape);
+                                       objectQuerySingle(castShape, 
convexFromTrans,convexToTrans,
+                                               collisionObject,
+                                               childCollisionShape,
+                                               childWorldTrans,
+                                               resultCallback, 
allowedPenetration);
++                                      // restore
++                                      
collisionObject->setCollisionShape(saveCollisionShape);
+                               }
+                       }
+               }

Modified: branches/sim_physics/extern/bullet2/readme.txt
===================================================================
--- branches/sim_physics/extern/bullet2/readme.txt      2008-09-11 16:50:34 UTC 
(rev 16475)
+++ branches/sim_physics/extern/bullet2/readme.txt      2008-09-11 20:09:07 UTC 
(rev 16476)
@@ -1,4 +1,9 @@
+***
+Apply bullet_compound_raycast.patch if not already applied in Bullet source
+This patch is needed to return correct raycast results on compound shape.
+/ben
 
+
 *** These files in extern/bullet2 are NOT part of the Blender build yet ***
 
 This is the new refactored version of Bullet physics library version 2.x

Modified: 
branches/sim_physics/extern/bullet2/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp
===================================================================
--- 
branches/sim_physics/extern/bullet2/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp
      2008-09-11 16:50:34 UTC (rev 16475)
+++ 
branches/sim_physics/extern/bullet2/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp
      2008-09-11 20:09:07 UTC (rev 16476)
@@ -379,12 +379,16 @@
                                        btTransform childTrans = 
compoundShape->getChildTransform(i);
                                        const btCollisionShape* 
childCollisionShape = compoundShape->getChildShape(i);
                                        btTransform childWorldTrans = 
colObjWorldTransform * childTrans;
+                                       // replace collision shape so that 
callback can determine the triangle
+                                       btCollisionShape* saveCollisionShape = 
collisionObject->getCollisionShape();
+                                       
collisionObject->setCollisionShape((btCollisionShape*)childCollisionShape);
                                        rayTestSingle(rayFromTrans,rayToTrans,
                                                collisionObject,
                                                childCollisionShape,
                                                childWorldTrans,
                                                resultCallback);
-
+                                       // restore
+                                       
collisionObject->setCollisionShape(saveCollisionShape);
                                }
                        }
                }
@@ -571,11 +575,16 @@
                                        btTransform childTrans = 
compoundShape->getChildTransform(i);
                                        const btCollisionShape* 
childCollisionShape = compoundShape->getChildShape(i);
                                        btTransform childWorldTrans = 
colObjWorldTransform * childTrans;
+                                       // replace collision shape so that 
callback can determine the triangle
+                                       btCollisionShape* saveCollisionShape = 
collisionObject->getCollisionShape();
+                                       
collisionObject->setCollisionShape((btCollisionShape*)childCollisionShape);
                                        objectQuerySingle(castShape, 
convexFromTrans,convexToTrans,
                                                collisionObject,
                                                childCollisionShape,
                                                childWorldTrans,
                                                resultCallback, 
allowedPenetration);
+                                       // restore
+                                       
collisionObject->setCollisionShape(saveCollisionShape);
                                }
                        }
                }


_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to