Пример #1
0
        /*--------------------------------------------------------------------------------------------*/
        public void TreeUpdate()
        {
            if (Shape == null)
            {
                Debug.LogWarning("No '" + typeof(HoverShape).Name + "' reference provided.");
                return;
            }

            HoverCanvas    canvas    = GetComponent <HoverCanvas>();
            HoverShapeRect shapeRect = (Shape as HoverShapeRect);
            HoverShapeArc  shapeArc  = (Shape as HoverShapeArc);

            if (shapeRect)
            {
                UpdateWithRect(canvas, shapeRect);
            }
            else if (shapeArc != null)
            {
                UpdateWithArc(canvas, shapeArc);
            }
            else
            {
                throw new Exception("Shape not supported: " + Shape);
            }
        }
Пример #2
0
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        private void UpdateWithRect(HoverCanvas pHoverCanvas, HoverShapeRect pShapeRect)
        {
            pHoverCanvas.Controllers.Set(HoverCanvas.SizeXName, this);
            pHoverCanvas.Controllers.Set(HoverCanvas.SizeYName, this);

            pHoverCanvas.SizeX = pShapeRect.SizeX;
            pHoverCanvas.SizeY = pShapeRect.SizeY;
        }
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        public override void TreeUpdate()
        {
            HoverpanelInterface panel = GetComponent <HoverpanelInterface>();
            HoverShapeRect      shape = GetComponent <HoverShapeRect>();

            UpdateRow(panel.ActiveRow, shape);
            UpdateRow(panel.PreviousRow, shape);
        }
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        private void UpdateRow(HoverLayoutRectRow pRow, HoverShapeRect pShape)
        {
            if (pRow == null)
            {
                return;
            }

            pRow.Controllers.Set(HoverLayoutRectRow.SizeXName, this);
            pRow.Controllers.Set(HoverLayoutRectRow.SizeYName, this);

            pRow.SizeX = pShape.SizeX;
            pRow.SizeY = pShape.SizeY;
        }
Пример #5
0
        ////////////////////////////////////////////////////////////////////////////////////////////////
        /*--------------------------------------------------------------------------------------------*/
        public void PerformBuild()
        {
            TreeUpdater         treeUp    = gameObject.AddComponent <TreeUpdater>();
            HoverShapeRect      shapeRect = gameObject.AddComponent <HoverShapeRect>();
            HoverpanelInterface inter     = gameObject.AddComponent <HoverpanelInterface>();

            ////

            treeUp.enabled = false;

            var row0Go = new GameObject("RowRoot");

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

            if (IncludeExampleRows)
            {
                BuildExampleRows(row0Go);
            }

            treeUp.enabled = true;

            ////

            shapeRect.SizeX = 0.3f;
            shapeRect.SizeY = 0.2f;

            inter.ActiveRow = row0Go.GetComponent <HoverLayoutRectRow>();

            gameObject.AddComponent <HoverpanelRowSizer>();

            HoverpanelRowTransitioner rowTrans = gameObject.AddComponent <HoverpanelRowTransitioner>();

            rowTrans.RowEntryTransition = HoverpanelRowSwitchingInfo.RowEntryType.SlideFromTop;

#if UNITY_EDITOR
            UnityEditor.Events.UnityEventTools.AddPersistentListener(
                inter.OnRowSwitchedEvent, rowTrans.OnRowSwitched);
#else
            inter.OnRowSwitchedEvent.AddListener(rowTrans.OnRowSwitched);
#endif

            gameObject.AddComponent <HoverpanelHighlightPreventer>();
            gameObject.AddComponent <HoverpanelActiveDirection>();
            gameObject.AddComponent <HoverpanelAlphaUpdater>();

            treeUp.Update();             //forces entire interface to update
        }
Пример #6
0
        /*--------------------------------------------------------------------------------------------*/
        public void TreeUpdate()
        {
            bool isSelected = (
                !UseItemSelectionState ||
                CanvasUpdater.IconType == HoverCanvasDataUpdater.IconPairType.RadioOn ||
                CanvasUpdater.IconType == HoverCanvasDataUpdater.IconPairType.CheckboxOn
                );

            HoverMesh.DisplayModeType dispMode = (isSelected ?
                                                  HoverMesh.DisplayModeType.SliderFill : HoverMesh.DisplayModeType.Standard);

            ////

            HoverShapeRect shapeRect  = GetComponent <HoverShapeRect>();
            float          minOutward = -Mathf.Min(shapeRect.SizeX, shapeRect.SizeY) / 2;

            TabOutward   = Mathf.Max(TabOutward, minOutward);
            TabThickness = Mathf.Max(TabThickness, 0);

            ////

            HoverFillButton hoverFill = GetComponent <HoverFillButton>();
            int             meshCount = hoverFill.GetChildMeshCount();

            for (int i = 0; i < meshCount; i++)
            {
                UpdateChildMesh((HoverMeshRectHollowTab)hoverFill.GetChildMesh(i), dispMode);
            }

            if (isSelected)
            {
                hoverFill.Controllers.Set(HoverFillButton.ShowEdgeName, this);
                hoverFill.ShowEdge = true;
                RendererUtil.SetActiveWithUpdate(hoverFill.Edge, true);
            }
        }
Пример #7
0
        /*--------------------------------------------------------------------------------------------*/
        private void UpdateRows()
        {
            HoverpanelInterface panel     = GetComponent <HoverpanelInterface>();
            HoverShapeRect      shape     = GetComponent <HoverShapeRect>();
            bool       isTransitionDone   = (TransitionProgress >= 1);
            var        posScale           = new Vector3(shape.SizeX, shape.SizeY, DepthDistance);
            Vector3    activeFromLocalPos = Vector3.zero;
            Vector3    prevToLocalPos     = Vector3.zero;
            Quaternion activeFromLocalRot = Quaternion.identity;
            Quaternion prevToLocalRot     = Quaternion.identity;

            TransitionProgressCurved = 1 - Mathf.Pow(1 - TransitionProgress, TransitionExponent);

            if (!isTransitionDone)
            {
                switch (RowEntryTransition)
                {
                case HoverpanelRowSwitchingInfo.RowEntryType.SlideFromTop:
                    activeFromLocalPos = Vector3.up;
                    prevToLocalPos     = Vector3.down;
                    break;

                case HoverpanelRowSwitchingInfo.RowEntryType.SlideFromBottom:
                    activeFromLocalPos = Vector3.down;
                    prevToLocalPos     = Vector3.up;
                    break;

                case HoverpanelRowSwitchingInfo.RowEntryType.SlideFromLeft:
                    activeFromLocalPos = Vector3.left;
                    prevToLocalPos     = Vector3.right;
                    break;

                case HoverpanelRowSwitchingInfo.RowEntryType.SlideFromRight:
                    activeFromLocalPos = Vector3.right;
                    prevToLocalPos     = Vector3.left;
                    break;

                case HoverpanelRowSwitchingInfo.RowEntryType.SlideFromFront:
                    activeFromLocalPos = Vector3.back;
                    prevToLocalPos     = Vector3.forward;
                    break;

                case HoverpanelRowSwitchingInfo.RowEntryType.SlideFromBack:
                    activeFromLocalPos = Vector3.forward;
                    prevToLocalPos     = Vector3.back;
                    break;

                case HoverpanelRowSwitchingInfo.RowEntryType.RotateFromTop:
                    activeFromLocalRot = RotateNegX;
                    prevToLocalRot     = RotatePosX;
                    break;

                case HoverpanelRowSwitchingInfo.RowEntryType.RotateFromBottom:
                    activeFromLocalRot = RotatePosX;
                    prevToLocalRot     = RotateNegX;
                    break;

                case HoverpanelRowSwitchingInfo.RowEntryType.RotateFromLeft:
                    activeFromLocalRot = RotateNegY;
                    prevToLocalRot     = RotatePosY;
                    break;

                case HoverpanelRowSwitchingInfo.RowEntryType.RotateFromRight:
                    activeFromLocalRot = RotatePosY;
                    prevToLocalRot     = RotateNegY;
                    break;
                }
            }

            panel.ActiveRow.Controllers.Set(SettingsControllerMap.GameObjectActiveSelf, this);
            panel.ActiveRow.Controllers.Set(SettingsControllerMap.TransformLocalPosition, this);
            panel.ActiveRow.Controllers.Set(SettingsControllerMap.TransformLocalRotation, this);

            panel.ActiveRow.gameObject.SetActive(true);
            activeFromLocalPos = Vector3.Scale(activeFromLocalPos, posScale);

            panel.ActiveRow.transform.localPosition =
                Vector3.Lerp(activeFromLocalPos, Vector3.zero, TransitionProgressCurved);
            panel.ActiveRow.transform.localRotation =
                Quaternion.Slerp(activeFromLocalRot, Quaternion.identity, TransitionProgressCurved);

            if (panel.PreviousRow == null)
            {
                return;
            }

            panel.PreviousRow.Controllers.Set(SettingsControllerMap.GameObjectActiveSelf, this);
            panel.PreviousRow.Controllers.Set(SettingsControllerMap.TransformLocalPosition, this);
            panel.PreviousRow.Controllers.Set(SettingsControllerMap.TransformLocalRotation, this);

            panel.PreviousRow.gameObject.SetActive(!isTransitionDone);
            prevToLocalPos = Vector3.Scale(prevToLocalPos, posScale);

            panel.PreviousRow.transform.localPosition =
                Vector3.Lerp(Vector3.zero, prevToLocalPos, TransitionProgressCurved);
            panel.PreviousRow.transform.localRotation =
                Quaternion.Slerp(Quaternion.identity, prevToLocalRot, TransitionProgressCurved);
        }