You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
103 lines
3.4 KiB
103 lines
3.4 KiB
using UnityEngine; |
|
|
|
namespace UnityEditor.Timeline |
|
{ |
|
abstract class Manipulator |
|
{ |
|
int m_Id; |
|
|
|
protected virtual bool MouseDown(Event evt, WindowState state) { return false; } |
|
protected virtual bool MouseDrag(Event evt, WindowState state) { return false; } |
|
protected virtual bool MouseWheel(Event evt, WindowState state) { return false; } |
|
protected virtual bool MouseUp(Event evt, WindowState state) { return false; } |
|
protected virtual bool DoubleClick(Event evt, WindowState state) { return false; } |
|
protected virtual bool KeyDown(Event evt, WindowState state) { return false; } |
|
protected virtual bool KeyUp(Event evt, WindowState state) { return false; } |
|
protected virtual bool ContextClick(Event evt, WindowState state) { return false; } |
|
protected virtual bool ValidateCommand(Event evt, WindowState state) { return false; } |
|
protected virtual bool ExecuteCommand(Event evt, WindowState state) { return false; } |
|
|
|
public virtual void Overlay(Event evt, WindowState state) { } |
|
|
|
public bool HandleEvent(WindowState state) |
|
{ |
|
Event currentEvent = Event.current; |
|
var type = currentEvent.GetTypeForControl(m_Id); |
|
return HandleEvent(type, currentEvent, state); |
|
} |
|
|
|
public bool HandleEvent(EventType type, WindowState state) |
|
{ |
|
Event currentEvent = Event.current; |
|
return HandleEvent(type, currentEvent, state); |
|
} |
|
|
|
bool HandleEvent(EventType type, Event evt, WindowState state) |
|
{ |
|
if (m_Id == 0) |
|
m_Id = GUIUtility.GetPermanentControlID(); |
|
|
|
bool isHandled = false; |
|
|
|
switch (type) |
|
{ |
|
case EventType.ScrollWheel: |
|
isHandled = MouseWheel(evt, state); |
|
break; |
|
|
|
case EventType.MouseUp: |
|
{ |
|
if (GUIUtility.hotControl == m_Id) |
|
{ |
|
isHandled = MouseUp(evt, state); |
|
|
|
GUIUtility.hotControl = 0; |
|
evt.Use(); |
|
} |
|
} |
|
break; |
|
|
|
case EventType.MouseDown: |
|
{ |
|
isHandled = evt.clickCount < 2 ? MouseDown(evt, state) : DoubleClick(evt, state); |
|
|
|
if (isHandled) |
|
GUIUtility.hotControl = m_Id; |
|
} |
|
break; |
|
|
|
case EventType.MouseDrag: |
|
{ |
|
if (GUIUtility.hotControl == m_Id) |
|
isHandled = MouseDrag(evt, state); |
|
} |
|
break; |
|
|
|
case EventType.KeyDown: |
|
isHandled = KeyDown(evt, state); |
|
break; |
|
|
|
case EventType.KeyUp: |
|
isHandled = KeyUp(evt, state); |
|
break; |
|
|
|
case EventType.ContextClick: |
|
isHandled = ContextClick(evt, state); |
|
break; |
|
|
|
case EventType.ValidateCommand: |
|
isHandled = ValidateCommand(evt, state); |
|
break; |
|
|
|
case EventType.ExecuteCommand: |
|
isHandled = ExecuteCommand(evt, state); |
|
break; |
|
} |
|
|
|
if (isHandled) |
|
evt.Use(); |
|
|
|
return isHandled; |
|
} |
|
} |
|
}
|
|
|