/*--------------------------------------------------------------------------------------------*/ 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); } }
//////////////////////////////////////////////////////////////////////////////////////////////// /*--------------------------------------------------------------------------------------------*/ 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; }
//////////////////////////////////////////////////////////////////////////////////////////////// /*--------------------------------------------------------------------------------------------*/ 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 }
/*--------------------------------------------------------------------------------------------*/ 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); } }
/*--------------------------------------------------------------------------------------------*/ 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); }