/// <summary> /// Ring "Touch End" handler /// </summary> /// <param name="ring">Ring to handle</param> public void RingDropHandler(GameObject ring) { _RingMovementController.StopObjectMovementHandling(); if (IsTopRingOnPinSelected(ring)) { Transform holderPin = _PinController.GetPinIfRingOnTop(ring); ring.SendMessage("SetCurrentStateNeutral"); _RingMovementController.enabled = false; PinMonitor pinMonitor = holderPin.GetComponent <PinMonitor>(); RingMonitor ringMonitor = ring.GetComponent <RingMonitor>(); Vector3 topRingSlotPosition = pinMonitor.GetCurrentTopRingSlotPosition(); ringMonitor.onMoveComplete += MoveToPositionOnPinHandler; ringMonitor.MoveToPosition(topRingSlotPosition, RingMovementTime / ringMonitor.GetRingSize(), true); } else { ring.SendMessage("SetCurrentStateSurprised"); } }