We’ve run into a problem with updates of a mass of the body in our game Burnt Islands. We had some flying robots on the platforms of their factory. These robots were static objects in the beginning with no mass (mass = 0).
After the factory was destroyed the robots would have to fly up and begin to attack. In order to do that they got mass set so that static objects became dynamic. According to Bullet Physics specification it should work with just this code:
btVector3 inertia; body->getCollisionShape()->calculateLocalInertia( mass, inertia ); body->setMassProps(mass, inertia);
But that just didn’t work. Robots were “hanging” in the air. They wanted to attack, but couldn’t move.