Skip to content

Commit

Permalink
physics: kinematic activation/deactivation after rigidbody was alread…
Browse files Browse the repository at this point in the history
…y created
  • Loading branch information
turanszkij committed Mar 4, 2024
1 parent 6772ec1 commit aa09581
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 1 deletion.
20 changes: 20 additions & 0 deletions WickedEngine/wiPhysics_Bullet.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1237,6 +1237,26 @@ namespace wi::physics
);
rigidbody->setFriction(physicscomponent.friction);
rigidbody->setRestitution(physicscomponent.restitution);
if (physicscomponent.IsKinematic() && (rigidbody->getCollisionFlags() & btCollisionObject::CF_KINEMATIC_OBJECT) == 0)
{
// It became kinematic when it wasn't before:
rigidbody->setCollisionFlags(rigidbody->getCollisionFlags() | btCollisionObject::CF_KINEMATIC_OBJECT);
btVector3 localInertia(0, 0, 0);
rigidbody->setMassProps(0, localInertia);
dynamicsWorld.removeRigidBody(rigidbody);
dynamicsWorld.addRigidBody(rigidbody);
}
if (!physicscomponent.IsKinematic() && (rigidbody->getCollisionFlags() & btCollisionObject::CF_KINEMATIC_OBJECT) != 0)
{
// It became non-kinematic when it was kinematic before:
rigidbody->setCollisionFlags(rigidbody->getCollisionFlags() ^ btCollisionObject::CF_KINEMATIC_OBJECT);
btVector3 localInertia(0, 0, 0);
rigidbody->getCollisionShape()->calculateLocalInertia(physicscomponent.mass, localInertia);
rigidbody->setMassProps(physicscomponent.mass, localInertia);
dynamicsWorld.removeRigidBody(rigidbody);
dynamicsWorld.addRigidBody(rigidbody);
scene.Component_Detach(entity);
}
}
});

Expand Down
2 changes: 1 addition & 1 deletion WickedEngine/wiVersion.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ namespace wi::version
// minor features, major updates, breaking compatibility changes
const int minor = 71;
// minor bug fixes, alterations, refactors, updates
const int revision = 387;
const int revision = 388;

const std::string version_string = std::to_string(major) + "." + std::to_string(minor) + "." + std::to_string(revision);

Expand Down

0 comments on commit aa09581

Please sign in to comment.