Rename cdl to parry.
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
//! 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
|
||||
//! Index attribution after a deserialization of the arena.
|
||||
use cdl::partitioning::IndexedData;
|
||||
use parry::partitioning::IndexedData;
|
||||
use std::cmp;
|
||||
use std::iter::{self, Extend, FromIterator, FusedIterator};
|
||||
use std::mem;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
//! Data structures modified with guaranteed deterministic behavior after deserialization.
|
||||
|
||||
pub use self::coarena::Coarena;
|
||||
pub use cdl::utils::MaybeSerializableData;
|
||||
pub use parry::utils::MaybeSerializableData;
|
||||
|
||||
pub mod arena;
|
||||
mod coarena;
|
||||
|
||||
@@ -9,7 +9,7 @@ pub use self::joint::{
|
||||
};
|
||||
pub use self::rigid_body::{ActivationStatus, BodyStatus, RigidBody, RigidBodyBuilder};
|
||||
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"))]
|
||||
pub use self::coefficient_combine_rule::CoefficientCombineRule;
|
||||
pub(crate) use self::joint::JointGraphEdge;
|
||||
|
||||
@@ -678,11 +678,9 @@ impl RigidBodyBuilder {
|
||||
}
|
||||
|
||||
/// Prevents this rigid-body from translating because of forces.
|
||||
///
|
||||
/// This is equivalent to `self.mass(0.0, false)`. See the
|
||||
/// documentation of [`RigidBodyBuilder::mass`] for more details.
|
||||
pub fn lock_translations(self) -> Self {
|
||||
self.mass(0.0, false)
|
||||
pub fn lock_translations(mut self) -> Self {
|
||||
self.flags.set(RigidBodyFlags::TRANSLATION_LOCKED, true);
|
||||
self
|
||||
}
|
||||
|
||||
/// Prevents this rigid-body from rotating because of forces.
|
||||
@@ -711,22 +709,8 @@ impl RigidBodyBuilder {
|
||||
}
|
||||
|
||||
/// Sets the mass of the rigid-body being built.
|
||||
///
|
||||
/// 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 {
|
||||
pub fn mass(mut self, mass: Real) -> Self {
|
||||
self.mass_properties.inv_mass = utils::inv(mass);
|
||||
self.flags.set(
|
||||
RigidBodyFlags::TRANSLATION_LOCKED,
|
||||
!colliders_contribution_enabled,
|
||||
);
|
||||
self
|
||||
}
|
||||
/// Sets the angular inertia of this rigid-body.
|
||||
|
||||
@@ -4,7 +4,7 @@ use rayon::prelude::*;
|
||||
use crate::data::arena::Arena;
|
||||
use crate::dynamics::{Joint, JointSet, RigidBody, RigidBodyChanges};
|
||||
use crate::geometry::{ColliderSet, InteractionGraph, NarrowPhase};
|
||||
use cdl::partitioning::IndexedData;
|
||||
use parry::partitioning::IndexedData;
|
||||
use std::ops::{Index, IndexMut};
|
||||
|
||||
/// 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};
|
||||
#[cfg(feature = "dim2")]
|
||||
use {
|
||||
cdl::utils::SdpMatrix3,
|
||||
na::{Matrix3, Vector3},
|
||||
parry::utils::SdpMatrix3,
|
||||
};
|
||||
|
||||
#[derive(Debug)]
|
||||
|
||||
@@ -8,8 +8,8 @@ use crate::utils::{WAngularInertia, WCross, WCrossMatrix};
|
||||
use na::{Cholesky, Matrix3x2, Matrix5, Vector5, U2, U3};
|
||||
#[cfg(feature = "dim2")]
|
||||
use {
|
||||
cdl::utils::SdpMatrix2,
|
||||
na::{Matrix2, Vector2},
|
||||
parry::utils::SdpMatrix2,
|
||||
};
|
||||
|
||||
#[cfg(feature = "dim2")]
|
||||
|
||||
@@ -12,8 +12,8 @@ use crate::utils::{WAngularInertia, WCross, WCrossMatrix};
|
||||
use na::{Cholesky, Matrix3x2, Matrix5, Vector5, U2, U3};
|
||||
#[cfg(feature = "dim2")]
|
||||
use {
|
||||
cdl::utils::SdpMatrix2,
|
||||
na::{Matrix2, Vector2},
|
||||
parry::utils::SdpMatrix2,
|
||||
};
|
||||
|
||||
#[cfg(feature = "dim2")]
|
||||
|
||||
@@ -3,8 +3,8 @@ use crate::dynamics::RigidBodySet;
|
||||
use crate::geometry::{ColliderHandle, ColliderSet, RemovedCollider};
|
||||
use crate::math::{Point, Real, Vector, DIM};
|
||||
use bit_vec::BitVec;
|
||||
use cdl::bounding_volume::{BoundingVolume, AABB};
|
||||
use cdl::utils::hashmap::HashMap;
|
||||
use parry::bounding_volume::{BoundingVolume, AABB};
|
||||
use parry::utils::hashmap::HashMap;
|
||||
use std::cmp::Ordering;
|
||||
use std::ops::{Index, IndexMut};
|
||||
|
||||
@@ -477,8 +477,8 @@ pub struct BroadPhase {
|
||||
#[cfg_attr(
|
||||
feature = "serde-serialize",
|
||||
serde(
|
||||
serialize_with = "cdl::utils::hashmap::serialize_hashmap_capacity",
|
||||
deserialize_with = "cdl::utils::hashmap::deserialize_hashmap_capacity"
|
||||
serialize_with = "parry::utils::hashmap::serialize_hashmap_capacity",
|
||||
deserialize_with = "parry::utils::hashmap::deserialize_hashmap_capacity"
|
||||
)
|
||||
)]
|
||||
reporting: HashMap<(u32, u32), bool>, // Workspace
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
use crate::cdl::transformation::vhacd::VHACDParameters;
|
||||
use crate::dynamics::{CoefficientCombineRule, MassProperties, RigidBodyHandle};
|
||||
use crate::geometry::{InteractionGroups, SharedShape};
|
||||
use crate::math::{AngVector, Isometry, Point, Real, Rotation, Vector, DIM};
|
||||
use cdl::bounding_volume::AABB;
|
||||
use cdl::shape::Shape;
|
||||
use crate::parry::transformation::vhacd::VHACDParameters;
|
||||
use parry::bounding_volume::AABB;
|
||||
use parry::shape::Shape;
|
||||
|
||||
bitflags::bitflags! {
|
||||
#[cfg_attr(feature = "serde-serialize", derive(Serialize, Deserialize))]
|
||||
|
||||
@@ -2,7 +2,7 @@ use crate::data::arena::Arena;
|
||||
use crate::data::pubsub::PubSub;
|
||||
use crate::dynamics::{RigidBodyHandle, RigidBodySet};
|
||||
use crate::geometry::Collider;
|
||||
use cdl::partitioning::IndexedData;
|
||||
use parry::partitioning::IndexedData;
|
||||
use std::ops::{Index, IndexMut};
|
||||
|
||||
/// The unique identifier of a collider added to a collider set.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
use crate::dynamics::{BodyPair, RigidBodyHandle};
|
||||
use crate::geometry::{ColliderPair, ContactManifold};
|
||||
use crate::math::{Point, Real, Vector};
|
||||
use cdl::query::ContactManifoldsWorkspace;
|
||||
use parry::query::ContactManifoldsWorkspace;
|
||||
|
||||
bitflags::bitflags! {
|
||||
#[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::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 ContactManifold = cdl::query::ContactManifold<ContactManifoldData, ContactData>;
|
||||
pub type Contact = parry::query::TrackedContact<ContactData>;
|
||||
pub type ContactManifold = parry::query::ContactManifold<ContactManifoldData, ContactData>;
|
||||
/// A segment shape.
|
||||
pub type Segment = cdl::shape::Segment;
|
||||
pub type Segment = parry::shape::Segment;
|
||||
/// A cuboid shape.
|
||||
pub type Cuboid = cdl::shape::Cuboid;
|
||||
pub type Cuboid = parry::shape::Cuboid;
|
||||
/// A triangle shape.
|
||||
pub type Triangle = cdl::shape::Triangle;
|
||||
pub type Triangle = parry::shape::Triangle;
|
||||
/// A ball shape.
|
||||
pub type Ball = cdl::shape::Ball;
|
||||
pub type Ball = parry::shape::Ball;
|
||||
/// A capsule shape.
|
||||
pub type Capsule = cdl::shape::Capsule;
|
||||
pub type Capsule = parry::shape::Capsule;
|
||||
/// A heightfield shape.
|
||||
pub type HeightField = cdl::shape::HeightField;
|
||||
pub type HeightField = parry::shape::HeightField;
|
||||
/// A cylindrical shape.
|
||||
#[cfg(feature = "dim3")]
|
||||
pub type Cylinder = cdl::shape::Cylinder;
|
||||
pub type Cylinder = parry::shape::Cylinder;
|
||||
/// A cone shape.
|
||||
#[cfg(feature = "dim3")]
|
||||
pub type Cone = cdl::shape::Cone;
|
||||
pub type Cone = parry::shape::Cone;
|
||||
/// 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.
|
||||
pub type Ray = cdl::query::Ray;
|
||||
pub type Ray = parry::query::Ray;
|
||||
/// 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.
|
||||
pub type PointProjection = cdl::query::PointProjection;
|
||||
pub use cdl::shape::SharedShape;
|
||||
pub type PointProjection = parry::query::PointProjection;
|
||||
pub use parry::shape::SharedShape;
|
||||
|
||||
#[derive(Copy, Clone, Hash, Debug)]
|
||||
/// 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::collider_set::RemovedCollider;
|
||||
pub(crate) use self::narrow_phase::ContactManifoldIndex;
|
||||
pub(crate) use cdl::partitioning::SimdQuadTree;
|
||||
pub use cdl::shape::*;
|
||||
pub(crate) use parry::partitioning::SimdQuadTree;
|
||||
pub use parry::shape::*;
|
||||
|
||||
#[cfg(feature = "serde-serialize")]
|
||||
pub(crate) fn default_persistent_query_dispatcher(
|
||||
) -> std::sync::Arc<dyn cdl::query::PersistentQueryDispatcher<ContactManifoldData, ContactData>> {
|
||||
std::sync::Arc::new(cdl::query::DefaultQueryDispatcher)
|
||||
) -> std::sync::Arc<dyn parry::query::PersistentQueryDispatcher<ContactManifoldData, ContactData>> {
|
||||
std::sync::Arc::new(parry::query::DefaultQueryDispatcher)
|
||||
}
|
||||
|
||||
#[cfg(feature = "serde-serialize")]
|
||||
pub(crate) fn default_query_dispatcher() -> std::sync::Arc<dyn cdl::query::QueryDispatcher> {
|
||||
std::sync::Arc::new(cdl::query::DefaultQueryDispatcher)
|
||||
pub(crate) fn default_query_dispatcher() -> std::sync::Arc<dyn parry::query::QueryDispatcher> {
|
||||
std::sync::Arc::new(parry::query::DefaultQueryDispatcher)
|
||||
}
|
||||
|
||||
mod broad_phase_multi_sap;
|
||||
|
||||
@@ -6,14 +6,14 @@ use crate::data::Coarena;
|
||||
use crate::dynamics::{BodyPair, CoefficientCombineRule, RigidBodySet};
|
||||
use crate::geometry::{
|
||||
BroadPhasePairEvent, ColliderGraphIndex, ColliderHandle, ContactData, ContactEvent,
|
||||
ContactManifoldData, ContactPairFilter, IntersectionEvent, PairFilterContext,
|
||||
ProximityPairFilter, RemovedCollider, SolverContact, SolverFlags,
|
||||
ContactManifoldData, ContactPairFilter, IntersectionEvent, IntersectionPairFilter,
|
||||
PairFilterContext, RemovedCollider, SolverContact, SolverFlags,
|
||||
};
|
||||
use crate::geometry::{ColliderSet, ContactManifold, ContactPair, InteractionGraph};
|
||||
use crate::math::{Real, Vector};
|
||||
use crate::pipeline::EventHandler;
|
||||
use cdl::query::{DefaultQueryDispatcher, PersistentQueryDispatcher};
|
||||
use cdl::utils::IsometryOpt;
|
||||
use parry::query::{DefaultQueryDispatcher, PersistentQueryDispatcher};
|
||||
use parry::utils::IsometryOpt;
|
||||
use std::collections::HashMap;
|
||||
use std::sync::Arc;
|
||||
|
||||
@@ -387,7 +387,7 @@ impl NarrowPhase {
|
||||
&mut self,
|
||||
bodies: &RigidBodySet,
|
||||
colliders: &ColliderSet,
|
||||
pair_filter: Option<&dyn ProximityPairFilter>,
|
||||
pair_filter: Option<&dyn IntersectionPairFilter>,
|
||||
events: &dyn EventHandler,
|
||||
) {
|
||||
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
|
||||
/// should have their intersection computed by the narrow-phase.
|
||||
pub trait ProximityPairFilter: Send + Sync {
|
||||
pub trait IntersectionPairFilter: Send + Sync {
|
||||
/// Applies the intersection pair filter.
|
||||
///
|
||||
/// 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)]
|
||||
|
||||
#[cfg(all(feature = "dim2", feature = "f32"))]
|
||||
pub extern crate cdl2d as cdl;
|
||||
pub extern crate parry2d as parry;
|
||||
#[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"))]
|
||||
pub extern crate cdl3d as cdl;
|
||||
pub extern crate parry3d as parry;
|
||||
#[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 nalgebra as na;
|
||||
@@ -136,7 +136,7 @@ pub mod pipeline;
|
||||
pub mod utils;
|
||||
|
||||
pub mod math {
|
||||
pub use cdl::math::*;
|
||||
pub use parry::math::*;
|
||||
#[cfg(feature = "dim2")]
|
||||
pub const MAX_MANIFOLD_POINTS: usize = 2;
|
||||
#[cfg(feature = "dim3")]
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
|
||||
use crate::dynamics::{JointSet, RigidBodySet};
|
||||
use crate::geometry::{
|
||||
BroadPhase, BroadPhasePairEvent, ColliderPair, ColliderSet, ContactPairFilter, NarrowPhase,
|
||||
ProximityPairFilter,
|
||||
BroadPhase, BroadPhasePairEvent, ColliderPair, ColliderSet, ContactPairFilter,
|
||||
IntersectionPairFilter, NarrowPhase,
|
||||
};
|
||||
use crate::math::Real;
|
||||
use crate::pipeline::EventHandler;
|
||||
@@ -45,7 +45,7 @@ impl CollisionPipeline {
|
||||
bodies: &mut RigidBodySet,
|
||||
colliders: &mut ColliderSet,
|
||||
contact_pair_filter: Option<&dyn ContactPairFilter>,
|
||||
proximity_pair_filter: Option<&dyn ProximityPairFilter>,
|
||||
proximity_pair_filter: Option<&dyn IntersectionPairFilter>,
|
||||
events: &dyn EventHandler,
|
||||
) {
|
||||
bodies.maintain(colliders);
|
||||
|
||||
@@ -8,7 +8,7 @@ use crate::dynamics::{IntegrationParameters, JointSet, RigidBodySet};
|
||||
use crate::dynamics::{JointGraphEdge, ParallelIslandSolver as IslandSolver};
|
||||
use crate::geometry::{
|
||||
BroadPhase, BroadPhasePairEvent, ColliderPair, ColliderSet, ContactManifoldIndex,
|
||||
ContactPairFilter, NarrowPhase, ProximityPairFilter,
|
||||
ContactPairFilter, IntersectionPairFilter, NarrowPhase,
|
||||
};
|
||||
use crate::math::{Real, Vector};
|
||||
use crate::pipeline::EventHandler;
|
||||
@@ -70,7 +70,7 @@ impl PhysicsPipeline {
|
||||
colliders: &mut ColliderSet,
|
||||
joints: &mut JointSet,
|
||||
contact_pair_filter: Option<&dyn ContactPairFilter>,
|
||||
proximity_pair_filter: Option<&dyn ProximityPairFilter>,
|
||||
proximity_pair_filter: Option<&dyn IntersectionPairFilter>,
|
||||
events: &dyn EventHandler,
|
||||
) {
|
||||
self.counters.step_started();
|
||||
|
||||
@@ -1,22 +1,22 @@
|
||||
use crate::cdl::motion::RigidMotion;
|
||||
use crate::dynamics::RigidBodySet;
|
||||
use crate::geometry::{
|
||||
Collider, ColliderHandle, ColliderSet, InteractionGroups, PointProjection, Ray,
|
||||
RayIntersection, SimdQuadTree,
|
||||
};
|
||||
use crate::math::{Isometry, Point, Real, Vector};
|
||||
use cdl::query::details::{
|
||||
use crate::parry::motion::RigidMotion;
|
||||
use parry::query::details::{
|
||||
IntersectionCompositeShapeShapeBestFirstVisitor,
|
||||
NonlinearTOICompositeShapeShapeBestFirstVisitor, PointCompositeShapeProjBestFirstVisitor,
|
||||
PointCompositeShapeProjWithFeatureBestFirstVisitor,
|
||||
RayCompositeShapeToiAndNormalBestFirstVisitor, RayCompositeShapeToiBestFirstVisitor,
|
||||
TOICompositeShapeShapeBestFirstVisitor,
|
||||
};
|
||||
use cdl::query::visitors::{
|
||||
use parry::query::visitors::{
|
||||
BoundingVolumeIntersectionsVisitor, PointIntersectionsVisitor, RayIntersectionsVisitor,
|
||||
};
|
||||
use cdl::query::{DefaultQueryDispatcher, QueryDispatcher, TOI};
|
||||
use cdl::shape::{FeatureId, Shape, TypedSimdCompositeShape};
|
||||
use parry::query::{DefaultQueryDispatcher, QueryDispatcher, TOI};
|
||||
use parry::shape::{FeatureId, Shape, TypedSimdCompositeShape};
|
||||
use std::sync::Arc;
|
||||
|
||||
/// 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 simba::simd::SimdValue;
|
||||
|
||||
use cdl::utils::SdpMatrix3;
|
||||
use parry::utils::SdpMatrix3;
|
||||
use {
|
||||
crate::math::{Real, SimdReal},
|
||||
na::SimdPartialOrd,
|
||||
|
||||
Reference in New Issue
Block a user