Revision: 16203
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=16203
Author:   ben2610
Date:     2008-08-21 16:07:24 +0200 (Thu, 21 Aug 2008)

Log Message:
-----------
BGE Bullet fix: physics debug representation of cone shape does not take Up 
axis into account. Use Bullet 2.69 code to fix that bug.

Modified Paths:
--------------
    
trunk/blender/extern/bullet2/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp

Modified: 
trunk/blender/extern/bullet2/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp
===================================================================
--- 
trunk/blender/extern/bullet2/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp
        2008-08-21 13:40:40 UTC (rev 16202)
+++ 
trunk/blender/extern/bullet2/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp
        2008-08-21 14:07:24 UTC (rev 16203)
@@ -856,10 +856,26 @@
                                btScalar radius = 
coneShape->getRadius();//+coneShape->getMargin();
                                btScalar height = 
coneShape->getHeight();//+coneShape->getMargin();
                                btVector3 start = worldTransform.getOrigin();
-                               
getDebugDrawer()->drawLine(start+worldTransform.getBasis() * 
btVector3(btScalar(0.),btScalar(0.),btScalar(0.5)*height),start+worldTransform.getBasis()
 * btVector3(radius,btScalar(0.),btScalar(-0.5)*height),color);
-                               
getDebugDrawer()->drawLine(start+worldTransform.getBasis() * 
btVector3(btScalar(0.),btScalar(0.),btScalar(0.5)*height),start+worldTransform.getBasis()
 * btVector3(-radius,btScalar(0.),btScalar(-0.5)*height),color);
-                               
getDebugDrawer()->drawLine(start+worldTransform.getBasis() * 
btVector3(btScalar(0.),btScalar(0.),btScalar(0.5)*height),start+worldTransform.getBasis()
 * btVector3(btScalar(0.),radius,btScalar(-0.5)*height),color);
-                               
getDebugDrawer()->drawLine(start+worldTransform.getBasis() * 
btVector3(btScalar(0.),btScalar(0.),btScalar(0.5)*height),start+worldTransform.getBasis()
 * btVector3(btScalar(0.),-radius,btScalar(-0.5)*height),color);
+                               // insert here Bullet 2.69 that fixes 
representation of cone
+                               int upAxis= coneShape->getConeUpIndex();
+                               
+                               btVector3       offsetHeight(0,0,0);
+                               offsetHeight[upAxis] = height * btScalar(0.5);
+                               btVector3       offsetRadius(0,0,0);
+                               offsetRadius[(upAxis+1)%3] = radius;
+                               btVector3       offset2Radius(0,0,0);
+                               offset2Radius[(upAxis+2)%3] = radius;
+
+                               
getDebugDrawer()->drawLine(start+worldTransform.getBasis() * 
(offsetHeight),start+worldTransform.getBasis() * 
(-offsetHeight+offsetRadius),color);
+                               
getDebugDrawer()->drawLine(start+worldTransform.getBasis() * 
(offsetHeight),start+worldTransform.getBasis() * 
(-offsetHeight-offsetRadius),color);
+                               
getDebugDrawer()->drawLine(start+worldTransform.getBasis() * 
(offsetHeight),start+worldTransform.getBasis() * 
(-offsetHeight+offset2Radius),color);
+                               
getDebugDrawer()->drawLine(start+worldTransform.getBasis() * 
(offsetHeight),start+worldTransform.getBasis() * 
(-offsetHeight-offset2Radius),color);
+
+                               // buggy code that does not take into account 
the direction of the cone
+                               
//getDebugDrawer()->drawLine(start+worldTransform.getBasis() * 
btVector3(btScalar(0.),btScalar(0.),btScalar(0.5)*height),start+worldTransform.getBasis()
 * btVector3(radius,btScalar(0.),btScalar(-0.5)*height),color);
+                               
//getDebugDrawer()->drawLine(start+worldTransform.getBasis() * 
btVector3(btScalar(0.),btScalar(0.),btScalar(0.5)*height),start+worldTransform.getBasis()
 * btVector3(-radius,btScalar(0.),btScalar(-0.5)*height),color);
+                               
//getDebugDrawer()->drawLine(start+worldTransform.getBasis() * 
btVector3(btScalar(0.),btScalar(0.),btScalar(0.5)*height),start+worldTransform.getBasis()
 * btVector3(btScalar(0.),radius,btScalar(-0.5)*height),color);
+                               
//getDebugDrawer()->drawLine(start+worldTransform.getBasis() * 
btVector3(btScalar(0.),btScalar(0.),btScalar(0.5)*height),start+worldTransform.getBasis()
 * btVector3(btScalar(0.),-radius,btScalar(-0.5)*height),color);
                                break;
 
                        }


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

Reply via email to