Example #1
0
    public ITooltipable CheckForUITooltipable()
    {
        ITooltipable foundTooltipable = null;

        m_PointerEventData          = new PointerEventData(m_EventSystem);
        m_PointerEventData.position = Input.mousePosition;
        List <RaycastResult> results = new List <RaycastResult>();

        m_Raycaster.Raycast(m_PointerEventData, results);

        foreach (RaycastResult result in results)
        {
            foundTooltipable = result.gameObject.GetComponent <ITooltipable>();
            if (foundTooltipable != null)
            {
                if (!foundTooltipable.Tooltipable)
                {
                    foundTooltipable = null;
                }
                else
                {
                    break;
                }
            }
        }

        return(foundTooltipable);
    }
Example #2
0
    public void UpdateSystem(ITooltipable newTooltipable)
    {
        ITooltipable previousTooltipable = currentTooltipable;

        currentTooltipable = newTooltipable;

        if (currentTooltipable == previousTooltipable)
        {
            if (currentTooltipable != null)
            {
            }
        }
        else
        {
            if (previousTooltipable != null)
            {
                previousTooltipable.OnEndTooltip?.Invoke();
            }
            else
            {
                tooltipInterface.SetTooltipVisibility(true);
            }

            if (currentTooltipable != null)
            {
                currentTooltipable.OnStartTooltip?.Invoke();
                tooltipInterface.SetTooltipInfos(currentTooltipable.GetTooltipInformations);
            }
            else
            {
                tooltipInterface.SetTooltipVisibility(false);
            }
        }
    }
Example #3
0
    public WorldMouseResult CalculateCurrentWorldMouseResult()
    {
        WorldMouseResult result = default;

        Ray cameraRay = Camera.main.ScreenPointToRay(Input.mousePosition);

        RaycastHit[] hits             = Physics.RaycastAll(cameraRay, mouseCheckMaxDistance, worldMouseLayerMask);
        ITooltipable foundTooltipable = uiRaycaster.CheckForUITooltipable();

        //OnMouseInUI = (foundTooltipable != null);

        foreach (RaycastHit hit in hits)
        {
            if (hit.collider.gameObject.layer == 8)
            {
                result.mouseWorldPosition = hit.point;
            }
            else
            {
                if (!OnMouseInUI)
                {
                    if (foundTooltipable == null && hit.collider.gameObject.layer == 15)
                    {
                        foundTooltipable = hit.collider.GetComponent <ITooltipable>();
                    }
                }
            }
        }

        result.mouseIsOnUI        = OnMouseInUI;
        result.currentTooltipable = foundTooltipable;

        return(result);
    }