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
This commit is contained in:
Thierry Berger
2024-06-23 23:01:55 +02:00
committed by GitHub
parent 3004a7d38d
commit 5308a28435
3 changed files with 8 additions and 4 deletions

View File

@@ -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:

View File

@@ -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,
);
}

View File

@@ -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),
);