aboutsummaryrefslogtreecommitdiff
path: root/src/dynamics/solver/position_constraint_wide.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/position_constraint_wide.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/position_constraint_wide.rs')
-rw-r--r--src/dynamics/solver/position_constraint_wide.rs14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/dynamics/solver/position_constraint_wide.rs b/src/dynamics/solver/position_constraint_wide.rs
index 2bb74c9..67b5cdb 100644
--- a/src/dynamics/solver/position_constraint_wide.rs
+++ b/src/dynamics/solver/position_constraint_wide.rs
@@ -38,12 +38,14 @@ impl WPositionConstraint {
let rbs1 = array![|ii| bodies.get(manifolds[ii].data.body_pair.body1).unwrap(); SIMD_WIDTH];
let rbs2 = array![|ii| bodies.get(manifolds[ii].data.body_pair.body2).unwrap(); SIMD_WIDTH];
- let im1 = SimdReal::from(array![|ii| rbs1[ii].mass_properties.inv_mass; SIMD_WIDTH]);
- let sqrt_ii1: AngularInertia<SimdReal> =
- AngularInertia::from(array![|ii| rbs1[ii].world_inv_inertia_sqrt; SIMD_WIDTH]);
- let im2 = SimdReal::from(array![|ii| rbs2[ii].mass_properties.inv_mass; SIMD_WIDTH]);
- let sqrt_ii2: AngularInertia<SimdReal> =
- AngularInertia::from(array![|ii| rbs2[ii].world_inv_inertia_sqrt; SIMD_WIDTH]);
+ let im1 = SimdReal::from(array![|ii| rbs1[ii].effective_inv_mass; SIMD_WIDTH]);
+ let sqrt_ii1: AngularInertia<SimdReal> = AngularInertia::from(
+ array![|ii| rbs1[ii].effective_world_inv_inertia_sqrt; SIMD_WIDTH],
+ );
+ let im2 = SimdReal::from(array![|ii| rbs2[ii].effective_inv_mass; SIMD_WIDTH]);
+ let sqrt_ii2: AngularInertia<SimdReal> = AngularInertia::from(
+ array![|ii| rbs2[ii].effective_world_inv_inertia_sqrt; SIMD_WIDTH],
+ );
let pos1 = Isometry::from(array![|ii| rbs1[ii].position; SIMD_WIDTH]);
let pos2 = Isometry::from(array![|ii| rbs2[ii].position; SIMD_WIDTH]);