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

View File

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

View File

@@ -377,7 +377,7 @@ public:
const btTransform& colObjWorldTransform,
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()
{
@@ -390,7 +390,7 @@ public:
}
void removeCollisionObject(btCollisionObject* collisionObject);
virtual void removeCollisionObject(btCollisionObject* collisionObject);
virtual void performDiscreteCollisionDetection();