aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorWolftousen <eliot.t.eikenberry@perilforge.com>2022-11-05 22:42:50 -0400
committerWolftousen <eliot.t.eikenberry@perilforge.com>2022-11-05 22:42:50 -0400
commitc713f45ca0910bf34b332e26d232d5491d1ed2f1 (patch)
tree247027d68a62c2f78e818ce380ce9c78549c3bbe /src
parent150b113a1839f31e182428a71b50d96bf78ef0e0 (diff)
downloadrapier-c713f45ca0910bf34b332e26d232d5491d1ed2f1.tar.gz
rapier-c713f45ca0910bf34b332e26d232d5491d1ed2f1.tar.bz2
rapier-c713f45ca0910bf34b332e26d232d5491d1ed2f1.zip
adding 3d rope joint
Diffstat (limited to 'src')
-rw-r--r--src/dynamics/joint/rope_joint.rs27
1 files changed, 25 insertions, 2 deletions
diff --git a/src/dynamics/joint/rope_joint.rs b/src/dynamics/joint/rope_joint.rs
index cb68860..3b7317c 100644
--- a/src/dynamics/joint/rope_joint.rs
+++ b/src/dynamics/joint/rope_joint.rs
@@ -88,13 +88,16 @@ impl RopeJoint {
/// The motor affecting the joint’s translational degree of freedom.
#[must_use]
- pub fn motor(&self) -> Option<&JointMotor> {
- self.data.motor(JointAxis::X)
+ pub fn motor(&self, axis: JointAxis) -> Option<&JointMotor> {
+ self.data.motor(axis)
}
/// Set the spring-like model used by the motor to reach the desired target velocity and position.
pub fn set_motor_model(&mut self, model: MotorModel) -> &mut Self {
self.data.set_motor_model(JointAxis::X, model);
+ self.data.set_motor_model(JointAxis::Y, model);
+ #[cfg(feature = "dim3")]
+ self.data.set_motor_model(JointAxis::Z, model);
self
}
@@ -102,6 +105,11 @@ impl RopeJoint {
pub fn set_motor_velocity(&mut self, target_vel: Real, factor: Real) -> &mut Self {
self.data
.set_motor_velocity(JointAxis::X, target_vel, factor);
+ self.data
+ .set_motor_velocity(JointAxis::Y, target_vel, factor);
+ #[cfg(feature = "dim3")]
+ self.data
+ .set_motor_velocity(JointAxis::Z, target_vel, factor);
self
}
@@ -114,6 +122,11 @@ impl RopeJoint {
) -> &mut Self {
self.data
.set_motor_position(JointAxis::X, target_pos, stiffness, damping);
+ self.data
+ .set_motor_position(JointAxis::Y, target_pos, stiffness, damping);
+ #[cfg(feature = "dim3")]
+ self.data
+ .set_motor_position(JointAxis::Z, target_pos, stiffness, damping);
self
}
@@ -127,12 +140,20 @@ impl RopeJoint {
) -> &mut Self {
self.data
.set_motor(JointAxis::X, target_pos, target_vel, stiffness, damping);
+ self.data
+ .set_motor(JointAxis::Y, target_pos, target_vel, stiffness, damping);
+ #[cfg(feature = "dim3")]
+ self.data
+ .set_motor(JointAxis::Y, target_pos, target_vel, stiffness, damping);
self
}
/// Sets the maximum force the motor can deliver.
pub fn set_motor_max_force(&mut self, max_force: Real) -> &mut Self {
self.data.set_motor_max_force(JointAxis::X, max_force);
+ self.data.set_motor_max_force(JointAxis::Y, max_force);
+ #[cfg(feature = "dim3")]
+ self.data.set_motor_max_force(JointAxis::Z, max_force);
self
}
@@ -146,6 +167,8 @@ impl RopeJoint {
pub fn set_limits(&mut self, limits: [Real; 2]) -> &mut Self {
self.data.set_limits(JointAxis::X, limits);
self.data.set_limits(JointAxis::Y, limits);
+ #[cfg(feature = "dim3")]
+ self.data.set_limits(JointAxis::Z, limits);
self
}
}