Remove the IntegrationParameters field we don't use.
This commit is contained in:
@@ -26,9 +26,9 @@ pub struct IntegrationParameters {
|
|||||||
// /// Note that using only one thread with `multithreading_enabled` set to `true` will result on a slower
|
// /// Note that using only one thread with `multithreading_enabled` set to `true` will result on a slower
|
||||||
// /// simulation than setting `multithreading_enabled` to `false`.
|
// /// simulation than setting `multithreading_enabled` to `false`.
|
||||||
// pub multithreading_enabled: bool,
|
// pub multithreading_enabled: bool,
|
||||||
/// If `true`, the world's `step` method will stop right after resolving exactly one CCD event (default: `false`).
|
// /// If `true`, the world's `step` method will stop right after resolving exactly one CCD event (default: `false`).
|
||||||
/// This allows the user to take action during a timestep, in-between two CCD events.
|
// /// This allows the user to take action during a timestep, in-between two CCD events.
|
||||||
pub return_after_ccd_substep: bool,
|
// pub return_after_ccd_substep: bool,
|
||||||
/// The Error Reduction Parameter in `[0, 1]` is the proportion of
|
/// The Error Reduction Parameter in `[0, 1]` is the proportion of
|
||||||
/// the positional error to be corrected at each time step (default: `0.2`).
|
/// the positional error to be corrected at each time step (default: `0.2`).
|
||||||
pub erp: Real,
|
pub erp: Real,
|
||||||
@@ -64,49 +64,14 @@ pub struct IntegrationParameters {
|
|||||||
pub max_linear_correction: Real,
|
pub max_linear_correction: Real,
|
||||||
/// Maximum angular correction during one step of the non-linear position solver (default: `0.2`).
|
/// Maximum angular correction during one step of the non-linear position solver (default: `0.2`).
|
||||||
pub max_angular_correction: Real,
|
pub max_angular_correction: Real,
|
||||||
/// Maximum nonlinear SOR-prox scaling parameter when the constraint
|
|
||||||
/// correction direction is close to the kernel of the involved multibody's
|
|
||||||
/// jacobian (default: `0.2`).
|
|
||||||
pub max_stabilization_multiplier: Real,
|
|
||||||
/// Maximum number of iterations performed by the velocity constraints solver (default: `4`).
|
/// Maximum number of iterations performed by the velocity constraints solver (default: `4`).
|
||||||
pub max_velocity_iterations: usize,
|
pub max_velocity_iterations: usize,
|
||||||
/// Maximum number of iterations performed by the position-based constraints solver (default: `1`).
|
/// Maximum number of iterations performed by the position-based constraints solver (default: `1`).
|
||||||
pub max_position_iterations: usize,
|
pub max_position_iterations: usize,
|
||||||
/// Minimum number of dynamic bodies in each active island (default: `128`).
|
/// Minimum number of dynamic bodies in each active island (default: `128`).
|
||||||
pub min_island_size: usize,
|
pub min_island_size: usize,
|
||||||
/// Maximum number of iterations performed by the position-based constraints solver for CCD steps (default: `10`).
|
|
||||||
///
|
|
||||||
/// This should be sufficiently high so all penetration get resolved. For example, if CCD cause your
|
|
||||||
/// objects to stutter, that may be because the number of CCD position iterations is too low, causing
|
|
||||||
/// them to remain stuck in a penetration configuration for a few frames.
|
|
||||||
///
|
|
||||||
/// The higher this number, the higher its computational cost.
|
|
||||||
pub max_ccd_position_iterations: usize,
|
|
||||||
/// Maximum number of substeps performed by the solver (default: `1`).
|
/// Maximum number of substeps performed by the solver (default: `1`).
|
||||||
pub max_ccd_substeps: usize,
|
pub max_ccd_substeps: usize,
|
||||||
/// Controls the number of Proximity::Intersecting events generated by a trigger during CCD resolution (default: `false`).
|
|
||||||
///
|
|
||||||
/// If false, triggers will only generate one Proximity::Intersecting event during a step, even
|
|
||||||
/// if another colliders repeatedly enters and leaves the triggers during multiple CCD substeps.
|
|
||||||
///
|
|
||||||
/// If true, triggers will generate as many Proximity::Intersecting and Proximity::Disjoint/Proximity::WithinMargin
|
|
||||||
/// events as the number of times a collider repeatedly enters and leaves the triggers during multiple CCD substeps.
|
|
||||||
/// This is more computationally intensive.
|
|
||||||
pub multiple_ccd_substep_sensor_events_enabled: bool,
|
|
||||||
/// Whether penetration are taken into account in CCD resolution (default: `false`).
|
|
||||||
///
|
|
||||||
/// If this is set to `false` two penetrating colliders will not be considered to have any time of impact
|
|
||||||
/// while they are penetrating. This may end up allowing some tunelling, but will avoid stuttering effect
|
|
||||||
/// when the constraints solver fails to completely separate two colliders after a CCD contact.
|
|
||||||
///
|
|
||||||
/// If this is set to `true`, two penetrating colliders will be considered to have a time of impact
|
|
||||||
/// equal to 0 until the constraints solver manages to separate them. This will prevent tunnelling
|
|
||||||
/// almost completely, but may introduce stuttering effects when the constraints solver fails to completely
|
|
||||||
/// separate two colliders after a CCD contact.
|
|
||||||
// FIXME: this is a very binary way of handling penetration.
|
|
||||||
// We should provide a more flexible solution by letting the user choose some
|
|
||||||
// minimal amount of movement applied to an object that get stuck.
|
|
||||||
pub ccd_on_penetration_enabled: bool,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl IntegrationParameters {
|
impl IntegrationParameters {
|
||||||
@@ -114,28 +79,20 @@ impl IntegrationParameters {
|
|||||||
#[deprecated = "Use `IntegrationParameters { dt: 60.0, ..Default::default() }` instead"]
|
#[deprecated = "Use `IntegrationParameters { dt: 60.0, ..Default::default() }` instead"]
|
||||||
pub fn new(
|
pub fn new(
|
||||||
dt: Real,
|
dt: Real,
|
||||||
// multithreading_enabled: bool,
|
|
||||||
erp: Real,
|
erp: Real,
|
||||||
joint_erp: Real,
|
joint_erp: Real,
|
||||||
warmstart_coeff: Real,
|
warmstart_coeff: Real,
|
||||||
_restitution_velocity_threshold: Real,
|
|
||||||
allowed_linear_error: Real,
|
allowed_linear_error: Real,
|
||||||
allowed_angular_error: Real,
|
allowed_angular_error: Real,
|
||||||
max_linear_correction: Real,
|
max_linear_correction: Real,
|
||||||
max_angular_correction: Real,
|
max_angular_correction: Real,
|
||||||
prediction_distance: Real,
|
prediction_distance: Real,
|
||||||
max_stabilization_multiplier: Real,
|
|
||||||
max_velocity_iterations: usize,
|
max_velocity_iterations: usize,
|
||||||
max_position_iterations: usize,
|
max_position_iterations: usize,
|
||||||
max_ccd_position_iterations: usize,
|
|
||||||
max_ccd_substeps: usize,
|
max_ccd_substeps: usize,
|
||||||
return_after_ccd_substep: bool,
|
|
||||||
multiple_ccd_substep_sensor_events_enabled: bool,
|
|
||||||
ccd_on_penetration_enabled: bool,
|
|
||||||
) -> Self {
|
) -> Self {
|
||||||
IntegrationParameters {
|
IntegrationParameters {
|
||||||
dt,
|
dt,
|
||||||
// multithreading_enabled,
|
|
||||||
erp,
|
erp,
|
||||||
joint_erp,
|
joint_erp,
|
||||||
warmstart_coeff,
|
warmstart_coeff,
|
||||||
@@ -144,14 +101,9 @@ impl IntegrationParameters {
|
|||||||
max_linear_correction,
|
max_linear_correction,
|
||||||
max_angular_correction,
|
max_angular_correction,
|
||||||
prediction_distance,
|
prediction_distance,
|
||||||
max_stabilization_multiplier,
|
|
||||||
max_velocity_iterations,
|
max_velocity_iterations,
|
||||||
max_position_iterations,
|
max_position_iterations,
|
||||||
max_ccd_position_iterations,
|
|
||||||
max_ccd_substeps,
|
max_ccd_substeps,
|
||||||
return_after_ccd_substep,
|
|
||||||
multiple_ccd_substep_sensor_events_enabled,
|
|
||||||
ccd_on_penetration_enabled,
|
|
||||||
..Default::default()
|
..Default::default()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -208,7 +160,6 @@ impl Default for IntegrationParameters {
|
|||||||
dt: 1.0 / 60.0,
|
dt: 1.0 / 60.0,
|
||||||
min_ccd_dt: 1.0 / 60.0 / 100.0,
|
min_ccd_dt: 1.0 / 60.0 / 100.0,
|
||||||
// multithreading_enabled: true,
|
// multithreading_enabled: true,
|
||||||
return_after_ccd_substep: false,
|
|
||||||
erp: 0.2,
|
erp: 0.2,
|
||||||
joint_erp: 0.2,
|
joint_erp: 0.2,
|
||||||
velocity_solve_fraction: 1.0,
|
velocity_solve_fraction: 1.0,
|
||||||
@@ -220,7 +171,6 @@ impl Default for IntegrationParameters {
|
|||||||
allowed_angular_error: 0.001,
|
allowed_angular_error: 0.001,
|
||||||
max_linear_correction: 0.2,
|
max_linear_correction: 0.2,
|
||||||
max_angular_correction: 0.2,
|
max_angular_correction: 0.2,
|
||||||
max_stabilization_multiplier: 0.2,
|
|
||||||
max_velocity_iterations: 4,
|
max_velocity_iterations: 4,
|
||||||
max_position_iterations: 1,
|
max_position_iterations: 1,
|
||||||
// FIXME: what is the optimal value for min_island_size?
|
// FIXME: what is the optimal value for min_island_size?
|
||||||
@@ -229,10 +179,7 @@ impl Default for IntegrationParameters {
|
|||||||
// However we don't want it to be too small and end up with
|
// However we don't want it to be too small and end up with
|
||||||
// tons of islands, reducing SIMD parallelism opportunities.
|
// tons of islands, reducing SIMD parallelism opportunities.
|
||||||
min_island_size: 128,
|
min_island_size: 128,
|
||||||
max_ccd_position_iterations: 10,
|
|
||||||
max_ccd_substeps: 1,
|
max_ccd_substeps: 1,
|
||||||
multiple_ccd_substep_sensor_events_enabled: false,
|
|
||||||
ccd_on_penetration_enabled: false,
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1215,18 +1215,18 @@ impl State for Testbed {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if self
|
// if self
|
||||||
.state
|
// .state
|
||||||
.prev_flags
|
// .prev_flags
|
||||||
.contains(TestbedStateFlags::SUB_STEPPING)
|
// .contains(TestbedStateFlags::SUB_STEPPING)
|
||||||
!= self.state.flags.contains(TestbedStateFlags::SUB_STEPPING)
|
// != self.state.flags.contains(TestbedStateFlags::SUB_STEPPING)
|
||||||
{
|
// {
|
||||||
self.harness
|
// self.harness
|
||||||
.physics
|
// .physics
|
||||||
.integration_parameters
|
// .integration_parameters
|
||||||
.return_after_ccd_substep =
|
// .return_after_ccd_substep =
|
||||||
self.state.flags.contains(TestbedStateFlags::SUB_STEPPING);
|
// self.state.flags.contains(TestbedStateFlags::SUB_STEPPING);
|
||||||
}
|
// }
|
||||||
|
|
||||||
if self.state.prev_flags.contains(TestbedStateFlags::SHAPES)
|
if self.state.prev_flags.contains(TestbedStateFlags::SHAPES)
|
||||||
!= self.state.flags.contains(TestbedStateFlags::SHAPES)
|
!= self.state.flags.contains(TestbedStateFlags::SHAPES)
|
||||||
|
|||||||
Reference in New Issue
Block a user