public void Update() { try { lock (_updateLock) { if (_audioTrack != null && _audioTrack.IsPlaying && _audioTrack.Volume < 1.0f) { _audioTrack.FadeIn(FadeFactor / _fadeTime); } for (int i = _endingTracks.Count - 1; i >= 0; --i) { var track = _endingTracks[i]; track.FadeOut(FadeFactor / _fadeTime); if (track.Volume <= 0.0f) { track.Dispose(); _endingTracks.RemoveAt(i); } } } } catch (Exception e) { GameLog.Client.Audio.Error(e); } }