Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UnityEngine;
- using UnityEngine.UI;
- using UnityEngine.EventSystems;
- using System.Collections.Generic;
- public class CustomRaycaster : MonoBehaviour
- {
- [HideInInspector]
- public GameObject hovered;
- [HideInInspector]
- public GameObject hitObject;
- [HideInInspector]
- bool isHit;
- public enum HoverState
- {
- Hover, None
- };
- [HideInInspector]
- public HoverState hover_state = HoverState.None;
- [HideInInspector]
- PointerEventData pointerData;
- [HideInInspector]
- RaycastHit hitInfo;
- [HideInInspector]
- Ray ray;
- [HideInInspector]
- List<RaycastResult> results = new List<RaycastResult>();
- void Update ()
- {
- pointerData = new PointerEventData(EventSystem.current);
- pointerData.position = Input.mousePosition;
- results.Clear();
- EventSystem.current.RaycastAll(pointerData, results);
- if (results.Count > 0)
- {
- Debug.Log ("UI");
- hitObject = results[0].gameObject;
- isHit = true;
- }
- else
- {
- ray = Camera.main.ScreenPointToRay(Input.mousePosition);
- isHit = (Physics.Raycast(ray, out hitInfo));
- if (isHit)
- {
- Debug.Log ("Object");
- hitObject = hitInfo.collider.gameObject;
- }
- }
- Hover(isHit);
- }
- protected void Hover(bool isHit)
- {
- if (isHit)
- {
- if (hover_state == HoverState.None)
- {
- hitObject.SendMessage("OnMouseEnterCustom", SendMessageOptions.DontRequireReceiver);
- hovered = hitObject;
- }
- else
- {
- hovered.SendMessage("OnMouseExitCustom", SendMessageOptions.DontRequireReceiver);
- hitObject.SendMessage("OnMouseEnterCustom", SendMessageOptions.DontRequireReceiver);
- hovered = hitObject;
- }
- hover_state = HoverState.Hover;
- }
- else
- {
- if (hover_state == HoverState.Hover)
- {
- hovered.SendMessage("OnMouseExitCustom", SendMessageOptions.DontRequireReceiver);
- hover_state = HoverState.None;
- }
- }
- if (hover_state == HoverState.Hover)
- {
- hovered.SendMessage("OnMouseOverCustom", SendMessageOptions.DontRequireReceiver);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement