private void BuildTree() { var rootGuid = EditorUtils.GetScriptOutput("studio.project.workspace.masterEventFolder.id"); rootFolder = new FolderEntry(); rootFolder.guid = rootGuid; BuildTreeItem(rootFolder); wantsMouseMove = true; banks = new List <BankEntry>(); EditorUtils.GetScriptOutput("children = \"\";"); EditorUtils.GetScriptOutput("func = function(val) {{ children += \",\" + val.id + val.name; }};"); EditorUtils.GetScriptOutput("studio.project.workspace.masterBankFolder.items.forEach(func, this); "); string bankList = EditorUtils.GetScriptOutput("children;"); string[] bankListSplit = bankList.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); foreach (var bank in bankListSplit) { var entry = new BankEntry(); entry.guid = bank.Substring(0, 38); entry.name = bank.Substring(38); banks.Add(entry); } banks.Sort((a, b) => a.name.CompareTo(b.name)); }
public static string CreateStudioEvent(string eventPath, string eventName) { var folders = eventPath.Split(new char[] { '/' }, StringSplitOptions.RemoveEmptyEntries); string debug; string folderGuid = EditorUtils.GetScriptOutput("studio.project.workspace.masterEventFolder.id;"); for (int i = 0; i < folders.Length; i++) { string parentGuid = folderGuid; debug = GetScriptOutput(String.Format("guid = \"\";")); debug = GetScriptOutput(String.Format("findFunc = function(val) {{ guid = val.isOfType(\"EventFolder\") && val.name == \"{0}\" ? val.id : guid; }};", folders[i])); debug = GetScriptOutput(String.Format("studio.project.lookup(\"{0}\").items.forEach(findFunc, this);", folderGuid)); folderGuid = GetScriptOutput(String.Format("guid;")); if (folderGuid == "") { debug = GetScriptOutput(String.Format("folder = studio.project.create(\"EventFolder\");")); debug = GetScriptOutput(String.Format("folder.name = \"{0}\"", folders[i])); debug = GetScriptOutput(String.Format("folder.folder = studio.project.lookup(\"{1}\");", parentGuid)); folderGuid = GetScriptOutput(String.Format("folder.id;")); } } if (CheckForNameConflict(folderGuid, eventName)) { //EditorUtility.DisplayDialog("Name Conflict", String.Format("The event {0} already exists under {1}", eventName, eventFolder), "OK"); return(null); } debug = GetScriptOutput("event = studio.project.create(\"Event\");"); debug = GetScriptOutput("event.note = \"Placeholder created via Unity\";"); debug = GetScriptOutput(String.Format("event.name = \"{0}\"", eventName)); debug = GetScriptOutput(String.Format("event.folder = studio.project.lookup(\"{0}\");", folderGuid)); // Add a group track debug = GetScriptOutput("track = studio.project.create(\"GroupTrack\");"); debug = GetScriptOutput("track.mixerGroup.output = event.mixer.masterBus;"); debug = GetScriptOutput("track.mixerGroup.name = \"Audio 1\";"); debug = GetScriptOutput("event.relationships.groupTracks.add(track);"); // Add tags debug = GetScriptOutput("tag = studio.project.create(\"Tag\");"); debug = GetScriptOutput("tag.name = \"placeholder\";"); debug = GetScriptOutput("tag.folder = studio.project.workspace.masterTagFolder;"); debug = GetScriptOutput("event.relationships.tags.add(tag);"); string eventGuid = GetScriptOutput(String.Format("event.id;")); return(eventGuid); }
private void CreateEventInStudio() { string eventGuid = EditorUtils.CreateStudioEvent(eventFolder, eventName); if (!string.IsNullOrEmpty(eventGuid)) { EditorUtils.GetScriptOutput(String.Format("studio.project.lookup(\"{0}\").relationships.banks.add(studio.project.lookup(\"{1}\"));", eventGuid, banks[selectedBank].guid)); EditorUtils.GetScriptOutput("studio.project.build();"); string fullPath = "event:" + eventFolder + eventName; outputProperty.stringValue = fullPath; EditorUtils.UpdateParamsOnEmitter(outputProperty.serializedObject, fullPath); outputProperty.serializedObject.ApplyModifiedProperties(); } }
private void BuildTreeItem(FolderEntry entry) { // lookup the entry EditorUtils.GetScriptOutput(string.Format("cur = studio.project.lookup(\"{0}\");", entry.guid)); // get child count string itemCountString = EditorUtils.GetScriptOutput("cur.items.length;"); int itemCount; Int32.TryParse(itemCountString, out itemCount); // iterate children looking for folder for (int item = 0; item < itemCount; item++) { EditorUtils.GetScriptOutput(String.Format("child = cur.items[{0}]", item)); // check if it's a folder string isFolder = EditorUtils.GetScriptOutput("child.isOfExactType(\"EventFolder\")"); if (isFolder == "false") { continue; } // Get guid and name string info = EditorUtils.GetScriptOutput("child.id + child.name"); var childEntry = new FolderEntry(); childEntry.guid = info.Substring(0, 38); childEntry.name = info.Substring(38); childEntry.parent = entry; entry.entries.Add(childEntry); } // Recurse for child entries foreach (var childEntry in entry.entries) { BuildTreeItem(childEntry); } }