public static void Open(DialogOptionNode node) { _node = node; _database = DialogOptionDatabaseLoader.Load(); DialogOptionSearchWindow window = CreateInstance <DialogOptionSearchWindow>(); window.titleContent = new GUIContent("Dialog Option Search"); Vector2 mouse = GUIUtility.GUIToScreenPoint(Event.current.mousePosition); Rect r = new Rect(mouse.x - 450, mouse.y + 10, 10, 10); window.ShowAsDropDown(r, new Vector2(500, 300)); }
public override void OnBodyGUI() { Initialize(); // Update serialized object's representation serializedObject.Update(); NodeEditorGUILayout.PortField(new GUIContent(""), _node.GetPort($"input")); if (GUILayout.Button("Search for dialog")) { DialogOptionSearchWindow.Open(_node); } EditorGUILayout.BeginVertical("Button"); GUILayout.Label($"Dialog ID: {_node.dialogId}", EditorStyles.largeLabel); EditorGUILayout.EndVertical(); if (_node.DynamicPorts.Count() < _node.count) { _node.options.Clear(); _node.DynamicPorts.ToList().Clear(); for (int i = 0; i < _node.count; i++) { _node.AddDynamicOutput(typeof(NarrativeNode), Node.ConnectionType.Multiple, Node.TypeConstraint.Inherited, $"output {i}"); _node.options.Add(new DialogNodeOption()); } if (_node.haveExit) { _node.AddDynamicOutput(typeof(NarrativeNode), Node.ConnectionType.Multiple, Node.TypeConstraint.Inherited, $"exit"); } } EditorGUILayout.BeginVertical("Button"); GUILayout.Label("Options", EditorStyles.largeLabel); EditorGUILayout.EndVertical(); for (int i = 0; i < _node.options.Count; i++) { EditorGUILayout.BeginVertical("Button"); GUILayout.Label($"Options# {i + 1}"); _node.options[i].endDialog = EditorGUILayout.ToggleLeft("End Dialog", _node.options[i].endDialog); _node.options[i].transform = (Transform)EditorGUILayout.ObjectField(_node.options[i].transform, typeof(Transform), true); NodeEditorGUILayout.PortField(new GUIContent($"Option# {i + 1} events"), _node.GetPort($"output {i}")); EditorGUILayout.EndVertical(); } if (_node.options.Count < _node.count) { if (GUILayout.Button("Add")) { _node.AddDynamicOutput(typeof(NarrativeNode), Node.ConnectionType.Multiple, Node.TypeConstraint.Inherited, $"output {_node.options.Count}"); _node.options.Add(new DialogNodeOption()); } } if (_node.haveExit) { NodeEditorGUILayout.PortField(new GUIContent("Exit events"), _node.GetPort($"exit")); } // Apply property modifications serializedObject.ApplyModifiedProperties(); EditorUtility.SetDirty(_node); }