using System.IO; using System.Xml.Linq; using Wwise.Wooduan.Tools; namespace Wwise.Wooduan.Tools { /// /// Read SoundBanksInfo.xml and get data from it. /// public static class SoundBanksInfoReader { private static XDocument XmlFile => XDocument.Load(AkWooduanScriptingTools.CombinePath(AkBasePathGetter.GetFullSoundBankPathEditor(), "SoundBanksInfo.xml")); public static XElement SoundBanksNode => XmlFile.Root.Element("SoundBanks"); public static float GetMaxAttenuation(string eventName) { foreach (var xBank in SoundBanksNode.Elements()) { var xEvents = xBank.Element("IncludedEvents"); if (xEvents == null) continue; foreach (var xEvent in xEvents.Elements()) { if (xEvent.Attribute("Name").Value == eventName) { var maxAtt = xEvent.Attribute("MaxAttenuation"); if (maxAtt != null) return float.Parse(maxAtt.Value); } } } return 0f; } public static float GetDuration(string eventName) { foreach (var xBank in SoundBanksNode.Elements()) { var xEvents = xBank.Element("IncludedEvents"); if (xEvents == null) continue; foreach (var xEvent in xEvents.Elements()) { if (xEvent.Attribute("Name").Value == eventName) { var durationType = xEvent.Attribute("DurationType"); if (durationType != null && durationType.Value == "OneShot") { var durationMax = xEvent.Attribute("DurationMax"); if (durationMax != null) return float.Parse(durationMax.Value); } } } } return 0f; } } }