aboutsummaryrefslogtreecommitdiff
path: root/src/dynamics/joint/impulse_joint/impulse_joint.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/dynamics/joint/impulse_joint/impulse_joint.rs')
-rw-r--r--src/dynamics/joint/impulse_joint/impulse_joint.rs20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/dynamics/joint/impulse_joint/impulse_joint.rs b/src/dynamics/joint/impulse_joint/impulse_joint.rs
new file mode 100644
index 0000000..a12c533
--- /dev/null
+++ b/src/dynamics/joint/impulse_joint/impulse_joint.rs
@@ -0,0 +1,20 @@
+use crate::dynamics::{JointData, JointHandle, RigidBodyHandle};
+use crate::math::{Real, SpacialVector};
+
+#[cfg_attr(feature = "serde-serialize", derive(Serialize, Deserialize))]
+#[derive(Clone, Debug, PartialEq)]
+/// A joint attached to two bodies.
+pub struct ImpulseJoint {
+ /// Handle to the first body attached to this joint.
+ pub body1: RigidBodyHandle,
+ /// Handle to the second body attached to this joint.
+ pub body2: RigidBodyHandle,
+
+ pub data: JointData,
+ pub impulses: SpacialVector<Real>,
+
+ // A joint needs to know its handle to simplify its removal.
+ pub(crate) handle: JointHandle,
+ #[cfg(feature = "parallel")]
+ pub(crate) constraint_index: usize,
+}