aboutsummaryrefslogtreecommitdiff
path: root/src/dynamics/rigid_body_components.rs
diff options
context:
space:
mode:
authorCrozet Sébastien <developer@crozet.re>2021-06-01 14:55:50 +0200
committerCrozet Sébastien <developer@crozet.re>2021-06-01 14:55:50 +0200
commit5ef81cda406d796c5d188542b5bd9fbf4aefd4cf (patch)
tree283ac6079bd1b51396bfc228addb23e5c38c07cb /src/dynamics/rigid_body_components.rs
parent826ce5f014281fd04b7a18238f102f2591d0b255 (diff)
downloadrapier-5ef81cda406d796c5d188542b5bd9fbf4aefd4cf.tar.gz
rapier-5ef81cda406d796c5d188542b5bd9fbf4aefd4cf.tar.bz2
rapier-5ef81cda406d796c5d188542b5bd9fbf4aefd4cf.zip
Add velocity-based kinematic bodies
Diffstat (limited to 'src/dynamics/rigid_body_components.rs')
-rw-r--r--src/dynamics/rigid_body_components.rs14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/dynamics/rigid_body_components.rs b/src/dynamics/rigid_body_components.rs
index b536d07..d1a00ce 100644
--- a/src/dynamics/rigid_body_components.rs
+++ b/src/dynamics/rigid_body_components.rs
@@ -57,13 +57,20 @@ pub enum RigidBodyType {
Dynamic,
/// A `RigidBodyType::Static` body cannot be affected by external forces.
Static,
- /// A `RigidBodyType::Kinematic` body cannot be affected by any external forces but can be controlled
+ /// A `RigidBodyType::KinematicPositionBased` body cannot be affected by any external forces but can be controlled
/// by the user at the position level while keeping realistic one-way interaction with dynamic bodies.
///
/// One-way interaction means that a kinematic body can push a dynamic body, but a kinematic body
/// cannot be pushed by anything. In other words, the trajectory of a kinematic body can only be
/// modified by the user and is independent from any contact or joint it is involved in.
- Kinematic,
+ KinematicPositionBased,
+ /// A `RigidBodyType::KinematicVelocityBased` body cannot be affected by any external forces but can be controlled
+ /// by the user at the velocity level while keeping realistic one-way interaction with dynamic bodies.
+ ///
+ /// One-way interaction means that a kinematic body can push a dynamic body, but a kinematic body
+ /// cannot be pushed by anything. In other words, the trajectory of a kinematic body can only be
+ /// modified by the user and is independent from any contact or joint it is involved in.
+ KinematicVelocityBased,
// Semikinematic, // A kinematic that performs automatic CCD with the static environment to avoid traversing it?
// Disabled,
}
@@ -81,7 +88,8 @@ impl RigidBodyType {
/// Is this rigid-body kinematic (i.e. can move but is unaffected by forces)?
pub fn is_kinematic(self) -> bool {
- self == RigidBodyType::Kinematic
+ self == RigidBodyType::KinematicPositionBased
+ || self == RigidBodyType::KinematicVelocityBased
}
}