diff options
| author | Crozet Sébastien <developer@crozet.re> | 2021-06-01 14:55:50 +0200 |
|---|---|---|
| committer | Crozet Sébastien <developer@crozet.re> | 2021-06-01 14:55:50 +0200 |
| commit | 5ef81cda406d796c5d188542b5bd9fbf4aefd4cf (patch) | |
| tree | 283ac6079bd1b51396bfc228addb23e5c38c07cb /src/dynamics/rigid_body_components.rs | |
| parent | 826ce5f014281fd04b7a18238f102f2591d0b255 (diff) | |
| download | rapier-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.rs | 14 |
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 } } |
