From 7fa0604facb475a381caee52ff7589c895aa4124 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guillem=20Sunyer=20Cald=C3=BA?= Date: Wed, 30 Mar 2022 22:10:54 +0200 Subject: [PATCH] Maths --- ...tSystemUIInputModuleNavigationExtension.cs | 13 ------------ Runtime/ScrollView/ScrollWithSelection.cs | 20 ++++++++++++------- 2 files changed, 13 insertions(+), 20 deletions(-) diff --git a/Runtime/Navigation/InputSystemUIInputModuleNavigationExtension.cs b/Runtime/Navigation/InputSystemUIInputModuleNavigationExtension.cs index 2f076a8..7366f61 100644 --- a/Runtime/Navigation/InputSystemUIInputModuleNavigationExtension.cs +++ b/Runtime/Navigation/InputSystemUIInputModuleNavigationExtension.cs @@ -47,19 +47,6 @@ private void LateUpdate() TrySelectDesignated(); } - private void OnApplicationFocus(bool focus) - { - if(!focus) - { - return; - } - - if(!IsUsingSelectables) - { - return; - } - } - public void SetFallbackSelectable(Selectable fallbackSelectable) { if (fallbackSelectable == null) diff --git a/Runtime/ScrollView/ScrollWithSelection.cs b/Runtime/ScrollView/ScrollWithSelection.cs index 473ee6a..e500d9e 100644 --- a/Runtime/ScrollView/ScrollWithSelection.cs +++ b/Runtime/ScrollView/ScrollWithSelection.cs @@ -1,4 +1,5 @@ using Juce.Input.Navigation; +using System; using UnityEngine; using UnityEngine.EventSystems; @@ -51,22 +52,27 @@ private void TryScroll(RectTransform scrollRect, RectTransform content) float scrollViewMinY = content.anchoredPosition.y; float scrollViewMaxY = content.anchoredPosition.y + scrollRect.rect.height; - float selectedPositionY = Mathf.Abs(selectedRectTransform.anchoredPosition.y) + (selectedRectTransform.rect.height / 2); + float selectedPositionMinY = Mathf.Abs(selectedRectTransform.anchoredPosition.y) - (selectedRectTransform.rect.height / 2); + float selectedPositionMaxY = Mathf.Abs(selectedRectTransform.anchoredPosition.y) + (selectedRectTransform.rect.height / 2); // If selection below scroll view - if (selectedPositionY > scrollViewMaxY) + if (selectedPositionMaxY > scrollViewMaxY) { - float newY = selectedPositionY - scrollRect.rect.height; - content.anchoredPosition = new Vector2(content.anchoredPosition.x, newY + verticalSpacing); + float newY = selectedPositionMaxY - scrollRect.rect.height; + float newYWithVerticalSpacing = newY + verticalSpacing; + + content.anchoredPosition = new Vector2(content.anchoredPosition.x, newYWithVerticalSpacing); return; } // If selection above scroll view - if (Mathf.Abs(selectedRectTransform.anchoredPosition.y) < scrollViewMinY) + if (selectedPositionMinY < scrollViewMinY) { - float newY = Mathf.Abs(selectedRectTransform.anchoredPosition.y) - (selectedRectTransform.rect.height / 2); - content.anchoredPosition = new Vector2(content.anchoredPosition.x, newY - verticalSpacing); + float newYWithVerticalSpacing = selectedPositionMinY - verticalSpacing; + newYWithVerticalSpacing = Math.Max(0, newYWithVerticalSpacing); + + content.anchoredPosition = new Vector2(content.anchoredPosition.x, newYWithVerticalSpacing); return; }