aboutsummaryrefslogtreecommitdiff
path: root/src/dynamics/joint/impulse_joint/impulse_joint.rs
blob: a12c53345c31b00a2e692ed5dc5250ad5b82f316 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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,
}