From 2a87dd3affe778d636e520aec114da99e555a992 Mon Sep 17 00:00:00 2001 From: minenice55 Date: Tue, 28 Jun 2022 15:57:32 -0400 Subject: [PATCH] fix tooltip with scaled window --- Assets/Scripts/LevelEditor/Editor.cs | 2 +- Assets/Scripts/LevelEditor/Tooltip.cs | 26 ++++++++++++++++---------- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/Assets/Scripts/LevelEditor/Editor.cs b/Assets/Scripts/LevelEditor/Editor.cs index 0faaa7399..d999ea07c 100644 --- a/Assets/Scripts/LevelEditor/Editor.cs +++ b/Assets/Scripts/LevelEditor/Editor.cs @@ -25,7 +25,7 @@ namespace HeavenStudio.Editor { private Initializer Initializer; - [SerializeField] private Canvas MainCanvas; + [SerializeField] public Canvas MainCanvas; [SerializeField] public Camera EditorCamera; [SerializeField] public GameObject EditorLetterbox; diff --git a/Assets/Scripts/LevelEditor/Tooltip.cs b/Assets/Scripts/LevelEditor/Tooltip.cs index f2facb7e8..241e08645 100644 --- a/Assets/Scripts/LevelEditor/Tooltip.cs +++ b/Assets/Scripts/LevelEditor/Tooltip.cs @@ -27,27 +27,33 @@ namespace HeavenStudio.Editor private void Update() { - Vector2 anchoredPosition = Input.mousePosition; + Vector3 anchoredPosition = Input.mousePosition; + Camera camera = Camera.main; + Vector3 canvasScale = Editor.instance.MainCanvas.transform.localScale; + Vector2 scale = new Vector2(canvasScale.x, canvasScale.y); + float toolTipScale = camera.pixelWidth / 1280f; - if (anchoredPosition.x + background.rect.width > canvasRect.rect.width) + if (anchoredPosition.x + background.rect.width * toolTipScale > camera.pixelWidth) { - anchoredPosition.x = canvasRect.rect.width - background.rect.width; + anchoredPosition.x = camera.pixelWidth - background.rect.width * toolTipScale; } - if (anchoredPosition.x < 0) + if (anchoredPosition.x < -camera.pixelWidth) { - anchoredPosition.x = 0; + anchoredPosition.x = -camera.pixelWidth; } - if (anchoredPosition.y + background.rect.height > canvasRect.rect.height) + if (anchoredPosition.y + background.rect.height * toolTipScale > camera.pixelHeight) { - anchoredPosition.y = canvasRect.rect.height - background.rect.height; + anchoredPosition.y = camera.pixelHeight - background.rect.height * toolTipScale; } - if (anchoredPosition.y < 0) + if (anchoredPosition.y < -camera.pixelHeight) { - anchoredPosition.y = 0; + anchoredPosition.y = -camera.pixelHeight; } - rectTransform.anchoredPosition = anchoredPosition; + anchoredPosition.z = camera.nearClipPlane; + anchoredPosition = camera.ScreenToWorldPoint(anchoredPosition); + rectTransform.anchoredPosition = anchoredPosition / scale; } public static void OnEnter(string tooltipText, string altTooltipText)