////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        public virtual void UpdateSegments(DisplayUtil.TrackSegment[] pSegments,
                                           DisplayUtil.TrackSegment[] pCuts, float pHeight)
        {
            DisplayUtil.TrackSegment[] slices = DisplayUtil.SplitTrackSegments(pSegments, pCuts);

            foreach (UiHoverMeshRectBg bg in vAllBgs)
            {
                bg.Show(false);
            }

            int trackI = 0;
            int fillI  = 0;

            foreach (DisplayUtil.TrackSegment slice in slices)
            {
                UiHoverMeshRectBg bg;

                if (slice.IsFill)
                {
                    bg = vFills[fillI++];
                }
                else
                {
                    bg = vTracks[trackI++];
                }

                float width      = slice.EndValue - slice.StartValue;
                float zeroShiftW = 0;
                float zeroShiftX = 0;

                if (slice.IsZeroAtStart == true)
                {
                    zeroShiftW = UiHoverMeshRect.SizeInset * 2;
                    zeroShiftX = -zeroShiftW;
                }
                else if (slice.IsZeroAtStart == false)
                {
                    zeroShiftW = UiHoverMeshRect.SizeInset * 2;
                }

                width += zeroShiftW;

                bg.Show(true);
                bg.UpdateSize(width, pHeight);
                bg.Background.transform.localPosition =
                    Vector3.right * (slice.StartValue + width / 2 + zeroShiftX);
            }
        }
示例#2
0
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        public virtual void UpdateSegments(ReadOnlyCollection <DisplayUtil.TrackSegment> pSegments,
                                           ReadOnlyCollection <DisplayUtil.TrackSegment> pCuts,
                                           float pRadiusInner, float pRadiusOuter)
        {
            DisplayUtil.SplitTrackSegments(pSegments, pCuts, vSlices);

            foreach (UiHoverMeshSlice bg in vAllBgs)
            {
                bg.Show(false);
            }

            int trackI = 0;
            int fillI  = 0;

            foreach (DisplayUtil.TrackSegment slice in vSlices)
            {
                UiHoverMeshSlice bg;

                if (slice.IsFill)
                {
                    bg = vFills[fillI++];
                }
                else
                {
                    bg = vTracks[trackI++];
                }

                float angle0 = slice.StartValue;
                float angle1 = slice.EndValue;

                if (slice.IsZeroAtStart == true)
                {
                    angle0 -= UiHoverMeshSlice.AngleInset * 2;
                }
                else if (slice.IsZeroAtStart == false)
                {
                    angle1 += UiHoverMeshSlice.AngleInset * 2;
                }

                bg.Show(true);
                bg.UpdateSize(pRadiusInner, pRadiusOuter, angle0, angle1);
            }
        }