/**************************************************************************** * Copyright 2019 Nreal Techonology Limited. All rights reserved. * * This file is part of NRSDK. * * https://www.nreal.ai/ * *****************************************************************************/ namespace NRKernal { using System; using UnityEngine; using UnityEngine.UI; using UnityEngine.EventSystems; /// A nr button. public class NRButton : MonoBehaviour, IPointerDownHandler, IPointerUpHandler { /// The image normal. public Sprite ImageNormal; /// The image hover. public Sprite ImageHover; /// The trigger event. public Action TriggerEvent; /// The enter. public const string Enter = "Enter"; /// The hover. public const string Hover = "Hover"; /// The exit. public const string Exit = "Exit"; /// The button image. private Image m_ButtonImage; /// Starts this object. void Start() { m_ButtonImage = gameObject.GetComponent(); } /// /// Current event data. public void OnPointerDown(PointerEventData eventData) { if (TriggerEvent != null) { TriggerEvent(Enter, gameObject, eventData.pointerCurrentRaycast); } if (ImageHover != null && m_ButtonImage != null) { m_ButtonImage.sprite = ImageHover; } } /// /// Current event data. public void OnPointerUp(PointerEventData eventData) { if (TriggerEvent != null) { TriggerEvent(Exit, gameObject, eventData.pointerCurrentRaycast); } if (ImageNormal != null && m_ButtonImage != null) { m_ButtonImage.sprite = ImageNormal; } } /// Get onhover by NRMultScrPointerRaycaster. /// The racast result. public void OnHover(RaycastResult racastResult) { if (TriggerEvent != null && m_ButtonImage != null) { TriggerEvent(Hover, gameObject, racastResult); } } } }