+ fix bug in SoftDemo: use removeRigidBody for rigid bodies, instead of removeCollisionObject

+ use default convex drawing instead of special cylinder drawing (caps are wrongly drawn)
+ allow camera translation using middle-mouse button in SoftDemo
+ add/removeCollisionObject virtual 
Thanks Ola for this suggestion
This commit is contained in:
erwin.coumans
2009-07-06 04:15:02 +00:00
parent 99f6ff7cf3
commit dc4180f1ce
3 changed files with 9 additions and 5 deletions

View File

@@ -683,6 +683,7 @@ void GL_ShapeDrawer::drawOpenGL(btScalar* m, const btCollisionShape* shape, cons
} }
/*
case CYLINDER_SHAPE_PROXYTYPE: case CYLINDER_SHAPE_PROXYTYPE:
{ {
const btCylinderShape* cylinder = static_cast<const btCylinderShape*>(shape); const btCylinderShape* cylinder = static_cast<const btCylinderShape*>(shape);
@@ -696,6 +697,7 @@ void GL_ShapeDrawer::drawOpenGL(btScalar* m, const btCollisionShape* shape, cons
break; break;
} }
*/
case MULTI_SPHERE_SHAPE_PROXYTYPE: case MULTI_SPHERE_SHAPE_PROXYTYPE:
{ {

View File

@@ -1272,7 +1272,11 @@ void SoftDemo::clientResetScene()
getSoftDynamicsWorld()->removeSoftBody(softBody); getSoftDynamicsWorld()->removeSoftBody(softBody);
} else } else
{ {
m_dynamicsWorld->removeCollisionObject(obj); btRigidBody* body = btRigidBody::upcast(obj);
if (body)
m_dynamicsWorld->removeRigidBody(body);
else
m_dynamicsWorld->removeCollisionObject(obj);
} }
delete obj; delete obj;
} }
@@ -1349,8 +1353,6 @@ void SoftDemo::renderme()
ps/=nps; ps/=nps;
if(m_autocam) if(m_autocam)
m_cameraTargetPosition+=(ps-m_cameraTargetPosition)*0.05; m_cameraTargetPosition+=(ps-m_cameraTargetPosition)*0.05;
else
m_cameraTargetPosition=btVector3(0,0,0);
/* Anm */ /* Anm */
if(!isIdle()) if(!isIdle())
m_animtime=m_clock.getTimeMilliseconds()/1000.f; m_animtime=m_clock.getTimeMilliseconds()/1000.f;

View File

@@ -377,7 +377,7 @@ public:
const btTransform& colObjWorldTransform, const btTransform& colObjWorldTransform,
ConvexResultCallback& resultCallback, btScalar allowedPenetration); ConvexResultCallback& resultCallback, btScalar allowedPenetration);
void addCollisionObject(btCollisionObject* collisionObject,short int collisionFilterGroup=btBroadphaseProxy::DefaultFilter,short int collisionFilterMask=btBroadphaseProxy::AllFilter); virtual void addCollisionObject(btCollisionObject* collisionObject,short int collisionFilterGroup=btBroadphaseProxy::DefaultFilter,short int collisionFilterMask=btBroadphaseProxy::AllFilter);
btCollisionObjectArray& getCollisionObjectArray() btCollisionObjectArray& getCollisionObjectArray()
{ {
@@ -390,7 +390,7 @@ public:
} }
void removeCollisionObject(btCollisionObject* collisionObject); virtual void removeCollisionObject(btCollisionObject* collisionObject);
virtual void performDiscreteCollisionDetection(); virtual void performDiscreteCollisionDetection();