diff options
| author | Thierry Berger <contact@thierryberger.com> | 2024-06-23 23:01:55 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-06-23 23:01:55 +0200 |
| commit | 5308a28435efdeb6f5fecf14914eed6394600112 (patch) | |
| tree | e75d47d2586e1df71aa667640fdae021dd990136 | |
| parent | 3004a7d38da447e307e11d86528047bdb724c318 (diff) | |
| download | rapier-5308a28435efdeb6f5fecf14914eed6394600112.tar.gz rapier-5308a28435efdeb6f5fecf14914eed6394600112.tar.bz2 rapier-5308a28435efdeb6f5fecf14914eed6394600112.zip | |
fix: less invasive `solve_character_collision_impulses` function (#652)
* fix: less invasive `solve_character_collision_impulses` function
Taking ownership of the elements is not necessary.
It also conveys the information that elements are only read.
* Add Changelog
| -rw-r--r-- | CHANGELOG.md | 4 | ||||
| -rw-r--r-- | src/control/character_controller.rs | 6 | ||||
| -rw-r--r-- | src_testbed/testbed.rs | 2 |
3 files changed, 8 insertions, 4 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 05d34db..5d009f3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ - Fix `NaN` values appearing in bodies translation and rotation after a simulation step with a delta time equal to 0 ([#660](https://github.com/dimforge/rapier/pull/660)). +### Modified + +- `solve_character_collision_impulses` collisions parameter is now an iterator over references. + ## v0.20.0 (9 June 2024) This release introduces two new crates: diff --git a/src/control/character_controller.rs b/src/control/character_controller.rs index 2332bc3..230b1eb 100644 --- a/src/control/character_controller.rs +++ b/src/control/character_controller.rs @@ -788,7 +788,7 @@ impl KinematicCharacterController { /// impulses to the rigid-bodies surrounding the character shape at the time of the collisions. /// Note that the impulse calculation is only approximate as it is not based on a global /// constraints resolution scheme. - pub fn solve_character_collision_impulses( + pub fn solve_character_collision_impulses<'a>( &self, dt: Real, bodies: &mut RigidBodySet, @@ -796,7 +796,7 @@ impl KinematicCharacterController { queries: &QueryPipeline, character_shape: &dyn Shape, character_mass: Real, - collisions: impl IntoIterator<Item = CharacterCollision>, + collisions: impl IntoIterator<Item = &'a CharacterCollision>, filter: QueryFilter, ) { for collision in collisions { @@ -807,7 +807,7 @@ impl KinematicCharacterController { queries, character_shape, character_mass, - &collision, + collision, filter, ); } diff --git a/src_testbed/testbed.rs b/src_testbed/testbed.rs index 26d8d9d..a9d40fe 100644 --- a/src_testbed/testbed.rs +++ b/src_testbed/testbed.rs @@ -819,7 +819,7 @@ impl<'a, 'b, 'c, 'd, 'e, 'f> Testbed<'a, 'b, 'c, 'd, 'e, 'f> { &phx.query_pipeline, character_collider.shape(), character_mass, - collisions, + &*collisions, QueryFilter::new().exclude_rigid_body(character_handle), ); |
