// Note: The following 3 functions NavigateInput, SelectInput, and CancelInput are called from the PlayerInputScript

    public void NavigateInput(InputAction.CallbackContext context)
    {
        if (gameObject.activeInHierarchy && context.performed && !playerReady)
        {
            // browse characters
            navigateVector = context.ReadValue <Vector2>();
            if (navigateVector.x < -0.5f)
            {
                audioSrc.PlayOneShot(navigateSFX);
                characterIndex -= 1;
                if (characterIndex < 0)
                {
                    characterIndex = 3;
                }
                characterSelectUI.UpdateCharacterDisplayed(characterSelectManager.GetCharacter(characterIndex));
            }
            else if (navigateVector.x > 0.5f)
            {
                audioSrc.PlayOneShot(navigateSFX);
                characterIndex += 1;
                if (characterIndex > 3)
                {
                    characterIndex = 0;
                }
                characterSelectUI.UpdateCharacterDisplayed(characterSelectManager.GetCharacter(characterIndex));
            }
        }
    }
    void Start()
    {
        // get reference and display default
        screensTransitionManager = FindObjectOfType <ScreensTransitionManager>();
        characterSelectManager   = FindObjectOfType <CharacterSelectManager>();
        characterSelectUI.UpdateCharacterDisplayed(characterSelectManager.GetCharacter(characterIndex));
        characterSelectUI.UpdateSelected(playerReady);
        audioSrc = GetComponent <AudioSource>();

        // resets UI when stm.ToTitle() is called
        screensTransitionManager.OnReturnToTitle += ResetUI;
    }