protected internal void UnsafeSolveIteration(SolverUpdateable updateable)
{
if (updateable.isActiveInSolver)
{
SolverSettings solverSettings = updateable.solverSettings;
solverSettings.currentIterations++;
if (solverSettings.currentIterations <= iterationLimit &&
solverSettings.currentIterations <= solverSettings.maximumIterations)
{
if (updateable.SolveIteration() < solverSettings.minimumImpulse)
{
solverSettings.iterationsAtZeroImpulse++;
if (solverSettings.iterationsAtZeroImpulse > solverSettings.minimumIterations)
updateable.isActiveInSolver = false;
}
else
{
solverSettings.iterationsAtZeroImpulse = 0;
}
}
else
{
updateable.isActiveInSolver = false;
}
//if (++solverSettings.currentIterations > iterationLimit ||
// solverSettings.currentIterations > solverSettings.maximumIterations ||
// (updateable.SolveIteration() < solverSettings.minimumImpulse &&
// ++solverSettings.iterationsAtZeroImpulse > solverSettings.minimumIterations))
//{
// updateable.isActiveInSolver = false;
//}
//else //If it's greater than the minimum impulse, reset the count.
// solverSettings.iterationsAtZeroImpulse = 0;
}
}