aboutsummaryrefslogtreecommitdiff
path: root/src/pipeline
diff options
context:
space:
mode:
authorSébastien Crozet <developer@crozet.re>2021-10-24 16:40:16 +0200
committerSébastien Crozet <sebastien@crozet.re>2021-10-26 15:38:54 +0200
commitb45d4b5ac2b31856c15e802b31e288a58940cbf2 (patch)
treee6ed90504637749cb99229dc5d1d6abb02ce7b72 /src/pipeline
parent601955b4ee4096db1f387017eb3d85ff727f6d31 (diff)
downloadrapier-b45d4b5ac2b31856c15e802b31e288a58940cbf2.tar.gz
rapier-b45d4b5ac2b31856c15e802b31e288a58940cbf2.tar.bz2
rapier-b45d4b5ac2b31856c15e802b31e288a58940cbf2.zip
Track the change of effective dominance of a rigid-body.
Diffstat (limited to 'src/pipeline')
-rw-r--r--src/pipeline/user_changes.rs15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/pipeline/user_changes.rs b/src/pipeline/user_changes.rs
index 699361c..643360c 100644
--- a/src/pipeline/user_changes.rs
+++ b/src/pipeline/user_changes.rs
@@ -155,6 +155,21 @@ pub(crate) fn handle_user_changes_to_rigid_bodies<Bodies, Colliders>(
}
}
+ if changes.contains(RigidBodyChanges::DOMINANCE)
+ || changes.contains(RigidBodyChanges::TYPE)
+ {
+ for handle in rb_colliders.0.iter() {
+ colliders.map_mut_internal(handle.0, |co_changes: &mut ColliderChanges| {
+ if !co_changes.contains(ColliderChanges::MODIFIED) {
+ modified_colliders.push(*handle);
+ }
+
+ *co_changes |=
+ ColliderChanges::MODIFIED | ColliderChanges::PARENT_EFFECTIVE_DOMINANCE;
+ });
+ }
+ }
+
bodies.set_internal(handle.0, RigidBodyChanges::empty());
bodies.set_internal(handle.0, ids);
bodies.set_internal(handle.0, activation);