using UnityEngine;
|
using UnityEngine.InputSystem.XR;
|
|
public class GenericUIInteractable : Interactable
|
{
|
[SerializeField] private GameObject targetUI;
|
[SerializeField] private string interactableType;
|
[SerializeField] private bool closeOtherUIs = true;
|
|
[SerializeField] private GameObject[] uisToClose;
|
|
public override void Interact()
|
{
|
// Call base interaction event
|
OnInteract.Invoke();
|
|
// Close other UIs if needed
|
if (closeOtherUIs)
|
{
|
foreach (var ui in uisToClose)
|
{
|
if (ui != null)
|
{
|
ui.SetActive(false);
|
}
|
}
|
}
|
|
// Show target UI
|
if (targetUI != null)
|
{
|
targetUI.SetActive(true);
|
|
// If there's a UI controller component, notify it of the interaction
|
UIController uiController = targetUI.GetComponent<UIController>();
|
if (uiController != null)
|
{
|
uiController.OnUIOpened(interactableType, gameObject);
|
}
|
}
|
}
|
private new void OnTriggerExit2D(Collider2D other)
|
{
|
if (targetUI != null)
|
{
|
targetUI.SetActive(false);
|
base.OnTriggerExit2D(other);
|
}
|
}
|
}
|