aboutsummaryrefslogtreecommitdiff
path: root/src/dynamics/solver/position_solver.rs
diff options
context:
space:
mode:
authorCrozet Sébastien <developer@crozet.re>2020-12-30 12:03:25 +0100
committerCrozet Sébastien <developer@crozet.re>2020-12-30 12:03:25 +0100
commit7545e06cb15d6e851e5dee7d3761901e5d40f271 (patch)
tree36fa3373dfdfa85119f70d1b54d52dd373954684 /src/dynamics/solver/position_solver.rs
parent5876a262daa3b6544f132e6654923c2bfabe35d9 (diff)
downloadrapier-7545e06cb15d6e851e5dee7d3761901e5d40f271.tar.gz
rapier-7545e06cb15d6e851e5dee7d3761901e5d40f271.tar.bz2
rapier-7545e06cb15d6e851e5dee7d3761901e5d40f271.zip
Attempt to combine the position constraints initialization with the velocity constraints initialization.
Diffstat (limited to 'src/dynamics/solver/position_solver.rs')
-rw-r--r--src/dynamics/solver/position_solver.rs60
1 files changed, 3 insertions, 57 deletions
diff --git a/src/dynamics/solver/position_solver.rs b/src/dynamics/solver/position_solver.rs
index be70d74..d610f3a 100644
--- a/src/dynamics/solver/position_solver.rs
+++ b/src/dynamics/solver/position_solver.rs
@@ -33,13 +33,9 @@ impl PositionSolverJointPart {
}
pub(crate) struct PositionSolverPart {
- pub point_point_manifolds: Vec<ContactManifoldIndex>,
pub plane_point_manifolds: Vec<ContactManifoldIndex>,
- pub point_point_ground_manifolds: Vec<ContactManifoldIndex>,
pub plane_point_ground_manifolds: Vec<ContactManifoldIndex>,
- pub point_point_groups: InteractionGroups,
pub plane_point_groups: InteractionGroups,
- pub point_point_ground_groups: InteractionGroups,
pub plane_point_ground_groups: InteractionGroups,
pub constraints: Vec<AnyPositionConstraint>,
}
@@ -47,13 +43,9 @@ pub(crate) struct PositionSolverPart {
impl PositionSolverPart {
pub fn new() -> Self {
Self {
- point_point_manifolds: Vec::new(),
plane_point_manifolds: Vec::new(),
- point_point_ground_manifolds: Vec::new(),
plane_point_ground_manifolds: Vec::new(),
- point_point_groups: InteractionGroups::new(),
plane_point_groups: InteractionGroups::new(),
- point_point_ground_groups: InteractionGroups::new(),
plane_point_ground_groups: InteractionGroups::new(),
constraints: Vec::new(),
}
@@ -62,7 +54,7 @@ impl PositionSolverPart {
pub(crate) struct PositionSolver {
positions: Vec<Isometry<f32>>,
- part: PositionSolverPart,
+ pub part: PositionSolverPart,
joint_part: PositionSolverJointPart,
}
@@ -85,8 +77,8 @@ impl PositionSolver {
joints: &[JointGraphEdge],
joint_constraint_indices: &[JointIndex],
) {
- self.part
- .init_constraints(island_id, params, bodies, manifolds, manifold_indices);
+ // self.part
+ // .init_constraints(island_id, params, bodies, manifolds, manifold_indices);
self.joint_part.init_constraints(
island_id,
params,
@@ -134,27 +126,16 @@ impl PositionSolverPart {
manifolds_all: &[&mut ContactManifold],
manifold_indices: &[ContactManifoldIndex],
) {
- self.point_point_ground_manifolds.clear();
self.plane_point_ground_manifolds.clear();
- self.point_point_manifolds.clear();
self.plane_point_manifolds.clear();
categorize_position_contacts(
bodies,
manifolds_all,
manifold_indices,
- &mut self.point_point_ground_manifolds,
&mut self.plane_point_ground_manifolds,
- &mut self.point_point_manifolds,
&mut self.plane_point_manifolds,
);
- self.point_point_groups.clear_groups();
- self.point_point_groups.group_manifolds(
- island_id,
- bodies,
- manifolds_all,
- &self.point_point_manifolds,
- );
self.plane_point_groups.clear_groups();
self.plane_point_groups.group_manifolds(
island_id,
@@ -163,13 +144,6 @@ impl PositionSolverPart {
&self.plane_point_manifolds,
);
- self.point_point_ground_groups.clear_groups();
- self.point_point_ground_groups.group_manifolds(
- island_id,
- bodies,
- manifolds_all,
- &self.point_point_ground_manifolds,
- );
self.plane_point_ground_groups.clear_groups();
self.plane_point_ground_groups.group_manifolds(
island_id,
@@ -189,13 +163,6 @@ impl PositionSolverPart {
params,
bodies,
manifolds_all,
- &self.point_point_groups.grouped_interactions,
- &mut self.constraints,
- );
- compute_grouped_constraints(
- params,
- bodies,
- manifolds_all,
&self.plane_point_groups.grouped_interactions,
&mut self.constraints,
);
@@ -204,13 +171,6 @@ impl PositionSolverPart {
params,
bodies,
manifolds_all,
- &self.point_point_groups.nongrouped_interactions,
- &mut self.constraints,
- );
- compute_nongrouped_constraints(
- params,
- bodies,
- manifolds_all,
&self.plane_point_groups.nongrouped_interactions,
&mut self.constraints,
);
@@ -224,13 +184,6 @@ impl PositionSolverPart {
params,
bodies,
manifolds_all,
- &self.point_point_ground_groups.grouped_interactions,
- &mut self.constraints,
- );
- compute_grouped_ground_constraints(
- params,
- bodies,
- manifolds_all,
&self.plane_point_ground_groups.grouped_interactions,
&mut self.constraints,
);
@@ -239,13 +192,6 @@ impl PositionSolverPart {
params,
bodies,
manifolds_all,
- &self.point_point_ground_groups.nongrouped_interactions,
- &mut self.constraints,
- );
- compute_nongrouped_ground_constraints(
- params,
- bodies,
- manifolds_all,
&self.plane_point_ground_groups.nongrouped_interactions,
&mut self.constraints,
);