From 40ac185dc7a017d95771fe580c77eab20e663908 Mon Sep 17 00:00:00 2001 From: miepzerino <o.skotnik@gmail.com> Date: Tue, 08 Apr 2025 17:36:08 +0000 Subject: [PATCH] #46 added interactables --- Assets/Scripts/Interact/GenericUIInteractable.cs | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 50 insertions(+), 0 deletions(-) diff --git a/Assets/Scripts/Interact/GenericUIInteractable.cs b/Assets/Scripts/Interact/GenericUIInteractable.cs new file mode 100644 index 0000000..d99145a --- /dev/null +++ b/Assets/Scripts/Interact/GenericUIInteractable.cs @@ -0,0 +1,50 @@ +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); + } + } +} \ No newline at end of file -- Gitblit v1.9.3