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); }
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); } } }
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); }