aboutsummaryrefslogtreecommitdiff
path: root/src/dynamics/integration_parameters.rs
diff options
context:
space:
mode:
authorSébastien Crozet <sebcrozet@dimforge.com>2024-04-14 15:53:35 +0200
committerSébastien Crozet <sebastien@crozet.re>2024-04-30 23:10:46 +0200
commit3ddf2441ea6c43aa98718e0ce8650c3b804062d4 (patch)
treecb788bf95da707a683fd949d887d071c68934ae6 /src/dynamics/integration_parameters.rs
parent15c07cfeb3d59f116b26eec32e4590dc45d6c26c (diff)
downloadrapier-3ddf2441ea6c43aa98718e0ce8650c3b804062d4.tar.gz
rapier-3ddf2441ea6c43aa98718e0ce8650c3b804062d4.tar.bz2
rapier-3ddf2441ea6c43aa98718e0ce8650c3b804062d4.zip
feat: add exact mlcp solver for pais of 2 constraints
Diffstat (limited to 'src/dynamics/integration_parameters.rs')
-rw-r--r--src/dynamics/integration_parameters.rs8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/dynamics/integration_parameters.rs b/src/dynamics/integration_parameters.rs
index 13b3fde..2788349 100644
--- a/src/dynamics/integration_parameters.rs
+++ b/src/dynamics/integration_parameters.rs
@@ -1,6 +1,9 @@
use crate::math::Real;
use std::num::NonZeroUsize;
+pub(crate) static BLOCK_SOLVER_ENABLED: bool = cfg!(feature = "dim2");
+pub(crate) static DISABLE_FRICTION_LIMIT_REAPPLY: bool = false;
+
/// Parameters for a time-step of the physics engine.
#[derive(Copy, Clone, Debug)]
#[cfg_attr(feature = "serde-serialize", derive(Serialize, Deserialize))]
@@ -50,6 +53,8 @@ pub struct IntegrationParameters {
pub num_additional_friction_iterations: usize,
/// Number of internal Project Gauss Seidel (PGS) iterations run at each solver iteration (default: `1`).
pub num_internal_pgs_iterations: usize,
+ /// The maximum number of stabilization iterations run at each solver iterations (default: `10`).
+ pub max_internal_stabilization_iterations: usize,
/// Minimum number of dynamic bodies in each active island (default: `128`).
pub min_island_size: usize,
/// Maximum number of substeps performed by the solver (default: `1`).
@@ -194,7 +199,7 @@ impl Default for IntegrationParameters {
Self {
dt: 1.0 / 60.0,
min_ccd_dt: 1.0 / 60.0 / 100.0,
- erp: 0.6,
+ erp: 0.8,
damping_ratio: 1.0,
joint_erp: 1.0,
joint_damping_ratio: 1.0,
@@ -202,6 +207,7 @@ impl Default for IntegrationParameters {
max_penetration_correction: Real::MAX,
prediction_distance: 0.002,
num_internal_pgs_iterations: 1,
+ max_internal_stabilization_iterations: 10,
num_additional_friction_iterations: 4,
num_solver_iterations: NonZeroUsize::new(4).unwrap(),
// TODO: what is the optimal value for min_island_size?