/*--------------------------------------------------------------------------------------------*/ 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); }
//////////////////////////////////////////////////////////////////////////////////////////////// /*--------------------------------------------------------------------------------------------*/ 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); }