////////////////////////////////////////////////////////////////////////////////////////////////
		/*--------------------------------------------------------------------------------------------*/
		internal void Build(IHoverboardPanelState pPanelState, IHoverboardLayoutState pLayoutState, 
										BaseItemState pItemState, IItemVisualSettings pVisualSettings) {
			vPanelState = pPanelState;
			vItemState = pItemState;

			vSlideX0 = 0.5f;
			vSlideZ0 = 0.5f;
			vSlideW = vItemState.Item.Width-vSlideX0*2;
			vSlideH = vItemState.Item.Height-vSlideZ0*2;
			vIsVert = (vItemState.Item.Height > vItemState.Item.Width);

			////
			
			vRendererObj = new GameObject("Renderer");
			vRendererObj.transform.SetParent(gameObject.transform, false);

			vRenderer = (IUiItemRenderer)vRendererObj.AddComponent(pVisualSettings.Renderer);
			vRenderer.Build(pPanelState, pLayoutState, vItemState, pVisualSettings);
			vRenderer.SetDepthHint(vPanelState.DisplayDepthHint);
			vPrevDepth = vPanelState.DisplayDepthHint;

			vItemState.HoverPointUpdater = vRenderer.UpdateHoverPoints;

			gameObject.transform.localPosition = Vector3.zero;
			gameObject.transform.localRotation = Quaternion.identity;
			gameObject.transform.localScale = Vector3.one;
		}
示例#2
0
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        internal void Build(IHoverboardPanelState pPanelState, LayoutState pLayoutState,
                            IItemVisualSettingsProvider pItemVisualSettProv)
        {
            Vector2 dir    = pLayoutState.ItemLayout.Direction;
            Vector2 pos    = Vector2.zero;
            Vector2 posMin = Vector2.zero;
            Vector2 posMax = Vector2.zero;

            for (int i = 0; i < pLayoutState.FullItems.Length; i++)
            {
                BaseItemState       itemState  = pLayoutState.FullItems[i];
                IItemVisualSettings visualSett = pItemVisualSettProv.GetSettings(itemState.Item);
                GameObject          itemObj    = (GameObject)itemState.Item.DisplayContainer;

                UiItem uiItem = itemObj.AddComponent <UiItem>();
                uiItem.Build(pPanelState, pLayoutState, itemState, visualSett);
                uiItem.transform.localPosition = new Vector3(pos.x, 0, pos.y) * UiItem.Size;

                var itemSize = new Vector2(itemState.Item.Width, itemState.Item.Height);

                posMin = Vector2.Min(posMin, pos);
                posMax = Vector2.Max(posMax, pos + itemSize);
                pos   += Vector2.Scale(itemSize, dir);
            }

            Vector2 size = posMax - posMin;

            Bounds = new Rect(posMin.x, posMin.y, size.x, size.y);

            gameObject.transform.localPosition = Vector3.zero;
            gameObject.transform.localRotation = Quaternion.identity;
            gameObject.transform.localScale    = Vector3.one;
        }
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        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());
        }
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        internal void Build(IHoverboardPanelState pPanelState, IHoverboardLayoutState pLayoutState,
                            BaseItemState pItemState, IItemVisualSettings pVisualSettings)
        {
            vPanelState = pPanelState;
            vItemState  = pItemState;

            vSlideX0 = 0.5f;
            vSlideZ0 = 0.5f;
            vSlideW  = vItemState.Item.Width - vSlideX0 * 2;
            vSlideH  = vItemState.Item.Height - vSlideZ0 * 2;
            vIsVert  = (vItemState.Item.Height > vItemState.Item.Width);

            ////

            vRendererObj = new GameObject("Renderer");
            vRendererObj.transform.SetParent(gameObject.transform, false);

            vRenderer = (IUiItemRenderer)vRendererObj.AddComponent(pVisualSettings.Renderer);
            vRenderer.Build(pPanelState, pLayoutState, vItemState, pVisualSettings);
            vRenderer.SetDepthHint(vPanelState.DisplayDepthHint);
            vPrevDepth = vPanelState.DisplayDepthHint;

            vItemState.HoverPointUpdater = vRenderer.UpdateHoverPoints;

            gameObject.transform.localPosition = Vector3.zero;
            gameObject.transform.localRotation = Quaternion.identity;
            gameObject.transform.localScale    = Vector3.one;
        }
示例#5
0
        /*--------------------------------------------------------------------------------------------*/
        public IList <IRadioItem> GetRadioSiblings(IRadioItem pSelectedItem)
        {
            var    siblings = new List <IRadioItem>();         //GC_ALLOC
            string id       = pSelectedItem.GroupId;

            for (int panelI = 0; panelI < FullPanels.Length; panelI++)
            {
                IHoverboardPanelState panel = FullPanels[panelI];

                for (int layoutI = 0; layoutI < panel.Layouts.Count; layoutI++)
                {
                    IHoverboardLayoutState layout = panel.Layouts[layoutI];

                    for (int itemI = 0; itemI < layout.Items.Count; itemI++)
                    {
                        IRadioItem radItem = (layout.Items[itemI].Item as IRadioItem);

                        if (radItem == null || radItem == pSelectedItem || radItem.GroupId != id)
                        {
                            continue;
                        }

                        siblings.Add(radItem);
                    }
                }
            }

            return(siblings);
        }
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        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;
        }
		////////////////////////////////////////////////////////////////////////////////////////////////
		/*--------------------------------------------------------------------------------------------*/
		internal void Build(IHoverboardPanelState pPanelState, LayoutState pLayoutState,
													IItemVisualSettingsProvider pItemVisualSettProv) {
			Vector2 dir = pLayoutState.ItemLayout.Direction;
			Vector2 pos = Vector2.zero;
			Vector2 posMin = Vector2.zero;
			Vector2 posMax = Vector2.zero;

			for ( int i = 0 ; i < pLayoutState.FullItems.Length ; i++ ) {
				BaseItemState itemState = pLayoutState.FullItems[i];
				IItemVisualSettings visualSett = pItemVisualSettProv.GetSettings(itemState.Item);
				GameObject itemObj = (GameObject)itemState.Item.DisplayContainer;

				UiItem uiItem = itemObj.AddComponent<UiItem>();
				uiItem.Build(pPanelState, pLayoutState, itemState, visualSett);
				uiItem.transform.localPosition = new Vector3(pos.x, 0, pos.y)*UiItem.Size;

				var itemSize = new Vector2(itemState.Item.Width, itemState.Item.Height);
				
				posMin = Vector2.Min(posMin, pos);
				posMax = Vector2.Max(posMax, pos+itemSize);
				pos += Vector2.Scale(itemSize, dir);
			}

			Vector2 size = posMax-posMin;
			Bounds = new Rect(posMin.x, posMin.y, size.x, size.y);

			gameObject.transform.localPosition = Vector3.zero;
			gameObject.transform.localRotation = Quaternion.identity;
			gameObject.transform.localScale = Vector3.one;
		}
		////////////////////////////////////////////////////////////////////////////////////////////////
		/*--------------------------------------------------------------------------------------------*/
		public override void Build(IHoverboardPanelState pPanelState,
										IHoverboardLayoutState pLayoutState, IBaseItemState pItemState,
										IItemVisualSettings pSettings) {
			base.Build(pPanelState, pLayoutState, pItemState, pSettings);

			if ( !IsVert ) {
				vIcon.transform.localRotation *= IconRot;
			}
		}
示例#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;
            }
        }
		////////////////////////////////////////////////////////////////////////////////////////////////
		/*--------------------------------------------------------------------------------------------*/
		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);
		}
示例#11
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;
        }
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        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);
        }
示例#13
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);
        }
		////////////////////////////////////////////////////////////////////////////////////////////////
		/*--------------------------------------------------------------------------------------------*/
		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;
		}
		////////////////////////////////////////////////////////////////////////////////////////////////
		/*--------------------------------------------------------------------------------------------*/
		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");
		}
示例#16
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");
        }