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); } }
// 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); }
// 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)); }
public virtual Texture2D UpdateIcon() { return(IDialogueItemEditor.GetIcon()); }