public FastDictionary<int, float> BuildOnTimePositions(float force)
{
if (Math.Abs(_onTimePositionsForce - force) < 0.00001 && _onTimePositions != null)
{
return _onTimePositions;
}
_onTimePositionsForce = force;
var positions = _onTimePositions = new FastDictionary<int, float>();
var sortedSprings = _timeSortedSprings;
if (sortedSprings.Count == 0)
{
return positions;
}
var springX = sortedSprings[0].PreSpringWidth;
for (int i = 0; i < sortedSprings.Count; i++)
{
positions[sortedSprings[i].TimePosition] = springX;
springX += CalculateWidth(force, sortedSprings[i].SpringConstant);
}
return positions;
}