public void Initialize(SerializedSceneManager serializedManager, SceneManagerEditorWindow editorWindow) { SerializedManager = serializedManager; this.editorWindow = editorWindow; NodeEditor.ClearAll(); NodeEditor.ClearInputModes(); NodeEditor.CanDeleteNode = CanDeleteNode; NodeEditor.OnNodeRemoved += NodeEditor_OnNodeRemoved; NodeEditor.OnConnectorRemoved += NodeEditor_OnConnectorRemoved; NodeEditor.OnSelectionChanged += NodeEditor_OnSelectionChanged; new DefaultInputModeConfig().ApplyToNodeEditor(NodeEditor); ConnectNodeInputMode nodeConnectorMode = NodeEditor.GetInputMode <ConnectNodeInputMode>(); nodeConnectorMode.ConnectorFactory = TransitionConnector.TransitionConnectorFactory; nodeConnectorMode.OnConnectionsFinalized += NodeConnectorMode_OnConnectionsFinalized; InitializeContextMenus(); PopulateNodes(nodeContextMenu); PopulateConnections(connectorContextMenu); NodeEditor.RaiseSelectionChanged(); NodeEditor.SetPanOffset(SerializedManager.SceneNodes.PanOffset); }
private void InitializeContextMenus() { ConnectNodeInputMode nodeConnector = NodeEditor.GetInputMode <ConnectNodeInputMode>(); nodeContextMenu = new GUIGenericMenu(); if (EditorApplication.isPlaying) { nodeContextMenu.AddMenuItem(string.Empty, "Load Scene", LoadScene); nodeContextMenu.AddSeparator(); } else { nodeContextMenu.AddMenuItem(string.Empty, "Load Scene", LoadSceneInEditor, OpenSceneMode.Single); nodeContextMenu.AddMenuItem(string.Empty, "Load Scene Additive", LoadSceneInEditor, OpenSceneMode.Additive); nodeContextMenu.AddSeparator(); } nodeContextMenu.AddMenuItem(string.Empty, "Make Transition", nodeConnector.Activate); nodeContextMenu.AddMenuItem(string.Empty, "Set as Entry", SetAsEntryNode); nodeContextMenu.AddSeparator(); nodeContextMenu.AddMenuItem(string.Empty, "Delete", DeleteEditorComponent, false); nodeContextMenu.AddMenuItem(string.Empty, "Delete and Exclude Scene", DeleteEditorComponent, true); connectorContextMenu = new GUIGenericMenu(); connectorContextMenu.AddMenuItem(string.Empty, "Delete", DeleteEditorComponent); }
private void OnGUI() { if (nodeEditor == null) { GUIGenericMenu nodeMenu = new GUIGenericMenu(); nodeMenu.AddMenuItem("Make Transition", StartConnection); nodeMenu.AddMenuItem("Create Node", CreateNewNode); nodeMenu.AddMenuItem("Create/Items/", "Node"); nodeMenu.AddMenuItem("Delete Node", Delete); nodeEditor = new NodeEditor(); nodeEditor.EnableBoxSelect(); nodeEditor.EnableNodeSelect(); nodeEditor.EnableConnectorSelect(); nodeEditor.EnableNodeDrag(); nodeEditor.EnableNodeRightClick(); nodeEditor.EnableConnectorRightClick(); nodeEditor.EnableInputMode <ConnectorMakerMode>(2); connectorMode = new ConnectNodeInputMode(nodeEditor, 2); nodeEditor.EnableInputMode(connectorMode); Node node1 = new TextNode(Vector2.zero, "Test", null, nodeMenu); Node node2 = new TextNode(Vector2.one * 50f, "Test 2", null, nodeMenu); GUIGenericMenu connectMenu = new GUIGenericMenu(); connectMenu.AddMenuItem("Delete Connection", DeleteConnection); nodeEditor.AddNode(node1); nodeEditor.AddNode(node2); //nodeEditor.AddConnector(new Connector(connectMenu, node1, node2)); // nodeEditor.AddConnector(new Connector(connectMenu, node1, nodeEditor.MouseNode)); } if (nodeEditor.OnGUI(position.WithPosition(Vector2.zero))) { Repaint(); } }