aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSébastien Crozet <developer@crozet.re>2023-02-04 16:19:37 +0100
committerGitHub <noreply@github.com>2023-02-04 16:19:37 +0100
commit2e929bbcabe49b7b18d4ee8d1fe4e58dc066c5ac (patch)
tree67877ba5d093072b8627642aca1c87931c6cbb7a
parent1a4183cc94acc3210e4ae467abbea7d68e51c5ff (diff)
parent4ff84319a0b91e935b8dca3244ed8b43560d9147 (diff)
downloadrapier-2e929bbcabe49b7b18d4ee8d1fe4e58dc066c5ac.tar.gz
rapier-2e929bbcabe49b7b18d4ee8d1fe4e58dc066c5ac.tar.bz2
rapier-2e929bbcabe49b7b18d4ee8d1fe4e58dc066c5ac.zip
Merge pull request #440 from fabriceci/expose-time-until-sleep
Allow customising the time until sleep for a rigid body
-rw-r--r--src/dynamics/island_manager.rs3
-rw-r--r--src/dynamics/rigid_body_components.rs8
2 files changed, 7 insertions, 4 deletions
diff --git a/src/dynamics/island_manager.rs b/src/dynamics/island_manager.rs
index e196503..ef5d50a 100644
--- a/src/dynamics/island_manager.rs
+++ b/src/dynamics/island_manager.rs
@@ -176,8 +176,7 @@ impl IslandManager {
update_energy(&mut rb.activation, sq_linvel, sq_angvel, dt);
- if rb.activation.time_since_can_sleep >= RigidBodyActivation::default_time_until_sleep()
- {
+ if rb.activation.time_since_can_sleep >= rb.activation.time_until_sleep {
// Mark them as sleeping for now. This will
// be set to false during the graph traversal
// if it should not be put to sleep.
diff --git a/src/dynamics/rigid_body_components.rs b/src/dynamics/rigid_body_components.rs
index 89f6020..2d51901 100644
--- a/src/dynamics/rigid_body_components.rs
+++ b/src/dynamics/rigid_body_components.rs
@@ -978,6 +978,8 @@ pub struct RigidBodyActivation {
pub linear_threshold: Real,
/// The angular linear velocity bellow which the body can fall asleep.
pub angular_threshold: Real,
+ /// The amount of time the rigid-body must remain below the thresholds to be put to sleep.
+ pub time_until_sleep: Real,
/// Since how much time can this body sleep?
pub time_since_can_sleep: Real,
/// Is this body sleeping?
@@ -1012,6 +1014,7 @@ impl RigidBodyActivation {
RigidBodyActivation {
linear_threshold: Self::default_linear_threshold(),
angular_threshold: Self::default_angular_threshold(),
+ time_until_sleep: Self::default_time_until_sleep(),
time_since_can_sleep: 0.0,
sleeping: false,
}
@@ -1022,8 +1025,9 @@ impl RigidBodyActivation {
RigidBodyActivation {
linear_threshold: Self::default_linear_threshold(),
angular_threshold: Self::default_angular_threshold(),
- sleeping: true,
+ time_until_sleep: Self::default_time_until_sleep(),
time_since_can_sleep: Self::default_time_until_sleep(),
+ sleeping: true,
}
}
@@ -1055,6 +1059,6 @@ impl RigidBodyActivation {
#[inline]
pub fn sleep(&mut self) {
self.sleeping = true;
- self.time_since_can_sleep = Self::default_time_until_sleep();
+ self.time_since_can_sleep = self.time_until_sleep;
}
}