From f74b8401ad9ef50b8cdbf1f43a2b21f6c42b0ebc Mon Sep 17 00:00:00 2001 From: Sébastien Crozet Date: Sun, 2 Jan 2022 14:47:40 +0100 Subject: Implement multibody joints and the new solver --- src/dynamics/solver/position_solver.rs | 57 ---------------------------------- 1 file changed, 57 deletions(-) delete mode 100644 src/dynamics/solver/position_solver.rs (limited to 'src/dynamics/solver/position_solver.rs') diff --git a/src/dynamics/solver/position_solver.rs b/src/dynamics/solver/position_solver.rs deleted file mode 100644 index 48b71aa..0000000 --- a/src/dynamics/solver/position_solver.rs +++ /dev/null @@ -1,57 +0,0 @@ -use super::AnyJointPositionConstraint; -use crate::data::{ComponentSet, ComponentSetMut}; -use crate::dynamics::{solver::AnyPositionConstraint, IntegrationParameters}; -use crate::dynamics::{IslandManager, RigidBodyIds, RigidBodyPosition}; -use crate::math::{Isometry, Real}; - -pub(crate) struct PositionSolver { - positions: Vec>, -} - -impl PositionSolver { - pub fn new() -> Self { - Self { - positions: Vec::new(), - } - } - - pub fn solve( - &mut self, - island_id: usize, - params: &IntegrationParameters, - islands: &IslandManager, - bodies: &mut Bodies, - contact_constraints: &[AnyPositionConstraint], - joint_constraints: &[AnyJointPositionConstraint], - ) where - Bodies: ComponentSet + ComponentSetMut, - { - if contact_constraints.is_empty() && joint_constraints.is_empty() { - // Nothing to do. - return; - } - - self.positions.clear(); - self.positions - .extend(islands.active_island(island_id).iter().map(|h| { - let poss: &RigidBodyPosition = bodies.index(h.0); - poss.next_position - })); - - for _ in 0..params.max_position_iterations { - for constraint in joint_constraints { - constraint.solve(params, &mut self.positions) - } - - for constraint in contact_constraints { - constraint.solve(params, &mut self.positions) - } - } - - for handle in islands.active_island(island_id) { - let ids: &RigidBodyIds = bodies.index(handle.0); - let next_pos = &self.positions[ids.active_set_offset]; - bodies.map_mut_internal(handle.0, |poss| poss.next_position = *next_pos); - } - } -} -- cgit