protected void UserInput(Event e) { if (currentGraph == null) { return; } BaseNode start = selectedNode; if (e.modifiers == EventModifiers.Control && e.keyCode == KeyCode.D && e.type == EventType.KeyUp) { if (currentGraph.selectedNodes.Count > 0) { currentGraph.DuplicateSelection(mousePosition.x, mousePosition.y); } else { if (selectedNode != null) { currentGraph.AddNode(selectedNode.drawNode, mousePosition.x, mousePosition.y, selectedNode.WindowTitle); } } selectedNode = null; Repaint(); } if (e.button == 1) { if (e.type == EventType.MouseDown) { HandleGraphSelection(e); RightClick(e); } } if (e.button == 0) { if (e.type == EventType.MouseDown) { HandleGraphSelection(e); } if (e.type == EventType.MouseDrag) { if (clickedOnWindow && currentGraph.selectedNodes.Count > 0) { for (int i = 0; i < currentGraph.selectedNodes.Count; i++) { currentGraph.selectedNodes[i].WindowRect.position += e.delta; } } selectionBoxCurrentPos = mousePosition; if (!creatingSelectionZone && !clickedOnWindow && e.modifiers == EventModifiers.Shift) { creatingSelectionZone = true; selectionBoxStartPos = selectionBoxCurrentPos; } } if (e.type == EventType.MouseUp) { if (creatingSelectionZone) { selectionBoxCurrentPos = mousePosition; currentGraph.selectedNodes.Clear(); Rect r = new Rect(selectionBoxStartPos.x, selectionBoxStartPos.y, selectionBoxCurrentPos.x - selectionBoxStartPos.x, selectionBoxCurrentPos.y - selectionBoxStartPos.y); foreach (BaseNode b in currentGraph.nodes) { if (r.Contains(b.WindowRect.position)) { if (currentGraph.selectedNodes.Exists(s => s.ID == b.ID)) { continue; } currentGraph.selectedNodes.Add(b); b.focused = true; } } creatingSelectionZone = false; } } if (e.type == EventType.MouseDown) { HandleGraphSelection(e); if (isMakingTransition) { BaseNode end = selectedNode; MakeTransition(start, end); } if (!clickedOnWindow) { foreach (BaseNode b in currentGraph.selectedNodes) { b.focused = false; } currentGraph.selectedNodes.Clear(); } } } if (e.button == 2) { if (e.type == EventType.MouseDown && !clickedOnWindow) { scrollStartPos = e.mousePosition; } else if (e.type == EventType.MouseDrag && !clickedOnWindow) { HandlePanning(e); } } if (e.Equals(Event.KeyboardEvent("delete")) && (selectedNode != null || currentGraph.selectedNodes.Count > 0)) { GUI.FocusControl(null); // removes focus from graph gui if (selectedNode != null && selectedNode.deletable && selectedNode.drawNode.Deletable) { currentGraph.removeNodesIDs.Add(selectedNode.ID); } currentGraph.nodes.ForEach(f => { if (currentGraph.selectedNodes.Exists(n => n.ID == f.ID)) { if (f.deletable && f.drawNode.Deletable) { currentGraph.removeNodesIDs.Add(f.ID); } } }); currentGraph.UnFocusSelectedNodes(); currentGraph.selectedNodes.Clear(); Repaint(); } if (e.type == EventType.ScrollWheel) { HandleZoom(e); } }
public override void DrawCurve(BaseNode b) { }
public override void DrawWindow(BaseNode b) { #if UNITY_EDITOR b.condition = (ECondition)EditorGUILayout.EnumPopup(b.condition); #endif }
public override void DrawWindow(BaseNode b) { b.comment = GUILayout.TextArea(b.comment, 200); }
public override void Execute(BaseNode b) { }
public override void DrawWindow(BaseNode node) { }
public override void Execute(BaseNode b) { b.BehaviourGraph.character.Animator.runtimeAnimatorController = b.animatorController; b.nodeCompleted = b.BehaviourGraph.character.Animator.runtimeAnimatorController == b.animatorController; }
public override void DrawWindow(BaseNode b) { b.animatorController = EditorGUILayout.ObjectField(b.animatorController, typeof(RuntimeAnimatorController), false) as RuntimeAnimatorController; }