Beispiel #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;
        }
Beispiel #2
0
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        protected override void UpdateMesh()
        {
            HoverShapeRect shape     = GetComponent <HoverShapeRect>();
            float          outerProg = GetDimensionProgress(OuterSizeType);
            float          outerW;
            float          outerH;

            if (shape.SizeX >= shape.SizeY)
            {
                outerH = shape.SizeY * outerProg;
                outerW = shape.SizeX - (shape.SizeY - outerH);
            }
            else
            {
                outerW = shape.SizeX * outerProg;
                outerH = shape.SizeY - (shape.SizeX - outerW);
            }

            MeshUtil.BuildQuadMesh(vMeshBuild, outerW, outerH);

            UpdateAutoUv(shape, outerW, outerH);
            UpdateMeshUvAndColors();
            vMeshBuild.Commit();
            vMeshBuild.CommitColors();
        }
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        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());
        }
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        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;
        }
Beispiel #5
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;
        }
Beispiel #6
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");
        }
Beispiel #7
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");
        }