Advertisement
Guest User

SOOQANAHOOI

a guest
Apr 22nd, 2017
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.50 KB | None | 0 0
  1. ublic class CustomRaycaster : MonoBehaviour
  2. {
  3.     public GameObject hovered;
  4.     public GameObject hitObject;
  5.     public enum HoverState{Hover, None};
  6.     public HoverState hover_state = HoverState.None;
  7.    
  8.     void Update ()
  9.     {
  10.         bool isHit;
  11.         PointerEventData pointerData = new PointerEventData(EventSystem.current);
  12.         pointerData.position = Input.mousePosition;
  13.        
  14.         List<RaycastResult> results = new List<RaycastResult>();
  15.         EventSystem.current.RaycastAll(pointerData, results);
  16.        
  17.         if (results.Count > 0)
  18.         {
  19.             Debug.Log ("UI");
  20.             hitObject = results[0].gameObject;
  21.             isHit = true;
  22.         }
  23.         else
  24.         {
  25.             RaycastHit hitInfo = new RaycastHit();
  26.             Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
  27.             isHit = (Physics.Raycast(ray, out hitInfo));
  28.             if (isHit)
  29.             {
  30.                 Debug.Log ("Object");
  31.                 hitObject = hitInfo.collider.gameObject;
  32.             }
  33.         }
  34.         Hover(isHit);
  35.     }
  36.  
  37.     protected void Hover(bool isHit)
  38.     {
  39.         if (isHit) //it is a hit - if new hit, change hovered
  40.         {
  41.             if (hover_state == HoverState.None)
  42.             {
  43.                 hitObject.SendMessage("OnMouseEnter", SendMessageOptions.DontRequireReceiver);
  44.                 hovered = hitObject;
  45.             }
  46.             hover_state = HoverState.Hover;
  47.         }
  48.         else
  49.         {
  50.             if (hover_state == HoverState.Hover)
  51.             {
  52.                 hovered.SendMessage("OnMouseExit", SendMessageOptions.DontRequireReceiver);
  53.             }
  54.             hover_state = HoverState.None;
  55.         }
  56.         if (hover_state == HoverState.Hover)
  57.         {
  58.             hitObject.SendMessage("OnMouseOver", SendMessageOptions.DontRequireReceiver);
  59.         }
  60.     }
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement