diff options
| author | Sébastien Crozet <developer@crozet.re> | 2021-10-24 16:40:16 +0200 |
|---|---|---|
| committer | Sébastien Crozet <sebastien@crozet.re> | 2021-10-26 15:38:54 +0200 |
| commit | b45d4b5ac2b31856c15e802b31e288a58940cbf2 (patch) | |
| tree | e6ed90504637749cb99229dc5d1d6abb02ce7b72 /src/pipeline/user_changes.rs | |
| parent | 601955b4ee4096db1f387017eb3d85ff727f6d31 (diff) | |
| download | rapier-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/user_changes.rs')
| -rw-r--r-- | src/pipeline/user_changes.rs | 15 |
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); |
