public override void NodeDeleted(BaseNodeOld node) { if (node.Equals(inputNode)) { inputNode = null; } }
public virtual void NodeDeleted(BaseNodeOld node) { }
void OnGUI() { Event e = Event.current; mousePos = e.mousePosition; // 1 = rightclick if (e.button == 1 && !makeTransitionMode) { if (e.type == EventType.mouseDown) { bool clickedOnWindow = false; int selectIndex = -1; for (int i = 1; i < windows.Count; i++) { if (windows[i].windowRect.Contains(mousePos)) { selectIndex = 1; clickedOnWindow = true; break; } } if (!clickedOnWindow) { GenericMenu menu = new GenericMenu(); menu.AddItem(new GUIContent("Add Input Node"), false, ContextCallback, "inputNode"); menu.AddItem(new GUIContent("Add Output Node"), false, ContextCallback, "outputNode"); menu.AddItem(new GUIContent("Add Calculation Node"), false, ContextCallback, "calcNode"); menu.AddItem(new GUIContent("Add Comparison Node"), false, ContextCallback, "compNode"); menu.ShowAsContext(); e.Use(); } else { GenericMenu menu = new GenericMenu(); menu.AddItem(new GUIContent("Make Trainsition"), false, ContextCallback, "makeTransition"); menu.AddSeparator(""); menu.AddItem(new GUIContent("Delete Node"), false, ContextCallback, "deleteNode"); menu.ShowAsContext(); e.Use(); } } } else if (e.button == 0 && e.type == EventType.MouseDown && makeTransitionMode) { bool clickedOnWindow = false; int selectIndex = -1; for (int i = 1; i < windows.Count; i++) { if (windows[i].windowRect.Contains(mousePos)) { selectIndex = 1; clickedOnWindow = true; break; } } if (clickedOnWindow && !windows[selectIndex].Equals(selectedNode)) { windows[selectIndex].SetInput((BaseInputNode)selectedNode, mousePos); makeTransitionMode = false; selectedNode = null; } if (!clickedOnWindow) { makeTransitionMode = false; selectedNode = null; } e.Use(); } else if (e.button == 0 && e.type == EventType.MouseDown && !makeTransitionMode) { bool clickedOnWindow = false; int selectIndex = -1; for (int i = 1; i < windows.Count; i++) { if (windows[i].windowRect.Contains(mousePos)) { selectIndex = 1; clickedOnWindow = true; break; } } if (clickedOnWindow) { BaseInputNode nodeToChange = windows[selectIndex].ClickedOnInput(mousePos); if (nodeToChange != null) { selectedNode = nodeToChange; makeTransitionMode = true; } } } if (makeTransitionMode && selectedNode != null) { Rect mouseRect = new Rect(e.mousePosition.x, e.mousePosition.y, 10, 10); DrawNodeCurve(selectedNode.windowRect, mouseRect); Repaint(); } foreach (BaseNodeOld n in windows) { n.DrawCurves(); } BeginWindows(); for (int i = 0; i < windows.Count; i++) { windows[i].windowRect = GUI.Window(i, windows[i].windowRect, DrawNodeWindow, windows[i].windowTitle); } EndWindows(); }
void ContextCallback(object obj) { string clb = obj.ToString(); if (clb.Equals("inputNode")) { InputNode inputNode = new InputNode() { windowRect = new Rect(mousePos.x, mousePos.y, 200, 150) }; windows.Add(inputNode); } else if (clb.Equals("outputNode")) { OutputNode outputNode = new OutputNode() { windowRect = new Rect(mousePos.x, mousePos.y, 200, 100) }; windows.Add(outputNode); } else if (clb.Equals("calcNode")) { CalcNode calcNode = new CalcNode() { windowRect = new Rect(mousePos.x, mousePos.y, 200, 100) }; windows.Add(calcNode); } else if (clb.Equals("compNode")) { ComparisonNode compNode = new ComparisonNode() { windowRect = new Rect(mousePos.x, mousePos.y, 200, 100) }; windows.Add(compNode); } else if (clb.Equals("makeTransition")) { bool clickedOnWindow = false; int selectIndex = -1; for (int i = 0; i < windows.Count; i++) { if (windows[i].windowRect.Contains(mousePos)) { selectIndex = i; clickedOnWindow = true; break; } } if (clickedOnWindow) { selectedNode = windows[selectIndex]; makeTransitionMode = true; } } else if (clb.Equals("deleteNode")) { bool clickedOnWindow = false; int selectIndex = -1; for (int i = 0; i < windows.Count; i++) { if (windows[i].windowRect.Contains(mousePos)) { selectIndex = i; clickedOnWindow = true; break; } } if (clickedOnWindow) { BaseNodeOld selNode = windows[selectIndex]; windows.RemoveAt(selectIndex); foreach (BaseNodeOld n in windows) { n.NodeDeleted(selNode); } } } }