Files
ft/Client/Packages/io.github.hatayama.uloopmcp/Editor/Api/McpTools/SimulateMouseUi/MouseDragState.cs

39 lines
1.1 KiB
C#

#nullable enable
using UnityEditor;
using UnityEngine;
using UnityEngine.EventSystems;
namespace io.github.hatayama.uLoopMCP
{
// Tool instances are created fresh per invocation, so drag state
// between DragStart/DragMove/DragEnd must be held statically.
[InitializeOnLoad]
internal static class MouseDragState
{
internal static bool IsDragging => Target != null && PointerData != null;
internal static GameObject? Target { get; set; }
internal static PointerEventData? PointerData { get; set; }
static MouseDragState()
{
// PlayMode exit leaves dangling references to destroyed GameObjects
EditorApplication.playModeStateChanged += OnPlayModeStateChanged;
}
internal static void Clear()
{
Target = null;
PointerData = null;
}
private static void OnPlayModeStateChanged(PlayModeStateChange state)
{
if (state == PlayModeStateChange.ExitingPlayMode)
{
Clear();
SimulateMouseUiOverlayState.Clear();
}
}
}
}