protected internal void UnsafeSolveIteration(SolverUpdateable updateable)
{
if (updateable.isActiveInSolver)
{
SolverSettings solverSettings = updateable.solverSettings;
solverSettings.currentIterations++;
if (solverSettings.currentIterations <= iterationLimit &&
solverSettings.currentIterations <= solverSettings.maximumIterationCount)
{
if (updateable.SolveIteration() < solverSettings.minimumImpulse)
{
solverSettings.iterationsAtZeroImpulse++;
if (solverSettings.iterationsAtZeroImpulse > solverSettings.minimumIterationCount)
{
updateable.isActiveInSolver = false;
}
}
else
{
solverSettings.iterationsAtZeroImpulse = 0;
}
}
else
{
updateable.isActiveInSolver = false;
}
}
}