136 lines
3.3 KiB
C#
136 lines
3.3 KiB
C#
|
|
#define Graph_And_Chart_PRO
|
||
|
|
using System;
|
||
|
|
using System.Collections.Generic;
|
||
|
|
using System.Linq;
|
||
|
|
using System.Text;
|
||
|
|
using UnityEngine;
|
||
|
|
using UnityEngine.Events;
|
||
|
|
using UnityEngine.EventSystems;
|
||
|
|
|
||
|
|
namespace ChartAndGraph
|
||
|
|
{
|
||
|
|
/// <summary>
|
||
|
|
/// provides functionallity for recieving events for chart items (such as bars and pie slices)
|
||
|
|
/// </summary>
|
||
|
|
public class ChartItemEvents : MonoBehaviour , IPointerEnterHandler, IPointerExitHandler, IPointerDownHandler,IPointerUpHandler, InternalItemEvents
|
||
|
|
{
|
||
|
|
[Serializable]
|
||
|
|
public class Event : UnityEvent<GameObject>
|
||
|
|
{
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
/// <summary>
|
||
|
|
/// occures when the mouse is over the item
|
||
|
|
/// </summary>
|
||
|
|
[Tooltip("Occures when the mouse is over the item")]
|
||
|
|
public Event OnMouseHover = new Event();
|
||
|
|
/// <summary>
|
||
|
|
/// occurs when the mouse is no longer over the item
|
||
|
|
/// </summary>
|
||
|
|
[Tooltip("Occurs when the mouse is no longer over the item")]
|
||
|
|
public Event OnMouseLeave = new Event();
|
||
|
|
/// <summary>
|
||
|
|
/// occurs when the user clicks the chart item
|
||
|
|
/// </summary>
|
||
|
|
[Tooltip("Occurs when the user clicks the chart item")]
|
||
|
|
public Event OnSelected = new Event();
|
||
|
|
|
||
|
|
private bool mMouseOver = false;
|
||
|
|
private bool mMouseDown = false;
|
||
|
|
|
||
|
|
private IInternalUse mParent;
|
||
|
|
private object mUserData;
|
||
|
|
|
||
|
|
IInternalUse InternalItemEvents.Parent
|
||
|
|
{
|
||
|
|
get
|
||
|
|
{
|
||
|
|
return mParent;
|
||
|
|
}
|
||
|
|
|
||
|
|
set
|
||
|
|
{
|
||
|
|
mParent = value;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
object InternalItemEvents.UserData
|
||
|
|
{
|
||
|
|
get
|
||
|
|
{
|
||
|
|
return mUserData;
|
||
|
|
}
|
||
|
|
|
||
|
|
set
|
||
|
|
{
|
||
|
|
mUserData = value;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
void Start()
|
||
|
|
{
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
void OnMouseEnter()
|
||
|
|
{
|
||
|
|
if (mMouseOver == false)
|
||
|
|
OnMouseHover.Invoke(gameObject);
|
||
|
|
if (mParent != null)
|
||
|
|
mParent.InternalItemHovered(mUserData);
|
||
|
|
mMouseOver = true;
|
||
|
|
}
|
||
|
|
|
||
|
|
void OnMouseExit()
|
||
|
|
{
|
||
|
|
if(mMouseOver == true)
|
||
|
|
OnMouseLeave.Invoke(gameObject);
|
||
|
|
if (mParent != null)
|
||
|
|
mParent.InternalItemLeave(mUserData);
|
||
|
|
mMouseOver = false;
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
void OnMouseDown()
|
||
|
|
{
|
||
|
|
if (mMouseDown == false)
|
||
|
|
OnSelected.Invoke(gameObject);
|
||
|
|
if (mParent != null)
|
||
|
|
mParent.InternalItemSelected(mUserData);
|
||
|
|
mMouseDown = true;
|
||
|
|
}
|
||
|
|
|
||
|
|
void OnMouseUp()
|
||
|
|
{
|
||
|
|
mMouseDown = false;
|
||
|
|
}
|
||
|
|
public void Select(bool selected)
|
||
|
|
{
|
||
|
|
if (selected)
|
||
|
|
OnMouseEnter();
|
||
|
|
else
|
||
|
|
OnMouseExit();
|
||
|
|
}
|
||
|
|
public void OnPointerEnter(PointerEventData eventData)
|
||
|
|
{
|
||
|
|
OnMouseEnter();
|
||
|
|
}
|
||
|
|
|
||
|
|
public void OnPointerExit(PointerEventData eventData)
|
||
|
|
{
|
||
|
|
OnMouseExit();
|
||
|
|
}
|
||
|
|
|
||
|
|
public void OnPointerDown(PointerEventData eventData)
|
||
|
|
{
|
||
|
|
OnMouseDown();
|
||
|
|
}
|
||
|
|
|
||
|
|
public void OnPointerUp(PointerEventData eventData)
|
||
|
|
{
|
||
|
|
OnMouseUp();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|