You need to remove the [/b]CF_KINEMATIC_OBJECT[/b] flag to make the object dynamic. In other words, consider the implementation of btCollisionObject::isKinematicObject():
Code: Select all
SIMD_FORCE_INLINE bool isKinematicObject() const
{
return (m_collisionFlags & CF_KINEMATIC_OBJECT) != 0;
}
BTW: Kinematic objects can be active or inactive. Active kinematic objects will have their MotionState::getWorldTransform() called (if they have a Motionstate) once per simulation substep, but inactive kinematic objects will not. If you have a kinematic object that should never be deactivated then you would call
setActivationState(DISABLE_DEACTIVATION) on it. I could imagine a few cases where kinematic objects could be allowed to go inactive (in particular, as an optimization for running large numbers of kinematic objects that are allowed to stop), however external logic would have to be properly instrumented to
activate the objects when necessary: on key events or other logic/triggers.