|
|
|
|
|
using System;
|
|
|
|
|
|
using System.Collections;
|
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
using UnityEngine;
|
|
|
|
|
|
using UnityEngine.Events;
|
|
|
|
|
|
using UnityEngine.EventSystems;
|
|
|
|
|
|
public class EventSystemHandler : MonoBehaviour, IPointerDownHandler, IPointerUpHandler, IDragHandler, IPointerExitHandler
|
|
|
|
|
|
{
|
|
|
|
|
|
// public bool MouseOnly = false;
|
|
|
|
|
|
|
|
|
|
|
|
[System.Serializable]
|
|
|
|
|
|
public class PointerEvent : UnityEvent<PointerEventData> { };
|
|
|
|
|
|
|
|
|
|
|
|
public PointerEvent onPointerDown = new PointerEvent();
|
|
|
|
|
|
public PointerEvent onPointerUp = new PointerEvent();
|
|
|
|
|
|
public PointerEvent onPointerDrag = new PointerEvent();
|
|
|
|
|
|
public PointerEvent onPointerExit = new PointerEvent();
|
|
|
|
|
|
|
|
|
|
|
|
public void OnPointerDown(PointerEventData eventData)
|
|
|
|
|
|
{
|
|
|
|
|
|
LogPointerEvent(eventData);
|
|
|
|
|
|
onPointerDown.Invoke(eventData);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void OnPointerUp(PointerEventData eventData)
|
|
|
|
|
|
{
|
|
|
|
|
|
LogPointerEvent(eventData);
|
|
|
|
|
|
onPointerUp.Invoke(eventData);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void OnDrag(PointerEventData eventData)
|
|
|
|
|
|
{
|
|
|
|
|
|
LogPointerEvent(eventData);
|
|
|
|
|
|
onPointerDrag.Invoke(eventData);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void OnPointerExit(PointerEventData eventData)
|
|
|
|
|
|
{
|
|
|
|
|
|
LogPointerEvent(eventData);
|
|
|
|
|
|
// if (skip_on_mouse_only(eventData))
|
|
|
|
|
|
// return;
|
|
|
|
|
|
onPointerExit.Invoke(eventData);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void LogPointerEvent(PointerEventData eventData)
|
|
|
|
|
|
{
|
|
|
|
|
|
// Debug.Log(eventData);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// private bool skip_on_mouse_only(PointerEventData eventData)
|
|
|
|
|
|
// {
|
|
|
|
|
|
// return MouseOnly && eventData.pointerId != -1;
|
|
|
|
|
|
// }
|
|
|
|
|
|
}
|