aboutsummaryrefslogtreecommitdiff
path: root/src/dynamics/solver/velocity_constraint_wide.rs
diff options
context:
space:
mode:
authorSébastien Crozet <developer@crozet.re>2022-03-13 15:28:33 +0100
committerSébastien Crozet <sebastien@crozet.re>2022-03-20 21:49:16 +0100
commit1535db87c7e21065dfbc736ffe5927810d37fe75 (patch)
treef7ee534b0601b6ca6eeee2d6404610312d072b7e /src/dynamics/solver/velocity_constraint_wide.rs
parent34b0d51455cbeba16dd5bacb451e476efb591518 (diff)
downloadrapier-1535db87c7e21065dfbc736ffe5927810d37fe75.tar.gz
rapier-1535db87c7e21065dfbc736ffe5927810d37fe75.tar.bz2
rapier-1535db87c7e21065dfbc736ffe5927810d37fe75.zip
Add a max penetration correction integration parameter
Diffstat (limited to 'src/dynamics/solver/velocity_constraint_wide.rs')
-rw-r--r--src/dynamics/solver/velocity_constraint_wide.rs4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/dynamics/solver/velocity_constraint_wide.rs b/src/dynamics/solver/velocity_constraint_wide.rs
index 1fb9397..0c85755 100644
--- a/src/dynamics/solver/velocity_constraint_wide.rs
+++ b/src/dynamics/solver/velocity_constraint_wide.rs
@@ -49,6 +49,7 @@ impl WVelocityConstraint {
let inv_dt = SimdReal::splat(params.inv_dt());
let allowed_lin_err = SimdReal::splat(params.allowed_linear_error);
let erp_inv_dt = SimdReal::splat(params.erp_inv_dt());
+ let max_penetration_correction = SimdReal::splat(params.max_penetration_correction);
let handles1 = gather![|ii| manifolds[ii].data.rigid_body1.unwrap()];
let handles2 = gather![|ii| manifolds[ii].data.rigid_body2.unwrap()];
@@ -145,7 +146,8 @@ impl WVelocityConstraint {
(SimdReal::splat(1.0) + is_bouncy * restitution) * projected_velocity;
rhs_wo_bias += dist.simd_max(SimdReal::zero()) * inv_dt;
rhs_wo_bias *= is_bouncy + is_resting;
- let rhs_bias = (dist + allowed_lin_err).simd_min(SimdReal::zero())
+ let rhs_bias = (dist + allowed_lin_err)
+ .simd_clamp(-max_penetration_correction, SimdReal::zero())
* (erp_inv_dt/* * is_resting */);
constraint.elements[k].normal_part = VelocityConstraintNormalPart {