From aada91966a02fbbbc5359cf74bb0401aac44ba8e Mon Sep 17 00:00:00 2001 From: Crozet Sébastien Date: Wed, 2 Dec 2020 11:26:20 +0100 Subject: Add a RigidBody::set_mass_properties method. --- CHANGELOG.md | 6 ++++++ src/dynamics/rigid_body.rs | 13 +++++++++++++ 2 files changed, 19 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c780bd5..fe6e56e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +## v0.4.2 +- Fix a bug in angular inertia tensor computation that could cause rotations not to + work properly. +- Add `RigidBody::set_mass_properties` to set the mass properties of an already-constructed + rigid-body. + ## v0.4.1 - The `RigidBodyBuilder::principal_inertia` method has been deprecated and renamed to `principal_angular_inertia` for clarity. diff --git a/src/dynamics/rigid_body.rs b/src/dynamics/rigid_body.rs index 86a126f..5128b6f 100644 --- a/src/dynamics/rigid_body.rs +++ b/src/dynamics/rigid_body.rs @@ -142,6 +142,19 @@ impl RigidBody { &self.mass_properties } + /// Sets the rigid-body's mass properties. + /// + /// If `wake_up` is `true` then the rigid-body will be woken up if it was + /// put to sleep because it did not move for a while. + #[inline] + pub fn set_mass_properties(&mut self, props: MassProperties, wake_up: bool) { + if self.is_dynamic() && wake_up { + self.wake_up(true); + } + + self.mass_properties = props; + } + /// The handles of colliders attached to this rigid body. pub fn colliders(&self) -> &[ColliderHandle] { &self.colliders[..] -- cgit