diff options
| author | Sébastien Crozet <developer@crozet.re> | 2021-04-03 15:26:38 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-04-03 15:26:38 +0200 |
| commit | 44a6955debf1c625c0674673bd0f98bb6340048a (patch) | |
| tree | e15591653a7792a8a2e92562c87a69fdb65e6cbf /src/pipeline | |
| parent | 7557d2a6ee20488835998c8aef4541ed5ada576f (diff) | |
| parent | 54927368634068f99c4d47e7c5799edba10633a6 (diff) | |
| download | rapier-44a6955debf1c625c0674673bd0f98bb6340048a.tar.gz rapier-44a6955debf1c625c0674673bd0f98bb6340048a.tar.bz2 rapier-44a6955debf1c625c0674673bd0f98bb6340048a.zip | |
Merge pull request #164 from dimforge/collider_removal_fix
Fix crash caused by a collider being remove before the first timestep.
Diffstat (limited to 'src/pipeline')
| -rw-r--r-- | src/pipeline/physics_pipeline.rs | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/pipeline/physics_pipeline.rs b/src/pipeline/physics_pipeline.rs index 0f7b5f6..f4ac531 100644 --- a/src/pipeline/physics_pipeline.rs +++ b/src/pipeline/physics_pipeline.rs @@ -588,4 +588,41 @@ mod test { assert_eq!(h2a, h2b); assert_eq!(h3a, h3b); } + + #[test] + fn collider_removal_before_step() { + let mut pipeline = PhysicsPipeline::new(); + let gravity = Vector::y() * -9.81; + let integration_parameters = IntegrationParameters::default(); + let mut broad_phase = BroadPhase::new(); + let mut narrow_phase = NarrowPhase::new(); + let mut bodies = RigidBodySet::new(); + let mut colliders = ColliderSet::new(); + let mut ccd = CCDSolver::new(); + let mut joints = JointSet::new(); + let physics_hooks = (); + let event_handler = (); + + let body = RigidBodyBuilder::new_dynamic().build(); + let b_handle = bodies.insert(body); + let collider = ColliderBuilder::ball(1.0).build(); + let c_handle = colliders.insert(collider, b_handle, &mut bodies); + colliders.remove(c_handle, &mut bodies, true); + bodies.remove(b_handle, &mut colliders, &mut joints); + + for _ in 0..10 { + pipeline.step( + &gravity, + &integration_parameters, + &mut broad_phase, + &mut narrow_phase, + &mut bodies, + &mut colliders, + &mut joints, + &mut ccd, + &physics_hooks, + &event_handler, + ); + } + } } |
