using UnityEngine; using UnityEngine.Events; using UnityEngine.EventSystems; namespace MoreMountains.Tools { /// <summary> /// A simple helper class you can use to trigger methods on Unity's pointer events /// Typically used on a UI Image /// </summary> public class MMOnPointer : MonoBehaviour, IPointerDownHandler, IPointerEnterHandler, IPointerUpHandler, IPointerExitHandler, IPointerClickHandler { [Header("Pointer movement")] /// an event to trigger when the pointer enters the associated game object [Tooltip("an event to trigger when the pointer enters the associated game object")] public UnityEvent PointerEnter; /// an event to trigger when the pointer exits the associated game object [Tooltip("an event to trigger when the pointer exits the associated game object")] public UnityEvent PointerExit; [Header("Clicks")] /// an event to trigger when the pointer is pressed down on the associated game object [Tooltip("an event to trigger when the pointer is pressed down on the associated game object")] public UnityEvent PointerDown; /// an event to trigger when the pointer is pressed up on the associated game object [Tooltip("an event to trigger when the pointer is pressed up on the associated game object")] public UnityEvent PointerUp; /// an event to trigger when the pointer is clicked on the associated game object [Tooltip("an event to trigger when the pointer is clicked on the associated game object")] public UnityEvent PointerClick; /// <summary> /// IPointerEnterHandler implementation /// </summary> /// <param name="eventData"></param> public void OnPointerEnter(PointerEventData eventData) { PointerEnter?.Invoke(); } /// <summary> /// IPointerExitHandler implementation /// </summary> /// <param name="eventData"></param> public void OnPointerExit(PointerEventData eventData) { PointerExit?.Invoke(); } /// <summary> /// IPointerDownHandler implementation /// </summary> /// <param name="eventData"></param> public void OnPointerDown(PointerEventData eventData) { PointerDown?.Invoke(); } /// <summary> /// IPointerUpHandler implementation /// </summary> /// <param name="eventData"></param> public void OnPointerUp(PointerEventData eventData) { PointerUp?.Invoke(); } /// <summary> /// IPointerClickHandler implementation /// </summary> /// <param name="eventData"></param> public void OnPointerClick(PointerEventData eventData) { PointerClick?.Invoke(); } } }