Add ActiveEvents::CONTACT_FORCE_EVENTS for consistency with ActiveEvents::COLLISION_EVENTS

This commit is contained in:
Sébastien Crozet
2022-07-07 10:58:10 +02:00
parent 06ec9a0e76
commit 73788a21ab
4 changed files with 21 additions and 6 deletions

View File

@@ -7,9 +7,12 @@ bitflags::bitflags! {
#[cfg_attr(feature = "serde-serialize", derive(Serialize, Deserialize))]
/// Flags affecting the events generated for this collider.
pub struct ActiveEvents: u32 {
/// If set, Rapier will call `EventHandler::handle_contact_event`
/// If set, Rapier will call `EventHandler::handle_collision_event`
/// whenever relevant for this collider.
const COLLISION_EVENTS = 0b0001;
/// If set, Rapier will call `EventHandler::handle_contact_force_event`
/// whenever relevant for this collider.
const CONTACT_FORCE_EVENTS = 0b0010;
}
}
@@ -48,7 +51,7 @@ pub trait EventHandler: Send + Sync {
///
/// A force event is generated whenever the total force magnitude applied between two
/// colliders is `> Collider::contact_force_event_threshold` value of any of these
/// colliders.
/// colliders with the `ActiveEvents::CONTACT_FORCE_EVENTS` flag set.
///
/// The "total force magnitude" here means "the sum of the magnitudes of the forces applied at
/// all the contact points in a contact pair". Therefore, if the contact pair involves two

View File

@@ -291,8 +291,8 @@ impl PhysicsPipeline {
let co1 = &colliders[pair.collider1];
let co2 = &colliders[pair.collider2];
let threshold = co1
.contact_force_event_threshold
.min(co2.contact_force_event_threshold);
.effective_contact_force_event_threshold()
.min(co2.effective_contact_force_event_threshold());
if threshold < Real::MAX {
let total_magnitude = pair.total_impulse_magnitude() * inv_dt;