123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- 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;
- }
- }
- }
|