Fix user-change handling for colliders as well as disabled colliders (#900)

* feat: add debug-demo for disabling a collider

* feat: add a simple debug-demo with two cubes

* feat: rename RigidBodyChangnes::MODIFIED and ColliderChanges::MODIFIED to ::IN_MODIFIED_SET

* feat: render debug-colliders with a different color with the debug-renderer

* chore: wire up new examples to the testbed

* fix colliders user-modification being ignored after the first step

* fix broad-phase still taking into account disabled colliders with enabled dynamic rigid-bodies

* chore: update changelog

* fix cargo doc
This commit is contained in:
Sébastien Crozet
2025-11-14 09:35:02 +01:00
committed by GitHub
parent a68d0c600b
commit ef5dcaccaf
11 changed files with 146 additions and 26 deletions

View File

@@ -1,10 +1,18 @@
## Unreleased
- `InteractionGroups` struct now contains `InteractionTestMode`. Continues [rapier/pull/170](https://github.com/dimforge/rapier/pull/170) for [rapier/issues/622](https://github.com/dimforge/rapier/issues/622)
- `InteractionGroups` constructor now requires an `InteractionTestMode` parameter. If you want same behaviour as before, use `InteractionTestMode::And` (eg. `InteractionGroups::new(Group::GROUP_1, Group::GROUP_1, InteractionTestMode::And)`)
- `InteractionGroups` struct now contains `InteractionTestMode`.
Continues [rapier/pull/170](https://github.com/dimforge/rapier/pull/170)
for [rapier/issues/622](https://github.com/dimforge/rapier/issues/622)
- `InteractionGroups` constructor now requires an `InteractionTestMode` parameter. If you want same behaviour as before,
use `InteractionTestMode::And` (eg.
`InteractionGroups::new(Group::GROUP_1, Group::GROUP_1, InteractionTestMode::And)`)
- `CoefficientCombineRule::Min` - now makes sure it uses a non zero value as result by using `coeff1.min(coeff2).abs()`
- `InteractionTestMode`: Specifies which method should be used to test interactions. Supports `AND` and `OR`.
- `CoefficientCombineRule::ClampedSum` - Adds the two coefficients and does a clamp to have at most 1.
- Rename `ColliderChanges::CHANGED` to `::IN_CHANGED_SET` to make its meaning more precise.
- Rename `RigidBodyChanges::CHANGED` to `::IN_CHANGED_SET` to make its meaning more precise.
- Fix colliders ignoring user-changes after the first simulation step.
- Fix broad-phase incorrectly taking into account disabled colliders attached to an enabled dynamic rigid-body.
## v0.30.1 (17 Oct. 2025)