using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Events; using UnityEngine.EventSystems; public class ClickCatcher : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler, /*IPointerUpHandler, IPointerDownHandler,*/ IPointerClickHandler { //public bool EnableMouse => PointerIsInside && !_catching; public bool PointerIsInside { get; private set; } public float DragDistance = 25f; public event Action OnEnter; public event Action OnExit; public event Action OnClick; private float downTime; public static ClickCatcher Background { get { if (_background == null) _background = GameObject.FindGameObjectWithTag("UIBackground").GetComponent(); return _background; } } private static ClickCatcher _background; public void OnPointerEnter(PointerEventData eventData) { //Debug.Log("Pointer Entered"); OnEnter?.Invoke(eventData); PointerIsInside = true; } public void OnPointerExit(PointerEventData eventData) { //Debug.Log("Pointer Exited"); OnExit?.Invoke(eventData); PointerIsInside = false; } // public void OnPointerUp(PointerEventData eventData) // { // if(Time.time - downTime < ClickTime) // OnClick?.Invoke(eventData); // } // // public void OnPointerDown(PointerEventData eventData) // { // downTime = Time.time; // } public void OnPointerClick(PointerEventData eventData) { if((eventData.pressPosition - eventData.position).sqrMagnitude < DragDistance) OnClick?.Invoke(eventData); } }