Beispiel #1
0
        /*--------------------------------------------------------------------------------------------*/
        public virtual void SetCustomSize(float pWidth, float pHeight, bool pCentered = true)
        {
            vWidth  = pWidth;
            vHeight = pHeight;

            gameObject.transform.localPosition = (pCentered ?
                                                  new Vector3(vWidth / 2, 0, vHeight / 2f) : Vector3.zero);
            vHoverRect.UpdateSize(vWidth, vHeight);
            vLabel.SetSize(vWidth, vHeight, vSettings.TextSize * 0.25f, LabelCanvasScale);
        }
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        public void Build(IBaseItemState pItemState, IItemVisualSettings pSettings)
        {
            vItemState      = pItemState;
            vVisualSettings = (ItemVisualSettingsStandard)pSettings;

            float       width  = UiItem.Size * vItemState.Item.Width;
            const float height = UiItem.Size;

            gameObject.transform.SetParent(gameObject.transform, false);
            gameObject.transform.localPosition = new Vector3(width / 2, 0, height / 2f);

            vHoverRect = new UiHoverMeshRect(gameObject);
            vHoverRect.UpdateSize(width, height);

            var labelObj = new GameObject("Label");

            labelObj.transform.SetParent(gameObject.transform, false);
            vLabel = labelObj.AddComponent <UiLabel>();
            vLabel.SetSize(width, height, ArcCanvasScale);
        }
Beispiel #3
0
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        protected virtual void UpdateMeshes(float pValue, float pHoverValue, float pHoverW)
        {
            vTrackSegments.Clear();
            vTrackCuts.Clear();

            float halfGrabW       = vGrabW / 2;
            float valCenter       = pValue * vSlideW + halfGrabW;
            float hovCenter       = pHoverValue * vSlideW + halfGrabW;
            float zeroCenter      = vZeroValue * vSlideW + halfGrabW;
            bool  isHoverTooClose = (Math.Abs(valCenter - hovCenter) < vGrabW * (0.5f + HoverBarRelW));

            if (vSliderItem.FillStartingPoint == SliderItem.FillType.Zero)
            {
                float break0 = Math.Min(zeroCenter, valCenter);
                float break1 = Math.Max(zeroCenter, valCenter);

                vTrackSegments.Add(new DisplayUtil.TrackSegment {
                    StartValue = 0,
                    EndValue   = break0
                });

                vTrackSegments.Add(new DisplayUtil.TrackSegment {
                    StartValue    = break0,
                    EndValue      = break1,
                    IsFill        = true,
                    IsZeroAtStart = (break0 == zeroCenter)
                });

                vTrackSegments.Add(new DisplayUtil.TrackSegment {
                    StartValue = break1,
                    EndValue   = vWidth
                });
            }
            else
            {
                bool isMinStart = (vSliderItem.FillStartingPoint == SliderItem.FillType.MinimumValue);

                vTrackSegments.Add(new DisplayUtil.TrackSegment {
                    StartValue = 0,
                    EndValue   = valCenter,
                    IsFill     = isMinStart
                });

                vTrackSegments.Add(new DisplayUtil.TrackSegment {
                    StartValue = valCenter,
                    EndValue   = vWidth,
                    IsFill     = !isMinStart
                });
            }

            vTrackCuts.Add(new DisplayUtil.TrackSegment {
                StartValue = valCenter - halfGrabW,
                EndValue   = valCenter + halfGrabW,
            });

            if (pHoverW > 0 && !isHoverTooClose)
            {
                vTrackCuts.Add(new DisplayUtil.TrackSegment {
                    StartValue = hovCenter - pHoverW / 2,
                    EndValue   = hovCenter + pHoverW / 2,
                });

                vHover.UpdateSize(pHoverW, vHeight);
            }
            else
            {
                vHover.UpdateSize(0, 0);
            }

            vTrack.UpdateSegments(vTrackSegments.ReadOnly, vTrackCuts.ReadOnly, vHeight * 0.92f);
        }