diff --git a/src/Nazara/JoltPhysics3D/JoltRigidBody3D.cpp b/src/Nazara/JoltPhysics3D/JoltRigidBody3D.cpp index f90b170c8..d07d9a318 100644 --- a/src/Nazara/JoltPhysics3D/JoltRigidBody3D.cpp +++ b/src/Nazara/JoltPhysics3D/JoltRigidBody3D.cpp @@ -386,11 +386,17 @@ namespace Nz creationSettings.mObjectLayer = 1; creationSettings.mRestitution = settings.restitution; - creationSettings.mMassPropertiesOverride = creationSettings.GetShape()->GetMassProperties(); - creationSettings.mMassPropertiesOverride.ScaleToMass(settings.mass); - creationSettings.mMotionType = (settings.mass > 0.f) ? JPH::EMotionType::Dynamic : JPH::EMotionType::Kinematic; + float mass = settings.mass; + if (mass <= 0.f) + mass = 1.f; + + creationSettings.mMassPropertiesOverride = creationSettings.GetShape()->GetMassProperties(); + creationSettings.mMassPropertiesOverride.ScaleToMass(mass); + creationSettings.mOverrideMassProperties = JPH::EOverrideMassProperties::MassAndInertiaProvided; + + switch (settings.motionQuality) { case JoltMotionQuality::Discrete: creationSettings.mMotionQuality = JPH::EMotionQuality::Discrete; break;