//////////////////////////////////////////////////////////////////////////////////////////////// /*--------------------------------------------------------------------------------------------*/ protected override IItemVisualSettings GetSettingsInner(IBaseItem pItem, IItemVisualSettings pDefault, bool pFillWithDefault) { var sett = new ItemVisualSettingsStandard(); if ( pFillWithDefault ) { sett.FillWith(pDefault, false); } else { sett.TextSize = TextSize; sett.TextColor = TextColor; sett.TextFont = TextFont; sett.ArrowIconColor = ArrowIconColor; sett.ToggleIconColor = ToggleIconColor; sett.BackgroundColor = BackgroundColor; sett.EdgeColor = EdgeColor; sett.HighlightColor = HighlightColor; sett.SelectionColor = SelectionColor; sett.SliderTrackColor = SliderTrackColor; sett.SliderFillColor = SliderFillColor; sett.SliderTickColor = SliderTickColor; } sett.Renderer = GetRendererForItem(pItem); sett.PalmRenderer = typeof(UiPalmRenderer); return sett; }
//////////////////////////////////////////////////////////////////////////////////////////////// /*--------------------------------------------------------------------------------------------*/ public virtual void Build(MenuState pMenuState, IItemVisualSettings pSettings, float pAngle0, float pAngle1) { vMenuState = pMenuState; vSettings = (ItemVisualSettingsStandard)pSettings; vAngle0 = pAngle0; vAngle1 = pAngle1; vMeshSteps = (int)Math.Round(Math.Max(2, (vAngle1-vAngle0)/Math.PI*60)); //// vBackground = new GameObject("Background"); vBackground.transform.SetParent(gameObject.transform, false); vBackground.AddComponent<MeshRenderer>(); MeshFilter bgFilt = vBackground.AddComponent<MeshFilter>(); vBackgroundMeshBuilder = new MeshBuilder(); BuildMesh(vBackgroundMeshBuilder); vBackgroundMeshBuilder.Commit(); vBackgroundMeshBuilder.CommitColors(Color.clear); bgFilt.sharedMesh = vBackgroundMeshBuilder.Mesh; //// var labelObj = new GameObject("Label"); labelObj.transform.SetParent(gameObject.transform, false); labelObj.transform.localPosition = new Vector3(0, 0, InnerRadius); labelObj.transform.localRotation = Quaternion.FromToRotation(Vector3.back, Vector3.right); labelObj.transform.localScale = new Vector3((vMenuState.IsOnLeftSide ? 1 : -1), 1, 1); vLabel = labelObj.AddComponent<UiLabel>(); vLabel.AlignLeft = vMenuState.IsOnLeftSide; }
//////////////////////////////////////////////////////////////////////////////////////////////// /*--------------------------------------------------------------------------------------------*/ public virtual void Build(IHovercastMenuState pMenuState, IBaseItemState pItemState, float pArcAngle, IItemVisualSettings pSettings) { vMenuState = pMenuState; vItemState = pItemState; vSelItem = (vItemState.Item as ISelectableItem); vSettings = (ItemVisualSettingsStandard)pSettings; //// vHoverSlice = new UiHoverMeshSlice(gameObject); vHoverSlice.DrawOuterEdge = true; vHoverSlice.UpdateSize(InnerRadius, OuterRadius, pArcAngle); //// vIcon = new GameObject("Icon"); vIcon.transform.SetParent(gameObject.transform, false); vIcon.transform.localRotation = Quaternion.FromToRotation(Vector3.forward, Vector3.up)* Quaternion.FromToRotation(Vector3.right, Vector3.up); vIcon.AddComponent<MeshRenderer>(); MeshFilter iconFilt = vIcon.AddComponent<MeshFilter>(); vIconMeshBuilder = new MeshBuilder(); MeshUtil.BuildQuadMesh(vIconMeshBuilder); Materials.SetMeshIconCoords(vIconMeshBuilder, Materials.IconOffset.Parent); vIconMeshBuilder.Commit(); vIconMeshBuilder.CommitColors(Color.clear); iconFilt.sharedMesh = vIconMeshBuilder.Mesh; }
//////////////////////////////////////////////////////////////////////////////////////////////// /*--------------------------------------------------------------------------------------------*/ public virtual void Build(IHovercastMenuState pMenuState, IBaseItemState pItemState, float pArcAngle, IItemVisualSettings pSettings) { vMenuState = pMenuState; vItemState = pItemState; vSettings = (ItemVisualSettingsStandard)pSettings; //// vHoverSlice = new UiHoverMeshSlice(gameObject); vHoverSlice.UpdateSize(InnerRadius, OuterRadius, pArcAngle); //// var labelObj = new GameObject("Label"); labelObj.transform.SetParent(gameObject.transform, false); labelObj.transform.localPosition = new Vector3(0, 0, 1); labelObj.transform.localRotation = Quaternion.FromToRotation(Vector3.back, Vector3.right); labelObj.transform.localScale = new Vector3((vMenuState.IsOnLeftSide ? 1 : -1), 1, 1); vLabel = labelObj.AddComponent<UiLabel>(); vLabel.AlignLeft = vMenuState.IsOnLeftSide; }
//////////////////////////////////////////////////////////////////////////////////////////////// /*--------------------------------------------------------------------------------------------*/ public void FillWith(IItemVisualSettings pSourceSettings, bool pIncludeRenderer) { ItemVisualSettingsStandard sett = (ItemVisualSettingsStandard)pSourceSettings; if (pIncludeRenderer) { Renderer = sett.Renderer; PalmRenderer = sett.PalmRenderer; } TextSize = sett.TextSize; TextColor = sett.TextColor; TextFont = sett.TextFont; ArrowIconColor = sett.ArrowIconColor; ToggleIconColor = sett.ToggleIconColor; BackgroundColor = sett.BackgroundColor; EdgeColor = sett.EdgeColor; HighlightColor = sett.HighlightColor; SelectionColor = sett.SelectionColor; SliderTrackColor = sett.SliderTrackColor; SliderFillColor = sett.SliderFillColor; SliderTickColor = sett.SliderTickColor; }
/*--------------------------------------------------------------------------------------------*/ protected override IItemVisualSettings GetSettingsInner(IBaseItem pItem, IItemVisualSettings pDefault, bool pFillWithDefault) { vDefaultSettings = (ItemVisualSettingsStandard)pDefault; HandleValueChanged(null); return vHueSettings; }
//////////////////////////////////////////////////////////////////////////////////////////////// /*--------------------------------------------------------------------------------------------*/ public void Awake() { vHueSettings = new ItemVisualSettingsStandard(); vHueSlider = (ISliderItem)gameObject.GetComponent<HovercastItem>().GetItem(); vHueSlider.OnValueChanged += HandleValueChanged; }
//////////////////////////////////////////////////////////////////////////////////////////////// /*--------------------------------------------------------------------------------------------*/ 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"); }