private void CheckDetection()
    {
        /*
         * 3 Transitions/Cases here:
         * 1. No Object -> New Object
         * 2. Current Object -> New Object
         * 3. Current Object -> No Object
         */

        InteractionData interactionData = playerContext.InteractionData;

        // Case 1
        if (interactionData.LastInteractable == null && !interactionData.IsEmpty())
        {
            interactionData.CurrentInteractable.OnDetectionEnter();
            interactionData.LastInteractable = interactionData.CurrentInteractable;
            return;
        }

        // Case 2
        if (interactionData.LastInteractable != null && interactionData.CurrentInteractable != null)
        {
            if (!interactionData.IsSame(interactionData.LastInteractable))
            {
                interactionData.LastInteractable.OnDetectionExit();
                interactionData.CurrentInteractable.OnDetectionEnter();
                interactionData.LastInteractable = interactionData.CurrentInteractable;
                return;
            }
        }

        // Case 3
        if (interactionData.LastInteractable != null && interactionData.IsEmpty())
        {
            interactionData.LastInteractable.OnDetectionExit();
            interactionData.LastInteractable = null;
            return;
        }
    }