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)). - 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) ## v0.20.0 (9 June 2024)
This release introduces two new crates: 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. /// 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 /// Note that the impulse calculation is only approximate as it is not based on a global
/// constraints resolution scheme. /// constraints resolution scheme.
pub fn solve_character_collision_impulses( pub fn solve_character_collision_impulses<'a>(
&self, &self,
dt: Real, dt: Real,
bodies: &mut RigidBodySet, bodies: &mut RigidBodySet,
@@ -796,7 +796,7 @@ impl KinematicCharacterController {
queries: &QueryPipeline, queries: &QueryPipeline,
character_shape: &dyn Shape, character_shape: &dyn Shape,
character_mass: Real, character_mass: Real,
collisions: impl IntoIterator<Item = CharacterCollision>, collisions: impl IntoIterator<Item = &'a CharacterCollision>,
filter: QueryFilter, filter: QueryFilter,
) { ) {
for collision in collisions { for collision in collisions {
@@ -807,7 +807,7 @@ impl KinematicCharacterController {
queries, queries,
character_shape, character_shape,
character_mass, character_mass,
&collision, collision,
filter, filter,
); );
} }

View File

@@ -819,7 +819,7 @@ impl<'a, 'b, 'c, 'd, 'e, 'f> Testbed<'a, 'b, 'c, 'd, 'e, 'f> {
&phx.query_pipeline, &phx.query_pipeline,
character_collider.shape(), character_collider.shape(),
character_mass, character_mass,
collisions, &*collisions,
QueryFilter::new().exclude_rigid_body(character_handle), QueryFilter::new().exclude_rigid_body(character_handle),
); );