rabidus-test/Assets/Dreamteck/Utilities/Editor/EditorGUIEvents.cs

114 lines
3.6 KiB
C#

using UnityEngine;
using UnityEditor;
namespace Dreamteck
{
public class EditorGUIEvents
{
public bool mouseLeft = false;
public bool mouseRight = false;
public bool mouseLeftDown = false;
public bool mouseRightDown = false;
public bool mouseLeftUp = false;
public bool mouseRightUp = false;
public bool control = false;
public bool shift = false;
public bool alt = false;
public bool enterDown = false;
public bool v = false;
public Vector2 mousPos = Vector2.zero;
public Vector2 lastClickPoint = Vector2.zero;
public Vector2 mouseClickDelta
{
get
{
return Event.current.mousePosition - lastClickPoint;
}
}
public delegate void CommandHandler(string command);
public delegate void KeyCodeHandler(KeyCode code);
public delegate void MouseHandler(int button);
public delegate void EmptyHandler();
public event CommandHandler onCommand;
public event KeyCodeHandler onkeyDown;
public event KeyCodeHandler onKeyUp;
public event MouseHandler onMouseDown;
public event MouseHandler onMouseUp;
public void Use()
{
mouseLeft = false;
mouseRight = false;
mouseLeftDown = false;
mouseRightDown = false;
mouseLeftUp = false;
mouseRightUp = false;
control = false;
shift = false;
alt = false;
Event.current.Use();
}
public void Update()
{
ListenInput(Event.current);
}
public void Update(Event current)
{
ListenInput(current);
}
void ListenInput(Event e)
{
//int controlID = GUIUtility.GetControlID(FocusType.Passive);
mousPos = e.mousePosition;
mouseLeftDown = mouseLeftUp = mouseRightDown = mouseRightUp = false;
control = e.control;
shift = e.shift;
alt = e.alt;
enterDown = false;
switch (e.type)
{
case EventType.MouseDown:
if (e.button == 0)
{
mouseLeftDown = true;
mouseLeft = true;
lastClickPoint = e.mousePosition;
}
if (e.button == 1) mouseRightDown = mouseRight = true;
if (onMouseDown != null) onMouseDown(e.button);
break;
case EventType.MouseUp:
if (e.button == 0)
{
mouseLeftUp = true;
mouseLeft = false;
}
if (e.button == 1)
{
mouseRightDown = true;
mouseRight = false;
}
if (onMouseUp != null) onMouseUp(e.button);
break;
case EventType.KeyDown:
if (onkeyDown != null) onkeyDown(e.keyCode);
if (e.keyCode == KeyCode.Return || e.keyCode == KeyCode.KeypadEnter) enterDown = true;
if (e.keyCode == KeyCode.V) v = true;
break;
case EventType.KeyUp:
if (onKeyUp != null) onKeyUp(e.keyCode);
if (e.keyCode == KeyCode.V) v = false;
break;
}
if (onCommand != null && e.commandName != "") onCommand(e.commandName);
}
}
}