diff --git a/Assets/Scripts/XED/UI/Tag/UI_GUIWindow.cs b/Assets/Scripts/XED/UI/Tag/UI_GUIWindow.cs index 56ea8e87..a66d46d1 100644 --- a/Assets/Scripts/XED/UI/Tag/UI_GUIWindow.cs +++ b/Assets/Scripts/XED/UI/Tag/UI_GUIWindow.cs @@ -53,6 +53,8 @@ namespace XED.UI [SerializeField] Texture2D cursor_DownRight; + Vector2 mousePos; + Direction direction; Vector2 initialMousePos; @@ -78,31 +80,34 @@ namespace XED.UI private void OnEnable() { - state = GUIState.None; + InitializeState(); transform.SetAsLastSibling(); } + private void OnDisable() + { + InitializeState(); + } + private void Update() { bool mouseDown = Input.GetMouseButtonDown(0); bool mouseUp = Input.GetMouseButtonUp(0); - Vector2 mousePos = Input.mousePosition; + mousePos = Input.mousePosition; if (mouseUp) { - state = GUIState.None; - SetPanelPivot(initialPivot); + InitializeState(); } - ChangeMouseCursor(mousePos); + ChangeMouseCursor(); - Direction handleDirection = GetHandleDirection(mousePos); + Direction handleDirection = GetHandleDirection(); if (mouseDown && handleDirection != Direction.None) { SetResizeState(handleDirection); } - - if (mouseDown && IsHeaderRange(mousePos)) + else if (mouseDown && IsRectContainsMouse(header)) { SetMoveState(); } @@ -118,18 +123,18 @@ namespace XED.UI } } - bool IsHeaderRange(Vector2 pos) + bool IsRectContainsMouse(RectTransform range) { Vector2 localPoint; - RectTransformUtility.ScreenPointToLocalPointInRectangle(header, pos, null, out localPoint); + RectTransformUtility.ScreenPointToLocalPointInRectangle(range, mousePos, null, out localPoint); return header.rect.Contains(localPoint); } - Direction GetHandleDirection(Vector2 pos) + Direction GetHandleDirection() { Vector2 localPoint; - RectTransformUtility.ScreenPointToLocalPointInRectangle(rect, pos, null, out localPoint); + RectTransformUtility.ScreenPointToLocalPointInRectangle(rect, mousePos, null, out localPoint); if (!rect.rect.Contains(localPoint)) return Direction.None; @@ -279,12 +284,12 @@ namespace XED.UI rect.localPosition -= deltaPosition; } - public void ChangeMouseCursor(Vector2 pos) + public void ChangeMouseCursor() { if (state == GUIState.Resize) return; - switch (GetHandleDirection(pos)) + switch (GetHandleDirection()) { case Direction.Up: ChangeCursor(cursor_Up); @@ -327,5 +332,12 @@ namespace XED.UI Cursor.SetCursor(cursorTexture, hotspot, CursorMode.Auto); } + + void InitializeState() + { + state = GUIState.None; + SetPanelPivot(initialPivot); + ChangeCursor(null); + } } }