Rename cdl to parry.
This commit is contained in:
16
Cargo.toml
16
Cargo.toml
@@ -11,17 +11,17 @@ members = [ "build/rapier2d", "build/rapier2d-f64", "build/rapier_testbed2d", "e
|
|||||||
#nphysics2d = { path = "../nphysics/build/nphysics2d" }
|
#nphysics2d = { path = "../nphysics/build/nphysics2d" }
|
||||||
#nphysics3d = { path = "../nphysics/build/nphysics3d" }
|
#nphysics3d = { path = "../nphysics/build/nphysics3d" }
|
||||||
#kiss3d = { path = "../kiss3d" }
|
#kiss3d = { path = "../kiss3d" }
|
||||||
#cdl2d = { path = "../cdl/build/cdl2d" }
|
#parry2d = { path = "../parry/build/parry2d" }
|
||||||
#cdl3d = { path = "../cdl/build/cdl3d" }
|
#parry3d = { path = "../parry/build/parry3d" }
|
||||||
#cdl2d-f64 = { path = "../cdl/build/cdl2d-f64" }
|
#parry2d-f64 = { path = "../parry/build/parry2d-f64" }
|
||||||
#cdl3d-f64 = { path = "../cdl/build/cdl3d-f64" }
|
#parry3d-f64 = { path = "../parry/build/parry3d-f64" }
|
||||||
#nalgebra = { path = "../nalgebra" }
|
#nalgebra = { path = "../nalgebra" }
|
||||||
|
|
||||||
#kiss3d = { git = "https://github.com/sebcrozet/kiss3d" }
|
#kiss3d = { git = "https://github.com/sebcrozet/kiss3d" }
|
||||||
cdl2d = { git = "https://github.com/sebcrozet/cdl" }
|
parry2d = { git = "https://github.com/sebcrozet/parry" }
|
||||||
cdl3d = { git = "https://github.com/sebcrozet/cdl" }
|
parry3d = { git = "https://github.com/sebcrozet/parry" }
|
||||||
cdl2d-f64 = { git = "https://github.com/sebcrozet/cdl" }
|
parry2d-f64 = { git = "https://github.com/sebcrozet/parry" }
|
||||||
cdl3d-f64 = { git = "https://github.com/sebcrozet/cdl" }
|
parry3d-f64 = { git = "https://github.com/sebcrozet/parry" }
|
||||||
#ncollide2d = { git = "https://github.com/dimforge/ncollide" }
|
#ncollide2d = { git = "https://github.com/dimforge/ncollide" }
|
||||||
#ncollide3d = { git = "https://github.com/dimforge/ncollide" }
|
#ncollide3d = { git = "https://github.com/dimforge/ncollide" }
|
||||||
#nphysics2d = { git = "https://github.com/dimforge/nphysics" }
|
#nphysics2d = { git = "https://github.com/dimforge/nphysics" }
|
||||||
|
|||||||
@@ -22,8 +22,8 @@ simd-nightly = [ "simba/packed_simd", "simd-is-enabled" ]
|
|||||||
# enabled with the "simd-stable" or "simd-nightly" feature.
|
# enabled with the "simd-stable" or "simd-nightly" feature.
|
||||||
simd-is-enabled = [ ]
|
simd-is-enabled = [ ]
|
||||||
wasm-bindgen = [ "instant/wasm-bindgen" ]
|
wasm-bindgen = [ "instant/wasm-bindgen" ]
|
||||||
serde-serialize = [ "erased-serde", "nalgebra/serde-serialize", "cdl2d-f64/serde-serialize", "serde", "generational-arena/serde", "bit-vec/serde", "arrayvec/serde" ]
|
serde-serialize = [ "erased-serde", "nalgebra/serde-serialize", "parry2d-f64/serde-serialize", "serde", "generational-arena/serde", "bit-vec/serde", "arrayvec/serde" ]
|
||||||
enhanced-determinism = [ "simba/libm_force", "cdl2d-f64/enhanced-determinism", "indexmap" ]
|
enhanced-determinism = [ "simba/libm_force", "parry2d-f64/enhanced-determinism", "indexmap" ]
|
||||||
|
|
||||||
[lib]
|
[lib]
|
||||||
name = "rapier2d_f64"
|
name = "rapier2d_f64"
|
||||||
@@ -36,7 +36,7 @@ vec_map = "0.8"
|
|||||||
instant = { version = "0.1", features = [ "now" ]}
|
instant = { version = "0.1", features = [ "now" ]}
|
||||||
num-traits = "0.2"
|
num-traits = "0.2"
|
||||||
nalgebra = "0.24"
|
nalgebra = "0.24"
|
||||||
cdl2d-f64 = "0.1"
|
parry2d-f64 = "0.1"
|
||||||
simba = "0.3"
|
simba = "0.3"
|
||||||
approx = "0.4"
|
approx = "0.4"
|
||||||
rayon = { version = "1", optional = true }
|
rayon = { version = "1", optional = true }
|
||||||
|
|||||||
@@ -22,8 +22,8 @@ simd-nightly = [ "simba/packed_simd", "simd-is-enabled" ]
|
|||||||
# enabled with the "simd-stable" or "simd-nightly" feature.
|
# enabled with the "simd-stable" or "simd-nightly" feature.
|
||||||
simd-is-enabled = [ ]
|
simd-is-enabled = [ ]
|
||||||
wasm-bindgen = [ "instant/wasm-bindgen" ]
|
wasm-bindgen = [ "instant/wasm-bindgen" ]
|
||||||
serde-serialize = [ "erased-serde", "nalgebra/serde-serialize", "cdl2d/serde-serialize", "serde", "generational-arena/serde", "bit-vec/serde", "arrayvec/serde" ]
|
serde-serialize = [ "erased-serde", "nalgebra/serde-serialize", "parry2d/serde-serialize", "serde", "generational-arena/serde", "bit-vec/serde", "arrayvec/serde" ]
|
||||||
enhanced-determinism = [ "simba/libm_force", "cdl2d/enhanced-determinism", "indexmap" ]
|
enhanced-determinism = [ "simba/libm_force", "parry2d/enhanced-determinism", "indexmap" ]
|
||||||
|
|
||||||
[lib]
|
[lib]
|
||||||
name = "rapier2d"
|
name = "rapier2d"
|
||||||
@@ -36,7 +36,7 @@ vec_map = "0.8"
|
|||||||
instant = { version = "0.1", features = [ "now" ]}
|
instant = { version = "0.1", features = [ "now" ]}
|
||||||
num-traits = "0.2"
|
num-traits = "0.2"
|
||||||
nalgebra = "0.24"
|
nalgebra = "0.24"
|
||||||
cdl2d = "0.1"
|
parry2d = "0.1"
|
||||||
simba = "0.3"
|
simba = "0.3"
|
||||||
approx = "0.4"
|
approx = "0.4"
|
||||||
rayon = { version = "1", optional = true }
|
rayon = { version = "1", optional = true }
|
||||||
|
|||||||
@@ -16,14 +16,14 @@ default = [ "dim3", "f64" ]
|
|||||||
dim3 = [ ]
|
dim3 = [ ]
|
||||||
f64 = [ ]
|
f64 = [ ]
|
||||||
parallel = [ "rayon" ]
|
parallel = [ "rayon" ]
|
||||||
simd-stable = [ "cdl3d-f64/simd-stable", "simba/wide", "simd-is-enabled" ]
|
simd-stable = [ "parry3d-f64/simd-stable", "simba/wide", "simd-is-enabled" ]
|
||||||
simd-nightly = [ "cdl3d-f64/simd-nightly", "simba/packed_simd", "simd-is-enabled" ]
|
simd-nightly = [ "parry3d-f64/simd-nightly", "simba/packed_simd", "simd-is-enabled" ]
|
||||||
# Do not enable this feature directly. It is automatically
|
# Do not enable this feature directly. It is automatically
|
||||||
# enabled with the "simd-stable" or "simd-nightly" feature.
|
# enabled with the "simd-stable" or "simd-nightly" feature.
|
||||||
simd-is-enabled = [ ]
|
simd-is-enabled = [ ]
|
||||||
wasm-bindgen = [ "instant/wasm-bindgen" ]
|
wasm-bindgen = [ "instant/wasm-bindgen" ]
|
||||||
serde-serialize = [ "erased-serde", "nalgebra/serde-serialize", "cdl3d-f64/serde-serialize", "serde", "generational-arena/serde", "bit-vec/serde" ]
|
serde-serialize = [ "erased-serde", "nalgebra/serde-serialize", "parry3d-f64/serde-serialize", "serde", "generational-arena/serde", "bit-vec/serde" ]
|
||||||
enhanced-determinism = [ "simba/libm_force", "cdl3d-f64/enhanced-determinism" ]
|
enhanced-determinism = [ "simba/libm_force", "parry3d-f64/enhanced-determinism" ]
|
||||||
|
|
||||||
[lib]
|
[lib]
|
||||||
name = "rapier3d_f64"
|
name = "rapier3d_f64"
|
||||||
@@ -36,7 +36,7 @@ vec_map = "0.8"
|
|||||||
instant = { version = "0.1", features = [ "now" ]}
|
instant = { version = "0.1", features = [ "now" ]}
|
||||||
num-traits = "0.2"
|
num-traits = "0.2"
|
||||||
nalgebra = "0.24"
|
nalgebra = "0.24"
|
||||||
cdl3d-f64 = "0.1"
|
parry3d-f64 = "0.1"
|
||||||
simba = "0.3"
|
simba = "0.3"
|
||||||
approx = "0.4"
|
approx = "0.4"
|
||||||
rayon = { version = "1", optional = true }
|
rayon = { version = "1", optional = true }
|
||||||
|
|||||||
@@ -16,14 +16,14 @@ default = [ "dim3", "f32" ]
|
|||||||
dim3 = [ ]
|
dim3 = [ ]
|
||||||
f32 = [ ]
|
f32 = [ ]
|
||||||
parallel = [ "rayon" ]
|
parallel = [ "rayon" ]
|
||||||
simd-stable = [ "cdl3d/simd-stable", "simba/wide", "simd-is-enabled" ]
|
simd-stable = [ "parry3d/simd-stable", "simba/wide", "simd-is-enabled" ]
|
||||||
simd-nightly = [ "cdl3d/simd-nightly", "simba/packed_simd", "simd-is-enabled" ]
|
simd-nightly = [ "parry3d/simd-nightly", "simba/packed_simd", "simd-is-enabled" ]
|
||||||
# Do not enable this feature directly. It is automatically
|
# Do not enable this feature directly. It is automatically
|
||||||
# enabled with the "simd-stable" or "simd-nightly" feature.
|
# enabled with the "simd-stable" or "simd-nightly" feature.
|
||||||
simd-is-enabled = [ ]
|
simd-is-enabled = [ ]
|
||||||
wasm-bindgen = [ "instant/wasm-bindgen" ]
|
wasm-bindgen = [ "instant/wasm-bindgen" ]
|
||||||
serde-serialize = [ "erased-serde", "nalgebra/serde-serialize", "cdl3d/serde-serialize", "serde", "generational-arena/serde", "bit-vec/serde" ]
|
serde-serialize = [ "erased-serde", "nalgebra/serde-serialize", "parry3d/serde-serialize", "serde", "generational-arena/serde", "bit-vec/serde" ]
|
||||||
enhanced-determinism = [ "simba/libm_force", "cdl3d/enhanced-determinism" ]
|
enhanced-determinism = [ "simba/libm_force", "parry3d/enhanced-determinism" ]
|
||||||
|
|
||||||
[lib]
|
[lib]
|
||||||
name = "rapier3d"
|
name = "rapier3d"
|
||||||
@@ -36,7 +36,7 @@ vec_map = "0.8"
|
|||||||
instant = { version = "0.1", features = [ "now" ]}
|
instant = { version = "0.1", features = [ "now" ]}
|
||||||
num-traits = "0.2"
|
num-traits = "0.2"
|
||||||
nalgebra = "0.24"
|
nalgebra = "0.24"
|
||||||
cdl3d = "0.1"
|
parry3d = "0.1"
|
||||||
simba = "0.3"
|
simba = "0.3"
|
||||||
approx = "0.4"
|
approx = "0.4"
|
||||||
rayon = { version = "1", optional = true }
|
rayon = { version = "1", optional = true }
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ instant = { version = "0.1", features = [ "web-sys", "now" ]}
|
|||||||
bitflags = "1"
|
bitflags = "1"
|
||||||
num_cpus = { version = "1", optional = true }
|
num_cpus = { version = "1", optional = true }
|
||||||
wrapped2d = { version = "0.4", optional = true }
|
wrapped2d = { version = "0.4", optional = true }
|
||||||
cdl2d = "0.1"
|
parry2d = "0.1"
|
||||||
ncollide2d = "0.27"
|
ncollide2d = "0.27"
|
||||||
nphysics2d = { version = "0.19", optional = true }
|
nphysics2d = { version = "0.19", optional = true }
|
||||||
crossbeam = "0.8"
|
crossbeam = "0.8"
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ instant = { version = "0.1", features = [ "web-sys", "now" ]}
|
|||||||
bitflags = "1"
|
bitflags = "1"
|
||||||
glam = { version = "0.11", optional = true }
|
glam = { version = "0.11", optional = true }
|
||||||
num_cpus = { version = "1", optional = true }
|
num_cpus = { version = "1", optional = true }
|
||||||
cdl3d = "0.1"
|
parry3d = "0.1"
|
||||||
ncollide3d = "0.27"
|
ncollide3d = "0.27"
|
||||||
nphysics3d = { version = "0.19", optional = true }
|
nphysics3d = { version = "0.19", optional = true }
|
||||||
physx = { version = "0.10", optional = true }
|
physx = { version = "0.10", optional = true }
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
use kiss3d::loader::obj;
|
use kiss3d::loader::obj;
|
||||||
use na::{Point3, Translation3};
|
use na::{Point3, Translation3};
|
||||||
use rapier3d::cdl::bounding_volume::{self, BoundingVolume};
|
|
||||||
use rapier3d::dynamics::{JointSet, RigidBodyBuilder, RigidBodySet};
|
use rapier3d::dynamics::{JointSet, RigidBodyBuilder, RigidBodySet};
|
||||||
use rapier3d::geometry::{ColliderBuilder, ColliderSet, SharedShape};
|
use rapier3d::geometry::{ColliderBuilder, ColliderSet, SharedShape};
|
||||||
|
use rapier3d::parry::bounding_volume::{self, BoundingVolume};
|
||||||
use rapier_testbed3d::Testbed;
|
use rapier_testbed3d::Testbed;
|
||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
//! See https://github.com/fitzgen/generational-arena/blob/master/src/lib.rs.
|
//! See https://github.com/fitzgen/generational-arena/blob/master/src/lib.rs.
|
||||||
//! This has been modified to have a fully deterministic deserialization (including for the order of
|
//! This has been modified to have a fully deterministic deserialization (including for the order of
|
||||||
//! Index attribution after a deserialization of the arena.
|
//! Index attribution after a deserialization of the arena.
|
||||||
use cdl::partitioning::IndexedData;
|
use parry::partitioning::IndexedData;
|
||||||
use std::cmp;
|
use std::cmp;
|
||||||
use std::iter::{self, Extend, FromIterator, FusedIterator};
|
use std::iter::{self, Extend, FromIterator, FusedIterator};
|
||||||
use std::mem;
|
use std::mem;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
//! Data structures modified with guaranteed deterministic behavior after deserialization.
|
//! Data structures modified with guaranteed deterministic behavior after deserialization.
|
||||||
|
|
||||||
pub use self::coarena::Coarena;
|
pub use self::coarena::Coarena;
|
||||||
pub use cdl::utils::MaybeSerializableData;
|
pub use parry::utils::MaybeSerializableData;
|
||||||
|
|
||||||
pub mod arena;
|
pub mod arena;
|
||||||
mod coarena;
|
mod coarena;
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ pub use self::joint::{
|
|||||||
};
|
};
|
||||||
pub use self::rigid_body::{ActivationStatus, BodyStatus, RigidBody, RigidBodyBuilder};
|
pub use self::rigid_body::{ActivationStatus, BodyStatus, RigidBody, RigidBodyBuilder};
|
||||||
pub use self::rigid_body_set::{BodyPair, RigidBodyHandle, RigidBodySet};
|
pub use self::rigid_body_set::{BodyPair, RigidBodyHandle, RigidBodySet};
|
||||||
pub use cdl::mass_properties::MassProperties;
|
pub use parry::mass_properties::MassProperties;
|
||||||
// #[cfg(not(feature = "parallel"))]
|
// #[cfg(not(feature = "parallel"))]
|
||||||
pub use self::coefficient_combine_rule::CoefficientCombineRule;
|
pub use self::coefficient_combine_rule::CoefficientCombineRule;
|
||||||
pub(crate) use self::joint::JointGraphEdge;
|
pub(crate) use self::joint::JointGraphEdge;
|
||||||
|
|||||||
@@ -678,11 +678,9 @@ impl RigidBodyBuilder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Prevents this rigid-body from translating because of forces.
|
/// Prevents this rigid-body from translating because of forces.
|
||||||
///
|
pub fn lock_translations(mut self) -> Self {
|
||||||
/// This is equivalent to `self.mass(0.0, false)`. See the
|
self.flags.set(RigidBodyFlags::TRANSLATION_LOCKED, true);
|
||||||
/// documentation of [`RigidBodyBuilder::mass`] for more details.
|
self
|
||||||
pub fn lock_translations(self) -> Self {
|
|
||||||
self.mass(0.0, false)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Prevents this rigid-body from rotating because of forces.
|
/// Prevents this rigid-body from rotating because of forces.
|
||||||
@@ -711,22 +709,8 @@ impl RigidBodyBuilder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Sets the mass of the rigid-body being built.
|
/// Sets the mass of the rigid-body being built.
|
||||||
///
|
pub fn mass(mut self, mass: Real) -> Self {
|
||||||
/// In order to lock the translations of this rigid-body (by
|
|
||||||
/// making them kinematic), call `.mass(0.0, false)`.
|
|
||||||
///
|
|
||||||
/// If `colliders_contribution_enabled` is `false`, then the mass specified here
|
|
||||||
/// will be the final mass of the rigid-body created by this builder.
|
|
||||||
/// If `colliders_contribution_enabled` is `true`, then the final mass of the rigid-body
|
|
||||||
/// will depends on the initial mass set by this method to which is added
|
|
||||||
/// the contributions of all the colliders with non-zero density attached to
|
|
||||||
/// this rigid-body.
|
|
||||||
pub fn mass(mut self, mass: Real, colliders_contribution_enabled: bool) -> Self {
|
|
||||||
self.mass_properties.inv_mass = utils::inv(mass);
|
self.mass_properties.inv_mass = utils::inv(mass);
|
||||||
self.flags.set(
|
|
||||||
RigidBodyFlags::TRANSLATION_LOCKED,
|
|
||||||
!colliders_contribution_enabled,
|
|
||||||
);
|
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
/// Sets the angular inertia of this rigid-body.
|
/// Sets the angular inertia of this rigid-body.
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use rayon::prelude::*;
|
|||||||
use crate::data::arena::Arena;
|
use crate::data::arena::Arena;
|
||||||
use crate::dynamics::{Joint, JointSet, RigidBody, RigidBodyChanges};
|
use crate::dynamics::{Joint, JointSet, RigidBody, RigidBodyChanges};
|
||||||
use crate::geometry::{ColliderSet, InteractionGraph, NarrowPhase};
|
use crate::geometry::{ColliderSet, InteractionGraph, NarrowPhase};
|
||||||
use cdl::partitioning::IndexedData;
|
use parry::partitioning::IndexedData;
|
||||||
use std::ops::{Index, IndexMut};
|
use std::ops::{Index, IndexMut};
|
||||||
|
|
||||||
/// The unique handle of a rigid body added to a `RigidBodySet`.
|
/// The unique handle of a rigid body added to a `RigidBodySet`.
|
||||||
|
|||||||
@@ -13,8 +13,8 @@ use crate::utils::{WAngularInertia, WCross, WCrossMatrix};
|
|||||||
use na::{Cholesky, Matrix6, Vector6, U3};
|
use na::{Cholesky, Matrix6, Vector6, U3};
|
||||||
#[cfg(feature = "dim2")]
|
#[cfg(feature = "dim2")]
|
||||||
use {
|
use {
|
||||||
cdl::utils::SdpMatrix3,
|
|
||||||
na::{Matrix3, Vector3},
|
na::{Matrix3, Vector3},
|
||||||
|
parry::utils::SdpMatrix3,
|
||||||
};
|
};
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
|
|||||||
@@ -8,8 +8,8 @@ use crate::utils::{WAngularInertia, WCross, WCrossMatrix};
|
|||||||
use na::{Cholesky, Matrix3x2, Matrix5, Vector5, U2, U3};
|
use na::{Cholesky, Matrix3x2, Matrix5, Vector5, U2, U3};
|
||||||
#[cfg(feature = "dim2")]
|
#[cfg(feature = "dim2")]
|
||||||
use {
|
use {
|
||||||
cdl::utils::SdpMatrix2,
|
|
||||||
na::{Matrix2, Vector2},
|
na::{Matrix2, Vector2},
|
||||||
|
parry::utils::SdpMatrix2,
|
||||||
};
|
};
|
||||||
|
|
||||||
#[cfg(feature = "dim2")]
|
#[cfg(feature = "dim2")]
|
||||||
|
|||||||
@@ -12,8 +12,8 @@ use crate::utils::{WAngularInertia, WCross, WCrossMatrix};
|
|||||||
use na::{Cholesky, Matrix3x2, Matrix5, Vector5, U2, U3};
|
use na::{Cholesky, Matrix3x2, Matrix5, Vector5, U2, U3};
|
||||||
#[cfg(feature = "dim2")]
|
#[cfg(feature = "dim2")]
|
||||||
use {
|
use {
|
||||||
cdl::utils::SdpMatrix2,
|
|
||||||
na::{Matrix2, Vector2},
|
na::{Matrix2, Vector2},
|
||||||
|
parry::utils::SdpMatrix2,
|
||||||
};
|
};
|
||||||
|
|
||||||
#[cfg(feature = "dim2")]
|
#[cfg(feature = "dim2")]
|
||||||
|
|||||||
@@ -3,8 +3,8 @@ use crate::dynamics::RigidBodySet;
|
|||||||
use crate::geometry::{ColliderHandle, ColliderSet, RemovedCollider};
|
use crate::geometry::{ColliderHandle, ColliderSet, RemovedCollider};
|
||||||
use crate::math::{Point, Real, Vector, DIM};
|
use crate::math::{Point, Real, Vector, DIM};
|
||||||
use bit_vec::BitVec;
|
use bit_vec::BitVec;
|
||||||
use cdl::bounding_volume::{BoundingVolume, AABB};
|
use parry::bounding_volume::{BoundingVolume, AABB};
|
||||||
use cdl::utils::hashmap::HashMap;
|
use parry::utils::hashmap::HashMap;
|
||||||
use std::cmp::Ordering;
|
use std::cmp::Ordering;
|
||||||
use std::ops::{Index, IndexMut};
|
use std::ops::{Index, IndexMut};
|
||||||
|
|
||||||
@@ -477,8 +477,8 @@ pub struct BroadPhase {
|
|||||||
#[cfg_attr(
|
#[cfg_attr(
|
||||||
feature = "serde-serialize",
|
feature = "serde-serialize",
|
||||||
serde(
|
serde(
|
||||||
serialize_with = "cdl::utils::hashmap::serialize_hashmap_capacity",
|
serialize_with = "parry::utils::hashmap::serialize_hashmap_capacity",
|
||||||
deserialize_with = "cdl::utils::hashmap::deserialize_hashmap_capacity"
|
deserialize_with = "parry::utils::hashmap::deserialize_hashmap_capacity"
|
||||||
)
|
)
|
||||||
)]
|
)]
|
||||||
reporting: HashMap<(u32, u32), bool>, // Workspace
|
reporting: HashMap<(u32, u32), bool>, // Workspace
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
use crate::cdl::transformation::vhacd::VHACDParameters;
|
|
||||||
use crate::dynamics::{CoefficientCombineRule, MassProperties, RigidBodyHandle};
|
use crate::dynamics::{CoefficientCombineRule, MassProperties, RigidBodyHandle};
|
||||||
use crate::geometry::{InteractionGroups, SharedShape};
|
use crate::geometry::{InteractionGroups, SharedShape};
|
||||||
use crate::math::{AngVector, Isometry, Point, Real, Rotation, Vector, DIM};
|
use crate::math::{AngVector, Isometry, Point, Real, Rotation, Vector, DIM};
|
||||||
use cdl::bounding_volume::AABB;
|
use crate::parry::transformation::vhacd::VHACDParameters;
|
||||||
use cdl::shape::Shape;
|
use parry::bounding_volume::AABB;
|
||||||
|
use parry::shape::Shape;
|
||||||
|
|
||||||
bitflags::bitflags! {
|
bitflags::bitflags! {
|
||||||
#[cfg_attr(feature = "serde-serialize", derive(Serialize, Deserialize))]
|
#[cfg_attr(feature = "serde-serialize", derive(Serialize, Deserialize))]
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ use crate::data::arena::Arena;
|
|||||||
use crate::data::pubsub::PubSub;
|
use crate::data::pubsub::PubSub;
|
||||||
use crate::dynamics::{RigidBodyHandle, RigidBodySet};
|
use crate::dynamics::{RigidBodyHandle, RigidBodySet};
|
||||||
use crate::geometry::Collider;
|
use crate::geometry::Collider;
|
||||||
use cdl::partitioning::IndexedData;
|
use parry::partitioning::IndexedData;
|
||||||
use std::ops::{Index, IndexMut};
|
use std::ops::{Index, IndexMut};
|
||||||
|
|
||||||
/// The unique identifier of a collider added to a collider set.
|
/// The unique identifier of a collider added to a collider set.
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
use crate::dynamics::{BodyPair, RigidBodyHandle};
|
use crate::dynamics::{BodyPair, RigidBodyHandle};
|
||||||
use crate::geometry::{ColliderPair, ContactManifold};
|
use crate::geometry::{ColliderPair, ContactManifold};
|
||||||
use crate::math::{Point, Real, Vector};
|
use crate::math::{Point, Real, Vector};
|
||||||
use cdl::query::ContactManifoldsWorkspace;
|
use parry::query::ContactManifoldsWorkspace;
|
||||||
|
|
||||||
bitflags::bitflags! {
|
bitflags::bitflags! {
|
||||||
#[cfg_attr(feature = "serde-serialize", derive(Serialize, Deserialize))]
|
#[cfg_attr(feature = "serde-serialize", derive(Serialize, Deserialize))]
|
||||||
|
|||||||
@@ -10,39 +10,39 @@ pub use self::interaction_graph::{
|
|||||||
};
|
};
|
||||||
pub use self::interaction_groups::InteractionGroups;
|
pub use self::interaction_groups::InteractionGroups;
|
||||||
pub use self::narrow_phase::NarrowPhase;
|
pub use self::narrow_phase::NarrowPhase;
|
||||||
pub use self::pair_filter::{ContactPairFilter, PairFilterContext, ProximityPairFilter};
|
pub use self::pair_filter::{ContactPairFilter, IntersectionPairFilter, PairFilterContext};
|
||||||
|
|
||||||
pub use cdl::query::TrackedContact;
|
pub use parry::query::TrackedContact;
|
||||||
|
|
||||||
pub type Contact = cdl::query::TrackedContact<ContactData>;
|
pub type Contact = parry::query::TrackedContact<ContactData>;
|
||||||
pub type ContactManifold = cdl::query::ContactManifold<ContactManifoldData, ContactData>;
|
pub type ContactManifold = parry::query::ContactManifold<ContactManifoldData, ContactData>;
|
||||||
/// A segment shape.
|
/// A segment shape.
|
||||||
pub type Segment = cdl::shape::Segment;
|
pub type Segment = parry::shape::Segment;
|
||||||
/// A cuboid shape.
|
/// A cuboid shape.
|
||||||
pub type Cuboid = cdl::shape::Cuboid;
|
pub type Cuboid = parry::shape::Cuboid;
|
||||||
/// A triangle shape.
|
/// A triangle shape.
|
||||||
pub type Triangle = cdl::shape::Triangle;
|
pub type Triangle = parry::shape::Triangle;
|
||||||
/// A ball shape.
|
/// A ball shape.
|
||||||
pub type Ball = cdl::shape::Ball;
|
pub type Ball = parry::shape::Ball;
|
||||||
/// A capsule shape.
|
/// A capsule shape.
|
||||||
pub type Capsule = cdl::shape::Capsule;
|
pub type Capsule = parry::shape::Capsule;
|
||||||
/// A heightfield shape.
|
/// A heightfield shape.
|
||||||
pub type HeightField = cdl::shape::HeightField;
|
pub type HeightField = parry::shape::HeightField;
|
||||||
/// A cylindrical shape.
|
/// A cylindrical shape.
|
||||||
#[cfg(feature = "dim3")]
|
#[cfg(feature = "dim3")]
|
||||||
pub type Cylinder = cdl::shape::Cylinder;
|
pub type Cylinder = parry::shape::Cylinder;
|
||||||
/// A cone shape.
|
/// A cone shape.
|
||||||
#[cfg(feature = "dim3")]
|
#[cfg(feature = "dim3")]
|
||||||
pub type Cone = cdl::shape::Cone;
|
pub type Cone = parry::shape::Cone;
|
||||||
/// An axis-aligned bounding box.
|
/// An axis-aligned bounding box.
|
||||||
pub type AABB = cdl::bounding_volume::AABB;
|
pub type AABB = parry::bounding_volume::AABB;
|
||||||
/// A ray that can be cast against colliders.
|
/// A ray that can be cast against colliders.
|
||||||
pub type Ray = cdl::query::Ray;
|
pub type Ray = parry::query::Ray;
|
||||||
/// The intersection between a ray and a collider.
|
/// The intersection between a ray and a collider.
|
||||||
pub type RayIntersection = cdl::query::RayIntersection;
|
pub type RayIntersection = parry::query::RayIntersection;
|
||||||
/// The the projection of a point on a collider.
|
/// The the projection of a point on a collider.
|
||||||
pub type PointProjection = cdl::query::PointProjection;
|
pub type PointProjection = parry::query::PointProjection;
|
||||||
pub use cdl::shape::SharedShape;
|
pub use parry::shape::SharedShape;
|
||||||
|
|
||||||
#[derive(Copy, Clone, Hash, Debug)]
|
#[derive(Copy, Clone, Hash, Debug)]
|
||||||
/// Events occurring when two collision objects start or stop being in contact (or penetration).
|
/// Events occurring when two collision objects start or stop being in contact (or penetration).
|
||||||
@@ -84,18 +84,18 @@ impl IntersectionEvent {
|
|||||||
pub(crate) use self::broad_phase_multi_sap::{BroadPhasePairEvent, ColliderPair};
|
pub(crate) use self::broad_phase_multi_sap::{BroadPhasePairEvent, ColliderPair};
|
||||||
pub(crate) use self::collider_set::RemovedCollider;
|
pub(crate) use self::collider_set::RemovedCollider;
|
||||||
pub(crate) use self::narrow_phase::ContactManifoldIndex;
|
pub(crate) use self::narrow_phase::ContactManifoldIndex;
|
||||||
pub(crate) use cdl::partitioning::SimdQuadTree;
|
pub(crate) use parry::partitioning::SimdQuadTree;
|
||||||
pub use cdl::shape::*;
|
pub use parry::shape::*;
|
||||||
|
|
||||||
#[cfg(feature = "serde-serialize")]
|
#[cfg(feature = "serde-serialize")]
|
||||||
pub(crate) fn default_persistent_query_dispatcher(
|
pub(crate) fn default_persistent_query_dispatcher(
|
||||||
) -> std::sync::Arc<dyn cdl::query::PersistentQueryDispatcher<ContactManifoldData, ContactData>> {
|
) -> std::sync::Arc<dyn parry::query::PersistentQueryDispatcher<ContactManifoldData, ContactData>> {
|
||||||
std::sync::Arc::new(cdl::query::DefaultQueryDispatcher)
|
std::sync::Arc::new(parry::query::DefaultQueryDispatcher)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(feature = "serde-serialize")]
|
#[cfg(feature = "serde-serialize")]
|
||||||
pub(crate) fn default_query_dispatcher() -> std::sync::Arc<dyn cdl::query::QueryDispatcher> {
|
pub(crate) fn default_query_dispatcher() -> std::sync::Arc<dyn parry::query::QueryDispatcher> {
|
||||||
std::sync::Arc::new(cdl::query::DefaultQueryDispatcher)
|
std::sync::Arc::new(parry::query::DefaultQueryDispatcher)
|
||||||
}
|
}
|
||||||
|
|
||||||
mod broad_phase_multi_sap;
|
mod broad_phase_multi_sap;
|
||||||
|
|||||||
@@ -6,14 +6,14 @@ use crate::data::Coarena;
|
|||||||
use crate::dynamics::{BodyPair, CoefficientCombineRule, RigidBodySet};
|
use crate::dynamics::{BodyPair, CoefficientCombineRule, RigidBodySet};
|
||||||
use crate::geometry::{
|
use crate::geometry::{
|
||||||
BroadPhasePairEvent, ColliderGraphIndex, ColliderHandle, ContactData, ContactEvent,
|
BroadPhasePairEvent, ColliderGraphIndex, ColliderHandle, ContactData, ContactEvent,
|
||||||
ContactManifoldData, ContactPairFilter, IntersectionEvent, PairFilterContext,
|
ContactManifoldData, ContactPairFilter, IntersectionEvent, IntersectionPairFilter,
|
||||||
ProximityPairFilter, RemovedCollider, SolverContact, SolverFlags,
|
PairFilterContext, RemovedCollider, SolverContact, SolverFlags,
|
||||||
};
|
};
|
||||||
use crate::geometry::{ColliderSet, ContactManifold, ContactPair, InteractionGraph};
|
use crate::geometry::{ColliderSet, ContactManifold, ContactPair, InteractionGraph};
|
||||||
use crate::math::{Real, Vector};
|
use crate::math::{Real, Vector};
|
||||||
use crate::pipeline::EventHandler;
|
use crate::pipeline::EventHandler;
|
||||||
use cdl::query::{DefaultQueryDispatcher, PersistentQueryDispatcher};
|
use parry::query::{DefaultQueryDispatcher, PersistentQueryDispatcher};
|
||||||
use cdl::utils::IsometryOpt;
|
use parry::utils::IsometryOpt;
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
@@ -387,7 +387,7 @@ impl NarrowPhase {
|
|||||||
&mut self,
|
&mut self,
|
||||||
bodies: &RigidBodySet,
|
bodies: &RigidBodySet,
|
||||||
colliders: &ColliderSet,
|
colliders: &ColliderSet,
|
||||||
pair_filter: Option<&dyn ProximityPairFilter>,
|
pair_filter: Option<&dyn IntersectionPairFilter>,
|
||||||
events: &dyn EventHandler,
|
events: &dyn EventHandler,
|
||||||
) {
|
) {
|
||||||
let nodes = &self.intersection_graph.graph.nodes;
|
let nodes = &self.intersection_graph.graph.nodes;
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ pub trait ContactPairFilter: Send + Sync {
|
|||||||
///
|
///
|
||||||
/// This can be used to apply custom logic in order to decide whether two colliders
|
/// This can be used to apply custom logic in order to decide whether two colliders
|
||||||
/// should have their intersection computed by the narrow-phase.
|
/// should have their intersection computed by the narrow-phase.
|
||||||
pub trait ProximityPairFilter: Send + Sync {
|
pub trait IntersectionPairFilter: Send + Sync {
|
||||||
/// Applies the intersection pair filter.
|
/// Applies the intersection pair filter.
|
||||||
///
|
///
|
||||||
/// Note that using an intersection pair filter will replace the default intersection filtering
|
/// Note that using an intersection pair filter will replace the default intersection filtering
|
||||||
|
|||||||
10
src/lib.rs
10
src/lib.rs
@@ -12,13 +12,13 @@
|
|||||||
#![allow(missing_docs)]
|
#![allow(missing_docs)]
|
||||||
|
|
||||||
#[cfg(all(feature = "dim2", feature = "f32"))]
|
#[cfg(all(feature = "dim2", feature = "f32"))]
|
||||||
pub extern crate cdl2d as cdl;
|
pub extern crate parry2d as parry;
|
||||||
#[cfg(all(feature = "dim2", feature = "f64"))]
|
#[cfg(all(feature = "dim2", feature = "f64"))]
|
||||||
pub extern crate cdl2d_f64 as cdl;
|
pub extern crate parry2d_f64 as parry;
|
||||||
#[cfg(all(feature = "dim3", feature = "f32"))]
|
#[cfg(all(feature = "dim3", feature = "f32"))]
|
||||||
pub extern crate cdl3d as cdl;
|
pub extern crate parry3d as parry;
|
||||||
#[cfg(all(feature = "dim3", feature = "f64"))]
|
#[cfg(all(feature = "dim3", feature = "f64"))]
|
||||||
pub extern crate cdl3d_f64 as cdl;
|
pub extern crate parry3d_f64 as parry;
|
||||||
|
|
||||||
pub extern crate crossbeam;
|
pub extern crate crossbeam;
|
||||||
pub extern crate nalgebra as na;
|
pub extern crate nalgebra as na;
|
||||||
@@ -136,7 +136,7 @@ pub mod pipeline;
|
|||||||
pub mod utils;
|
pub mod utils;
|
||||||
|
|
||||||
pub mod math {
|
pub mod math {
|
||||||
pub use cdl::math::*;
|
pub use parry::math::*;
|
||||||
#[cfg(feature = "dim2")]
|
#[cfg(feature = "dim2")]
|
||||||
pub const MAX_MANIFOLD_POINTS: usize = 2;
|
pub const MAX_MANIFOLD_POINTS: usize = 2;
|
||||||
#[cfg(feature = "dim3")]
|
#[cfg(feature = "dim3")]
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
|
|
||||||
use crate::dynamics::{JointSet, RigidBodySet};
|
use crate::dynamics::{JointSet, RigidBodySet};
|
||||||
use crate::geometry::{
|
use crate::geometry::{
|
||||||
BroadPhase, BroadPhasePairEvent, ColliderPair, ColliderSet, ContactPairFilter, NarrowPhase,
|
BroadPhase, BroadPhasePairEvent, ColliderPair, ColliderSet, ContactPairFilter,
|
||||||
ProximityPairFilter,
|
IntersectionPairFilter, NarrowPhase,
|
||||||
};
|
};
|
||||||
use crate::math::Real;
|
use crate::math::Real;
|
||||||
use crate::pipeline::EventHandler;
|
use crate::pipeline::EventHandler;
|
||||||
@@ -45,7 +45,7 @@ impl CollisionPipeline {
|
|||||||
bodies: &mut RigidBodySet,
|
bodies: &mut RigidBodySet,
|
||||||
colliders: &mut ColliderSet,
|
colliders: &mut ColliderSet,
|
||||||
contact_pair_filter: Option<&dyn ContactPairFilter>,
|
contact_pair_filter: Option<&dyn ContactPairFilter>,
|
||||||
proximity_pair_filter: Option<&dyn ProximityPairFilter>,
|
proximity_pair_filter: Option<&dyn IntersectionPairFilter>,
|
||||||
events: &dyn EventHandler,
|
events: &dyn EventHandler,
|
||||||
) {
|
) {
|
||||||
bodies.maintain(colliders);
|
bodies.maintain(colliders);
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ use crate::dynamics::{IntegrationParameters, JointSet, RigidBodySet};
|
|||||||
use crate::dynamics::{JointGraphEdge, ParallelIslandSolver as IslandSolver};
|
use crate::dynamics::{JointGraphEdge, ParallelIslandSolver as IslandSolver};
|
||||||
use crate::geometry::{
|
use crate::geometry::{
|
||||||
BroadPhase, BroadPhasePairEvent, ColliderPair, ColliderSet, ContactManifoldIndex,
|
BroadPhase, BroadPhasePairEvent, ColliderPair, ColliderSet, ContactManifoldIndex,
|
||||||
ContactPairFilter, NarrowPhase, ProximityPairFilter,
|
ContactPairFilter, IntersectionPairFilter, NarrowPhase,
|
||||||
};
|
};
|
||||||
use crate::math::{Real, Vector};
|
use crate::math::{Real, Vector};
|
||||||
use crate::pipeline::EventHandler;
|
use crate::pipeline::EventHandler;
|
||||||
@@ -70,7 +70,7 @@ impl PhysicsPipeline {
|
|||||||
colliders: &mut ColliderSet,
|
colliders: &mut ColliderSet,
|
||||||
joints: &mut JointSet,
|
joints: &mut JointSet,
|
||||||
contact_pair_filter: Option<&dyn ContactPairFilter>,
|
contact_pair_filter: Option<&dyn ContactPairFilter>,
|
||||||
proximity_pair_filter: Option<&dyn ProximityPairFilter>,
|
proximity_pair_filter: Option<&dyn IntersectionPairFilter>,
|
||||||
events: &dyn EventHandler,
|
events: &dyn EventHandler,
|
||||||
) {
|
) {
|
||||||
self.counters.step_started();
|
self.counters.step_started();
|
||||||
|
|||||||
@@ -1,22 +1,22 @@
|
|||||||
use crate::cdl::motion::RigidMotion;
|
|
||||||
use crate::dynamics::RigidBodySet;
|
use crate::dynamics::RigidBodySet;
|
||||||
use crate::geometry::{
|
use crate::geometry::{
|
||||||
Collider, ColliderHandle, ColliderSet, InteractionGroups, PointProjection, Ray,
|
Collider, ColliderHandle, ColliderSet, InteractionGroups, PointProjection, Ray,
|
||||||
RayIntersection, SimdQuadTree,
|
RayIntersection, SimdQuadTree,
|
||||||
};
|
};
|
||||||
use crate::math::{Isometry, Point, Real, Vector};
|
use crate::math::{Isometry, Point, Real, Vector};
|
||||||
use cdl::query::details::{
|
use crate::parry::motion::RigidMotion;
|
||||||
|
use parry::query::details::{
|
||||||
IntersectionCompositeShapeShapeBestFirstVisitor,
|
IntersectionCompositeShapeShapeBestFirstVisitor,
|
||||||
NonlinearTOICompositeShapeShapeBestFirstVisitor, PointCompositeShapeProjBestFirstVisitor,
|
NonlinearTOICompositeShapeShapeBestFirstVisitor, PointCompositeShapeProjBestFirstVisitor,
|
||||||
PointCompositeShapeProjWithFeatureBestFirstVisitor,
|
PointCompositeShapeProjWithFeatureBestFirstVisitor,
|
||||||
RayCompositeShapeToiAndNormalBestFirstVisitor, RayCompositeShapeToiBestFirstVisitor,
|
RayCompositeShapeToiAndNormalBestFirstVisitor, RayCompositeShapeToiBestFirstVisitor,
|
||||||
TOICompositeShapeShapeBestFirstVisitor,
|
TOICompositeShapeShapeBestFirstVisitor,
|
||||||
};
|
};
|
||||||
use cdl::query::visitors::{
|
use parry::query::visitors::{
|
||||||
BoundingVolumeIntersectionsVisitor, PointIntersectionsVisitor, RayIntersectionsVisitor,
|
BoundingVolumeIntersectionsVisitor, PointIntersectionsVisitor, RayIntersectionsVisitor,
|
||||||
};
|
};
|
||||||
use cdl::query::{DefaultQueryDispatcher, QueryDispatcher, TOI};
|
use parry::query::{DefaultQueryDispatcher, QueryDispatcher, TOI};
|
||||||
use cdl::shape::{FeatureId, Shape, TypedSimdCompositeShape};
|
use parry::shape::{FeatureId, Shape, TypedSimdCompositeShape};
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
/// A pipeline for performing queries on all the colliders of a scene.
|
/// A pipeline for performing queries on all the colliders of a scene.
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ use na::{Matrix3, Point2, Point3, Scalar, SimdRealField, Vector2, Vector3};
|
|||||||
use num::Zero;
|
use num::Zero;
|
||||||
use simba::simd::SimdValue;
|
use simba::simd::SimdValue;
|
||||||
|
|
||||||
use cdl::utils::SdpMatrix3;
|
use parry::utils::SdpMatrix3;
|
||||||
use {
|
use {
|
||||||
crate::math::{Real, SimdReal},
|
crate::math::{Real, SimdReal},
|
||||||
na::SimdPartialOrd,
|
na::SimdPartialOrd,
|
||||||
|
|||||||
@@ -1,9 +1,5 @@
|
|||||||
#[macro_use]
|
#[macro_use]
|
||||||
extern crate kiss3d;
|
extern crate kiss3d;
|
||||||
#[cfg(feature = "dim2")]
|
|
||||||
extern crate cdl2d as cdl;
|
|
||||||
#[cfg(feature = "dim3")]
|
|
||||||
extern crate cdl3d as cdl;
|
|
||||||
extern crate nalgebra as na;
|
extern crate nalgebra as na;
|
||||||
#[cfg(feature = "dim2")]
|
#[cfg(feature = "dim2")]
|
||||||
extern crate ncollide2d as ncollide;
|
extern crate ncollide2d as ncollide;
|
||||||
@@ -14,6 +10,10 @@ extern crate nphysics2d as nphysics;
|
|||||||
#[cfg(all(feature = "dim3", feature = "other-backends"))]
|
#[cfg(all(feature = "dim3", feature = "other-backends"))]
|
||||||
extern crate nphysics3d as nphysics;
|
extern crate nphysics3d as nphysics;
|
||||||
#[cfg(feature = "dim2")]
|
#[cfg(feature = "dim2")]
|
||||||
|
extern crate parry2d as parry;
|
||||||
|
#[cfg(feature = "dim3")]
|
||||||
|
extern crate parry3d as parry;
|
||||||
|
#[cfg(feature = "dim2")]
|
||||||
extern crate rapier2d as rapier;
|
extern crate rapier2d as rapier;
|
||||||
#[cfg(feature = "dim3")]
|
#[cfg(feature = "dim3")]
|
||||||
extern crate rapier3d as rapier;
|
extern crate rapier3d as rapier;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
use cdl::shape;
|
|
||||||
use kiss3d::window::Window;
|
use kiss3d::window::Window;
|
||||||
use na::{self, Point3};
|
use na::{self, Point3};
|
||||||
|
use parry::shape;
|
||||||
use rapier::geometry::{ColliderHandle, ColliderSet};
|
use rapier::geometry::{ColliderHandle, ColliderSet};
|
||||||
#[cfg(feature = "dim2")]
|
#[cfg(feature = "dim2")]
|
||||||
use rapier::math::Point;
|
use rapier::math::Point;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
use cdl2d::shape;
|
|
||||||
use kiss3d::window::Window;
|
use kiss3d::window::Window;
|
||||||
use na::{Isometry2, Point2, Point3};
|
use na::{Isometry2, Point2, Point3};
|
||||||
use nphysics2d::object::{ColliderAnchor, DefaultColliderHandle, DefaultColliderSet};
|
use nphysics2d::object::{ColliderAnchor, DefaultColliderHandle, DefaultColliderSet};
|
||||||
|
use parry2d::shape;
|
||||||
|
|
||||||
pub struct Polyline {
|
pub struct Polyline {
|
||||||
color: Point3<f32>,
|
color: Point3<f32>,
|
||||||
|
|||||||
Reference in New Issue
Block a user