mr_bones_    14/09/01 01:00:55

  Added:                vdrift-20120722-bullet.patch
  Log:
  add patch from Peter Asplund to allow building against newer versions of 
sci-physics/bullet
  
  (Portage version: 2.2.8-r1/cvs/Linux x86_64, unsigned Manifest commit)

Revision  Changes    Path
1.1                  games-sports/vdrift/files/vdrift-20120722-bullet.patch

file : 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/games-sports/vdrift/files/vdrift-20120722-bullet.patch?rev=1.1&view=markup
plain: 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/games-sports/vdrift/files/vdrift-20120722-bullet.patch?rev=1.1&content-type=text/plain

Index: vdrift-20120722-bullet.patch
===================================================================
--- src/cardynamics.cpp Mon Jan 19 23:26:36 1970
+++ src/cardynamics.cpp Mon Jan 19 23:26:36 1970
@@ -1791,23 +1791,29 @@
 
 bool CARDYNAMICS::WheelContactCallback(
        btManifoldPoint& cp,
-       const btCollisionObject* colObj0,
-       int partId0,
+       const btCollisionObjectWrapper* col0,
+       int part0,
        int index0,
-       const btCollisionObject* colObj1,
-       int partId1,
+       const btCollisionObjectWrapper* col1,
+       int part1,
        int index1)
 {
-       // cars are fracture bodies, wheel is a cylinder shape
-       const btCollisionShape* shape = colObj0->getCollisionShape();
-       if ((colObj0->getInternalType() & CO_FRACTURE_TYPE) &&
+#if (BT_BULLET_VERSION < 281)
+       const btCollisionObject* obj = col0;
+       const btCollisionShape* shape = obj->getCollisionShape();
+       const btCollisionShape* rootshape = obj->getRootCollisionShape();
+#else
+       const btCollisionObject* obj = col0->getCollisionObject();
+       const btCollisionShape* shape = col0->getCollisionShape();
+       const btCollisionShape* rootshape = obj->getCollisionShape();
+#endif
+       if ((obj->getInternalType() & CO_FRACTURE_TYPE) &&
                (shape->getShapeType() == CYLINDER_SHAPE_PROXYTYPE))
        {
-               // is contact within contact patch?
-               const btCompoundShape* car = static_cast<const 
btCompoundShape*>(colObj0->getRootCollisionShape());
-               const btCylinderShapeX* wheel = static_cast<const 
btCylinderShapeX*>(shape);
-               btVector3 contactPoint = cp.m_localPointA - 
car->getChildTransform(cp.m_index0).getOrigin();
-               if (-direction::up.dot(contactPoint) > 0.5 * wheel->getRadius())
+               const btCompoundShape* carshape = static_cast<const 
btCompoundShape*>(rootshape);
+               const btCylinderShapeX* wheelshape = static_cast<const 
btCylinderShapeX*>(shape);
+               btVector3 contactPoint = cp.m_localPointA - 
carshape->getChildTransform(cp.m_index0).getOrigin();
+               if (-direction::up.dot(contactPoint) > 0.5 * 
wheelshape->getRadius())
                {
                        // break contact (hack)
                        cp.m_normalWorldOnB = btVector3(0, 0, 0);
--- src/cardynamics.h   Mon Jan 19 23:26:36 1970
+++ src/cardynamics.h   Mon Jan 19 23:26:36 1970
@@ -25,6 +25,12 @@
 class FractureBody;
 class PTree;
 
+#if (BT_BULLET_VERSION < 281)
+#define btCollisionObjectWrapper btCollisionObject
+#else
+struct btCollisionObjectWrapper;
+#endif
+
 class CARDYNAMICS : public btActionInterface
 {
 friend class PERFORMANCE_TESTING;
@@ -151,11 +157,11 @@
 
        static bool WheelContactCallback(
                btManifoldPoint& cp,
-               const btCollisionObject* colObj0,
-               int partId0,
+               const btCollisionObjectWrapper* col0,
+               int part0,
                int index0,
-               const btCollisionObject* colObj1,
-               int partId1,
+               const btCollisionObjectWrapper* col1,
+               int part1,
                int index1);
 
 protected:
--- src/dynamicsworld.cpp       Mon Jan 19 23:26:36 1970
+++ src/dynamicsworld.cpp       Mon Jan 19 23:26:36 1970
@@ -105,7 +105,7 @@
        int patch_id = -1;
        const BEZIER * b = 0;
        const TRACKSURFACE * s = TRACKSURFACE::None();
-       btCollisionObject * c = 0;
+       const btCollisionObject * c = 0;
 
        MyRayResultCallback ray(origin, p, caster);
        rayTest(origin, p, ray);
@@ -221,6 +221,7 @@
 
 void DynamicsWorld::fractureCallback()
 {
+#if (BT_BULLET_VERSION < 281)
        m_activeConnections.resize(0);
 
        int numManifolds = getDispatcher()->getNumManifolds();
@@ -268,4 +269,5 @@
                btRigidBody* child = body->updateConnection(con_id);
                if (child) addRigidBody(child);
        }
+#endif
 }



Reply via email to