Add compound shape support.

This commit is contained in:
Crozet Sébastien
2021-01-05 15:34:48 +01:00
parent 6ba5081358
commit 00da4aaa42
10 changed files with 123 additions and 50 deletions

View File

@@ -1,6 +1,6 @@
use crate::objects::node::{self, GraphicsNode};
use kiss3d::window::Window;
use na::Point3;
use na::{Isometry3, Point3};
use rapier::geometry::{ColliderHandle, ColliderSet};
use rapier::math::Isometry;
@@ -9,11 +9,13 @@ pub struct Ball {
base_color: Point3<f32>,
gfx: GraphicsNode,
collider: ColliderHandle,
delta: Isometry3<f32>,
}
impl Ball {
pub fn new(
collider: ColliderHandle,
delta: Isometry3<f32>,
radius: f32,
color: Point3<f32>,
window: &mut Window,
@@ -28,6 +30,7 @@ impl Ball {
base_color: color,
gfx: node,
collider,
delta,
};
// res.gfx.set_texture_from_file(&Path::new("media/kitten.png"), "kitten");
@@ -55,7 +58,7 @@ impl Ball {
colliders,
self.collider,
&self.color,
&Isometry::identity(),
&self.delta,
);
}

View File

@@ -1,6 +1,6 @@
use crate::objects::node::{self, GraphicsNode};
use kiss3d::window;
use na::Point3;
use na::{Isometry3, Point3};
use rapier::geometry::{ColliderHandle, ColliderSet};
use rapier::math::{Isometry, Vector};
@@ -9,11 +9,13 @@ pub struct Box {
base_color: Point3<f32>,
gfx: GraphicsNode,
collider: ColliderHandle,
delta: Isometry3<f32>,
}
impl Box {
pub fn new(
collider: ColliderHandle,
delta: Isometry3<f32>,
half_extents: Vector<f32>,
color: Point3<f32>,
window: &mut window::Window,
@@ -29,6 +31,7 @@ impl Box {
base_color: color,
gfx: node,
collider,
delta,
};
res.gfx.set_color(color.x, color.y, color.z);
@@ -55,7 +58,7 @@ impl Box {
colliders,
self.collider,
&self.color,
&Isometry::identity(),
&self.delta,
);
}

View File

@@ -1,6 +1,6 @@
use crate::objects::node::{self, GraphicsNode};
use kiss3d::window;
use na::Point3;
use na::{Isometry3, Point3};
use rapier::geometry::{self, ColliderHandle, ColliderSet};
use rapier::math::Isometry;
@@ -9,11 +9,13 @@ pub struct Capsule {
base_color: Point3<f32>,
gfx: GraphicsNode,
collider: ColliderHandle,
delta: Isometry3<f32>,
}
impl Capsule {
pub fn new(
collider: ColliderHandle,
delta: Isometry3<f32>,
capsule: &geometry::Capsule,
color: Point3<f32>,
window: &mut window::Window,
@@ -30,6 +32,7 @@ impl Capsule {
base_color: color,
gfx: node,
collider,
delta,
};
res.gfx.set_color(color.x, color.y, color.z);
@@ -50,7 +53,7 @@ impl Capsule {
colliders,
self.collider,
&self.color,
&Isometry::identity(),
&self.delta,
);
}

View File

@@ -1,6 +1,6 @@
use crate::objects::node::{self, GraphicsNode};
use kiss3d::window::Window;
use na::Point3;
use na::{Isometry3, Point3};
use rapier::geometry::{ColliderHandle, ColliderSet};
use rapier::math::Isometry;
@@ -9,11 +9,13 @@ pub struct Cone {
base_color: Point3<f32>,
gfx: GraphicsNode,
collider: ColliderHandle,
delta: Isometry3<f32>,
}
impl Cone {
pub fn new(
collider: ColliderHandle,
delta: Isometry3<f32>,
half_height: f32,
radius: f32,
color: Point3<f32>,
@@ -29,6 +31,7 @@ impl Cone {
base_color: color,
gfx: node,
collider,
delta,
};
// res.gfx.set_texture_from_file(&Path::new("media/kitten.png"), "kitten");
@@ -56,7 +59,7 @@ impl Cone {
colliders,
self.collider,
&self.color,
&Isometry::identity(),
&self.delta,
);
}

View File

@@ -5,7 +5,7 @@ use crate::math::Vector;
use crate::math::{Isometry, Point};
use crate::objects::node::{self, GraphicsNode};
use kiss3d::window::Window;
use na::Point3;
use na::{Isometry3, Point3};
use rapier::geometry::{ColliderHandle, ColliderSet};
pub struct Convex {
@@ -13,11 +13,13 @@ pub struct Convex {
base_color: Point3<f32>,
gfx: GraphicsNode,
body: ColliderHandle,
delta: Isometry3<f32>,
}
impl Convex {
pub fn new(
body: ColliderHandle,
delta: Isometry3<f32>,
vertices: Vec<Point<f32>>,
#[cfg(feature = "dim3")] indices: Vec<Point<u32>>,
color: Point3<f32>,
@@ -39,6 +41,7 @@ impl Convex {
base_color: color,
gfx: node,
body,
delta,
};
// res.gfx.set_texture_from_file(&Path::new("media/kitten.png"), "kitten");
@@ -66,7 +69,7 @@ impl Convex {
colliders,
self.body,
&self.color,
&Isometry::identity(),
&self.delta,
);
}

View File

@@ -1,6 +1,6 @@
use crate::objects::node::{self, GraphicsNode};
use kiss3d::window::Window;
use na::Point3;
use na::{Isometry3, Point3};
use rapier::geometry::{ColliderHandle, ColliderSet};
use rapier::math::Isometry;
@@ -9,11 +9,13 @@ pub struct Cylinder {
base_color: Point3<f32>,
gfx: GraphicsNode,
collider: ColliderHandle,
delta: Isometry3<f32>,
}
impl Cylinder {
pub fn new(
collider: ColliderHandle,
delta: Isometry3<f32>,
half_height: f32,
radius: f32,
color: Point3<f32>,
@@ -29,6 +31,7 @@ impl Cylinder {
base_color: color,
gfx: node,
collider,
delta,
};
// res.gfx.set_texture_from_file(&Path::new("media/kitten.png"), "kitten");
@@ -56,7 +59,7 @@ impl Cylinder {
colliders,
self.collider,
&self.color,
&Isometry::identity(),
&self.delta,
);
}