aboutsummaryrefslogtreecommitdiff
path: root/src/dynamics/solver/velocity_constraint_wide.rs
diff options
context:
space:
mode:
authorCrozet Sébastien <developer@crozet.re>2020-12-31 11:16:03 +0100
committerCrozet Sébastien <developer@crozet.re>2020-12-31 11:16:03 +0100
commit967145a9492175be59e8db33299b1687d69d84e2 (patch)
tree8a1beb06349119a9df0983aa42ec59625c31c395 /src/dynamics/solver/velocity_constraint_wide.rs
parent64507a68e179ebc652f177e727fac5ff1a82d931 (diff)
downloadrapier-967145a9492175be59e8db33299b1687d69d84e2.tar.gz
rapier-967145a9492175be59e8db33299b1687d69d84e2.tar.bz2
rapier-967145a9492175be59e8db33299b1687d69d84e2.zip
Perform contact sorting in the narrow-phase directly.
Diffstat (limited to 'src/dynamics/solver/velocity_constraint_wide.rs')
-rw-r--r--src/dynamics/solver/velocity_constraint_wide.rs7
1 files changed, 3 insertions, 4 deletions
diff --git a/src/dynamics/solver/velocity_constraint_wide.rs b/src/dynamics/solver/velocity_constraint_wide.rs
index fddd9ef..c75d926 100644
--- a/src/dynamics/solver/velocity_constraint_wide.rs
+++ b/src/dynamics/solver/velocity_constraint_wide.rs
@@ -2,8 +2,7 @@ use super::{AnyVelocityConstraint, DeltaVel};
use crate::dynamics::{IntegrationParameters, RigidBodySet};
use crate::geometry::{ContactManifold, ContactManifoldIndex};
use crate::math::{
- AngVector, AngularInertia, Isometry, Point, SimdReal, Vector, DIM, MAX_MANIFOLD_POINTS,
- SIMD_WIDTH,
+ AngVector, AngularInertia, Point, SimdReal, Vector, DIM, MAX_MANIFOLD_POINTS, SIMD_WIDTH,
};
use crate::utils::{WAngularInertia, WBasis, WCross, WDot};
use num::Zero;
@@ -100,7 +99,7 @@ impl WVelocityConstraint {
let warmstart_multiplier =
SimdReal::from(array![|ii| manifolds[ii].data.warmstart_multiplier; SIMD_WIDTH]);
let warmstart_coeff = warmstart_multiplier * SimdReal::splat(params.warmstart_coeff);
- let num_active_contacts = manifolds[0].num_active_contacts();
+ let num_active_contacts = manifolds[0].data.num_active_contacts();
for l in (0..num_active_contacts).step_by(MAX_MANIFOLD_POINTS) {
let manifold_points = array![|ii|
@@ -333,7 +332,7 @@ impl WVelocityConstraint {
for ii in 0..SIMD_WIDTH {
let manifold = &mut manifolds_all[self.manifold_id[ii]];
let k_base = self.manifold_contact_id;
- let active_contacts = manifold.active_contacts_mut();
+ let active_contacts = &mut manifold.points[..manifold.data.num_active_contacts()];
active_contacts[k_base + k].data.impulse = impulses[ii];
#[cfg(feature = "dim2")]