public void MoveTo(int x, int y) { lock (_runningLock) { if (!_running) { var animator = new Animator2D(FPSLimiterKnownValues.LimitSixty); var currPos = _playerDrawable.GetPosition(); animator.Paths = CreatePath(currPos.X, currPos.Y, x, y); _lastPathEnd = animator.Paths.Last().End; animator.Play(_frameCallbackInvoker, _endCallback); _running = true; } else { var path = CreatePath((int)_lastPathEnd.X, (int)_lastPathEnd.Y, x, y); _lastPathEnd = path.Last().End; foreach (var path2D in path) { _waitingPaths.Add(path2D); } } } }