//////////////////////////////////////////////////////////////////////////////////////////////// /*--------------------------------------------------------------------------------------------*/ public void Awake() { vHueSettings = new ItemVisualSettingsStandard(); vHueSlider = (ISliderItem)gameObject.GetComponent <HovercastItem>().GetItem(); vHueSlider.OnValueChanged += HandleValueChanged; }
//////////////////////////////////////////////////////////////////////////////////////////////// /*--------------------------------------------------------------------------------------------*/ private void HandleValueChanged(ISelectableItem <bool> pItem) { if (!pItem.Value) { return; } ISliderItem hue = (ISliderItem)HueSlider.GetItem(); hue.IsEnabled = (Mode == DemoEnvironment.ColorMode.Custom); Enviro.SetColorMode(Mode, hue.RangeValue); }
/*--------------------------------------------------------------------------------------------*/ private void TryUpdateSliderValue() { ISliderItem sliderItem = (vItemState.Item as ISliderItem); if (sliderItem == null) { return; } Vector3?cursorWorld = vItemState.NearestCursorWorldPos; bool ignoreSlider = (!vItemState.IsNearestHighlight || vItemState.MaxHighlightProgress <= 0 || cursorWorld == null); if (ignoreSlider) { sliderItem.HoverValue = null; return; } Vector3 cursorLocal = gameObject.transform.InverseTransformPoint((Vector3)cursorWorld); cursorLocal.y = 0; Vector3 cursorDir = cursorLocal.normalized; Quaternion diff = Quaternion.FromToRotation(vSlideDir0, cursorDir); float cursorDeg; Vector3 cursorAxis; diff.ToAngleAxis(out cursorDeg, out cursorAxis); if (cursorAxis.y < 0) { cursorDeg = 0; } if (sliderItem.IsStickySelected) { sliderItem.Value = cursorDeg / vSlideDegrees; sliderItem.HoverValue = null; } else if (sliderItem.AllowJump) { sliderItem.HoverValue = cursorDeg / vSlideDegrees; } else { sliderItem.HoverValue = null; } }
//////////////////////////////////////////////////////////////////////////////////////////////// /*--------------------------------------------------------------------------------------------*/ private void TryUpdateSliderValue() { ISliderItem sliderItem = (vItemState.Item as ISliderItem); if (sliderItem == null) { return; } Vector3?cursorWorld = vItemState.NearestCursorWorldPos; bool ignoreSlider = (!vItemState.IsNearestHighlight || vItemState.MaxHighlightProgress <= 0 || cursorWorld == null); if (ignoreSlider) { sliderItem.HoverValue = null; return; } //// Vector3 cursorLocal = gameObject.transform.InverseTransformPoint((Vector3)cursorWorld); float value; if (vIsVert) { value = 1 - (cursorLocal.z - vSlideZ0) / vSlideH; } else { value = (cursorLocal.x - vSlideX0) / vSlideW; } //// if (sliderItem.IsStickySelected) { sliderItem.Value = value; sliderItem.HoverValue = null; } else if (sliderItem.AllowJump) { sliderItem.HoverValue = value; } else { sliderItem.HoverValue = null; } }
protected override void OnMouseUp(System.Windows.Forms.MouseEventArgs e) { ISliderItem pSliderItem = this.pOwner as ISliderItem; if (pSliderItem == null) { return; } switch (this.eSliderButtonStyle) { case SliderButtonStyle.eMinusButton: case SliderButtonStyle.ePlusButton: this.TimerStop(); break; default: break; } //base.OnMouseUp(e); }
protected override void OnMouseDown(System.Windows.Forms.MouseEventArgs mevent) { ISliderItem pSliderItem = this.pOwner as ISliderItem; if (pSliderItem == null) { return; } switch (this.eSliderButtonStyle) { case SliderButtonStyle.eMinusButton: pSliderItem.Value -= pSliderItem.Step; this.TimerStart(); break; case SliderButtonStyle.ePlusButton: pSliderItem.Value += pSliderItem.Step; this.TimerStart(); break; } //base.OnMouseDown(mevent); }
void Timer_Tick(object sender, EventArgs e) { if (this.m_Timer.Interval > 80) { this.m_Timer.Interval = 80; } // ISliderItem pSliderItem = this.pOwner as ISliderItem; if (pSliderItem == null) { return; } switch (this.eSliderButtonStyle) { case SliderButtonStyle.eMinusButton: if (pSliderItem.Value > pSliderItem.Minimum) { pSliderItem.Value -= pSliderItem.Step; } else { this.TimerStop(); } break; case SliderButtonStyle.ePlusButton: if (pSliderItem.Value < pSliderItem.Maximum) { pSliderItem.Value += pSliderItem.Step; } else { this.TimerStop(); } break; } }
//////////////////////////////////////////////////////////////////////////////////////////////// /*--------------------------------------------------------------------------------------------*/ 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"); }
//////////////////////////////////////////////////////////////////////////////////////////////// /*--------------------------------------------------------------------------------------------*/ public void Awake() { vHueSettings = new ItemVisualSettingsStandard(); vHueSlider = (ISliderItem)gameObject.GetComponent<HovercastItem>().GetItem(); vHueSlider.OnValueChanged += HandleValueChanged; }
//////////////////////////////////////////////////////////////////////////////////////////////// /*--------------------------------------------------------------------------------------------*/ 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"); }
//////////////////////////////////////////////////////////////////////////////////////////////// /*--------------------------------------------------------------------------------------------*/ public virtual void Build(IHoverboardPanelState pPanelState, IHoverboardLayoutState pLayoutState, IBaseItemState pItemState, IItemVisualSettings pSettings) { vPanelState = pPanelState; vLayoutState = pLayoutState; vItemState = pItemState; vSettings = (ItemVisualSettingsStandard)pSettings; vSliderItem = (ISliderItem)vItemState.Item; vTicks = new GameObject[vSliderItem.Ticks]; vWidth = UiItem.Size*vSliderItem.Width; vHeight = UiItem.Size*vSliderItem.Height; vIsVert = (vHeight > vWidth); vGrabW = 1; vZeroValue = (0-vSliderItem.RangeMin)/(vSliderItem.RangeMax-vSliderItem.RangeMin); gameObject.transform.SetParent(gameObject.transform, false); gameObject.transform.localPosition = new Vector3(vWidth/2, 0, vHeight/2f); gameObject.transform.localRotation = Quaternion.AngleAxis((vIsVert ? 90 : 0), Vector3.up); if ( vIsVert ) { //swap dimensions here + rotate graphics later float tempW = vWidth; vWidth = vHeight; vHeight = tempW; } vSlideX0 = (vGrabW-vWidth)/2; vSlideW = vWidth-vGrabW; //// vHiddenRect = new UiHoverMeshRectBg(gameObject); vHiddenRect.UpdateSize(vWidth, vHeight); var trackObj = new GameObject("Track"); trackObj.transform.SetParent(gameObject.transform, false); trackObj.transform.localPosition = new Vector3(-vWidth/2, 0, 0); vTrack = new UiItemSliderTrackRenderer(trackObj); vTrackSegments = new ReadList<DisplayUtil.TrackSegment>(); vTrackCuts = new ReadList<DisplayUtil.TrackSegment>(); //// if ( vSliderItem.Ticks > 1 ) { Vector3 quadScale = new Vector3(UiHoverMeshRect.SizeInset*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 ) { GameObject tickObj = new GameObject("Tick"+i); tickObj.transform.SetParent(gameObject.transform, false); tickObj.transform.localPosition = Vector3.right*(vSlideX0+vSlideW*i*percPerTick); tickObj.transform.localRotation = TickQuatRot; tickObj.transform.localScale = quadScale; tickObj.AddComponent<MeshRenderer>(); MeshFilter tickFilt = tickObj.AddComponent<MeshFilter>(); tickFilt.sharedMesh = vTickMeshBuilder.Mesh; vTicks[i] = tickObj; } } //// vGrabHold = new GameObject("GrabHold"); vGrabHold.transform.SetParent(gameObject.transform, false); vGrabHold.transform.localRotation = Quaternion.Inverse(gameObject.transform.localRotation); var grabObj = new GameObject("Grab"); grabObj.transform.SetParent(vGrabHold.transform, false); vGrab = grabObj.AddComponent<UiItemSliderGrabRenderer>(); vGrab.IsVert = vIsVert; vGrab.Build(vPanelState, vLayoutState, vItemState, vSettings); if ( vIsVert ) { vGrab.SetCustomSize(vHeight, vGrabW, false); } else { vGrab.SetCustomSize(vGrabW, vHeight, false); } //// vHoverHold = new GameObject("HoverHold"); vHoverHold.transform.SetParent(gameObject.transform, false); var hoverObj = new GameObject("Hover"); hoverObj.transform.SetParent(vHoverHold.transform, false); vHover = new UiHoverMeshRect(hoverObj, "Hover"); }
//////////////////////////////////////////////////////////////////////////////////////////////// /*--------------------------------------------------------------------------------------------*/ public virtual void Build(IHoverboardPanelState pPanelState, IHoverboardLayoutState pLayoutState, IBaseItemState pItemState, IItemVisualSettings pSettings) { vPanelState = pPanelState; vLayoutState = pLayoutState; vItemState = pItemState; vSettings = (ItemVisualSettingsStandard)pSettings; vSliderItem = (ISliderItem)vItemState.Item; vTicks = new GameObject[vSliderItem.Ticks]; vWidth = UiItem.Size * vSliderItem.Width; vHeight = UiItem.Size * vSliderItem.Height; vIsVert = (vHeight > vWidth); vGrabW = 1; vZeroValue = (0 - vSliderItem.RangeMin) / (vSliderItem.RangeMax - vSliderItem.RangeMin); gameObject.transform.SetParent(gameObject.transform, false); gameObject.transform.localPosition = new Vector3(vWidth / 2, 0, vHeight / 2f); gameObject.transform.localRotation = Quaternion.AngleAxis((vIsVert ? 90 : 0), Vector3.up); if (vIsVert) //swap dimensions here + rotate graphics later { float tempW = vWidth; vWidth = vHeight; vHeight = tempW; } vSlideX0 = (vGrabW - vWidth) / 2; vSlideW = vWidth - vGrabW; //// vHiddenRect = new UiHoverMeshRectBg(gameObject); vHiddenRect.UpdateSize(vWidth, vHeight); var trackObj = new GameObject("Track"); trackObj.transform.SetParent(gameObject.transform, false); trackObj.transform.localPosition = new Vector3(-vWidth / 2, 0, 0); vTrack = new UiItemSliderTrackRenderer(trackObj); vTrackSegments = new ReadList <DisplayUtil.TrackSegment>(); vTrackCuts = new ReadList <DisplayUtil.TrackSegment>(); //// if (vSliderItem.Ticks > 1) { Vector3 quadScale = new Vector3(UiHoverMeshRect.SizeInset * 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) { GameObject tickObj = new GameObject("Tick" + i); tickObj.transform.SetParent(gameObject.transform, false); tickObj.transform.localPosition = Vector3.right * (vSlideX0 + vSlideW * i * percPerTick); tickObj.transform.localRotation = TickQuatRot; tickObj.transform.localScale = quadScale; tickObj.AddComponent <MeshRenderer>(); MeshFilter tickFilt = tickObj.AddComponent <MeshFilter>(); tickFilt.sharedMesh = vTickMeshBuilder.Mesh; vTicks[i] = tickObj; } } //// vGrabHold = new GameObject("GrabHold"); vGrabHold.transform.SetParent(gameObject.transform, false); vGrabHold.transform.localRotation = Quaternion.Inverse(gameObject.transform.localRotation); var grabObj = new GameObject("Grab"); grabObj.transform.SetParent(vGrabHold.transform, false); vGrab = grabObj.AddComponent <UiItemSliderGrabRenderer>(); vGrab.IsVert = vIsVert; vGrab.Build(vPanelState, vLayoutState, vItemState, vSettings); if (vIsVert) { vGrab.SetCustomSize(vHeight, vGrabW, false); } else { vGrab.SetCustomSize(vGrabW, vHeight, false); } //// vHoverHold = new GameObject("HoverHold"); vHoverHold.transform.SetParent(gameObject.transform, false); var hoverObj = new GameObject("Hover"); hoverObj.transform.SetParent(vHoverHold.transform, false); vHover = new UiHoverMeshRect(hoverObj, "Hover"); }