Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ublic class CustomRaycaster : MonoBehaviour
- {
- public GameObject hovered;
- public GameObject hitObject;
- public enum HoverState{Hover, None};
- public HoverState hover_state = HoverState.None;
- void Update ()
- {
- bool isHit;
- PointerEventData pointerData = new PointerEventData(EventSystem.current);
- pointerData.position = Input.mousePosition;
- List<RaycastResult> results = new List<RaycastResult>();
- EventSystem.current.RaycastAll(pointerData, results);
- if (results.Count > 0)
- {
- Debug.Log ("UI");
- hitObject = results[0].gameObject;
- isHit = true;
- }
- else
- {
- RaycastHit hitInfo = new RaycastHit();
- Ray 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) //it is a hit - if new hit, change hovered
- {
- if (hover_state == HoverState.None)
- {
- hitObject.SendMessage("OnMouseEnter", SendMessageOptions.DontRequireReceiver);
- hovered = hitObject;
- }
- hover_state = HoverState.Hover;
- }
- else
- {
- if (hover_state == HoverState.Hover)
- {
- hovered.SendMessage("OnMouseExit", SendMessageOptions.DontRequireReceiver);
- }
- hover_state = HoverState.None;
- }
- if (hover_state == HoverState.Hover)
- {
- hitObject.SendMessage("OnMouseOver", SendMessageOptions.DontRequireReceiver);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement