Ejemplo n.º 1
0
        private void BuildTree(ref TreeViewItem parentTree, IDialogueItem parentAsset)
        {
            this.treeItems.Add(parentAsset.GetInstanceID(), parentTree);

            IDialogueItemEditor editor = this.dialogueEditor.itemsEditors[parentAsset.GetInstanceID()];

            parentTree.displayName = editor.UpdateContent();
            parentTree.icon        = editor.UpdateIcon();

            List <IDialogueItem> childrenAssets = parentAsset.children;
            int childrenAssetsCount             = childrenAssets.Count;

            for (int i = 0; i < childrenAssetsCount; ++i)
            {
                IDialogueItem childAsset = childrenAssets[i];
                if (childAsset == null)
                {
                    continue;
                }

                int          childAssetID = childAsset.GetInstanceID();
                int          depth        = parentTree.depth + 1;
                TreeViewItem childTree    = new TreeViewItem(childAssetID, depth, "Loading...");

                if (!this.dialogueEditor.itemsEditors.ContainsKey(childAssetID))
                {
                    Debug.LogError("No IDialogueItem Editor found with instanceID: " + childAssetID);
                    continue;
                }

                this.BuildTree(ref childTree, childAsset);
                parentTree.AddChild(childTree);
            }
        }
Ejemplo n.º 2
0
        // PROTECTED METHODS: ---------------------------------------------------------------------

        protected static Texture2D GetOrLoadTexture(string path, int pathHash)
        {
            if (!ICON_TEXTURES.ContainsKey(pathHash))
            {
                IDialogueItemEditor.LoadIconTexture(path);
            }
            return(ICON_TEXTURES[pathHash]);
        }
        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);
        }
Ejemplo n.º 4
0
        // INITIALIZE METHODS: --------------------------------------------------------------------

        private void OnEnable()
        {
            if (target == null || serializedObject == null)
            {
                return;
            }
            this.targetDialogue = (Dialogue)target;

            this.spDialogue      = serializedObject.FindProperty(PROP_DIALOGUE);
            this.spItemInstances = serializedObject.FindProperty(PROP_ITEM_INSTANCES);

            this.itemInstances = new Dictionary <int, Object>();
            if (this.spDialogue.objectReferenceValue == null)
            {
                DialogueItemRoot root = this.CreateDialogueItem <DialogueItemRoot>();
                this.spDialogue.objectReferenceValue = root;
                serializedObject.ApplyModifiedProperties();
                serializedObject.Update();

                SerializedObject rootSO = new SerializedObject(root);
                rootSO.FindProperty(PROP_DIALOGUE).objectReferenceValue = this.targetDialogue;
                rootSO.ApplyModifiedProperties();
                rootSO.Update();
            }

            this.itemInstances.Add(DialogueTreeView.ROOT_ID, this.spDialogue.objectReferenceValue);
            this.itemsEditors = new Dictionary <int, IDialogueItemEditor>();

            Object[] items = this.targetDialogue.itemInstances;

            for (int i = 0; i < items.Length; ++i)
            {
                if (!this.itemInstances.ContainsKey(items[i].GetInstanceID()))
                {
                    this.itemInstances.Add(items[i].GetInstanceID(), items[i]);
                }

                IDialogueItemEditor editor = IDialogueItemEditor.CreateEditor(items[i]);
                this.itemsEditors.Add(items[i].GetInstanceID(), editor);

                if (items[i].GetInstanceID() == this.targetDialogue.dialogue.GetInstanceID())
                {
                    this.editorRoot = editor;
                }
            }

            this.dialogueTree      = new DialogueTreeView(this.targetDialogue.dialogueTreeState, this);
            this.inspectorResizing = false;
            this.textureResize     = AssetDatabase.LoadAssetAtPath <Texture2D>(TEXTURE_RESIZE_PATH);

            this.searchField = new SearchField();
            this.searchField.downOrUpArrowKeyPressed += this.dialogueTree.SetFocusAndEnsureSelectedItem;

            this.spOverrideConfig = this.serializedObject.FindProperty("overrideConfig");
            this.spConfig         = this.serializedObject.FindProperty("config");
        }
 public static new Texture2D GetIcon()
 {
     return(IDialogueItemEditor.GetOrLoadTexture(ICON_PATH, ICON_HASH));
 }
Ejemplo n.º 6
0
 public virtual Texture2D UpdateIcon()
 {
     return(IDialogueItemEditor.GetIcon());
 }