protected override SerializedObjectEditorGUI <Node> CreateObjectEditorGUI(Node node) { NodeEditorGUI editorGUI = NodeEditorGUI.CreateInstance <NodeEditorGUI>(); editorGUI.Init(this, node); return(editorGUI); }
private NodeEditorGUI CreateNodeView(Node node) { NodeEditorGUI edtiorView = NodeEditorGUI.CreateInstance <NodeEditorGUI>(); edtiorView.Init(this, node); return(edtiorView); }
/// <summary> /// Called only if RequiresLocationGUI is true. /// Displays GUI filling in locationArgs with the information necessary to locate the import operation. /// Override along with RequiresLocationGUI for custom database access. /// Return true or false to perform or cancel the import operation. /// </summary> public virtual bool?ImportLocationArgsGUI(ref object[] locationArgs) { GUILayout.Label("Import canvas " + FormatIdentifier); GUILayout.BeginHorizontal(); //GUILayout.Label(RuntimeIOPath, GUILayout.ExpandWidth(true)); if (GUILayout.Button(string.IsNullOrEmpty(fileSelection)? "Select..." : fileSelection, GUILayout.ExpandWidth(true))) { // Find save files if (RuntimeIOPath == null) { return(false); } Debug.Log(RuntimeIOPath); DirectoryInfo dir = Directory.CreateDirectory(RuntimeIOPath); FileInfo[] taskdata = dir.GetFiles("*.taskdata"); FileInfo[] dialoguedata = dir.GetFiles("*.dialoguedata"); FileInfo[] sectordata = dir.GetFiles("*.sectordata"); currentMin = 0; files = new List <FileInfo>(); files.AddRange(taskdata); files.AddRange(dialoguedata); files.AddRange(sectordata); // Fill save file selection menu GenericMenu fileSelectionMenu = new GenericMenu(false); for (int i = currentMin; i < Mathf.Min(currentMin + limit, files.Count); i++) { int x = i; fileSelectionMenu.AddItem(new GUIContent(files[i].Name), false, () => { if (files[x].Name.Contains("taskdata")) { NodeEditorGUI.state = NodeEditorGUI.NodeEditorState.Mission; } if (files[x].Name.Contains("dialoguedata")) { NodeEditorGUI.state = NodeEditorGUI.NodeEditorState.Dialogue; } if (files[x].Name.Contains("sectordata")) { NodeEditorGUI.state = NodeEditorGUI.NodeEditorState.Sector; } fileSelection = Path.GetFileName(files[x].Name); NodeEditorGUI.Init(); }); } fileSelectionMenu.DropDown(fileSelectionMenuRect); fileSelectionMenuRect.height = 500; width = fileSelectionMenuRect.width; } if (Event.current.type == EventType.Repaint) { Rect popupPos = GUILayoutUtility.GetLastRect(); fileSelectionMenuRect = new Rect(popupPos.x + 2, popupPos.yMax + 2, popupPos.width - 4, 500); } else if (files != null && Event.current.delta != Vector2.zero && Event.current.isScrollWheel) { if (Event.current.delta.y > 0) { currentMin = Mathf.Min(currentMin + 3, files.Count - (Mathf.Min(files.Count, limit))); } else { currentMin = Mathf.Max(0, currentMin - 3); } GenericMenu fileSelectionMenu = new GenericMenu(false); for (int i = currentMin; i < Mathf.Min(currentMin + limit, files.Count); i++) { int x = i; fileSelectionMenu.AddItem(new GUIContent(files[i].Name), false, () => { if (files[x].Name.Contains("taskdata")) { NodeEditorGUI.state = NodeEditorGUI.NodeEditorState.Mission; } if (files[x].Name.Contains("dialoguedata")) { NodeEditorGUI.state = NodeEditorGUI.NodeEditorState.Dialogue; } if (files[x].Name.Contains("sectordata")) { NodeEditorGUI.state = NodeEditorGUI.NodeEditorState.Sector; } fileSelection = Path.GetFileName(files[x].Name); NodeEditorGUI.Init(); }); } fileSelectionMenu.DropDown(fileSelectionMenuRect, width); fileSelectionMenuRect.height = 500; width = fileSelectionMenuRect.width; } // Finish operation buttons GUILayout.BeginHorizontal(); if (GUILayout.Button("Cancel")) { return(false); } if (GUILayout.Button("Import")) { if (string.IsNullOrEmpty(fileSelection) || !File.Exists(RuntimeIOPath + "\\" + fileSelection)) { Debug.Log(RuntimeIOPath + "\\" + fileSelection); return(false); } fileSelection = Path.GetFileName(fileSelection); locationArgs = new object[] { RuntimeIOPath + "\\" + fileSelection }; return(true); } GUILayout.EndHorizontal(); return(null); }
public void DrawToolbarGUI(Rect rect) { rect.height = toolbarHeight; rect.width = 280f; if (!showModalPanel) { GUILayout.BeginArea(rect, NodeEditorGUI.toolbar); GUILayout.BeginHorizontal(); //float curToolbarHeight = 0; if (GUILayout.Button("New", NodeEditorGUI.toolbarButton, GUILayout.Width(50))) { AutoSave(); switch (NodeEditorGUI.state) { case NodeEditorGUI.NodeEditorState.Mission: NewNodeCanvas(typeof(QuestCanvas)); break; case NodeEditorGUI.NodeEditorState.Dialogue: NewNodeCanvas(typeof(DialogueCanvas)); break; case NodeEditorGUI.NodeEditorState.Sector: NewNodeCanvas(typeof(SectorCanvas)); break; } IOLocationArgs = null; } if (GUILayout.Button("Import", NodeEditorGUI.toolbarButton, GUILayout.Width(50))) { IOFormat = ImportExportManager.ParseFormat("XML"); if (IOFormat.RequiresLocationGUI) { // Try to auto save AutoSave(); ImportLocationGUI = IOFormat.ImportLocationArgsGUI; modalPanelContent = ImportCanvasGUI; showModalPanel = true; } else if (IOFormat.ImportLocationArgsSelection(out IOLocationArgs)) { canvasCache.SetCanvas(ImportExportManager.ImportCanvas(IOFormat, IOLocationArgs)); } } if (GUILayout.Button("Export", NodeEditorGUI.toolbarButton, GUILayout.Width(50))) { IOFormat = ImportExportManager.ParseFormat("XML"); if (IOFormat.RequiresLocationGUI) { ExportLocationGUI = IOFormat.ExportLocationArgsGUI; modalPanelContent = ExportCanvasGUI; showModalPanel = true; } else if (IOFormat.ExportLocationArgsSelection(canvasCache.nodeCanvas.saveName, out IOLocationArgs)) { ImportExportManager.ExportCanvas(canvasCache.nodeCanvas, IOFormat, IOLocationArgs); } } string buttonText = "Mission"; switch (NodeEditorGUI.state) { case NodeEditorGUI.NodeEditorState.Mission: buttonText = "Mission"; break; case NodeEditorGUI.NodeEditorState.Dialogue: buttonText = "Dialogue"; break; case NodeEditorGUI.NodeEditorState.Sector: buttonText = "Sector"; break; default: break; } if (GUILayout.Button(buttonText, NodeEditorGUI.toolbarButton, GUILayout.Width(50))) { NodeEditorGUI.state = (NodeEditorGUI.NodeEditorState)(((int)NodeEditorGUI.state + 1) % 3); switch (NodeEditorGUI.state) { case NodeEditorGUI.NodeEditorState.Mission: NewNodeCanvas(typeof(QuestCanvas)); break; case NodeEditorGUI.NodeEditorState.Dialogue: NewNodeCanvas(typeof(DialogueCanvas)); break; case NodeEditorGUI.NodeEditorState.Sector: NewNodeCanvas(typeof(SectorCanvas)); break; default: break; } NodeEditorGUI.Init(); } bool autoSave = GUILayout.Toggle(autoSaveEnabled, "Auto Save"); if (autoSave != autoSaveEnabled) { autoSaveEnabled = autoSave; PlayerPrefs.SetInt("NEAutoSave", autoSave ? 1 : 0); PlayerPrefs.Save(); } GUI.backgroundColor = Color.white; GUILayout.EndHorizontal(); GUILayout.EndArea(); if (Event.current.type == EventType.Repaint) { toolbarHeight = 20; } } }