void shiftBalls(int startIndex, bool start = false) { if (!start) { float progressDistance = 0; // Vector3.Distance(_balls[startIndex].transform.position, _balls[prevIndex].transform.position); for (int i = startIndex; i >= 0; i--) { balls[i].Progress += 2 * BallSizePercent; float percentProgress = 0; balls[i].transform.position = Path.GetArcParametrizedTime(balls[i].Progress, ref percentProgress); //if (_balls[i].CatchingUp && progressDistance > Radius) // break; if (i - 1 >= 0) { progressDistance = Mathf.Abs(balls[i].Progress - balls[i - 1].Progress); } if (progressDistance > 2 * BallSizePercent) { Debug.Log(i + " " + (i - 1)); break; } } } else { for (int i = startIndex; i >= 0; i--) { balls[i].Progress += 2 * BallSizePercent; float percentProgress = 0; balls[i].transform.position = Path.GetArcParametrizedTime(balls[i].Progress, ref percentProgress); } } }