aboutsummaryrefslogtreecommitdiff
path: root/src_testbed/objects
diff options
context:
space:
mode:
authorCrozet Sébastien <developer@crozet.re>2020-12-08 17:31:49 +0100
committerCrozet Sébastien <developer@crozet.re>2020-12-29 11:31:00 +0100
commit9bf1321f8f1d2e116f44c2461a53f302c4ef4171 (patch)
tree8070529f4b48074fd40defb6062d6615dcdb61c5 /src_testbed/objects
parentfd3b4801b63fd56369ff37bdc2e5189db159e8ff (diff)
downloadrapier-9bf1321f8f1d2e116f44c2461a53f302c4ef4171.tar.gz
rapier-9bf1321f8f1d2e116f44c2461a53f302c4ef4171.tar.bz2
rapier-9bf1321f8f1d2e116f44c2461a53f302c4ef4171.zip
Outsource the contact manifold, SAT, and some shapes.
Diffstat (limited to 'src_testbed/objects')
-rw-r--r--src_testbed/objects/heightfield.rs17
-rw-r--r--src_testbed/objects/polyline.rs2
2 files changed, 11 insertions, 8 deletions
diff --git a/src_testbed/objects/heightfield.rs b/src_testbed/objects/heightfield.rs
index 0815592..977bcca 100644
--- a/src_testbed/objects/heightfield.rs
+++ b/src_testbed/objects/heightfield.rs
@@ -1,15 +1,16 @@
#[cfg(feature = "dim3")]
use crate::objects::node::{self, GraphicsNode};
+use buckler::shape;
+use kiss3d::resource::Mesh;
use kiss3d::window::Window;
use na::{self, Point3};
-use ncollide::shape;
-#[cfg(feature = "dim3")]
-use ncollide::transformation::ToTriMesh;
use rapier::geometry::{ColliderHandle, ColliderSet};
#[cfg(feature = "dim2")]
use rapier::math::Point;
#[cfg(feature = "dim3")]
use rapier::math::Vector;
+use std::cell::RefCell;
+use std::rc::Rc;
pub struct HeightField {
color: Point3<f32>,
@@ -25,7 +26,7 @@ impl HeightField {
#[cfg(feature = "dim2")]
pub fn new(
collider: ColliderHandle,
- heightfield: &shape::HeightField<f32>,
+ heightfield: &shape::HeightField,
color: Point3<f32>,
_: &mut Window,
) -> HeightField {
@@ -47,16 +48,18 @@ impl HeightField {
#[cfg(feature = "dim3")]
pub fn new(
collider: ColliderHandle,
- heightfield: &shape::HeightField<f32>,
+ heightfield: &shape::HeightField,
color: Point3<f32>,
window: &mut Window,
) -> HeightField {
- let mesh = heightfield.to_trimesh(());
+ let (vertices, indices) = heightfield.to_trimesh();
+ let indices = indices.into_iter().map(|i| na::convert(i)).collect();
+ let mesh = Mesh::new(vertices, indices, None, None, false);
let mut res = HeightField {
color,
base_color: color,
- gfx: window.add_trimesh(mesh, Vector::repeat(1.0)),
+ gfx: window.add_mesh(Rc::new(RefCell::new(mesh)), Vector::repeat(1.0)),
collider: collider,
};
diff --git a/src_testbed/objects/polyline.rs b/src_testbed/objects/polyline.rs
index 77841ae..efb5e95 100644
--- a/src_testbed/objects/polyline.rs
+++ b/src_testbed/objects/polyline.rs
@@ -1,6 +1,6 @@
+use buckler2d::shape;
use kiss3d::window::Window;
use na::{Isometry2, Point2, Point3};
-use ncollide2d::shape;
use nphysics2d::object::{ColliderAnchor, DefaultColliderHandle, DefaultColliderSet};
pub struct Polyline {