aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThierry Berger <contact@thierryberger.com>2024-06-23 23:01:55 +0200
committerGitHub <noreply@github.com>2024-06-23 23:01:55 +0200
commit5308a28435efdeb6f5fecf14914eed6394600112 (patch)
treee75d47d2586e1df71aa667640fdae021dd990136
parent3004a7d38da447e307e11d86528047bdb724c318 (diff)
downloadrapier-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.md4
-rw-r--r--src/control/character_controller.rs6
-rw-r--r--src_testbed/testbed.rs2
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),
);