erase static flag from kinematic bodies
Posted: Fri Dec 14, 2007 2:37 pm
I see that btRigidBody.cpp contains the following:
which means that the following initialization in ConcavePhysicsDemo.cpp will give a static and not kinematic body:
I added:
to the initialization but it does not help at all. Is there something else I should change? Thanks.
Code: Select all
void btRigidBody::setMassProps(btScalar mass, const btVector3& inertia)
{
if (mass == btScalar(0.))
{
m_collisionFlags |= btCollisionObject::CF_STATIC_OBJECT;
m_inverseMass = btScalar(0.);
} else
{
m_collisionFlags &= (~btCollisionObject::CF_STATIC_OBJECT);
m_inverseMass = btScalar(1.0) / mass;
}
m_invInertiaLocal.setValue(inertia.x() != btScalar(0.0) ? btScalar(1.0) / inertia.x(): btScalar(0.0),
inertia.y() != btScalar(0.0) ? btScalar(1.0) / inertia.y(): btScalar(0.0),
inertia.z() != btScalar(0.0) ? btScalar(1.0) / inertia.z(): btScalar(0.0));
}
Code: Select all
float mass = 0.f;
btTransform startTransform;
startTransform.setIdentity();
btVector3 camPos = getCameraPosition();
startTransform.setOrigin(camPos);
btRigidBody* body = this->localCreateRigidBody(mass, startTransform,m_trimeshShape);
// Make it kinematic
body->setCollisionFlags( body->getCollisionFlags() | btCollisionObject::CF_KINEMATIC_OBJECT );
body->setActivationState(DISABLE_DEACTIVATION);
Code: Select all
body->setCollisionFlags( body->getCollisionFlags() & (~btCollisionObject::CF_STATIC_OBJECT) );