public static void AddSoundBank(string bankName, string bankLanguage, ref PlatformEntry soundBankDict) { if (!soundBankDict.ContainsKey(bankName)) { soundBankDict.Add(bankName, new SoundBankEntry()); } soundBankDict[bankName][bankLanguage] = new SoundBankInfo(); }
//Parse soundbank xml file to get a dict of the streaming wem files public static PlatformEntry ParsePlatformSoundbanksXML(string platformName, string newBankName) { if (platformName == null) { platformName = AkBasePathGetter.GetPlatformName(); } if (!AkBasePathGetter.GetSoundBankPaths(platformName, out string sourceFolder, out string destinationFolder)) { Debug.LogError($"Could not find containing folder for {newBankName} soundbank - platform: {platformName}. Check the Generated Soundbanks Path in the Unity Wwise project settings."); return(null); } var xmlFilename = Path.Combine(sourceFolder, "SoundbanksInfo.xml"); if (!File.Exists(xmlFilename)) { Debug.LogError($"Could not find SoundbanksInfo for {platformName} platform. Check the Generated Soundbanks Path in the Unity Wwise project settings."); return(null); } bool doParse = false; if (!soundbanksInfo.ContainsKey(platformName)) { doParse = true; } else if (soundbanksInfo.ContainsKey(platformName) && !soundbanksInfo[platformName].ContainsKey(newBankName)) { doParse = true; } else { var fileModifiedTime = System.IO.File.GetLastWriteTime(xmlFilename); if (fileModifiedTime.Ticks > soundbanksInfo[platformName].lastParseTime) { doParse = true; } } if (doParse) { var soundBanks = new PlatformEntry(); soundBanks.lastParseTime = DateTime.Now.Ticks; var doc = new System.Xml.XmlDocument(); doc.Load(xmlFilename); var soundBanksRootNode = doc.GetElementsByTagName("SoundBanks"); for (var i = 0; i < soundBanksRootNode.Count; i++) { var soundBankNodes = soundBanksRootNode[i].SelectNodes("SoundBank"); for (var j = 0; j < soundBankNodes.Count; j++) { var bankName = soundBankNodes[j].SelectSingleNode("ShortName").InnerText; var language = soundBankNodes[j].Attributes.GetNamedItem("Language").Value; AddSoundBank(bankName, language, ref soundBanks); if (bankName.Equals("Init")) { continue; } var includedEventsNode = soundBankNodes[j].SelectSingleNode("IncludedEvents"); if (includedEventsNode != null) { var eventNodes = includedEventsNode.SelectNodes("Event"); for (var e = 0; e < eventNodes.Count; e++) { soundBanks[bankName][language].events.Add(eventNodes[e].Attributes["Name"].Value); var streamedFilesRootNode = eventNodes[e].SelectSingleNode("ReferencedStreamedFiles"); if (streamedFilesRootNode != null) { var streamedFileNodes = streamedFilesRootNode.SelectNodes("File"); if (streamedFileNodes.Count > 0) { for (var s = 0; s < streamedFileNodes.Count; s++) { var streamedFilelanguage = streamedFileNodes[s].Attributes.GetNamedItem("Language").Value; if (!soundBanks[bankName].ContainsKey(streamedFilelanguage)) { AddSoundBank(bankName, streamedFilelanguage, ref soundBanks); } var streamedFile = new SoundBankStreamedFile { id = streamedFileNodes[s].Attributes["Id"].Value, path = Path.GetFileName(streamedFileNodes[s].SelectSingleNode("Path").InnerText) }; soundBanks[bankName][streamedFilelanguage].streamedFiles.Add(streamedFile); if (!soundBanks.eventToSoundBankMap.ContainsKey(streamedFile.id)) { soundBanks.eventToSoundBankMap[streamedFile.id] = new List <string>(); } soundBanks.eventToSoundBankMap[streamedFile.id].Add(bankName); } } } } } } } soundbanksInfo[platformName] = soundBanks; } return(soundbanksInfo[platformName]); }