Aetheria/Assets/Scripts/UI/ClickCatcher.cs
hyperion51 588d89a5d0 newzone command
Added newzone command and updated readme
2020-04-29 11:27:55 +01:00

61 lines
1.5 KiB
C#

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 ClickTime = .5f;
public event Action<PointerEventData> OnEnter;
public event Action<PointerEventData> OnExit;
public event Action<PointerEventData> OnClick;
private float downTime;
public static ClickCatcher Background
{
get
{
if (_background == null)
_background = GameObject.FindGameObjectWithTag("UIBackground").GetComponent<ClickCatcher>();
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)
{
OnClick?.Invoke(eventData);
}
}