using UnityEngine;

using System.Collections;

using UnityEngine.EventSystems;

public class EventTriggerUtility : MonoBehaviour, IPointerClickHandler, IPointerDownHandler, IPointerUpHandler, IPointerEnterHandler, IPointerExitHandler {    

  public delegate void VoidDelegate(GameObject go);

  public VoidDelegate onClick;    

  public VoidDelegate onDown;    

  public VoidDelegate onUp;    

  public VoidDelegate onEnter;    

  public VoidDelegate onExit;      

  public static EventTriggerUtility Get(GameObject go) {        

    EventTriggerUtility utility = go.GetComponent<EventTriggerUtility>();        

    if (utility == null) {            

      utility = go.AddComponent<EventTriggerUtility>();        

    }        

     return utility;    

  }

  public void OnPointerClick(PointerEventData eventData) {        

    if (onClick != null) {            

      onClick(gameObject);        

    }    

  }

      public void OnPointerDown(PointerEventData eventData) {        

    if (onDown != null) {            

      onDown(gameObject);        

    }    

  }

      public void OnPointerUp(PointerEventData eventData) {        

    if (onUp != null) {            

      onUp(gameObject);        

    }    

  }

      public void OnPointerEnter(PointerEventData eventData) {        

    if (onEnter != null) {            

      onEnter(gameObject);        

    }    

  }

      public void OnPointerExit(PointerEventData eventData) {        

    if (onExit != null) {            

      onExit(gameObject);        

    }    

  }

}