public static void Update() { m_hudTimeFromLastCuePlayed += MyConstants.PHYSICS_STEP_SIZE_IN_MILLISECONDS; // if actual hud cue still playing if (m_activeCue.HasValue && m_activeCue.Value.Cue.IsPlaying) { return; } // we dequeue next hud cue a play it if (m_hudCuesQueue.Count > 0) { // we want have small delay between hud cues if (m_hudTimeFromLastCuePlayed >= m_hudCueDelay || m_activeCue == null) { MyHudCue nextHudCue = m_hudCuesQueue.Dequeue(); var cue = MyAudio.PlayCueNow2D(nextHudCue.CueEnum, nextHudCue.Volume); m_activeCue = new MyActiveCueInfo() { Cue = cue, CueEnum = nextHudCue.CueEnum }; m_hudTimeFromLastCuePlayed = 0; } } else { m_activeCue = null; } }
/// <summary> /// Cleans hud audio queue and stops any sounds /// </summary> public static void Reset() { if (m_hudCuesQueue != null) { m_hudCuesQueue.Clear(); } if (m_activeCue.HasValue) { m_activeCue.Value.Cue.Stop(StopFlags.Release); m_activeCue = null; } }