From faec3d5d46c88e2949179dd2789899e5cf26ed48 Mon Sep 17 00:00:00 2001 From: Crozet Sébastien Date: Mon, 12 Oct 2020 18:33:58 +0200 Subject: Start adding cylinders. --- src/geometry/mod.rs | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/geometry/mod.rs') diff --git a/src/geometry/mod.rs b/src/geometry/mod.rs index 562f962..1ccb2c8 100644 --- a/src/geometry/mod.rs +++ b/src/geometry/mod.rs @@ -30,6 +30,9 @@ pub type Triangle = ncollide::shape::Triangle; pub type Ball = ncollide::shape::Ball; /// A heightfield shape. pub type HeightField = ncollide::shape::HeightField; +/// A cylindrical shape. +#[cfg(feature = "dim3")] +pub type Cylinder = ncollide::shape::Cylinder; /// An axis-aligned bounding box. pub type AABB = ncollide::bounding_volume::AABB; /// Event triggered when two non-sensor colliders start or stop being in contact. @@ -51,6 +54,8 @@ pub(crate) use self::contact::WContact; pub(crate) use self::contact_generator::{clip_segments, clip_segments_with_normal}; pub(crate) use self::narrow_phase::ContactManifoldIndex; #[cfg(feature = "dim3")] +pub(crate) use self::polygonal_feature_map::PolygonalFeatureMap; +#[cfg(feature = "dim3")] pub(crate) use self::polyhedron_feature3d::PolyhedronFace; pub(crate) use self::waabb::{WRay, WAABB}; pub(crate) use self::wquadtree::WQuadtree; @@ -81,3 +86,5 @@ mod trimesh; mod waabb; mod wquadtree; //mod z_order; +#[cfg(feature = "dim3")] +mod polygonal_feature_map; -- cgit From faf3e7e0f7f2b528da99343f9a3f8ce2b8fa6876 Mon Sep 17 00:00:00 2001 From: Crozet Sébastien Date: Tue, 13 Oct 2020 18:40:59 +0200 Subject: Implement a special case for edge-edge 3D polygonal clipping. --- src/geometry/mod.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/geometry/mod.rs') diff --git a/src/geometry/mod.rs b/src/geometry/mod.rs index 1ccb2c8..efbb35c 100644 --- a/src/geometry/mod.rs +++ b/src/geometry/mod.rs @@ -50,8 +50,9 @@ pub(crate) use self::broad_phase_multi_sap::{BroadPhasePairEvent, ColliderPair}; pub(crate) use self::collider_set::RemovedCollider; #[cfg(feature = "simd-is-enabled")] pub(crate) use self::contact::WContact; +pub(crate) use self::contact_generator::clip_segments; #[cfg(feature = "dim2")] -pub(crate) use self::contact_generator::{clip_segments, clip_segments_with_normal}; +pub(crate) use self::contact_generator::clip_segments_with_normal; pub(crate) use self::narrow_phase::ContactManifoldIndex; #[cfg(feature = "dim3")] pub(crate) use self::polygonal_feature_map::PolygonalFeatureMap; -- cgit From 865ce8a8e5301b23ca474adaaffe8b43e725803e Mon Sep 17 00:00:00 2001 From: Crozet Sébastien Date: Tue, 20 Oct 2020 11:55:33 +0200 Subject: Collider shape: use a trait-object instead of an enum. --- src/geometry/mod.rs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'src/geometry/mod.rs') diff --git a/src/geometry/mod.rs b/src/geometry/mod.rs index efbb35c..71573ed 100644 --- a/src/geometry/mod.rs +++ b/src/geometry/mod.rs @@ -1,8 +1,7 @@ //! Structures related to geometry: colliders, shapes, etc. pub use self::broad_phase_multi_sap::BroadPhase; -pub use self::capsule::Capsule; -pub use self::collider::{Collider, ColliderBuilder, Shape}; +pub use self::collider::{Collider, ColliderBuilder, ColliderShape}; pub use self::collider_set::{ColliderHandle, ColliderSet}; pub use self::contact::{ Contact, ContactKinematics, ContactManifold, ContactPair, KinematicsCategory, @@ -19,9 +18,12 @@ pub use self::narrow_phase::NarrowPhase; pub use self::polygon::Polygon; pub use self::proximity::ProximityPair; pub use self::proximity_detector::{DefaultProximityDispatcher, ProximityDispatcher}; +pub use self::rounded::Rounded; pub use self::trimesh::Trimesh; pub use ncollide::query::Proximity; +/// A capsule shape. +pub type Capsule = ncollide::shape::Capsule; /// A cuboid shape. pub type Cuboid = ncollide::shape::Cuboid; /// A triangle shape. @@ -43,6 +45,8 @@ pub type ProximityEvent = ncollide::pipeline::ProximityEvent; pub type Ray = ncollide::query::Ray; /// The intersection between a ray and a collider. pub type RayIntersection = ncollide::query::RayIntersection; +/// The the projection of a point on a collider. +pub type PointProjection = ncollide::query::PointProjection; #[cfg(feature = "simd-is-enabled")] pub(crate) use self::ball::WBall; @@ -61,10 +65,10 @@ pub(crate) use self::polyhedron_feature3d::PolyhedronFace; pub(crate) use self::waabb::{WRay, WAABB}; pub(crate) use self::wquadtree::WQuadtree; //pub(crate) use self::z_order::z_cmp_floats; +pub use self::shape::{Shape, ShapeType}; mod ball; mod broad_phase_multi_sap; -mod capsule; mod collider; mod collider_set; mod contact; @@ -89,3 +93,5 @@ mod wquadtree; //mod z_order; #[cfg(feature = "dim3")] mod polygonal_feature_map; +mod rounded; +mod shape; -- cgit From d513c22d33ab44b0048355bcfd1db4173b3f7ece Mon Sep 17 00:00:00 2001 From: Crozet Sébastien Date: Tue, 20 Oct 2020 14:16:01 +0200 Subject: Add cone support. --- src/geometry/mod.rs | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/geometry/mod.rs') diff --git a/src/geometry/mod.rs b/src/geometry/mod.rs index 71573ed..d569248 100644 --- a/src/geometry/mod.rs +++ b/src/geometry/mod.rs @@ -35,6 +35,9 @@ pub type HeightField = ncollide::shape::HeightField; /// A cylindrical shape. #[cfg(feature = "dim3")] pub type Cylinder = ncollide::shape::Cylinder; +/// A cone shape. +#[cfg(feature = "dim3")] +pub type Cone = ncollide::shape::Cone; /// An axis-aligned bounding box. pub type AABB = ncollide::bounding_volume::AABB; /// Event triggered when two non-sensor colliders start or stop being in contact. -- cgit From 64958470950cd9832a669b1bd5d70a2aeb6a85ef Mon Sep 17 00:00:00 2001 From: Crozet Sébastien Date: Tue, 20 Oct 2020 15:57:54 +0200 Subject: Add rounded cylinder. --- src/geometry/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/geometry/mod.rs') diff --git a/src/geometry/mod.rs b/src/geometry/mod.rs index d569248..f73de98 100644 --- a/src/geometry/mod.rs +++ b/src/geometry/mod.rs @@ -18,7 +18,7 @@ pub use self::narrow_phase::NarrowPhase; pub use self::polygon::Polygon; pub use self::proximity::ProximityPair; pub use self::proximity_detector::{DefaultProximityDispatcher, ProximityDispatcher}; -pub use self::rounded::Rounded; +pub use self::rounded::{Roundable, Rounded}; pub use self::trimesh::Trimesh; pub use ncollide::query::Proximity; -- cgit From 2b628f9580a826722346983ef42672d4e8dd8053 Mon Sep 17 00:00:00 2001 From: Crozet Sébastien Date: Mon, 26 Oct 2020 15:58:30 +0100 Subject: Redefine capsules as a segment with a radius, allowing us to reuse the pfm_pfm_contact generator for it. --- src/geometry/mod.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/geometry/mod.rs') diff --git a/src/geometry/mod.rs b/src/geometry/mod.rs index f73de98..a3423dd 100644 --- a/src/geometry/mod.rs +++ b/src/geometry/mod.rs @@ -1,6 +1,7 @@ //! Structures related to geometry: colliders, shapes, etc. pub use self::broad_phase_multi_sap::BroadPhase; +pub use self::capsule::Capsule; pub use self::collider::{Collider, ColliderBuilder, ColliderShape}; pub use self::collider_set::{ColliderHandle, ColliderSet}; pub use self::contact::{ @@ -22,8 +23,8 @@ pub use self::rounded::{Roundable, Rounded}; pub use self::trimesh::Trimesh; pub use ncollide::query::Proximity; -/// A capsule shape. -pub type Capsule = ncollide::shape::Capsule; +/// A segment shape. +pub type Segment = ncollide::shape::Segment; /// A cuboid shape. pub type Cuboid = ncollide::shape::Cuboid; /// A triangle shape. @@ -94,6 +95,7 @@ mod trimesh; mod waabb; mod wquadtree; //mod z_order; +mod capsule; #[cfg(feature = "dim3")] mod polygonal_feature_map; mod rounded; -- cgit From 8c872dc0af9ece127a87b4adb112b0e1ed6ab249 Mon Sep 17 00:00:00 2001 From: Crozet Sébastien Date: Tue, 27 Oct 2020 09:20:40 +0100 Subject: Replace the Rounded type by a non-generic RoundCylinder type. --- src/geometry/mod.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/geometry/mod.rs') diff --git a/src/geometry/mod.rs b/src/geometry/mod.rs index a3423dd..2d8fc76 100644 --- a/src/geometry/mod.rs +++ b/src/geometry/mod.rs @@ -19,7 +19,7 @@ pub use self::narrow_phase::NarrowPhase; pub use self::polygon::Polygon; pub use self::proximity::ProximityPair; pub use self::proximity_detector::{DefaultProximityDispatcher, ProximityDispatcher}; -pub use self::rounded::{Roundable, Rounded}; +pub use self::round_cylinder::RoundCylinder; pub use self::trimesh::Trimesh; pub use ncollide::query::Proximity; @@ -98,5 +98,5 @@ mod wquadtree; mod capsule; #[cfg(feature = "dim3")] mod polygonal_feature_map; -mod rounded; +mod round_cylinder; mod shape; -- cgit From ffbc3c02c7d328d5c48a3efb84d35f5911f1880b Mon Sep 17 00:00:00 2001 From: Crozet Sébastien Date: Tue, 27 Oct 2020 09:25:58 +0100 Subject: Fix 2D compilation. --- src/geometry/mod.rs | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src/geometry/mod.rs') diff --git a/src/geometry/mod.rs b/src/geometry/mod.rs index 2d8fc76..abb9844 100644 --- a/src/geometry/mod.rs +++ b/src/geometry/mod.rs @@ -19,6 +19,7 @@ pub use self::narrow_phase::NarrowPhase; pub use self::polygon::Polygon; pub use self::proximity::ProximityPair; pub use self::proximity_detector::{DefaultProximityDispatcher, ProximityDispatcher}; +#[cfg(feature = "dim3")] pub use self::round_cylinder::RoundCylinder; pub use self::trimesh::Trimesh; pub use ncollide::query::Proximity; @@ -98,5 +99,6 @@ mod wquadtree; mod capsule; #[cfg(feature = "dim3")] mod polygonal_feature_map; +#[cfg(feature = "dim3")] mod round_cylinder; mod shape; -- cgit