private void updateTooltipVisibility(InputState state) { // Nothing to do if we're still hovering a tooltipped drawable if (currentlyDisplayed?.Hovering == true) { return; } // Hide if we stopped hovering and do not have any button pressed. if (currentlyDisplayed != null && !state.Mouse.HasMainButtonPressed) { hideTooltip(); } findTooltipTask?.Cancel(); findTooltipTask = Scheduler.AddDelayed(delegate { var tooltipTarget = inputManager.HoveredDrawables // Skip hovered drawables above this tooltip container .SkipWhile(d => d != this) .Skip(1) // Only handle drawables above any potentially nested tooltip container .TakeWhile(d => !(d is TooltipContainer)) .OfType <IHasTooltip>() .FirstOrDefault(); if (tooltipTarget == null) { return; } currentlyDisplayed = tooltipTarget; tooltip.Show(); }, (1 - tooltip.Alpha) * AppearDelay); }
private void updateTooltipState(InputState state) { if (currentlyDisplayed?.Hovering != true) { if (currentlyDisplayed != null && !state.Mouse.HasMainButtonPressed) { tooltip.Delay(150); tooltip.FadeOut(500, EasingTypes.OutQuint); currentlyDisplayed = null; } findTooltipTask?.Cancel(); findTooltipTask = Scheduler.AddDelayed(delegate { var tooltipTarget = inputManager.HoveredDrawables.OfType <IHasTooltip>().FirstOrDefault(); if (tooltipTarget == null) { return; } tooltip.TooltipText = tooltipTarget.TooltipText; tooltip.FadeIn(500, EasingTypes.OutQuint); currentlyDisplayed = tooltipTarget; }, (1 - tooltip.Alpha) * default_appear_delay); } }
private void UpdateTooltip() { PointerEventData data = new PointerEventData(EventSystem); data.position = Input.mousePosition; List <RaycastResult> results = new List <RaycastResult>(); bool changed = false; bool any = false; Raycaster.Raycast(data, results); foreach (RaycastResult result in results) { IHasTooltip tooltip = result.gameObject.GetComponent <IHasTooltip>(); if (tooltip != null) { any = true; if (tooltip != _currentTooltip) { changed = true; ClearTooltip(); } _currentTooltip = tooltip; } } if (any == false) { _currentTooltip = null; } if (_currentTooltip == null) { ClearTooltip(); } else if (changed) { GameObject newTooltip = _currentTooltip.InstantiateTooltip(); newTooltip.transform.SetParent(TooltipParent); } }
private void hideTooltip() { tooltip.Hide(); currentlyDisplayed = null; }