aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCrozet Sébastien <developer@crozet.re>2021-01-22 16:43:16 +0100
committerCrozet Sébastien <developer@crozet.re>2021-01-22 16:43:16 +0100
commitb779eb261e7c3e816c8b586f1f496dcd17dbf700 (patch)
tree60322ff9e3ea25182a584b523a2f7231cb3f479b
parent99c2184e134b40cca9cb22fe93a95a64295ae048 (diff)
downloadrapier-b779eb261e7c3e816c8b586f1f496dcd17dbf700.tar.gz
rapier-b779eb261e7c3e816c8b586f1f496dcd17dbf700.tar.bz2
rapier-b779eb261e7c3e816c8b586f1f496dcd17dbf700.zip
Fix compilation in 2D.
-rw-r--r--src/dynamics/solver/parallel_island_solver.rs2
-rw-r--r--src/geometry/collider.rs2
-rw-r--r--src/geometry/collider_shape.rs16
-rw-r--r--src_testbed/harness/mod.rs6
-rw-r--r--src_testbed/testbed.rs22
-rw-r--r--src_testbed/ui.rs10
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();
}