/*--------------------------------------------------------------------------------------------*/
        public virtual void Update()
        {
            vMainAlpha = UiItemSelectRenderer.GetArcAlpha(vMenuState) * vAnimAlpha;

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

            Color colBg = vSettings.BackgroundColor;

            colBg.a *= vMainAlpha;

            vHoverSlice.UpdateBackground(colBg);

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

            vLabel.Alpha    = vMainAlpha;
            vLabel.FontName = vSettings.TextFont;
            vLabel.FontSize = vSettings.TextSize;
            vLabel.Color    = vSettings.TextColor;
            vLabel.Label    = vItemState.Item.Label;
        }
Esempio n. 2
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);
        }
Esempio n. 3
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;
        }
Esempio n. 4
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;
        }
Esempio n. 5
0
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        public virtual void Build(IHovercastMenuState pMenuState, IBaseItemState pItemState,
                                  float pArcAngle, IItemVisualSettings pSettings)
        {
            vMenuState  = pMenuState;
            vItemState  = pItemState;
            vAngle0     = -pArcAngle / 2f;
            vAngle1     = pArcAngle / 2f;
            vSettings   = (ItemVisualSettingsStandard)pSettings;
            vSliderItem = (ISliderItem)vItemState.Item;
            vTicks      = new GameObject[vSliderItem.Ticks];

            const float pi = (float)Math.PI;

            vGrabArc      = pi / 40f;
            vSlideDegree0 = (vAngle0 + vGrabArc / 2) / pi * 180;
            vSlideDegrees = (vAngle1 - vAngle0 - vGrabArc) / pi * 180;
            vZeroValue    = (0 - vSliderItem.RangeMin) / (vSliderItem.RangeMax - vSliderItem.RangeMin);

            ////

            vHiddenSlice = new UiHoverMeshSlice(gameObject, true);
            vHiddenSlice.UpdateSize(1, 1.5f, pArcAngle);
            vHiddenSlice.UpdateBackground(Color.clear);

            var trackObj = new GameObject("Track");

            trackObj.transform.SetParent(gameObject.transform, false);
            trackObj.transform.localRotation = Quaternion.AngleAxis(vAngle0 / pi * 180, Vector3.up);

            vTrack         = new UiItemSliderTrackRenderer(trackObj);
            vTrackSegments = new ReadList <DisplayUtil.TrackSegment>();
            vTrackCuts     = new ReadList <DisplayUtil.TrackSegment>();

            ////

            if (vSliderItem.Ticks > 1)
            {
                Vector3 quadScale   = new Vector3(UiHoverMeshSlice.AngleInset * 2, 0.36f, 0.1f);
                float   percPerTick = 1 / (float)(vSliderItem.Ticks - 1);

                vTickMeshBuilder = new MeshBuilder();
                MeshUtil.BuildQuadMesh(vTickMeshBuilder);
                vTickMeshBuilder.Commit();
                vTickMeshBuilder.CommitColors(Color.clear);

                for (int i = 0; i < vSliderItem.Ticks; ++i)
                {
                    var tickObj = new GameObject("Tick" + i);
                    tickObj.transform.SetParent(gameObject.transform, false);
                    tickObj.transform.localRotation = Quaternion.AngleAxis(
                        vSlideDegree0 + vSlideDegrees * i * percPerTick, Vector3.up);
                    vTicks[i] = tickObj;

                    var quadObj = new GameObject("Quad");
                    quadObj.transform.SetParent(tickObj.transform, false);
                    quadObj.transform.localPosition = new Vector3(0, 0, 1.25f);
                    quadObj.transform.localRotation = TickQuatRot;
                    quadObj.transform.localScale    = quadScale;
                    quadObj.AddComponent <MeshRenderer>();

                    MeshFilter quadFilt = quadObj.AddComponent <MeshFilter>();
                    quadFilt.sharedMesh = vTickMeshBuilder.Mesh;
                }
            }

            ////

            vGrabHold = new GameObject("GrabHold");
            vGrabHold.transform.SetParent(gameObject.transform, false);

            var grabObj = new GameObject("Grab");

            grabObj.transform.SetParent(vGrabHold.transform, false);

            vGrab = grabObj.AddComponent <UiItemSliderGrabRenderer>();
            vGrab.Build(vMenuState, vItemState, vGrabArc, pSettings);

            ////

            vHoverHold = new GameObject("HoverHold");
            vHoverHold.transform.SetParent(gameObject.transform, false);

            var hoverObj = new GameObject("Hover");

            hoverObj.transform.SetParent(vHoverHold.transform, false);

            vHover = new UiHoverMeshSlice(hoverObj, false, "Hover");
        }
Esempio n. 6
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);
        }
Esempio n. 7
0
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        public virtual void Build(MenuState pMenuState, IBaseItemState pItemState,
                                  float pArcAngle, IItemVisualSettings pSettings)
        {
            vMenuState  = pMenuState;
            vItemState  = pItemState;
            vAngle0     = -pArcAngle / 2f + UiHoverMeshSlice.AngleInset;
            vAngle1     = pArcAngle / 2f - UiHoverMeshSlice.AngleInset;
            vSettings   = (ItemVisualSettingsStandard)pSettings;
            vSliderItem = (ISliderItem)vItemState.Item;

            const float pi = (float)Math.PI;

            vGrabArcHalf  = pi / 80f;
            vSlideDegree0 = (vAngle0 + vGrabArcHalf) / pi * 180;
            vSlideDegrees = (vAngle1 - vAngle0 - vGrabArcHalf * 2) / pi * 180;

            ////

            vHiddenSlice = new UiHoverMeshSlice(gameObject, true);
            vHiddenSlice.Resize(1, 1.5f, pArcAngle);
            vHiddenSlice.UpdateBackground(Color.clear);

            vTrackA = new UiHoverMeshSlice(gameObject, true, "TrackA");
            vTrackB = new UiHoverMeshSlice(gameObject, true, "TrackB");
            vFillA  = new UiHoverMeshSlice(gameObject, true, "FillA");
            vFillB  = new UiHoverMeshSlice(gameObject, true, "FillB");

            ////

            vTickMat              = new Material(Shader.Find("Unlit/AlphaSelfIllum"));
            vTickMat.renderQueue -= 400;
            vTickMat.color        = Color.clear;

            if (vSliderItem.Ticks > 1)
            {
                Vector3 quadScale   = new Vector3(UiHoverMeshSlice.AngleInset * 2, 0.36f, 0.1f);
                float   percPerTick = 1 / (float)(vSliderItem.Ticks - 1);

                vTicks = new GameObject[vSliderItem.Ticks];

                for (int i = 0; i < vSliderItem.Ticks; ++i)
                {
                    var tick = new GameObject("Tick" + i);
                    tick.transform.SetParent(gameObject.transform, false);
                    tick.transform.localRotation = Quaternion.AngleAxis(
                        vSlideDegree0 + vSlideDegrees * i * percPerTick, Vector3.up);
                    vTicks[i] = tick;

                    var quad = GameObject.CreatePrimitive(PrimitiveType.Quad);
                    quad.renderer.sharedMaterial = vTickMat;
                    quad.transform.SetParent(tick.transform, false);
                    quad.transform.localPosition = new Vector3(0, 0, 1.25f);
                    quad.transform.localRotation =
                        Quaternion.FromToRotation(Vector3.back, Vector3.down);
                    quad.transform.localScale = quadScale;
                }
            }

            ////

            vGrabHold = new GameObject("GrabHold");
            vGrabHold.transform.SetParent(gameObject.transform, false);

            var grabObj = new GameObject("Grab");

            grabObj.transform.SetParent(vGrabHold.transform, false);

            vGrab = grabObj.AddComponent <UiItemSliderGrabRenderer>();
            vGrab.Build(vMenuState, vItemState, vGrabArcHalf * 2, pSettings);

            ////

            vHoverHold = new GameObject("HoverHold");
            vHoverHold.transform.SetParent(gameObject.transform, false);

            var hoverObj = new GameObject("Hover");

            hoverObj.transform.SetParent(vHoverHold.transform, false);

            vHover = new UiHoverMeshSlice(hoverObj, false, "Hover");
        }
		////////////////////////////////////////////////////////////////////////////////////////////////
		/*--------------------------------------------------------------------------------------------*/
		public virtual void Build(IHovercastMenuState pMenuState, IBaseItemState pItemState,
													float pArcAngle, IItemVisualSettings pSettings) {
			vMenuState = pMenuState;
			vItemState = pItemState;
			vAngle0 = -pArcAngle/2f;
			vAngle1 = pArcAngle/2f;
			vSettings = (ItemVisualSettingsStandard)pSettings;
			vSliderItem = (ISliderItem)vItemState.Item;
			vTicks = new GameObject[vSliderItem.Ticks];

			const float pi = (float)Math.PI;

			vGrabArc = pi/40f;
			vSlideDegree0 = (vAngle0+vGrabArc/2)/pi*180;
			vSlideDegrees = (vAngle1-vAngle0-vGrabArc)/pi*180;
			vZeroValue = (0-vSliderItem.RangeMin)/(vSliderItem.RangeMax-vSliderItem.RangeMin);

			////

			vHiddenSlice = new UiHoverMeshSlice(gameObject, true);
			vHiddenSlice.UpdateSize(1, 1.5f, pArcAngle);
			vHiddenSlice.UpdateBackground(Color.clear);

			var trackObj = new GameObject("Track");
			trackObj.transform.SetParent(gameObject.transform, false);
			trackObj.transform.localRotation = Quaternion.AngleAxis(vAngle0/pi*180, Vector3.up);

			vTrack = new UiItemSliderTrackRenderer(trackObj);
			vTrackSegments = new ReadList<DisplayUtil.TrackSegment>();
			vTrackCuts = new ReadList<DisplayUtil.TrackSegment>();

			////

			if ( vSliderItem.Ticks > 1 ) {
				Vector3 quadScale = new Vector3(UiHoverMeshSlice.AngleInset*2, 0.36f, 0.1f);
				float percPerTick = 1/(float)(vSliderItem.Ticks-1);

				vTickMeshBuilder = new MeshBuilder();
				MeshUtil.BuildQuadMesh(vTickMeshBuilder);
				vTickMeshBuilder.Commit();
				vTickMeshBuilder.CommitColors(Color.clear);

				for ( int i = 0 ; i < vSliderItem.Ticks ; ++i ) {
					var tickObj = new GameObject("Tick"+i);
					tickObj.transform.SetParent(gameObject.transform, false);
					tickObj.transform.localRotation = Quaternion.AngleAxis(
						vSlideDegree0+vSlideDegrees*i*percPerTick, Vector3.up);
					vTicks[i] = tickObj;

					var quadObj = new GameObject("Quad");
					quadObj.transform.SetParent(tickObj.transform, false);
					quadObj.transform.localPosition = new Vector3(0, 0, 1.25f);
					quadObj.transform.localRotation = TickQuatRot;
					quadObj.transform.localScale = quadScale;
					quadObj.AddComponent<MeshRenderer>();

					MeshFilter quadFilt = quadObj.AddComponent<MeshFilter>();
					quadFilt.sharedMesh = vTickMeshBuilder.Mesh;
				}
			}

			////

			vGrabHold = new GameObject("GrabHold");
			vGrabHold.transform.SetParent(gameObject.transform, false);

			var grabObj = new GameObject("Grab");
			grabObj.transform.SetParent(vGrabHold.transform, false);

			vGrab = grabObj.AddComponent<UiItemSliderGrabRenderer>();
			vGrab.Build(vMenuState, vItemState, vGrabArc, pSettings);

			////

			vHoverHold = new GameObject("HoverHold");
			vHoverHold.transform.SetParent(gameObject.transform, false);

			var hoverObj = new GameObject("Hover");
			hoverObj.transform.SetParent(vHoverHold.transform, false);

			vHover = new UiHoverMeshSlice(hoverObj, false, "Hover");
		}