Example #1
0
 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();
 }
Example #2
0
        //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]);
        }