private void updateWwiseEventDurations() { if (akEvent != null) { MinMaxEventDuration MinMaxDuration = MinMaxEventDuration.GetMinMaxDuration(akEvent); eventDurationMin = MinMaxDuration.MinDuration; eventDurationMax = MinMaxDuration.MaxDuration; } }
public static MinMaxEventDuration GetMinMaxDuration(AK.Wwise.Event akEvent) { var result = new MinMaxEventDuration(); var FullSoundbankPath = AkBasePathGetter.GetPlatformBasePath(); var filename = System.IO.Path.Combine(FullSoundbankPath, "SoundbanksInfo.xml"); var MaxDuration = 1000000.0f; if (System.IO.File.Exists(filename)) { var doc = new System.Xml.XmlDocument(); doc.Load(filename); var soundBanks = doc.GetElementsByTagName("SoundBanks"); for (var i = 0; i < soundBanks.Count; i++) { var soundBank = soundBanks[i].SelectNodes("SoundBank"); for (var j = 0; j < soundBank.Count; j++) { var includedEvents = soundBank[j].SelectNodes("IncludedEvents"); for (var ie = 0; ie < includedEvents.Count; ie++) { var events = includedEvents[i].SelectNodes("Event"); for (var e = 0; e < events.Count; e++) { if (events[e].Attributes["Id"] != null && uint.Parse(events[e].Attributes["Id"].InnerText) == (uint)akEvent.ID) { if (events[e].Attributes["DurationType"] != null && events[e].Attributes["DurationType"].InnerText == "Infinite") { // Set both min and max to MaxDuration for infinite events result.MinDuration = MaxDuration; result.MaxDuration = MaxDuration; } if (events[e].Attributes["DurationMin"] != null) { result.MinDuration = float.Parse(events[e].Attributes["DurationMin"].InnerText); } if (events[e].Attributes["DurationMax"] != null) { result.MaxDuration = float.Parse(events[e].Attributes["DurationMax"].InnerText); } break; } } } } } } return(result); }