+ 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:
@@ -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:
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user