/// <summary> /// Fired after the node editor events /// </summary> public override void AfterEditorEvents() { CheckActivation(); if (!IsActivated) { return; } if (!Event.current.IsLeftClickEvent()) { return; } if (Event.current.modifiers != EventModifiers.None) { return; } Node clickedNode = NodeEditor.GetNodeUnderMouse(); Connector clickedConnector = NodeEditor.GetNodeConnectorUnderMouse(); if (clickedNode == null && clickedConnector == null) { NodeEditor.UnselectAll(); NodeEditor.RaiseSelectionChanged(); NodeEditor.FlagRepaint(); } }
/// <summary> /// Checks for node selection before the editor processes the /// left-clicks /// </summary> public override void BeforeEditorEvents() { CheckActivation(); if (!IsActivated) { return; } if (Event.current.type != EventType.MouseDown || Event.current.button != 0) { return; } bool multiSelectActive = Event.current.modifiers == EventModifiers.Control || Event.current.modifiers == EventModifiers.Shift; Node clickedNode = NodeEditor.GetNodeUnderMouse(); if (clickedNode == null) { return; } if (!clickedNode.IsSelectable) { return; } bool isNodeSelected = clickedNode.IsSelected(); if (!multiSelectActive) { if (!isNodeSelected) { NodeEditor.UnselectAll(); clickedNode.Select(); } } else { clickedNode.ToggleSelected(); } NodeEditor.RaiseSelectionChanged(); NodeEditor.FlagRepaint(); Event.current.Use(); }
public override void BeforeEditorEvents() { CheckActivation(); if (!IsActivated) { return; } if (!Event.current.IsLeftClickEvent()) { return; } bool multiSelectActive = Event.current.modifiers == EventModifiers.Control || Event.current.modifiers == EventModifiers.Shift; Connector clickedConnector = NodeEditor.GetNodeConnectorUnderMouse(); if (clickedConnector == null) { return; } if (!clickedConnector.IsSelectable) { return; } bool isSelected = clickedConnector.IsSelected(); if (!multiSelectActive) { if (!isSelected) { NodeEditor.UnselectAll(); clickedConnector.Select(); } } else { clickedConnector.ToggleSelected(); } NodeEditor.RaiseSelectionChanged(); NodeEditor.FlagRepaint(); Event.current.Use(); }
/// <summary> /// Configures the rectangle used for selection /// </summary> public override void AfterEditorEvents() { CheckActivation(); if (!IsActivated) { return; } if (Event.current.button != 0) { Cancel(); Event.current.Use(); return; } if (Event.current.type == EventType.MouseDrag) { Vector2 startPoint = NodeEditor.ApplyZoomToVector(dragStartPos); Vector2 endPoint = NodeEditor.GetZoomedMousePosition(); selectionRect = RectExtensions.FromPoints(startPoint, endPoint); NodeEditor.FlagRepaint(); Event.current.Use(); } else if (Event.current.type == EventType.MouseUp) { SelectNodes(); SelectConnectors(); NodeEditor.RaiseSelectionChanged(); selectionRect = Rect.zero; Deactivate(); Event.current.Use(); } else if (Event.current.type == EventType.MouseLeaveWindow) { Cancel(); } }
/// <summary> /// Handles cancelling box select mode /// </summary> protected override void OnCancelled() { NodeEditor.UnselectAll(); NodeEditor.RaiseSelectionChanged(); }