diff options
| author | Sébastien Crozet <developer@crozet.re> | 2022-02-20 12:56:13 +0100 |
|---|---|---|
| committer | Sébastien Crozet <sebastien@crozet.re> | 2022-03-20 21:49:16 +0100 |
| commit | 412fedf7e30d7d2c4136ee6f6d0818184a539658 (patch) | |
| tree | 5addb7b0c95ddae57e54a1262ae900dd40fce11f /src/dynamics/joint | |
| parent | fb20d72ee29de9311a81aec6eb9f02fd2aa35fc4 (diff) | |
| download | rapier-412fedf7e30d7d2c4136ee6f6d0818184a539658.tar.gz rapier-412fedf7e30d7d2c4136ee6f6d0818184a539658.tar.bz2 rapier-412fedf7e30d7d2c4136ee6f6d0818184a539658.zip | |
Start fixing the parallel version.
Diffstat (limited to 'src/dynamics/joint')
| -rw-r--r-- | src/dynamics/joint/generic_joint.rs | 20 | ||||
| -rw-r--r-- | src/dynamics/joint/impulse_joint/impulse_joint.rs | 1 | ||||
| -rw-r--r-- | src/dynamics/joint/impulse_joint/impulse_joint_set.rs | 1 |
3 files changed, 19 insertions, 3 deletions
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<Real>; 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<GenericJoint> 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, }; |
