private void NodeContextMenu(){ if (currentEvent.type != EventType.MouseDown || currentEvent.button != 1 || currentEvent.clickCount != 1){ return; } Node node=MouseOverNode(); if (node == null) { return; } GenericMenu nodeMenu = new GenericMenu (); nodeMenu.AddItem (FsmContent.makeTransition, false, delegate() { fromNode=node; }); if(!node.IsStartNode && !(node is AnyState)){ nodeMenu.AddItem (FsmContent.setAsDefault, false, delegate() { FsmEditorUtility.SetDefaultNode(node,FsmEditor.Active); }); }else{ nodeMenu.AddDisabledItem(FsmContent.setAsDefault); } if (node.GetType () == typeof(State)) { State state = node as State; nodeMenu.AddItem (FsmContent.sequence, state.IsSequence, delegate() { state.IsSequence=!state.IsSequence; }); } if (node.GetType () != typeof(AnyState)) { nodeMenu.AddItem (FsmContent.copy, false, delegate() { Pasteboard.Copy (selection); }); nodeMenu.AddItem (FsmContent.delete, false, delegate() { if (selection.Contains (node)) { foreach (Node mNode in selection) { if(!(mNode is AnyState)){ FsmEditorUtility.DeleteNode (mNode); } } selection.Clear (); UpdateUnitySelection (); } else { FsmEditorUtility.DeleteNode (node); } EditorUtility.SetDirty (FsmEditor.Active); }); } else { nodeMenu.AddDisabledItem(FsmContent.copy); nodeMenu.AddDisabledItem(FsmContent.delete); } nodeMenu.ShowAsContext (); Event.current.Use (); }
private void NodeContextMenu () { if (currentEvent.type != EventType.MouseDown || currentEvent.button != 1 || currentEvent.clickCount != 1) { return; } Node node = MouseOverNode (); if (node == null) { return; } GenericMenu nodeMenu = new GenericMenu (); if (Application.isPlaying && this.active != null && this.active.Owner != null && node != this.active.Owner.ActiveNode) { nodeMenu.AddItem (new GUIContent ("Execute"), false, delegate { this.active.Owner.SetNode (node); }); } nodeMenu.AddItem (FsmContent.makeTransition, false, delegate() { fromNode = node; }); if (!node.IsStartNode && !(node is AnyState)) { nodeMenu.AddItem (FsmContent.setAsDefault, false, delegate() { FsmEditorUtility.SetDefaultNode (node, FsmEditor.Active); }); } else { nodeMenu.AddDisabledItem (FsmContent.setAsDefault); } if (node.GetType () == typeof(State)) { State state = node as State; nodeMenu.AddItem (FsmContent.sequence, state.IsSequence, delegate() { state.IsSequence = !state.IsSequence; }); } if (node.GetType () != typeof(AnyState)) { nodeMenu.AddItem (FsmContent.moveToSubStateMachine, false, delegate() { StateMachine stateMachine = FsmEditorUtility.AddNode<StateMachine> (mousePosition, FsmEditor.Active); Pasteboard.Copy (selection); Pasteboard.Paste (mousePosition, stateMachine); foreach (Node mNode in selection) { if (!(mNode is AnyState)) { FsmEditorUtility.DeleteNode (mNode); } } selection.Clear (); UpdateUnitySelection (); EditorUtility.SetDirty (FsmEditor.Active); }); if (FsmEditor.Active.Parent != null) { nodeMenu.AddItem (FsmContent.moveToParentStateMachine, false, delegate() { Pasteboard.Copy (selection); Pasteboard.Paste (mousePosition, FsmEditor.Active.Parent); foreach (Node mNode in selection) { if (!(mNode is AnyState)) { FsmEditorUtility.DeleteNode (mNode); } } selection.Clear (); UpdateUnitySelection (); EditorUtility.SetDirty (FsmEditor.Active); }); } else { nodeMenu.AddDisabledItem (FsmContent.moveToParentStateMachine); } nodeMenu.AddItem (FsmContent.copy, false, delegate() { Pasteboard.Copy (selection); }); nodeMenu.AddItem (FsmContent.delete, false, delegate() { if (selection.Contains (node)) { foreach (Node mNode in selection) { if (!(mNode is AnyState)) { FsmEditorUtility.DeleteNode (mNode); } } selection.Clear (); UpdateUnitySelection (); } else { FsmEditorUtility.DeleteNode (node); } EditorUtility.SetDirty (FsmEditor.Active); }); } else { nodeMenu.AddDisabledItem (FsmContent.copy); nodeMenu.AddDisabledItem (FsmContent.delete); } nodeMenu.ShowAsContext (); Event.current.Use (); }