From 97157c9423f3360c5e941b4065377689221014ae Mon Sep 17 00:00:00 2001 From: Crozet Sébastien Date: Fri, 26 Mar 2021 18:16:27 +0100 Subject: First working version of non-linear CCD based on single-substep motion-clamping. --- src_testbed/harness/mod.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src_testbed/harness') diff --git a/src_testbed/harness/mod.rs b/src_testbed/harness/mod.rs index 5e75d85..2d0c806 100644 --- a/src_testbed/harness/mod.rs +++ b/src_testbed/harness/mod.rs @@ -4,7 +4,7 @@ use crate::{ }; use kiss3d::window::Window; use plugin::HarnessPlugin; -use rapier::dynamics::{IntegrationParameters, JointSet, RigidBodySet}; +use rapier::dynamics::{CCDSolver, IntegrationParameters, JointSet, RigidBodySet}; use rapier::geometry::{BroadPhase, ColliderSet, NarrowPhase}; use rapier::math::Vector; use rapier::pipeline::{ChannelEventCollector, PhysicsHooks, PhysicsPipeline, QueryPipeline}; @@ -133,6 +133,7 @@ impl Harness { self.physics.broad_phase = BroadPhase::new(); self.physics.narrow_phase = NarrowPhase::new(); self.state.timestep_id = 0; + self.physics.ccd_solver = CCDSolver::new(); self.physics.query_pipeline = QueryPipeline::new(); self.physics.pipeline = PhysicsPipeline::new(); self.physics.pipeline.counters.enable(); @@ -194,13 +195,14 @@ impl Harness { &mut self.physics.bodies, &mut self.physics.colliders, &mut self.physics.joints, + Some(&mut self.physics.ccd_solver), &*self.physics.hooks, &self.event_handler, ); self.physics .query_pipeline - .update(&self.physics.bodies, &self.physics.colliders); + .update(&self.physics.bodies, &self.physics.colliders, false); for plugin in &mut self.plugins { plugin.step(&mut self.physics, &self.state) -- cgit From a733f97028f5cd532212572f9561ab64e09f002b Mon Sep 17 00:00:00 2001 From: Crozet Sébastien Date: Mon, 29 Mar 2021 17:21:49 +0200 Subject: Implement the ability to run multiple CCD substeps. --- src_testbed/harness/mod.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src_testbed/harness') diff --git a/src_testbed/harness/mod.rs b/src_testbed/harness/mod.rs index 2d0c806..a5605cc 100644 --- a/src_testbed/harness/mod.rs +++ b/src_testbed/harness/mod.rs @@ -195,14 +195,14 @@ impl Harness { &mut self.physics.bodies, &mut self.physics.colliders, &mut self.physics.joints, - Some(&mut self.physics.ccd_solver), + &mut self.physics.ccd_solver, &*self.physics.hooks, &self.event_handler, ); self.physics .query_pipeline - .update(&self.physics.bodies, &self.physics.colliders, false); + .update(&self.physics.bodies, &self.physics.colliders); for plugin in &mut self.plugins { plugin.step(&mut self.physics, &self.state) -- cgit From e9f6384081e7f3722976b9fefda6926f5206e0a2 Mon Sep 17 00:00:00 2001 From: Crozet Sébastien Date: Wed, 31 Mar 2021 10:53:44 +0200 Subject: Fix the parallel solver to work properly with CCD. --- src_testbed/harness/mod.rs | 1 + 1 file changed, 1 insertion(+) (limited to 'src_testbed/harness') diff --git a/src_testbed/harness/mod.rs b/src_testbed/harness/mod.rs index a5605cc..5fcc45c 100644 --- a/src_testbed/harness/mod.rs +++ b/src_testbed/harness/mod.rs @@ -180,6 +180,7 @@ impl Harness { &mut physics.bodies, &mut physics.colliders, &mut physics.joints, + &mut physics.ccd_solver, &*physics.hooks, event_handler, ); -- cgit