Exemplo n.º 1
0
        // CONSTRUCTORS: ---------------------------------------------------------------------------

        public DialogueTreeView(TreeViewState state, DialogueEditor dialogueEditor) : base(state)
        {
            this.dialogueEditor = dialogueEditor;
            this.showAlternatingRowBackgrounds = true;
            this.showBorder = false;

            this.Reload();
        }
        public static void AddElement(DialogueEditor dialogueEditor)
        {
            List <int> selections = new List <int> {
                dialogueEditor.editorRoot.target.GetInstanceID()
            };
            List <int> nextSelections = new List <int>();

            if (dialogueEditor.dialogueTree.HasSelection())
            {
                selections = new List <int>(dialogueEditor.dialogueTree.GetSelection());
            }

            for (int i = 0; i < selections.Count; ++i)
            {
                int selectionID             = selections[i];
                UnityEngine.Object instance = dialogueEditor.InstanceIDToObject(selectionID);
                dialogueEditor.dialogueTree.SetExpandedRecursive(selectionID, true);

                IDialogueItem itemInstance = dialogueEditor.CreateDialogueItem <DialogueItemChoice>();
                nextSelections.Add(itemInstance.GetInstanceID());

                if (instance != null && instance.GetType() == typeof(DialogueItemChoiceGroup))
                {
                    dialogueEditor.itemsEditors[selectionID].AddChild(
                        itemInstance,
                        (IDialogueItem)instance,
                        dialogueEditor.targetDialogue
                        );
                }
                else if (instance != null && instance.GetType() == typeof(DialogueItemChoice))
                {
                    dialogueEditor.itemsEditors[selectionID].AddSibling(
                        itemInstance,
                        (IDialogueItem)instance,
                        dialogueEditor.targetDialogue,
                        selectionID
                        );
                }
                else
                {
                    Debug.LogError("Forbidden or Unknown type: " + instance.GetType());
                }

                dialogueEditor.itemsEditors.Add(
                    itemInstance.GetInstanceID(),
                    IDialogueItemEditor.CreateEditor(itemInstance)
                    );

                dialogueEditor.dialogueTree.Reload();

                dialogueEditor.serializedObject.ApplyModifiedPropertiesWithoutUndo();
                dialogueEditor.serializedObject.Update();
            }

            dialogueEditor.dialogueTree.SetFocusAndEnsureSelectedItem();
            dialogueEditor.dialogueTree.SetSelection(nextSelections, TreeViewSelectionOptions.RevealAndFrame);
        }