public bool AddNewBallFromPlayer(GameObject newBall, GameObject collidingBall, bool isOnList = false) { bool isAdded = false; lock (canAddBallLock) { if (!MovementManager.specialMove) { Vector3 positionForNewBall; Vector3 positionForFirstBall; bool isRight = MovementManager.CheckIfIsRightAndFindNewPositions(newBall, balls.Find(collidingBall), out positionForNewBall, out positionForFirstBall, balls.First); ballsThatCouldBeInSequence.Add(balls.Insert(newBall, collidingBall, isRight)); ChangeBallsDirectionOnInsert(newBall, positionForFirstBall, positionForNewBall); MovementManager.specialMove = true; newBall.tag = "Ball"; isAdded = true; } else { if (!isOnList) { ballsToAdd.Add(new NewBallToAdd(newBall, collidingBall)); } } } return(isAdded); }