diff options
| author | Crozet Sébastien <developer@crozet.re> | 2021-01-22 16:43:16 +0100 |
|---|---|---|
| committer | Crozet Sébastien <developer@crozet.re> | 2021-01-22 16:43:16 +0100 |
| commit | b779eb261e7c3e816c8b586f1f496dcd17dbf700 (patch) | |
| tree | 60322ff9e3ea25182a584b523a2f7231cb3f479b | |
| parent | 99c2184e134b40cca9cb22fe93a95a64295ae048 (diff) | |
| download | rapier-b779eb261e7c3e816c8b586f1f496dcd17dbf700.tar.gz rapier-b779eb261e7c3e816c8b586f1f496dcd17dbf700.tar.bz2 rapier-b779eb261e7c3e816c8b586f1f496dcd17dbf700.zip | |
Fix compilation in 2D.
| -rw-r--r-- | src/dynamics/solver/parallel_island_solver.rs | 2 | ||||
| -rw-r--r-- | src/geometry/collider.rs | 2 | ||||
| -rw-r--r-- | src/geometry/collider_shape.rs | 16 | ||||
| -rw-r--r-- | src_testbed/harness/mod.rs | 6 | ||||
| -rw-r--r-- | src_testbed/testbed.rs | 22 | ||||
| -rw-r--r-- | src_testbed/ui.rs | 10 |
6 files changed, 33 insertions, 25 deletions
diff --git a/src/dynamics/solver/parallel_island_solver.rs b/src/dynamics/solver/parallel_island_solver.rs index 24435db..af8e9c0 100644 --- a/src/dynamics/solver/parallel_island_solver.rs +++ b/src/dynamics/solver/parallel_island_solver.rs @@ -251,7 +251,7 @@ impl ParallelIslandSolver { let dvel = mj_lambdas[rb.active_set_offset]; rb.linvel += dvel.linear; rb.angvel += rb.effective_world_inv_inertia_sqrt.transform_vector(dvel.angular); - rb.integrate(params.dt)); + rb.integrate(params.dt); positions[rb.active_set_offset] = rb.position; } } diff --git a/src/geometry/collider.rs b/src/geometry/collider.rs index 232b246..4ad3295 100644 --- a/src/geometry/collider.rs +++ b/src/geometry/collider.rs @@ -4,8 +4,6 @@ use crate::geometry::{ColliderShape, InteractionGroups}; use crate::math::{AngVector, Isometry, Point, Real, Rotation, Vector, DIM}; use cdl::bounding_volume::AABB; use cdl::shape::Shape; -#[cfg(feature = "dim2")] -use cdl::shape::{ConvexPolygon, RoundConvexPolygon}; bitflags::bitflags! { #[cfg_attr(feature = "serde-serialize", derive(Serialize, Deserialize))] diff --git a/src/geometry/collider_shape.rs b/src/geometry/collider_shape.rs index 05067ef..ed91b82 100644 --- a/src/geometry/collider_shape.rs +++ b/src/geometry/collider_shape.rs @@ -154,6 +154,14 @@ impl ColliderShape { let mut parts = vec![]; let decomp = VHACD::decompose(params, &vertices, &indices, true); + #[cfg(feature = "dim2")] + for vertices in decomp.compute_exact_convex_hulls(&vertices, &indices) { + if let Some(convex) = Self::convex_polyline(vertices) { + parts.push((Isometry::identity(), convex)); + } + } + + #[cfg(feature = "dim3")] for (vertices, indices) in decomp.compute_exact_convex_hulls(&vertices, &indices) { if let Some(convex) = Self::convex_mesh(vertices, &indices) { parts.push((Isometry::identity(), convex)); @@ -174,6 +182,14 @@ impl ColliderShape { let mut parts = vec![]; let decomp = VHACD::decompose(params, &vertices, &indices, true); + #[cfg(feature = "dim2")] + for vertices in decomp.compute_exact_convex_hulls(&vertices, &indices) { + if let Some(convex) = Self::round_convex_polyline(vertices, border_radius) { + parts.push((Isometry::identity(), convex)); + } + } + + #[cfg(feature = "dim3")] for (vertices, indices) in decomp.compute_exact_convex_hulls(&vertices, &indices) { if let Some(convex) = Self::round_convex_mesh(vertices, &indices, border_radius) { parts.push((Isometry::identity(), convex)); diff --git a/src_testbed/harness/mod.rs b/src_testbed/harness/mod.rs index 1006e08..c80669f 100644 --- a/src_testbed/harness/mod.rs +++ b/src_testbed/harness/mod.rs @@ -70,12 +70,6 @@ impl Harness { #[cfg(feature = "parallel")] let num_threads = num_cpus::get_physical(); - #[cfg(feature = "parallel")] - let thread_pool = rapier::rayon::ThreadPoolBuilder::new() - .num_threads(num_threads) - .build() - .unwrap(); - let contact_channel = crossbeam::channel::unbounded(); let proximity_channel = crossbeam::channel::unbounded(); let event_handler = ChannelEventCollector::new(proximity_channel.0, contact_channel.0); diff --git a/src_testbed/testbed.rs b/src_testbed/testbed.rs index 461648c..6eb938a 100644 --- a/src_testbed/testbed.rs +++ b/src_testbed/testbed.rs @@ -269,10 +269,10 @@ impl Testbed { { if self.state.selected_backend == BOX2D_BACKEND { self.box2d = Some(Box2dWorld::from_rapier( - physics.gravity, - &physics.bodies, - &physics.colliders, - &physics.joints, + self.harness.physics.gravity, + &self.harness.physics.bodies, + &self.harness.physics.colliders, + &self.harness.physics.joints, )); } } @@ -483,7 +483,7 @@ impl Testbed { if self.state.selected_backend == BOX2D_BACKEND { self.box2d.as_mut().unwrap().step( &mut self.harness.physics.pipeline.counters, - &physics.integration_parameters, + &self.harness.physics.integration_parameters, ); self.box2d.as_mut().unwrap().sync( &mut self.harness.physics.bodies, @@ -1270,13 +1270,13 @@ impl State for Testbed { { if self.state.selected_backend == BOX2D_BACKEND { self.box2d.as_mut().unwrap().step( - &mut physics.pipeline.counters, - &physics.integration_parameters, + &mut self.harness.physics.pipeline.counters, + &self.harness.physics.integration_parameters, + ); + self.box2d.as_mut().unwrap().sync( + &mut self.harness.physics.bodies, + &mut self.harness.physics.colliders, ); - self.box2d - .as_mut() - .unwrap() - .sync(&mut physics.bodies, &mut physics.colliders); } } diff --git a/src_testbed/ui.rs b/src_testbed/ui.rs index 4c511f2..6a323d8 100644 --- a/src_testbed/ui.rs +++ b/src_testbed/ui.rs @@ -256,7 +256,7 @@ impl TestbedUi { let curr_vel_iters = integration_parameters.max_velocity_iterations; let curr_pos_iters = integration_parameters.max_position_iterations; #[cfg(feature = "parallel")] - let curr_num_threads = run_state.num_threads; + let curr_num_threads = _run_state.num_threads; let curr_max_ccd_substeps = integration_parameters.max_ccd_substeps; let curr_min_island_size = integration_parameters.min_island_size; let curr_warmstart_coeff = integration_parameters.warmstart_coeff; @@ -307,10 +307,10 @@ impl TestbedUi { .w_h(ELEMENT_W, ELEMENT_H) .set(self.ids.slider_num_threads, &mut ui) { - if run_state.num_threads != val as usize { - run_state.num_threads = val as usize; - run_state.thread_pool = rapier::rayon::ThreadPoolBuilder::new() - .num_threads(run_state.num_threads) + if _run_state.num_threads != val as usize { + _run_state.num_threads = val as usize; + _run_state.thread_pool = rapier::rayon::ThreadPoolBuilder::new() + .num_threads(_run_state.num_threads) .build() .unwrap(); } |
