Exemplo n.º 1
0
    private void TryToRaycast(Clickable.Click clickType)
    {
        // Do not raycast through UI element
        if (!EventSystem.current.IsPointerOverGameObject())
        {
            RaycastHit hit = new RaycastHit();
            if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit, Mathf.Infinity, LayerMask))
            {
                try {
                    hit.transform.gameObject.SendMessage("OnClick", clickType);
                } catch (Exception e) {
                    Debug.LogError(e);
                }
            }
            else
            {
                OnBlindClick?.Invoke(this, new EventClickArgs(clickType));
            }

            OnGeneralClick?.Invoke(this, new EventClickArgs(clickType));
        }
    }
Exemplo n.º 2
0
 public EventClickArgs(Clickable.Click clickType)
 {
     ClickType = clickType;
 }
Exemplo n.º 3
0
    private void TryToRaycast(Clickable.Click clickType)
    {
        // Do not raycast through UI element
        if (!EventSystem.current.IsPointerOverGameObject())
        {
            RaycastHit hit = new RaycastHit();
            if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit, Mathf.Infinity, LayerMask))
            {
                // try {
                if (clickType == Clickable.Click.MOUSE_HOVER)
                {
                    if (EventSystem.current.IsPointerOverGameObject())
                    {
                        return;
                    }

                    if (hoveredObject == null)
                    {
                        hit.collider.transform.gameObject.SendMessage("OnHoverStart");
                        HoverStartTime = System.DateTime.UtcNow;
                        hoveredObject  = hit.collider.transform.gameObject;
                    }
                    else
                    {
                        if (!GameObject.ReferenceEquals(hit.collider.transform.gameObject, hoveredObject))
                        {
                            hoveredObject.SendMessage("OnHoverEnd");
                            if (endingHover)
                            {
                                StopAllCoroutines();
                                endingHover = false;
                            }
                            hit.collider.transform.gameObject.SendMessage("OnHoverStart");
                            HoverStartTime = System.DateTime.UtcNow;
                            hoveredObject  = hit.collider.transform.gameObject;
                        }
                        else
                        {
                            if (endingHover)
                            {
                                StopAllCoroutines();
                                endingHover    = false;
                                HoverStartTime = System.DateTime.UtcNow;
                            }
                        }
                    }
                    //} catch (Exception e) {
                    //  Debug.LogError(e);
                    //}
                }
                else
                {
                    //hit.collider.transform.gameObject.SendMessage("OnClick", clickType);
                    if (hoveredObject != null)
                    {
                        hoveredObject.transform.gameObject.SendMessage("OnClick", clickType);
                        if (!endingHover)
                        {
                            StartCoroutine(HoverEnd());
                        }
                    }
                }
                //  } catch (Exception e) {
                //      Debug.LogError(e);
                //  }
            }
            else
            {
                if (hoveredObject != null)
                {
                    hoveredObject.transform.gameObject.SendMessage("OnClick", clickType);
                    if (!endingHover)
                    {
                        StartCoroutine(HoverEnd());
                    }
                }
                else
                {
                    OnBlindClick?.Invoke(this, new EventClickArgs(clickType));
                }
            }

            OnGeneralClick?.Invoke(this, new EventClickArgs(clickType));
        }
    }