Exemple #1
0
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        private void UpdateShapeRectChildren()
        {
            if (!ControlChildShapes)
            {
                return;
            }

            TreeUpdater tree = GetComponent <TreeUpdater>();

            for (int i = 0; i < tree.TreeChildrenThisFrame.Count; i++)
            {
                TreeUpdater    child     = tree.TreeChildrenThisFrame[i];
                HoverShapeRect childRect = child.GetComponent <HoverShapeRect>();

                if (childRect == null)
                {
                    continue;
                }

                childRect.Controllers.Set(SizeXName, this);
                childRect.Controllers.Set(SizeYName, this);

                childRect.SizeX = SizeX;
                childRect.SizeY = SizeY;
            }
        }
Exemple #2
0
        /*--------------------------------------------------------------------------------------------*/
        protected override void UpdateFillMesh(HoverMesh pSegmentMesh,
                                               SliderUtil.SegmentInfo pSegmentInfo, float pStartPos, float pEndPos)
        {
            HoverShapeRect meshShapeRect = pSegmentMesh.GetComponent <HoverShapeRect>();
            HoverMeshRect  meshRect      = (HoverMeshRect)pSegmentMesh;

            pSegmentMesh.Controllers.Set(SettingsControllerMap.TransformLocalPosition + ".x", this);
            pSegmentMesh.Controllers.Set(SettingsControllerMap.TransformLocalPosition + ".y", this);
            pSegmentMesh.Controllers.Set(HoverMesh.DisplayModeName, this);
            meshRect.Controllers.Set(HoverMeshRect.UvTopName, this);
            meshRect.Controllers.Set(HoverMeshRect.UvBottomName, this);

            meshShapeRect.SizeY      = pSegmentInfo.EndPosition - pSegmentInfo.StartPosition;
            pSegmentMesh.DisplayMode = (pSegmentInfo.IsFill ?
                                        HoverMesh.DisplayModeType.SliderFill : HoverMesh.DisplayModeType.Standard);
            meshRect.UvTop = (UseTrackUv ?
                              Mathf.InverseLerp(pStartPos, pEndPos, pSegmentInfo.StartPosition) : 0);
            meshRect.UvBottom = (UseTrackUv ?
                                 Mathf.InverseLerp(pStartPos, pEndPos, pSegmentInfo.EndPosition) : 1);

            Vector3 localPos = pSegmentMesh.transform.localPosition;

            localPos.x = (InsetLeft - InsetRight) / 2;
            localPos.y = (pSegmentInfo.StartPosition + pSegmentInfo.EndPosition) / 2;
            pSegmentMesh.transform.localPosition = localPos;
        }
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        protected override void UpdateMesh()
        {
            HoverShapeRect shape     = GetComponent <HoverShapeRect>();
            float          innerProg = GetDimensionProgress(InnerSizeType);
            float          outerProg = GetDimensionProgress(OuterSizeType);
            float          outerW;
            float          outerH;
            float          innerW;
            float          innerH;

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

            MeshUtil.BuildHollowRectangleMesh(vMeshBuild, outerW, outerH, innerW, innerH);

            UpdateAutoUv(shape, outerW, outerH);
            UpdateMeshUvAndColors();
            vMeshBuild.Commit();
            vMeshBuild.CommitColors();
        }
Exemple #4
0
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        protected override void UpdateTickMeshes()
        {
            HoverShapeRect shapeRect = gameObject.GetComponent <HoverShapeRect>();

            vTickSizeX = Mathf.Max(0, shapeRect.SizeX - InsetLeft - InsetRight) * TickRelativeSizeX;

            base.UpdateTickMeshes();
        }
Exemple #5
0
        /*--------------------------------------------------------------------------------------------*/
        protected override void ActivateFillMesh(HoverMesh pSegmentMesh)
        {
            HoverShapeRect meshShapeRect = pSegmentMesh.GetComponent <HoverShapeRect>();

            pSegmentMesh.Controllers.Set(SettingsControllerMap.GameObjectActiveSelf, this);

            RendererUtil.SetActiveWithUpdate(pSegmentMesh, (meshShapeRect.SizeY > 0));
        }
Exemple #6
0
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        protected override void UpdateFillMeshes()
        {
            HoverShapeRect shapeRect = gameObject.GetComponent <HoverShapeRect>();

            vMeshSizeX = Mathf.Max(0, shapeRect.SizeX - InsetLeft - InsetRight);

            base.UpdateFillMeshes();
        }
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        private void UpdateTrackShape(HoverShapeRect pShapeRect, HoverRendererSlider pRendSlider)
        {
            HoverShapeRect trackShapeRect = (HoverShapeRect)pRendSlider.Track.GetShape();

            trackShapeRect.Controllers.Set(HoverShapeRect.SizeXName, this);
            trackShapeRect.Controllers.Set(HoverShapeRect.SizeYName, this);

            trackShapeRect.SizeX = pShapeRect.SizeX;
            trackShapeRect.SizeY = pShapeRect.SizeY;
        }
Exemple #8
0
        /*--------------------------------------------------------------------------------------------*/
        protected override void ResetFillMesh(HoverMesh pSegmentMesh)
        {
            HoverShapeRect meshShapeRect = pSegmentMesh.GetComponent <HoverShapeRect>();

            meshShapeRect.Controllers.Set(HoverShapeRect.SizeXName, this);
            meshShapeRect.Controllers.Set(HoverShapeRect.SizeYName, this);

            meshShapeRect.SizeX = vMeshSizeX;
            meshShapeRect.SizeY = 0;
        }
        /*--------------------------------------------------------------------------------------------*/
        protected virtual void UpdateMeshShape(HoverMesh pMesh, float pSizeX, float pSizeY,
                                               bool pShowMesh = true)
        {
            HoverShapeRect meshShape = pMesh.GetComponent <HoverShapeRect>();

            pMesh.Controllers.Set(SettingsControllerMap.GameObjectActiveSelf, this);
            meshShape.Controllers.Set(HoverShapeRect.SizeXName, this);
            meshShape.Controllers.Set(HoverShapeRect.SizeYName, this);

            RendererUtil.SetActiveWithUpdate(pMesh, (pShowMesh && pMesh.IsMeshVisible));
            meshShape.SizeX = pSizeX;
            meshShape.SizeY = pSizeY;
        }
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        public override void TreeUpdate()
        {
            HoverRendererSlider rendSlider      = gameObject.GetComponent <HoverRendererSlider>();
            HoverShapeRect      shapeRect       = gameObject.GetComponent <HoverShapeRect>();
            HoverShapeRect      handleShapeRect = (HoverShapeRect)rendSlider.HandleButton.GetShape();
            HoverShapeRect      jumpShapeRect   = (HoverShapeRect)rendSlider.JumpButton.GetShape();

            shapeRect.SizeY = Mathf.Max(shapeRect.SizeY, handleShapeRect.SizeY);

            UpdateTrackShape(shapeRect, rendSlider);
            UpdateButtonWidth(shapeRect, handleShapeRect);
            UpdateButtonWidth(shapeRect, jumpShapeRect);
            UpdateButtonPositions(rendSlider);
        }
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        protected override void UpdateInfoWithShape()
        {
            HoverRendererSlider rendSlider      = gameObject.GetComponent <HoverRendererSlider>();
            HoverShapeRect      shapeRect       = gameObject.GetComponent <HoverShapeRect>();
            HoverShapeRect      handleShapeRect = (HoverShapeRect)rendSlider.HandleButton.GetShape();
            HoverShapeRect      jumpShapeRect   = (HoverShapeRect)rendSlider.JumpButton.GetShape();

            TickSizeY = Mathf.Max(0, TickSizeY);

            vInfo.TrackStartPosition = -shapeRect.SizeY / 2;
            vInfo.TrackEndPosition   = shapeRect.SizeY / 2;
            vInfo.HandleSize         = handleShapeRect.SizeY;
            vInfo.JumpSize           = (rendSlider.AllowJump ? jumpShapeRect.SizeY : 0);
            vInfo.TickSize           = TickSizeY;
        }
Exemple #12
0
        /*--------------------------------------------------------------------------------------------*/
        public override float GetSliderValueViaNearestWorldPosition(Vector3 pNearestWorldPosition,
                                                                    Transform pSliderContainerTx, HoverShape pHandleButtonShape)
        {
            HoverShapeRect buttonShapeRect = (pHandleButtonShape as HoverShapeRect);

            if (buttonShapeRect == null)
            {
                Debug.LogError("Expected slider handle to have a '" + typeof(HoverShapeRect).Name +
                               "' component attached to it.", this);
                return(0);
            }

            Vector3 nearLocalPos   = pSliderContainerTx.InverseTransformPoint(pNearestWorldPosition);
            float   halfTrackSizeY = (SizeY - buttonShapeRect.SizeY) / 2;

            return(Mathf.InverseLerp(-halfTrackSizeY, halfTrackSizeY, nearLocalPos.y));
        }
Exemple #13
0
        /*--------------------------------------------------------------------------------------------*/
        protected void UpdateAutoUv(HoverShapeRect pShapeRect, float pOuterW, float pOuterH)
        {
            if (!AutoUvViaSizeType)
            {
                return;
            }

            Controllers.Set(UvTopName, this);
            Controllers.Set(UvBottomName, this);
            Controllers.Set(UvLeftName, this);
            Controllers.Set(UvRightName, this);

            UvTop    = Mathf.Lerp(0.5f, 0, pOuterH / pShapeRect.SizeY);
            UvBottom = 1 - UvTop;
            UvLeft   = Mathf.Lerp(0.5f, 0, pOuterW / pShapeRect.SizeX);
            UvRight  = 1 - UvLeft;
        }
Exemple #14
0
        /*--------------------------------------------------------------------------------------------*/
        protected override void UpdateTickMesh(HoverMesh pTickMesh, SliderUtil.SegmentInfo pTickInfo)
        {
            HoverShapeRect meshShapeRect = pTickMesh.GetComponent <HoverShapeRect>();

            pTickMesh.Controllers.Set(SettingsControllerMap.GameObjectActiveSelf, this);
            pTickMesh.Controllers.Set(SettingsControllerMap.TransformLocalPosition + ".x", this);
            pTickMesh.Controllers.Set(SettingsControllerMap.TransformLocalPosition + ".y", this);
            meshShapeRect.Controllers.Set(HoverShapeRect.SizeXName, this);
            meshShapeRect.Controllers.Set(HoverShapeRect.SizeYName, this);

            meshShapeRect.SizeX = vTickSizeX;
            meshShapeRect.SizeY = pTickInfo.EndPosition - pTickInfo.StartPosition;

            Vector3 localPos = pTickMesh.transform.localPosition;

            localPos.x = (InsetLeft - InsetRight) / 2;
            localPos.y = (pTickInfo.StartPosition + pTickInfo.EndPosition) / 2;
            pTickMesh.transform.localPosition = localPos;

            RendererUtil.SetActiveWithUpdate(pTickMesh, !pTickInfo.IsHidden);
        }
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        private void UpdateMeshes()
        {
            HoverFillButton fillButton = gameObject.GetComponent <HoverFillButton>();
            HoverShapeRect  shapeRect  = gameObject.GetComponent <HoverShapeRect>();

            float totalEdgeThick = EdgeThickness * 2;
            float insetSizeX     = Mathf.Max(0, shapeRect.SizeX - totalEdgeThick);
            float insetSizeY     = Mathf.Max(0, shapeRect.SizeY - totalEdgeThick);

            if (fillButton.Background != null)
            {
                UpdateMeshShape(fillButton.Background, insetSizeX, insetSizeY);
            }

            if (fillButton.Highlight != null)
            {
                UpdateMeshShape(fillButton.Highlight, insetSizeX, insetSizeY);
            }

            if (fillButton.Selection != null)
            {
                UpdateMeshShape(fillButton.Selection, insetSizeX, insetSizeY);
            }

            if (fillButton.Edge != null)
            {
                HoverIndicator meshInd = fillButton.Edge.GetComponent <HoverIndicator>();
                float          minSize = Mathf.Min(shapeRect.SizeX, shapeRect.SizeY);

                meshInd.Controllers.Set(HoverIndicator.HighlightProgressName, this);
                meshInd.HighlightProgress = 1 - totalEdgeThick / minSize;             //TODO:  hack/workaround

                UpdateMeshShape(fillButton.Edge,
                                shapeRect.SizeX, shapeRect.SizeY, fillButton.ShowEdge);
            }
        }
 /*--------------------------------------------------------------------------------------------*/
 private void UpdateButtonWidth(HoverShapeRect pShapeRect, HoverShapeRect pButtonShapeRect)
 {
     pButtonShapeRect.Controllers.Set(HoverShapeRect.SizeXName, this);
     pButtonShapeRect.SizeX = pShapeRect.SizeX;
 }