Ejemplo n.º 1
0
		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 ();
		}
Ejemplo n.º 2
0
		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 ();
		}