Aetheria/Assets/Scripts/UI/ClickRaycaster.cs

29 lines
844 B
C#
Raw Normal View History

using System;
using System.Collections;
2020-03-29 04:19:24 +01:00
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
2020-03-29 04:19:24 +01:00
public class ClickRaycaster : MonoBehaviour
{
public event Action<PointerEventData> OnClickMiss;
2020-03-29 04:19:24 +01:00
public Camera RayCamera;
private ClickCatcher _clickCatcher;
void Start()
{
_clickCatcher = GetComponent<ClickCatcher>();
_clickCatcher.OnClick += pointer =>
{
RaycastHit hit;
Physics.Raycast(RayCamera.ScreenPointToRay(pointer.position), out hit);
if (hit.collider != null)
{
var clickable = hit.collider.GetComponent<ClickableCollider>();
if (clickable != null)
clickable.Click(pointer);
}
else OnClickMiss?.Invoke(pointer);
2020-03-29 04:19:24 +01:00
};
}
}