public static void CreateWindow(DialogEditorWindow editor) { DialogEditorSetupWindow desw = GetWindow(typeof(DialogEditorSetupWindow), false, "Dialog Options") as DialogEditorSetupWindow; desw.Show(); desw.position = new Rect(editor.position.x + editor.position.width, editor.position.y, 400, 200); desw.dew = editor; }
void DrawNodeField() { nodeField = new Rect(nodeFieldSideBorder, nodeFieldUpperBorder, position.width - nodeFieldSideBorder * 2, position.height - nodeFieldUpperBorder - 10); GUI.DrawTexture(nodeField, nodeFieldBGColor); BeginWindows(); /*if (dialogContainer.dragScreen == default(Rect)) dialogContainer.dragScreen = new Rect(0, 0, float.MaxValue, float.MaxValue); * dialogContainer.dragScreen = GUI.Window(int.MaxValue, dialogContainer.dragScreen, DragScreen, "", dragScreenStyle);*/ if (dialogContainer != null) { for (int i = 0; i < dialogContainer.DialogNodes.Length; i++) { dialogContainer.DialogNodes[i].window = GUI.Window(i, dialogContainer.DialogNodes[i].window, DrawDialogNode, "Id: " + dialogContainer.DialogNodes[i].dialog.Id.ToString(), nodeStyle); var comeFrom = dialogContainer.ResponseNodes.Where(a => a.response.Id == dialogContainer.DialogNodes[i].dialog.ComesFrom).ToArray(); for (int j = 0; j < comeFrom.Length; j++) { Handles.DrawBezier( comeFrom[j].window.center + new Vector2(comeFrom[j].window.width / 2, 0), dialogContainer.DialogNodes[i].window.center - new Vector2(dialogContainer.DialogNodes[i].window.width / 2, 0), comeFrom[j].window.center + new Vector2(comeFrom[j].window.width / 2, 0) - Vector2.left * 50, dialogContainer.DialogNodes[i].window.center - new Vector2(dialogContainer.DialogNodes[i].window.width / 2, 0) + Vector2.left * 50, Color.black, null, 3f ); } } for (int i = 0; i < dialogContainer.ResponseNodes.Length; i++) { dialogContainer.ResponseNodes[i].window = GUI.Window(i + maxTexts, dialogContainer.ResponseNodes[i].window, DrawResponseNode, "Id: " + dialogContainer.ResponseNodes[i].response.Id.ToString(), nodeStyle); var comeFrom = dialogContainer.DialogNodes.Where(a => a.dialog.Id == dialogContainer.ResponseNodes[i].response.ComesFrom).ToArray(); for (int j = 0; j < comeFrom.Length; j++) { Handles.DrawBezier( comeFrom[j].window.center + new Vector2(comeFrom[j].window.width / 2, 0), dialogContainer.ResponseNodes[i].window.center - new Vector2(dialogContainer.ResponseNodes[i].window.width / 2, 0), comeFrom[j].window.center + new Vector2(comeFrom[j].window.width / 2, 0) - Vector2.left * 50, dialogContainer.ResponseNodes[i].window.center - new Vector2(dialogContainer.ResponseNodes[i].window.width / 2, 0) + Vector2.left * 50, Color.black, null, 3f ); } } } DrawBorders(); EndWindows(); if (GUI.Button(new Rect(20, 10, 60, 20), "Setup")) { DialogEditorSetupWindow.CreateWindow(this); } if (GUI.Button(new Rect(90, 10, 60, 20), "Save")) { Save(); Debug.Log("Progress saved! To be honest, unless you have added new nodes, this button doesn't do much after the first time you press it."); } if (GUI.Button(new Rect(position.width - 40, 10, 20, 20), "?")) { DialogEditorHelpWindow.CreateWindow(this); } }