public EItemAction HandleEvents(Event e) { EItemAction result = EItemAction.None; if (Box != null) { switch (e.type) { case EventType.MouseDown: // Right click if (e.button == 1) { if (Box.Contains(e.mousePosition)) { result = EItemAction.ContextMenuEdge; } } break; } } return(result); }
private void HandleEvents(Event e) { EItemAction itemAction = EItemAction.None; int i = 0; foreach (ConversationItem item in mConversation.Items) { itemAction = item.HandleEvents(e); if (itemAction == EItemAction.ContextMenuItem) { OpenContextMenuForNode(item, e.mousePosition, i == 0); break; } else if (itemAction == EItemAction.Select) { // TODO: Make object selectable in inspector? //ConversationItemSO so = ScriptableObject.CreateInstance<ConversationItemSO>(); //so.Item = item; //Selection.activeObject = so; if (mPendingConnection != null) { mPendingConnection.ToId = item.ID; mConversation.Edges.Add(mPendingConnection); mPendingConnection.InitByIds(mConversation); mPendingConnection = null; } break; } else if (itemAction == EItemAction.Drag) { if (mCurrentDragItem == null) { mCurrentDragItem = item; } mCurrentDragItem.Drag(e); break; } i++; } // Handle edge events if (itemAction == EItemAction.None) { foreach (var edge in mConversation.Edges) { itemAction = edge.HandleEvents(e); if (itemAction == EItemAction.ContextMenuEdge) { OpenContextMenuForEdge(edge, e.mousePosition); break; } } } // No item or edge action if (itemAction == EItemAction.None) { switch (e.type) { case EventType.MouseDrag: if (mCurrentDragItem != null) { mCurrentDragItem.Drag(e); } break; case EventType.MouseUp: mCurrentDragItem = null; break; case EventType.MouseDown: // Right mouse button if (e.button == 1) { OpenContextMenu(e.mousePosition); } // Left mouse button else if (e.button == 0) { DeletePendingConnection(); } break; case EventType.KeyDown: if (e.keyCode == KeyCode.Escape) { DeletePendingConnection(); } break; } } }