From 00da4aaa42cc921bbd8c469b45c5c1e304f46260 Mon Sep 17 00:00:00 2001 From: Crozet Sébastien Date: Tue, 5 Jan 2021 15:34:48 +0100 Subject: Add compound shape support. --- src_testbed/objects/ball.rs | 7 +++++-- src_testbed/objects/box_node.rs | 7 +++++-- src_testbed/objects/capsule.rs | 7 +++++-- src_testbed/objects/cone.rs | 7 +++++-- src_testbed/objects/convex.rs | 7 +++++-- src_testbed/objects/cylinder.rs | 7 +++++-- 6 files changed, 30 insertions(+), 12 deletions(-) (limited to 'src_testbed/objects') diff --git a/src_testbed/objects/ball.rs b/src_testbed/objects/ball.rs index f72c284..4df3820 100644 --- a/src_testbed/objects/ball.rs +++ b/src_testbed/objects/ball.rs @@ -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, gfx: GraphicsNode, collider: ColliderHandle, + delta: Isometry3, } impl Ball { pub fn new( collider: ColliderHandle, + delta: Isometry3, radius: f32, color: Point3, 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, ); } diff --git a/src_testbed/objects/box_node.rs b/src_testbed/objects/box_node.rs index 493ffba..4235ef1 100644 --- a/src_testbed/objects/box_node.rs +++ b/src_testbed/objects/box_node.rs @@ -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, gfx: GraphicsNode, collider: ColliderHandle, + delta: Isometry3, } impl Box { pub fn new( collider: ColliderHandle, + delta: Isometry3, half_extents: Vector, color: Point3, 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, ); } diff --git a/src_testbed/objects/capsule.rs b/src_testbed/objects/capsule.rs index 23160be..197d1e8 100644 --- a/src_testbed/objects/capsule.rs +++ b/src_testbed/objects/capsule.rs @@ -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, gfx: GraphicsNode, collider: ColliderHandle, + delta: Isometry3, } impl Capsule { pub fn new( collider: ColliderHandle, + delta: Isometry3, capsule: &geometry::Capsule, color: Point3, 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, ); } diff --git a/src_testbed/objects/cone.rs b/src_testbed/objects/cone.rs index 58b014f..89a6b47 100644 --- a/src_testbed/objects/cone.rs +++ b/src_testbed/objects/cone.rs @@ -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, gfx: GraphicsNode, collider: ColliderHandle, + delta: Isometry3, } impl Cone { pub fn new( collider: ColliderHandle, + delta: Isometry3, half_height: f32, radius: f32, color: Point3, @@ -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, ); } diff --git a/src_testbed/objects/convex.rs b/src_testbed/objects/convex.rs index 9f0983d..b0e0bbb 100644 --- a/src_testbed/objects/convex.rs +++ b/src_testbed/objects/convex.rs @@ -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, gfx: GraphicsNode, body: ColliderHandle, + delta: Isometry3, } impl Convex { pub fn new( body: ColliderHandle, + delta: Isometry3, vertices: Vec>, #[cfg(feature = "dim3")] indices: Vec>, color: Point3, @@ -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, ); } diff --git a/src_testbed/objects/cylinder.rs b/src_testbed/objects/cylinder.rs index 01a6737..a2ed102 100644 --- a/src_testbed/objects/cylinder.rs +++ b/src_testbed/objects/cylinder.rs @@ -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, gfx: GraphicsNode, collider: ColliderHandle, + delta: Isometry3, } impl Cylinder { pub fn new( collider: ColliderHandle, + delta: Isometry3, half_height: f32, radius: f32, color: Point3, @@ -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, ); } -- cgit