Combine contact events and intersection events into a single event type and flags

This commit is contained in:
Sébastien Crozet
2022-03-19 17:52:56 +01:00
committed by Sébastien Crozet
parent a9e3441ecd
commit 063c638ec5
12 changed files with 101 additions and 103 deletions

View File

@@ -86,12 +86,10 @@ type Callbacks =
#[allow(dead_code)]
impl Harness {
pub fn new_empty() -> Self {
let contact_channel = crossbeam::channel::unbounded();
let proximity_channel = crossbeam::channel::unbounded();
let event_handler = ChannelEventCollector::new(proximity_channel.0, contact_channel.0);
let event_channel = crossbeam::channel::unbounded();
let event_handler = ChannelEventCollector::new(event_channel.0);
let events = PhysicsEvents {
contact_events: contact_channel.1,
intersection_events: proximity_channel.1,
events: event_channel.1,
};
let physics = PhysicsState::new();
let state = RunState::new();

View File

@@ -3,7 +3,7 @@ use rapier::dynamics::{
CCDSolver, ImpulseJointSet, IntegrationParameters, IslandManager, MultibodyJointSet,
RigidBodySet,
};
use rapier::geometry::{BroadPhase, ColliderSet, ContactEvent, IntersectionEvent, NarrowPhase};
use rapier::geometry::{BroadPhase, ColliderSet, CollisionEvent, NarrowPhase};
use rapier::math::{Real, Vector};
use rapier::pipeline::{PhysicsHooks, PhysicsPipeline, QueryPipeline};
@@ -107,13 +107,11 @@ impl PhysicsState {
}
pub struct PhysicsEvents {
pub contact_events: Receiver<ContactEvent>,
pub intersection_events: Receiver<IntersectionEvent>,
pub events: Receiver<CollisionEvent>,
}
impl PhysicsEvents {
pub fn poll_all(&self) {
while let Ok(_) = self.contact_events.try_recv() {}
while let Ok(_) = self.intersection_events.try_recv() {}
while let Ok(_) = self.events.try_recv() {}
}
}

View File

@@ -213,7 +213,7 @@ impl PhysxWorld {
rapier2dynamic.insert(rapier_handle, actor);
} else {
let actor = physics.create_fixed(pos, ()).unwrap();
let actor = physics.create_static(pos, ()).unwrap();
rapier2static.insert(rapier_handle, actor);
}
}
@@ -382,7 +382,7 @@ impl PhysxWorld {
);
for (_, actor) in rapier2static {
scene.add_fixed_actor(actor);
scene.add_static_actor(actor);
}
for (_, actor) in rapier2dynamic {
@@ -712,7 +712,7 @@ type PxPhysicsFoundation = PhysicsFoundation<DefaultAllocator, PxShape>;
type PxMaterial = physx::material::PxMaterial<()>;
type PxShape = physx::shape::PxShape<(), PxMaterial>;
type PxArticulationLink = physx::articulation_link::PxArticulationLink<RigidBodyHandle, PxShape>;
type PxRigidStatic = physx::rigid_fixed::PxRigidStatic<(), PxShape>;
type PxRigidStatic = physx::rigid_static::PxRigidStatic<(), PxShape>;
type PxRigidDynamic = physx::rigid_dynamic::PxRigidDynamic<RigidBodyHandle, PxShape>;
type PxArticulation = physx::articulation::PxArticulation<(), PxArticulationLink>;
type PxArticulationReducedCoordinate =