private void OnGUI() { Event e = Event.current; mousePos = e.mousePosition; if (e.type == EventType.MouseDown) { BaseNode tempNode = ClickedOnANode(); if (e.button == 1) { if (!tempNode) { GenericMenu menu = new GenericMenu(); menu.AddItem(new GUIContent("Add Noise Node"), false, AddNode, typeof(NoiseNode)); menu.AddItem(new GUIContent("Add Vector2 Node"), false, AddNode, typeof(Vector2Node)); menu.ShowAsContext(); e.Use(); } else { GenericMenu menu = new GenericMenu(); menu.AddItem(new GUIContent("Delete Node"), false, DeleteNode, tempNode); menu.ShowAsContext(); e.Use(); } } if (e.button == 0) { AbstractField tempField = tempNode.ClickedOnField(); if (tempField != null) { } } } BeginWindows(); for (int i = 0; i < nodes.Count; i++) { nodes[i].windowRect = GUILayout.Window(i, nodes[i].windowRect, showNode, nodes[i].windowName); } EndWindows(); }