From a3f1070d4bc5b45600cd41049d35438fd2e4b590 Mon Sep 17 00:00:00 2001 From: Matt Date: Mon, 10 Sep 2018 17:07:03 +0200 Subject: [PATCH] Fixed bug where device orientation changes caused responsively scaled buttons to calculate wrong sizes --- Assets/RothenburgAR/Scripts/UI/DisplayManager.cs | 8 ++++++++ .../Scripts/UI/PercentualPaddingBehaviour.cs | 15 +++++++-------- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/Assets/RothenburgAR/Scripts/UI/DisplayManager.cs b/Assets/RothenburgAR/Scripts/UI/DisplayManager.cs index 46b1b79..8a8e12d 100644 --- a/Assets/RothenburgAR/Scripts/UI/DisplayManager.cs +++ b/Assets/RothenburgAR/Scripts/UI/DisplayManager.cs @@ -68,6 +68,14 @@ namespace RothenburgAR.UI resolution = new Vector2(Screen.width, Screen.height); OnResolutionChange.Invoke(); } + +#if UNITY_EDITOR + else + { + // PC doesn't have device orientation, so do this for testing purposes + OnOrientationChange.Invoke(); + } +#endif } public void AddResolutionChangeListener(UnityAction callback) diff --git a/Assets/RothenburgAR/Scripts/UI/PercentualPaddingBehaviour.cs b/Assets/RothenburgAR/Scripts/UI/PercentualPaddingBehaviour.cs index 8be828e..c2a7677 100644 --- a/Assets/RothenburgAR/Scripts/UI/PercentualPaddingBehaviour.cs +++ b/Assets/RothenburgAR/Scripts/UI/PercentualPaddingBehaviour.cs @@ -14,31 +14,30 @@ namespace RothenburgAR.UI void Start() { DisplayManager.Instance.OnOrientationChange.AddListener(RecalculateTransform); - DisplayManager.Instance.OnResolutionChange.AddListener(RecalculateTransform); RecalculateTransform(); } void OnDestroy() { DisplayManager.Instance.OnOrientationChange.RemoveListener(RecalculateTransform); - DisplayManager.Instance.OnResolutionChange.RemoveListener(RecalculateTransform); } public void RecalculateTransform() { var transform = this.GetComponent(); float desiredPadding = Mathf.Max(Screen.height, Screen.width) * Padding; - - // make object square var size = Mathf.Min(transform.rect.width, transform.rect.height); - transform.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, size); - transform.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, size); // set padding when applicable - if (transform.anchorMax.y >= 0.99f) transform.SetInsetAndSizeFromParentEdge(RectTransform.Edge.Top, desiredPadding, size); if (transform.anchorMax.x >= 0.99f) transform.SetInsetAndSizeFromParentEdge(RectTransform.Edge.Right, desiredPadding, size); - if (transform.anchorMin.y <= 0.01f) transform.SetInsetAndSizeFromParentEdge(RectTransform.Edge.Bottom, desiredPadding, size); if (transform.anchorMin.x <= 0.01f) transform.SetInsetAndSizeFromParentEdge(RectTransform.Edge.Left, desiredPadding, size); + if (transform.anchorMax.y >= 0.99f) transform.SetInsetAndSizeFromParentEdge(RectTransform.Edge.Top, desiredPadding, size); + if (transform.anchorMin.y <= 0.01f) transform.SetInsetAndSizeFromParentEdge(RectTransform.Edge.Bottom, desiredPadding, size); + + // make object square when needed (doesn't work as intended) + //transform.ForceUpdateRectTransforms(); + //if (transform.anchorMin.x > 0.01f && transform.anchorMax.x < 0.99f) transform.SetInsetAndSizeFromParentEdge(RectTransform.Edge.Left, transform.rect.xMin, size); + //if (transform.anchorMin.y > 0.01f && transform.anchorMax.y < 0.99f) transform.SetInsetAndSizeFromParentEdge(RectTransform.Edge.Top, transform.rect.yMin, size); } } } \ No newline at end of file