aboutsummaryrefslogtreecommitdiff
path: root/src/dynamics/solver/velocity_ground_constraint.rs
diff options
context:
space:
mode:
authorCrozet Sébastien <developer@crozet.re>2021-01-21 14:58:40 +0100
committerCrozet Sébastien <developer@crozet.re>2021-01-21 14:58:40 +0100
commit8f330b2a00610e5b68c1acd9208120e8f750c7aa (patch)
tree9526425839601340953ebe2b94bd2bbb36161579 /src/dynamics/solver/velocity_ground_constraint.rs
parentd69b5876f35a6d67e164e5e6dc5719413f53c4f5 (diff)
downloadrapier-8f330b2a00610e5b68c1acd9208120e8f750c7aa.tar.gz
rapier-8f330b2a00610e5b68c1acd9208120e8f750c7aa.tar.bz2
rapier-8f330b2a00610e5b68c1acd9208120e8f750c7aa.zip
Rotation locking: apply filter only to the world inertia properties to fix the multi-collider case.
Diffstat (limited to 'src/dynamics/solver/velocity_ground_constraint.rs')
-rw-r--r--src/dynamics/solver/velocity_ground_constraint.rs12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/dynamics/solver/velocity_ground_constraint.rs b/src/dynamics/solver/velocity_ground_constraint.rs
index 37d4e3a..7ea4fbb 100644
--- a/src/dynamics/solver/velocity_ground_constraint.rs
+++ b/src/dynamics/solver/velocity_ground_constraint.rs
@@ -87,7 +87,7 @@ impl VelocityGroundConstraint {
let mut constraint = VelocityGroundConstraint {
dir1: force_dir1,
elements: [VelocityGroundConstraintElement::zero(); MAX_MANIFOLD_POINTS],
- im2: rb2.mass_properties.inv_mass,
+ im2: rb2.effective_inv_mass,
limit: 0.0,
mj_lambda2,
manifold_id,
@@ -128,7 +128,7 @@ impl VelocityGroundConstraint {
#[cfg(target_arch = "wasm32")]
{
constraint.dir1 = force_dir1;
- constraint.im2 = rb2.mass_properties.inv_mass;
+ constraint.im2 = rb2.effective_inv_mass;
constraint.limit = manifold.data.friction;
constraint.mj_lambda2 = mj_lambda2;
constraint.manifold_id = manifold_id;
@@ -148,10 +148,10 @@ impl VelocityGroundConstraint {
// Normal part.
{
let gcross2 = rb2
- .world_inv_inertia_sqrt
+ .effective_world_inv_inertia_sqrt
.transform_vector(dp2.gcross(-force_dir1));
- let r = 1.0 / (rb2.mass_properties.inv_mass + gcross2.gdot(gcross2));
+ let r = 1.0 / (rb2.effective_inv_mass + gcross2.gdot(gcross2));
let mut rhs = (vel1 - vel2).dot(&force_dir1);
@@ -177,9 +177,9 @@ impl VelocityGroundConstraint {
for j in 0..DIM - 1 {
let gcross2 = rb2
- .world_inv_inertia_sqrt
+ .effective_world_inv_inertia_sqrt
.transform_vector(dp2.gcross(-tangents1[j]));
- let r = 1.0 / (rb2.mass_properties.inv_mass + gcross2.gdot(gcross2));
+ let r = 1.0 / (rb2.effective_inv_mass + gcross2.gdot(gcross2));
let rhs = -vel2.dot(&tangents1[j]) + vel1.dot(&tangents1[j]);
#[cfg(feature = "dim2")]
let impulse = manifold_points[k].data.tangent_impulse * warmstart_coeff;