private IEnumerator WaitForSnap(PieceTriggerData triggerData) { _pieceController.transform.SetParent(circleController.transform); yield return(_pieceController.StartSnapping(triggerData.Position, triggerData.Rotation)); _lastIndex = triggerData.Index; if (_pieces[_lastIndex] == null) { _pieces[_lastIndex] = _pieceController; } else { UpdatePieceValue(_pieces[_lastIndex]); GivePieceToPool(_pieceController); _pieceController = _pieces[_lastIndex]; } while (IsMergeExist(_lastIndex)) { yield return(StartMerge(_lastIndex)); yield return(new WaitForEndOfFrame()); if (_mergeCoroutine != null) { StopCoroutine(_mergeCoroutine); } } OnSnapCompleted(); }
private void OnTriggerInvoke(PieceTriggerData triggerData) { StartCoroutine(WaitForSnap(triggerData)); }