IEnumerator OnDroppedCoroutine()
    {
        yield return(new WaitForEndOfFrame());

        yield return(new WaitUntil(() => !GameManager.GameIsPaused));

        if (DroppedInSlot) // Set from within the Slot reacting to its own OnDropEvent
        {
            ToggleHintEvent?.Invoke(_localizedHintText, true);
            PuzzlePieceSlottedEvent?.Invoke(gameObject);
            gameObject.SetActive(false);
        }
        else  // If the puzzle piece was not dropped on the correct slot reset it
        {
            _canvasGroup.alpha              = 1f;
            _canvasGroup.blocksRaycasts     = true;
            _rectTransform.anchoredPosition = _defaultPos;
            // Dragging sometimes does funny things by setting z level at -400. This hopefully fixes that
            if (_rectTransform.localPosition.z != 0f)
            {
                _rectTransform.localPosition = new Vector3(_rectTransform.localPosition.x, _rectTransform.localPosition.y, 0f);
            }
        }
    }
 public void OnPointerClick(PointerEventData eventData)
 {
     ToggleHintEvent?.Invoke(_localizedHintText, false);
 }