private void BuildTree(ref TreeViewItem parentTree, IQuest parentAsset) { this.treeItems.Add(parentAsset.GetInstanceID(), parentTree); IQuestEditor editor = this.databaseQuestsEditor.questsEditors[parentAsset.GetInstanceID()]; parentTree.displayName = editor.GetInternalName(); parentTree.icon = editor.GetIcon(); IQuest[] childrenAssets = parentAsset.children.ToArray(); for (int i = 0; i < childrenAssets.Length; ++i) { IQuest 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.databaseQuestsEditor.questsEditors.ContainsKey(childAssetID)) { Debug.LogError("No IQuest Editor found with instanceID: " + childAssetID); continue; } this.BuildTree(ref childTree, childAsset); parentTree.AddChild(childTree); } }
// INITIALIZERS: -------------------------------------------------------------------------- public static void Open(IQuestEditor questEditor) { if (QuestConfigWindow.Instance != null) { QuestConfigWindow.Instance.Close(); } Rect windowRect = new Rect(0, 0, WINDOW_W, WINDOW_H); QuestConfigWindow.Instance = EditorWindow.GetWindowWithRect <QuestConfigWindow>( windowRect, true, questEditor.GetInternalName(), true ); QuestConfigWindow.Instance.questEditor = questEditor; QuestConfigWindow.Instance.Show(); }