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
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs