Beispiel #1
0
 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);
    }