private void ProcessEvents(Event e) { drag = Vector2.zero; switch (e.type) { // check for selection or context menu case EventType.MouseDown: if (e.button == 0 && ClickManager.IsDoubleClick((float)EditorApplication.timeSinceStartup, e.mousePosition, SDEComponentType.Nothing)) { Vector2 creationOffset = CreationOffset(e.mousePosition); NodeManager.AddNodeAt(e.mousePosition - creationOffset, NodeType.Nothing); } if (e.button == 1 && SelectionManager.SelectedComponentType() == SDEComponentType.Nothing) { ProcessContextMenu(e.mousePosition); } break; // check for window dragging case EventType.MouseDrag: if (e.button == 0) { OnDrag(e.delta); } break; // listen for key commands case EventType.KeyDown: // NOTE: Unity editor is broken, so both a tab KeyCode AND a '\t' character // gets parsed on key press. The '\t' character is what the editor uses // internally for it's default tab cycling (which we want to override). if (e.character == '\t') { e.Use(); } //eat the input if (SelectionManager.SelectedComponentType() != SDEComponentType.TextArea) { if (ProcessKeyboardInput(e.keyCode)) { e.Use(); } } break; } }