//====================================================================================================//

    public void OnButtonClick(Interactable interactable, Button button)
    {
        foreach (Button interactableButton in buttons)
        {
            if (interactableButton != button)
            {
                interactableButton.gameObject.GetComponent <Image>().sprite = settings.interactableIcon;
            }

            else
            {
                interactableButton.gameObject.GetComponent <Image>().sprite = settings.interactableIconSelected;
            }
        }
        AudioManager.Play("UI_Hover");
        if (interactableTitle.text != interactable.Name)
        {
            interactable.ClickOnInteractable();
            interactableTitle.text = interactable.Name;
            ToggleInteractableGroup(true);
            InteractablePreviewUI.SetPreviewObject(interactable, 0);

            for (int i = 0; i < 4; i++)
            {
                int temp = i;
                interactableButtons[i].gameObject.GetComponentInChildren <TMPro.TMP_Text>().text   = interactable.stateData.getStateName(i);
                interactableButtons[i].gameObject.GetComponent <FastRecoveryButton>().Interactable = interactable;
                interactableButtons[i].gameObject.GetComponent <FastRecoveryButton>().ActionIndex  = temp;
                if (GameManager.Mode == GameMode.Rehearsal)
                {
                    if (InteractablePath.NextInteractable.ID == interactable.ID)
                    {
                        if (InteractablePath.NextAction == temp)
                        {
                            interactableButtons[i].gameObject.GetComponent <Animation>().Play();

                            /*ColorBlock colors = interactableButtons[i].colors;
                             * colors.normalColor = new Color(189, 205, 217);
                             * colors.highlightedColor = new Color(189, 205, 217);
                             * interactableButtons[i].colors = colors;*/
                        }
                    }
                }
                interactableButtons[i].onClick.AddListener(() => OnInteractableButtonClick(temp));
            }
        }

        else
        {
            button.gameObject.GetComponent <Image>().sprite = settings.interactableIcon;
            InteractablePreviewUI.ClearPreviewObject();
            startingTitleImage.gameObject.SetActive(false);
            ToggleInteractableGroup(false);

            for (int i = 0; i < 4; i++)
            {
                interactableButtons[i].onClick.RemoveAllListeners();
            }
        }
    }
    //====================================================================================================//

    public void Toggle(bool active)
    {
        if (!active)
        {
            ToggleInteractableGroup(false);

            for (int i = 0; i < 4; i++)
            {
                interactableButtons[i].onClick.RemoveAllListeners();
            }

            foreach (Button button in buttons)
            {
                button.gameObject.GetComponent <Animation>().Stop();
                button.gameObject.GetComponent <Image>().sprite = settings.interactableIcon;
                ColorBlock colors = button.gameObject.GetComponent <Button>().colors;
                colors.normalColor = Color.white;
                button.gameObject.GetComponent <Button>().colors = colors;
            }

            if (settings.useRenderTexture)
            {
                rawMap.transform.localPosition = new Vector3(0, 0, 0);
                if (settings.restrictViewport)
                {
                    rawMap.rectTransform.sizeDelta = new Vector2(980, 980);
                    slider.value = slider.minValue;
                }
            }
            else
            {
                map.transform.localPosition = new Vector3(0, 0, 0);
                if (settings.restrictViewport)
                {
                    if ((980 / settings.source.bounds.size.y * settings.source.bounds.size.x) < 880f)
                    {
                        map.rectTransform.sizeDelta = new Vector2(880, 880 / settings.source.bounds.size.x * settings.source.bounds.size.y);
                    }
                    else
                    {
                        map.rectTransform.sizeDelta = new Vector2(980 / settings.source.bounds.size.y * settings.source.bounds.size.x, 980);
                    }
                    slider.value = slider.minValue;
                }
                else
                {
                    map.rectTransform.sizeDelta = new Vector2(1000 / settings.source.bounds.size.y * settings.source.bounds.size.x, 1000);
                    slider.value = 1000;
                }
            }
            InteractablePreviewUI.ClearPreviewObject();
        }
        if (GameManager.Mode == GameMode.Recall && active && InteractablePreviewUI.Show)
        {
            InteractablePreviewUI.ToggleShow();
        }
        else if (GameManager.Mode == GameMode.Rehearsal && active && InteractableLog.Count % 3 != 0)
        {
            InteractablePreviewUI.SetPreviewObject(InteractablePath.NextInteractable, InteractablePath.Instance.actionIds[InteractablePath.Instance.nextIndex]);
            InteractablePreviewUI.SetPreviewAction(InteractablePath.Instance.actionIds[InteractablePath.Instance.nextIndex]);
        }
    }