예제 #1
0
        /*--------------------------------------------------------------------------------------------*/
        public virtual void Update()
        {
            vMainAlpha = UiItemSelectRenderer.GetArcAlpha(vMenuState) * vAnimAlpha;

            if (!vItemState.Item.IsEnabled || !vItemState.Item.AreParentsEnabled)
            {
                vMainAlpha *= 0.333f;
            }

            float easedVal   = GetEasedValue(vSliderItem.Value, vSliderItem.SnappedValue);
            float easedHover = (vSliderItem.HoverValue == null ? easedVal :
                                GetEasedValue((float)vSliderItem.HoverValue, (float)vSliderItem.HoverSnappedValue));
            float hoverArcHalf = 0;

            Color colTrack = vSettings.SliderTrackColor;
            Color colFill  = vSettings.SliderFillColor;
            Color colTick  = vSettings.SliderTickColor;

            colTrack.a *= vMainAlpha;
            colFill.a  *= vMainAlpha;
            colTick.a  *= vMainAlpha;

            vTrackA.UpdateBackground(colTrack);
            vTrackB.UpdateBackground(colTrack);
            vFillA.UpdateBackground(colFill);
            vFillB.UpdateBackground(colFill);
            vTickMat.color = colTick;

            float slideDeg = vSlideDegree0 + vSlideDegrees * easedVal;

            vGrabHold.transform.localRotation = Quaternion.AngleAxis(slideDeg, Vector3.up);

            if (vSliderItem.HoverSnappedValue != null)
            {
                slideDeg = vSlideDegree0 + vSlideDegrees * easedHover;
                vHoverHold.transform.localRotation = Quaternion.AngleAxis(slideDeg, Vector3.up);

                float high   = vItemState.MaxHighlightProgress;
                float select = 1 - (float)Math.Pow(1 - vItemState.SelectionProgress, 1.5f);

                Color colBg   = vSettings.BackgroundColor;
                Color colHigh = vSettings.HighlightColor;
                Color colSel  = vSettings.SelectionColor;

                colBg.a   *= high * vMainAlpha;
                colHigh.a *= high * vMainAlpha;
                colSel.a  *= select * vMainAlpha;

                vHover.UpdateBackground(colBg);
                vHover.UpdateHighlight(colHigh, high);
                vHover.UpdateSelect(colSel, select);

                hoverArcHalf = vGrabArcHalf * high * 0.333f - UiHoverMeshSlice.AngleInset;
            }

            UpdateMeshes(easedVal, easedHover, hoverArcHalf);
        }
예제 #2
0
        /*--------------------------------------------------------------------------------------------*/
        public virtual void Update()
        {
            vMainAlpha = GetArcAlpha(vMenuState) * vAnimAlpha;

            if (!vItemState.Item.IsEnabled || !vItemState.Item.AreParentsEnabled)
            {
                vMainAlpha *= 0.333f;
            }

            ISelectableItem selItem  = (vItemState.Item as ISelectableItem);
            float           high     = vItemState.MaxHighlightProgress;
            bool            showEdge = (vItemState.IsNearestHighlight && !vItemState.IsSelectionPrevented &&
                                        selItem != null && selItem.AllowSelection);
            float edge        = (showEdge ? high : 0);
            float select      = 1 - (float)Math.Pow(1 - vItemState.SelectionProgress, 1.5f);
            float selectAlpha = select;

            if (selItem != null && selItem.IsStickySelected)
            {
                selectAlpha = 1;
            }

            Color colBg   = vSettings.BackgroundColor;
            Color colEdge = vSettings.EdgeColor;
            Color colHigh = vSettings.HighlightColor;
            Color colSel  = vSettings.SelectionColor;

            colBg.a   *= vMainAlpha;
            colEdge.a *= edge * vMainAlpha;
            colHigh.a *= high * vMainAlpha;
            colSel.a  *= selectAlpha * vMainAlpha;

            vHoverSlice.UpdateBackground(colBg);
            vHoverSlice.UpdateEdge(colEdge);
            vHoverSlice.UpdateHighlight(colHigh, high);
            vHoverSlice.UpdateSelect(colSel, select);

            if (vSettings.TextSize != vLabel.FontSize)
            {
                vLabel.SetSize(ArcCanvasThickness * ArcCanvasScale,
                               vSettings.TextSize * 1.5f * ArcCanvasScale, ArcCanvasScale);
            }

            vLabel.Alpha    = vMainAlpha;
            vLabel.FontName = vSettings.TextFont;
            vLabel.FontSize = vSettings.TextSize;
            vLabel.Color    = vSettings.TextColor;
            vLabel.Label    = vItemState.Item.Label;
        }
예제 #3
0
        /*--------------------------------------------------------------------------------------------*/
        public virtual void Update()
        {
            float high            = vItemState.MaxHighlightProgress;
            bool  showEdge        = DisplayUtil.IsEdgeVisible(vItemState);
            float edge            = (showEdge ? high : 0);
            float select          = vItemState.SelectionProgress;
            float alpha           = Math.Max(0, 1 - (float)Math.Pow(1 - vMenuState.DisplayStrength, 2));
            float enabledAnimProg = GetEnabledAnimProgress();

            if (vSelItem.IsEnabled && vMenuState.NavBackStrength > select)
            {
                select = vMenuState.NavBackStrength;
                edge   = select;
            }

            select = 1 - (float)Math.Pow(1 - select, 1.5f);

            Color colBg   = vSettings.BackgroundColor;
            Color colEdge = vSettings.EdgeColor;
            Color colHigh = vSettings.HighlightColor;
            Color colSel  = vSettings.SelectionColor;
            Color colIcon = vSettings.ArrowIconColor;

            colBg.a   *= alpha * Mathf.Lerp(0.333f, 1, enabledAnimProg);
            colEdge.a *= edge * alpha;
            colHigh.a *= high * alpha;
            colSel.a  *= select * alpha;
            colIcon.a *= (vItemState.MaxHighlightProgress * 0.75f + 0.25f) * alpha * enabledAnimProg;

            vHoverSlice.UpdateBackground(colBg);
            vHoverSlice.UpdateEdge(colEdge);
            vHoverSlice.UpdateHighlight(colHigh, high);
            vHoverSlice.UpdateSelect(colSel, select);

            vIconMeshBuilder.CommitColors(colIcon);
            vIcon.transform.localScale = Vector3.one * vSettings.TextSize * 0.75f *
                                         UiItemSelectRenderer.ArcCanvasScale;
        }
예제 #4
0
        /*--------------------------------------------------------------------------------------------*/
        public virtual void Update()
        {
            vMainAlpha = UiItemSelectRenderer.GetArcAlpha(vMenuState) * vAnimAlpha;

            if (!vSliderItem.IsEnabled || !vSliderItem.IsAncestryEnabled)
            {
                vMainAlpha *= 0.333f;
            }

            const int easePower = 3;
            int       snaps     = vSliderItem.Snaps;
            float     easedVal  = DisplayUtil.GetEasedValue(
                snaps, vSliderItem.Value, vSliderItem.SnappedValue, easePower);
            float easedHover = easedVal;
            float hoverArc   = 0;

            if (vSliderItem.HoverValue != null)
            {
                easedHover = DisplayUtil.GetEasedValue(snaps, (float)vSliderItem.HoverValue,
                                                       (float)vSliderItem.HoverSnappedValue, easePower);
            }

            Color colTrack = vSettings.SliderTrackColor;
            Color colFill  = vSettings.SliderFillColor;
            Color colTick  = vSettings.SliderTickColor;

            colTrack.a *= vMainAlpha;
            colFill.a  *= vMainAlpha;
            colTick.a  *= vMainAlpha;

            vTrack.SetColors(colTrack, colFill);

            if (vTickMeshBuilder != null)
            {
                vTickMeshBuilder.CommitColors(colTick);
            }

            ////

            float slideDeg = vSlideDegree0 + vSlideDegrees * easedVal;

            vGrabHold.transform.localRotation = Quaternion.AngleAxis(slideDeg, Vector3.up);

            if (vSliderItem.HoverValue != null)
            {
                slideDeg = vSlideDegree0 + vSlideDegrees * easedHover;
                vHoverHold.transform.localRotation = Quaternion.AngleAxis(slideDeg, Vector3.up);

                float high   = vItemState.MaxHighlightProgress;
                float select = 1 - (float)Math.Pow(1 - vItemState.SelectionProgress, 1.5f);

                Color colBg   = vSettings.BackgroundColor;
                Color colHigh = vSettings.HighlightColor;
                Color colSel  = vSettings.SelectionColor;

                colBg.a   *= high * vMainAlpha;
                colHigh.a *= high * vMainAlpha;
                colSel.a  *= select * vMainAlpha;

                vHover.UpdateBackground(colBg);
                vHover.UpdateHighlight(colHigh, high);
                vHover.UpdateSelect(colSel, select);

                hoverArc = vGrabArc * high * HoverBarRelW;
            }

            UpdateMeshes(easedVal, easedHover, hoverArc);
        }