Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
            }
        }
Esempio n. 3
0
    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);
        }
    }
Esempio n. 4
0
 private void hideTooltip()
 {
     tooltip.Hide();
     currentlyDisplayed = null;
 }