From 412fedf7e30d7d2c4136ee6f6d0818184a539658 Mon Sep 17 00:00:00 2001 From: Sébastien Crozet Date: Sun, 20 Feb 2022 12:56:13 +0100 Subject: Start fixing the parallel version. --- src/dynamics/joint/generic_joint.rs | 20 +++++++++++++++++++- src/dynamics/joint/impulse_joint/impulse_joint.rs | 1 - .../joint/impulse_joint/impulse_joint_set.rs | 1 - 3 files changed, 19 insertions(+), 3 deletions(-) (limited to 'src/dynamics/joint') diff --git a/src/dynamics/joint/generic_joint.rs b/src/dynamics/joint/generic_joint.rs index 7455b0d..7323194 100644 --- a/src/dynamics/joint/generic_joint.rs +++ b/src/dynamics/joint/generic_joint.rs @@ -26,6 +26,8 @@ bitflags::bitflags! { const FREE_PRISMATIC_AXES = Self::X.bits; const FREE_FIXED_AXES = 0; const FREE_SPHERICAL_AXES = Self::ANG_X.bits | Self::ANG_Y.bits | Self::ANG_Z.bits; + const LIN_AXES = Self::X.bits() | Self::Y.bits() | Self::Z.bits(); + const ANG_AXES = Self::ANG_X.bits() | Self::ANG_Y.bits() | Self::ANG_Z.bits(); } } @@ -42,6 +44,8 @@ bitflags::bitflags! { const FREE_REVOLUTE_AXES = Self::ANG_X.bits; const FREE_PRISMATIC_AXES = Self::X.bits; const FREE_FIXED_AXES = 0; + const LIN_AXES = Self::X.bits() | Self::Y.bits(); + const ANG_AXES = Self::ANG_X.bits(); } } @@ -104,7 +108,7 @@ impl Default for JointMotor { damping: 0.0, max_force: Real::MAX, impulse: 0.0, - model: MotorModel::AccelerationBased, // VelocityBased, + model: MotorModel::AccelerationBased, } } } @@ -134,6 +138,7 @@ pub struct GenericJoint { pub locked_axes: JointAxesMask, pub limit_axes: JointAxesMask, pub motor_axes: JointAxesMask, + pub coupled_axes: JointAxesMask, pub limits: [JointLimits; SPATIAL_DIM], pub motors: [JointMotor; SPATIAL_DIM], } @@ -146,6 +151,7 @@ impl Default for GenericJoint { locked_axes: JointAxesMask::empty(), limit_axes: JointAxesMask::empty(), motor_axes: JointAxesMask::empty(), + coupled_axes: JointAxesMask::empty(), limits: [JointLimits::default(); SPATIAL_DIM], motors: [JointMotor::default(); SPATIAL_DIM], } @@ -445,6 +451,12 @@ impl GenericJointBuilder { self } + #[must_use] + pub fn coupled_axes(mut self, axes: JointAxesMask) -> Self { + self.0.coupled_axes = axes; + self + } + /// Set the spring-like model used by the motor to reach the desired target velocity and position. #[must_use] pub fn motor_model(mut self, axis: JointAxis, model: MotorModel) -> Self { @@ -499,3 +511,9 @@ impl GenericJointBuilder { self.0 } } + +impl Into for GenericJointBuilder { + fn into(self) -> GenericJoint { + self.0 + } +} diff --git a/src/dynamics/joint/impulse_joint/impulse_joint.rs b/src/dynamics/joint/impulse_joint/impulse_joint.rs index 993542a..4677a1f 100644 --- a/src/dynamics/joint/impulse_joint/impulse_joint.rs +++ b/src/dynamics/joint/impulse_joint/impulse_joint.rs @@ -15,6 +15,5 @@ pub struct ImpulseJoint { // A joint needs to know its handle to simplify its removal. pub(crate) handle: ImpulseJointHandle, - #[cfg(feature = "parallel")] pub(crate) constraint_index: usize, } diff --git a/src/dynamics/joint/impulse_joint/impulse_joint_set.rs b/src/dynamics/joint/impulse_joint/impulse_joint_set.rs index 8677772..cd11a61 100644 --- a/src/dynamics/joint/impulse_joint/impulse_joint_set.rs +++ b/src/dynamics/joint/impulse_joint/impulse_joint_set.rs @@ -187,7 +187,6 @@ impl ImpulseJointSet { data, impulses: na::zero(), handle: ImpulseJointHandle(handle), - #[cfg(feature = "parallel")] constraint_index: 0, }; -- cgit