From c362aeac071df1b1179a7da0f9a4cb8d0d859e41 Mon Sep 17 00:00:00 2001 From: Matt Date: Sun, 21 Oct 2018 15:41:01 +0200 Subject: [PATCH] DetailsPanel now stretches horizontally in Portrait mode and vertically in Landscape mode --- Assets/Resources/UI/ARView.prefab | 16 ++--- .../Exhibition/ExhibitTitleBehaviour.cs | 2 +- .../Scripts/UI/DetailsPanelBehaviour.cs | 61 ++++++++++++++++--- 3 files changed, 63 insertions(+), 16 deletions(-) diff --git a/Assets/Resources/UI/ARView.prefab b/Assets/Resources/UI/ARView.prefab index 6785c59..04e2116 100644 --- a/Assets/Resources/UI/ARView.prefab +++ b/Assets/Resources/UI/ARView.prefab @@ -211,8 +211,8 @@ GameObject: - component: {fileID: 224250538007241578} - component: {fileID: 222458038700812966} - component: {fileID: 114213177184435094} - - component: {fileID: 111894107479966502} - component: {fileID: 114451700018395534} + - component: {fileID: 111859617734083424} m_Layer: 5 m_Name: DetailsPanel m_TagString: Untagged @@ -451,7 +451,7 @@ GameObject: - component: {fileID: 222281876000192902} - component: {fileID: 114850943686386882} m_Layer: 5 - m_Name: ScrollContainer + m_Name: TextScrollContainer m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -690,7 +690,7 @@ Animator: m_WarningMessage: m_HasTransformHierarchy: 1 m_AllowConstantClipSamplingOptimization: 1 ---- !u!111 &111894107479966502 +--- !u!111 &111859617734083424 Animation: m_ObjectHideFlags: 1 m_PrefabParentObject: {fileID: 0} @@ -1529,8 +1529,8 @@ MonoBehaviour: m_TargetGraphic: {fileID: 114013157313467306} m_HandleRect: {fileID: 224126681634059420} m_Direction: 2 - m_Value: 0.5 - m_Size: 0.49794 + m_Value: 0.49999964 + m_Size: 0.7254501 m_NumberOfSteps: 0 m_OnValueChanged: m_PersistentCalls: @@ -1827,7 +1827,7 @@ MonoBehaviour: spaceCount: 174 wordCount: 174 linkCount: 0 - lineCount: 29 + lineCount: 24 pageCount: 1 materialCount: 1 m_havePropertiesChanged: 1 @@ -2332,7 +2332,7 @@ RectTransform: m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} m_AnchoredPosition: {x: 25, y: 25} - m_SizeDelta: {x: 460, y: 375} + m_SizeDelta: {x: 550, y: 450} m_Pivot: {x: 0, y: 0} --- !u!224 &224251385334151864 RectTransform: @@ -2368,7 +2368,7 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: -0.000030517578} + m_AnchoredPosition: {x: 0, y: -0.000015258789} m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0.5, y: 0.5} --- !u!224 &224272151730405692 diff --git a/Assets/RothenburgAR/Scripts/Exhibition/ExhibitTitleBehaviour.cs b/Assets/RothenburgAR/Scripts/Exhibition/ExhibitTitleBehaviour.cs index f1a6692..519b5be 100644 --- a/Assets/RothenburgAR/Scripts/Exhibition/ExhibitTitleBehaviour.cs +++ b/Assets/RothenburgAR/Scripts/Exhibition/ExhibitTitleBehaviour.cs @@ -137,7 +137,7 @@ namespace RothenburgAR.Exhibition outlineRenderer.SetPosition(7, topRight); outlineRenderer.SetPosition(8, topLeft); - outlineRenderer.numCornerVertices = 1; + outlineRenderer.numCornerVertices = 2; outlineRenderer.numCapVertices = 1; outlineRenderer.alignment = LineAlignment.Local; diff --git a/Assets/RothenburgAR/Scripts/UI/DetailsPanelBehaviour.cs b/Assets/RothenburgAR/Scripts/UI/DetailsPanelBehaviour.cs index 3dcaf60..ffc4fbe 100644 --- a/Assets/RothenburgAR/Scripts/UI/DetailsPanelBehaviour.cs +++ b/Assets/RothenburgAR/Scripts/UI/DetailsPanelBehaviour.cs @@ -18,9 +18,53 @@ namespace RothenburgAR.UI public GameObject IconLoading; public GameObject Icon3D; + private float initialHeight; + private float initialWidth; + private void Start() { gameObject.SetActive(false); + DisplayManager.Instance.AddOrientationChangeListener(SetSize); + } + + private void OnEnable() + { + SetSize(); + } + + private void OnDestroy() + { + DisplayManager.Instance.RemoveOrientationChangeListener(SetSize); + RemoveModel(); + } + + private void SetSize() + { + var transform = GetComponent(); + var border = 0f; + + initialWidth = initialWidth == 0 + ? transform.offsetMax.x + : initialWidth; + + initialHeight = initialHeight == 0 + ? transform.offsetMax.y + : initialHeight; + + if (Screen.orientation == ScreenOrientation.Portrait) + { + // stretch horizontally + transform.anchorMax = new Vector2(1, 0); + transform.offsetMin = new Vector2(border, border); + transform.offsetMax = new Vector2(-border, initialHeight); + } + else //if (Screen.orientation == ScreenOrientation.Landscape) //landscape or default? + { + // stretch vertically + transform.anchorMax = new Vector2(0, 1); + transform.offsetMin = new Vector2(border, border); + transform.offsetMax = new Vector2(initialWidth, -border); + } } public bool HasModel @@ -126,11 +170,13 @@ namespace RothenburgAR.UI public void UpdateOpeningAnimation(Vector3 position) { float duration = .4f; + StartCoroutine("SetSizeAfterSeconds", duration + .1f); + var scale = DisplayManager.Instance.GetComponent().localScale.x; Vector3 screenMiddle = new Vector3(Screen.width / scale, Screen.height / scale, 0) * 0.5f; Vector3 startPos = Camera.main.WorldToScreenPoint(position) / scale - screenMiddle; - Vector3 endPos = -screenMiddle + new Vector3(25, 25, 0); + Vector3 endPos = -screenMiddle; float startScale = 0.05f; float endScale = 1; @@ -139,7 +185,7 @@ namespace RothenburgAR.UI var clip = new AnimationClip { legacy = true, - name = "DetailsOpen" + name = "DetailsOpen", }; // inTangent and outTangent are the curve's angles to and from this keyframe in radians. @@ -172,6 +218,12 @@ namespace RothenburgAR.UI anim.Play(clip.name); } + private IEnumerator SetSizeAfterSeconds(float duration) + { + yield return new WaitForSecondsRealtime(duration); + SetSize(); + } + public void OnDetailsPanelDrag(BaseEventData data) { DetailsModel.RotateModelByDrag(data as PointerEventData); @@ -186,10 +238,5 @@ namespace RothenburgAR.UI { DetailsModel.EndRotateModelByDrag(data as PointerEventData); } - - private void OnDestroy() - { - RemoveModel(); - } } } \ No newline at end of file