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));
        }
Esempio n. 2
0
        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);
        }