aboutsummaryrefslogtreecommitdiff
path: root/src/dynamics/joint
diff options
context:
space:
mode:
authorSébastien Crozet <developer@crozet.re>2022-02-20 12:56:13 +0100
committerSébastien Crozet <sebastien@crozet.re>2022-03-20 21:49:16 +0100
commit412fedf7e30d7d2c4136ee6f6d0818184a539658 (patch)
tree5addb7b0c95ddae57e54a1262ae900dd40fce11f /src/dynamics/joint
parentfb20d72ee29de9311a81aec6eb9f02fd2aa35fc4 (diff)
downloadrapier-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.rs20
-rw-r--r--src/dynamics/joint/impulse_joint/impulse_joint.rs1
-rw-r--r--src/dynamics/joint/impulse_joint/impulse_joint_set.rs1
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,
};