/****************************************************************************
* 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);
}
}
}
}