コード例 #1
0
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        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;
        }
コード例 #2
0
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        public override void Build(IHoverboardPanelState pPanelState,
										IHoverboardLayoutState pLayoutState, IBaseItemState pItemState,
										IItemVisualSettings pSettings)
        {
            base.Build(pPanelState, pLayoutState, pItemState, pSettings);

            vLabel.AlignLeft = true;
            vLabel.transform.localPosition = new Vector3(-vItemState.Item.Width/2, 0, 0);

            ////

            vOuter = new GameObject("ToggleOuter");
            vOuter.transform.SetParent(gameObject.transform, false);
            vOuter.transform.localRotation = vLabel.CanvasLocalRotation;
            vOuter.AddComponent<MeshRenderer>();

            MeshFilter outerFilt = vOuter.AddComponent<MeshFilter>();
            vOuterMesh = outerFilt.mesh;
            MeshUtil.BuildQuadMesh(vOuterMesh);
            Materials.SetMeshColor(vOuterMesh, Color.clear);
            Materials.SetMeshIconCoords(vOuterMesh, GetOuterIconOffset());

            ////

            vInner = new GameObject("ToggleInner");
            vInner.transform.SetParent(gameObject.transform, false);
            vInner.transform.localRotation = vLabel.CanvasLocalRotation;
            vInner.AddComponent<MeshRenderer>();

            MeshFilter iconFilt = vInner.AddComponent<MeshFilter>();
            vInnerMesh = iconFilt.mesh;
            MeshUtil.BuildQuadMesh(vInnerMesh);
            Materials.SetMeshColor(vInnerMesh, Color.clear);
            Materials.SetMeshIconCoords(vInnerMesh, GetInnerIconOffset());
        }
コード例 #3
0
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        private void UpdateWithCursor(ICursorState pCursor)
        {
            bool       allowSelect    = (pCursor.IsInputAvailable && DisplayStrength > 0);
            Vector3?   cursorWorldPos = (allowSelect ? pCursor.GetWorldPosition() : (Vector3?)null);
            CursorType cursorType     = pCursor.Type;
            float      nearestDist    = float.MaxValue;

            NearestItem = null;

            foreach (BaseItemState item in vAllItems)
            {
                item.UpdateWithCursor(cursorType, cursorWorldPos);

                if (!allowSelect)
                {
                    continue;
                }

                float itemDist = item.GetHighlightDistance(cursorType);

                if (itemDist >= nearestDist)
                {
                    continue;
                }

                NearestItem = item;
                nearestDist = itemDist;
            }

            foreach (BaseItemState item in vAllItems)
            {
                item.SetAsNearestItem(cursorType, (item == NearestItem));
            }
        }
コード例 #4
0
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        public virtual void Build(IHovercastMenuState pMenuState, IBaseItemState pItemState,
                                  float pArcAngle, IItemVisualSettings pSettings)
        {
            vMenuState = pMenuState;
            vItemState = pItemState;
            vSettings  = (ItemVisualSettingsStandard)pSettings;

            ////

            vHoverSlice = new UiHoverMeshSlice(gameObject, true);
            vHoverSlice.UpdateSize(UiItemSelectRenderer.InnerRadius,
                                   UiItemSelectRenderer.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;
        }
コード例 #5
0
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        public override void Build(IHovercastMenuState pMenuState, IBaseItemState pItemState,
													float pArcAngle, IItemVisualSettings pSettings)
        {
            base.Build(pMenuState, pItemState, pArcAngle, pSettings);

            ////

            vOuter = new GameObject("ToggleOuter");
            vOuter.transform.SetParent(gameObject.transform, false);
            vOuter.transform.localRotation = vLabel.CanvasLocalRotation;
            vOuter.AddComponent<MeshRenderer>();

            MeshFilter outerFilt = vOuter.AddComponent<MeshFilter>();
            vOuterMesh = outerFilt.mesh;
            MeshUtil.BuildQuadMesh(vOuterMesh);
            Materials.SetMeshColor(vOuterMesh, Color.clear);
            Materials.SetMeshIconCoords(vOuterMesh, GetOuterIconOffset());

            ////

            vInner = new GameObject("ToggleInner");
            vInner.transform.SetParent(gameObject.transform, false);
            vInner.transform.localRotation = vLabel.CanvasLocalRotation;
            vInner.AddComponent<MeshRenderer>();

            MeshFilter iconFilt = vInner.AddComponent<MeshFilter>();
            vInnerMesh = iconFilt.mesh;
            MeshUtil.BuildQuadMesh(vInnerMesh);
            Materials.SetMeshColor(vInnerMesh, Color.clear);
            Materials.SetMeshIconCoords(vInnerMesh, GetInnerIconOffset());
        }
コード例 #6
0
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        public override void Build(IHovercastMenuState pMenuState, IBaseItemState pItemState,
                                   float pArcAngle, IItemVisualSettings pSettings)
        {
            base.Build(pMenuState, pItemState, pArcAngle, pSettings);

            ////

            vOuter = new GameObject("ToggleOuter");
            vOuter.transform.SetParent(gameObject.transform, false);
            vOuter.transform.localRotation = vLabel.CanvasLocalRotation;
            vOuter.AddComponent <MeshRenderer>();

            MeshFilter outerFilt = vOuter.AddComponent <MeshFilter>();

            vOuterMesh = outerFilt.mesh;
            MeshUtil.BuildQuadMesh(vOuterMesh);
            Materials.SetMeshColor(vOuterMesh, Color.clear);
            Materials.SetMeshIconCoords(vOuterMesh, GetOuterIconOffset());

            ////

            vInner = new GameObject("ToggleInner");
            vInner.transform.SetParent(gameObject.transform, false);
            vInner.transform.localRotation = vLabel.CanvasLocalRotation;
            vInner.AddComponent <MeshRenderer>();

            MeshFilter iconFilt = vInner.AddComponent <MeshFilter>();

            vInnerMesh = iconFilt.mesh;
            MeshUtil.BuildQuadMesh(vInnerMesh);
            Materials.SetMeshColor(vInnerMesh, Color.clear);
            Materials.SetMeshIconCoords(vInnerMesh, GetInnerIconOffset());
        }
コード例 #7
0
		////////////////////////////////////////////////////////////////////////////////////////////////
		/*--------------------------------------------------------------------------------------------*/
		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;
		}
コード例 #8
0
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        public override void Build(IHoverboardPanelState pPanelState,
                                   IHoverboardLayoutState pLayoutState, IBaseItemState pItemState,
                                   IItemVisualSettings pSettings)
        {
            base.Build(pPanelState, pLayoutState, pItemState, pSettings);

            vLabel.AlignLeft = true;

            ////

            vIcon = new GameObject("Icon");
            vIcon.transform.SetParent(gameObject.transform, false);
            vIcon.transform.localRotation =
                vLabel.gameObject.transform.localRotation * vLabel.CanvasLocalRotation;
            vIcon.transform.localScale = GetIconScale();
            vIcon.AddComponent <MeshRenderer>();

            MeshFilter iconFilt = vIcon.AddComponent <MeshFilter>();

            vIconMeshBuilder = new MeshBuilder();
            MeshUtil.BuildQuadMesh(vIconMeshBuilder);
            Materials.SetMeshIconCoords(vIconMeshBuilder, GetIconOffset());
            vIconMeshBuilder.Commit();
            vIconMeshBuilder.CommitColors(Color.clear);
            iconFilt.sharedMesh = vIconMeshBuilder.Mesh;
        }
コード例 #9
0
		////////////////////////////////////////////////////////////////////////////////////////////////
		/*--------------------------------------------------------------------------------------------*/
		public override void Build(IHoverboardPanelState pPanelState,
										IHoverboardLayoutState pLayoutState, IBaseItemState pItemState,
										IItemVisualSettings pSettings) {
			base.Build(pPanelState, pLayoutState, pItemState, pSettings);

			if ( !IsVert ) {
				vIcon.transform.localRotation *= IconRot;
			}
		}
コード例 #10
0
		/*--------------------------------------------------------------------------------------------*/
		public static bool IsEdgeVisible(IBaseItemState pItemState) {
			ISelectableItem selItem = (pItemState.Item as ISelectableItem);

			if ( selItem == null || !pItemState.IsNearestHighlight || !selItem.AllowSelection ) {
				return false;
			}

			return (!pItemState.IsSelectionPrevented || selItem.IsStickySelected);
		}
コード例 #11
0
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        public override void Build(IHoverboardPanelState pPanelState,
                                   IHoverboardLayoutState pLayoutState, IBaseItemState pItemState,
                                   IItemVisualSettings pSettings)
        {
            base.Build(pPanelState, pLayoutState, pItemState, pSettings);

            if (!IsVert)
            {
                vIcon.transform.localRotation *= IconRot;
            }
        }
コード例 #12
0
        /*--------------------------------------------------------------------------------------------*/
        public static bool IsEdgeVisible(IBaseItemState pItemState)
        {
            ISelectableItem selItem = (pItemState.Item as ISelectableItem);

            if (selItem == null || !pItemState.IsNearestHighlight || !selItem.AllowSelection)
            {
                return(false);
            }

            return(!pItemState.IsSelectionPrevented || selItem.IsStickySelected);
        }
コード例 #13
0
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        public override void Build(MenuState pMenuState, IBaseItemState pItemState,
                                   float pArcAngle, IItemVisualSettings pSettings)
        {
            base.Build(pMenuState, pItemState, pArcAngle, pSettings);

            vIcon      = GameObject.CreatePrimitive(PrimitiveType.Quad);
            vIcon.name = "Icon";
            vIcon.transform.SetParent(gameObject.transform, false);
            vIcon.renderer.sharedMaterial             = new Material(Shader.Find("Unlit/AlphaSelfIllum"));
            vIcon.renderer.sharedMaterial.color       = Color.clear;
            vIcon.renderer.sharedMaterial.mainTexture = GetIconTexture();
            vIcon.transform.localRotation             =
                vLabel.gameObject.transform.localRotation * vLabel.CanvasLocalRotation;
        }
コード例 #14
0
		////////////////////////////////////////////////////////////////////////////////////////////////
		/*--------------------------------------------------------------------------------------------*/
		public override void Build(IHovercastMenuState pMenuState, IBaseItemState pItemState,
													float pArcAngle, IItemVisualSettings pSettings) {
			base.Build(pMenuState, pItemState, pArcAngle, pSettings);

			vIcon = new GameObject("Icon");
			vIcon.transform.SetParent(gameObject.transform, false);
			vIcon.transform.localRotation = 
				vLabel.gameObject.transform.localRotation*vLabel.CanvasLocalRotation;
			vIcon.transform.localScale = GetIconScale();
			vIcon.AddComponent<MeshRenderer>();

			MeshFilter iconFilt = vIcon.AddComponent<MeshFilter>();
			vIconMeshBuilder = new MeshBuilder();
			MeshUtil.BuildQuadMesh(vIconMeshBuilder);
			Materials.SetMeshIconCoords(vIconMeshBuilder, GetIconOffset());
			vIconMeshBuilder.Commit();
			vIconMeshBuilder.CommitColors(Color.clear);
			iconFilt.sharedMesh = vIconMeshBuilder.Mesh;
		}
コード例 #15
0
		////////////////////////////////////////////////////////////////////////////////////////////////
		/*--------------------------------------------------------------------------------------------*/
		public virtual void Build(IHoverboardPanelState pPanelState, 
										IHoverboardLayoutState pLayoutState, IBaseItemState pItemState,
										IItemVisualSettings pSettings) {
			vPanelState = pPanelState;
			vLayoutState = pLayoutState;
			vItemState = pItemState;
			vSettings = (ItemVisualSettingsStandard)pSettings;

			gameObject.transform.SetParent(gameObject.transform, false);

			vHoverRect = new UiHoverMeshRect(gameObject);

			var labelObj = new GameObject("Label");
			labelObj.transform.SetParent(gameObject.transform, false);
			vLabel = labelObj.AddComponent<UiLabel>();

			float width = UiItem.Size*vItemState.Item.Width;
			float height = UiItem.Size*vItemState.Item.Height;
			SetCustomSize(width, height);
		}
コード例 #16
0
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        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);
        }
コード例 #17
0
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        public override void Build(IHoverboardPanelState pPanelState,
                                   IHoverboardLayoutState pLayoutState, IBaseItemState pItemState,
                                   IItemVisualSettings pSettings)
        {
            base.Build(pPanelState, pLayoutState, pItemState, pSettings);

            vLabel.AlignLeft = true;
            vLabel.transform.localPosition = new Vector3(-vItemState.Item.Width / 2, 0, 0);

            ////

            vOuter = new GameObject("ToggleOuter");
            vOuter.transform.SetParent(gameObject.transform, false);
            vOuter.transform.localRotation = vLabel.CanvasLocalRotation;
            vOuter.AddComponent <MeshRenderer>();

            MeshFilter outerFilt = vOuter.AddComponent <MeshFilter>();

            vOuterMeshBuilder = new MeshBuilder();
            MeshUtil.BuildQuadMesh(vOuterMeshBuilder);
            Materials.SetMeshIconCoords(vOuterMeshBuilder, GetOuterIconOffset());
            vOuterMeshBuilder.Commit();
            vOuterMeshBuilder.CommitColors(Color.clear);
            outerFilt.sharedMesh = vOuterMeshBuilder.Mesh;

            ////

            vInner = new GameObject("ToggleInner");
            vInner.transform.SetParent(gameObject.transform, false);
            vInner.transform.localRotation = vLabel.CanvasLocalRotation;
            vInner.AddComponent <MeshRenderer>();

            MeshFilter innerFilt = vInner.AddComponent <MeshFilter>();

            vInnerMeshBuilder = new MeshBuilder();
            MeshUtil.BuildQuadMesh(vInnerMeshBuilder);
            Materials.SetMeshIconCoords(vInnerMeshBuilder, GetInnerIconOffset());
            vInnerMeshBuilder.Commit();
            vInnerMeshBuilder.CommitColors(Color.clear);
            innerFilt.sharedMesh = vInnerMeshBuilder.Mesh;
        }
コード例 #18
0
		////////////////////////////////////////////////////////////////////////////////////////////////
		/*--------------------------------------------------------------------------------------------*/
		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;
		}
コード例 #19
0
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        public virtual void Build(IHoverboardPanelState pPanelState,
                                  IHoverboardLayoutState pLayoutState, IBaseItemState pItemState,
                                  IItemVisualSettings pSettings)
        {
            vPanelState  = pPanelState;
            vLayoutState = pLayoutState;
            vItemState   = pItemState;
            vSettings    = (ItemVisualSettingsStandard)pSettings;
            vWidth       = UiItem.Size * vItemState.Item.Width;
            vHeight      = UiItem.Size * vItemState.Item.Height;

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

            vHoverRect = new UiHoverMeshRectBg(gameObject);
            vHoverRect.UpdateSize(vWidth, vHeight);

            var labelObj = new GameObject("Label");

            labelObj.transform.SetParent(gameObject.transform, false);
            vLabel = labelObj.AddComponent <UiLabel>();
            vLabel.SetSize(vWidth, vHeight, vSettings.TextSize * 0.25f, LabelCanvasScale);
        }
コード例 #20
0
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        public virtual void Build(IHoverboardPanelState pPanelState,
                                  IHoverboardLayoutState pLayoutState, IBaseItemState pItemState,
                                  IItemVisualSettings pSettings)
        {
            vPanelState  = pPanelState;
            vLayoutState = pLayoutState;
            vItemState   = pItemState;
            vSettings    = (ItemVisualSettingsStandard)pSettings;

            gameObject.transform.SetParent(gameObject.transform, false);

            vHoverRect = new UiHoverMeshRect(gameObject);

            var labelObj = new GameObject("Label");

            labelObj.transform.SetParent(gameObject.transform, false);
            vLabel = labelObj.AddComponent <UiLabel>();

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

            SetCustomSize(width, height);
        }
コード例 #21
0
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        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");
        }
コード例 #22
0
		////////////////////////////////////////////////////////////////////////////////////////////////
		/*--------------------------------------------------------------------------------------------*/
		private void UpdateWithCursor(ICursorState pCursor) {
			bool allowSelect = (pCursor.IsInputAvailable && DisplayStrength > 0);
			Vector3? cursorWorldPos = (allowSelect ? pCursor.GetWorldPosition() : (Vector3?)null);
			CursorType cursorType = pCursor.Type;
			float nearestDist = float.MaxValue;

			NearestItem = null;

			foreach ( BaseItemState item in vAllItems ) {
				item.UpdateWithCursor(cursorType, cursorWorldPos);

				if ( !allowSelect ) {
					continue;
				}

				float itemDist = item.GetHighlightDistance(cursorType);

				if ( itemDist >= nearestDist ) {
					continue;
				}

				NearestItem = item;
				nearestDist = itemDist;
			}

			foreach ( BaseItemState item in vAllItems ) {
				item.SetAsNearestItem(cursorType, (item == NearestItem));
			}
		}
コード例 #23
0
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        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");
        }
コード例 #24
0
		////////////////////////////////////////////////////////////////////////////////////////////////
		/*--------------------------------------------------------------------------------------------*/
		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");
		}
コード例 #25
0
		////////////////////////////////////////////////////////////////////////////////////////////////
		/*--------------------------------------------------------------------------------------------*/
		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");
		}
コード例 #26
0
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        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");
        }