Add ClydeAudio.StopAllAudio() (#3473)

This commit is contained in:
Leon Friedrich
2022-11-17 08:44:01 +13:00
committed by GitHub
parent 46183aa41a
commit a0c23c7fee
4 changed files with 55 additions and 4 deletions

View File

@@ -122,23 +122,50 @@ namespace Robust.Client.Graphics.Audio
return true;
}
private void _shutdownAudio()
public void StopAllAudio()
{
foreach (var source in _audioSources.Values.ToArray())
foreach (var (key, source) in _audioSources)
{
if (source.TryGetTarget(out var target))
{
target.Dispose();
target.StopPlaying();
}
}
foreach (var source in _bufferedAudioSources.Values.ToArray())
foreach (var (key, source) in _bufferedAudioSources)
{
if (source.TryGetTarget(out var target))
{
target.StopPlaying();
}
}
}
public void DisposeAllAudio()
{
foreach (var (key, source) in _audioSources)
{
if (source.TryGetTarget(out var target))
{
target.Dispose();
}
}
_audioSources.Clear();
foreach (var (key, source) in _bufferedAudioSources)
{
if (source.TryGetTarget(out var target))
{
target.StopPlaying();
target.Dispose();
}
}
_bufferedAudioSources.Clear();
}
private void _shutdownAudio()
{
DisposeAllAudio();
if (_openALContext != ALContext.Null)
{

View File

@@ -66,5 +66,15 @@ namespace Robust.Client.Graphics.Audio
{
// Nada.
}
public void DisposeAllAudio()
{
// Nada.
}
public void StopAllAudio()
{
// Nada.
}
}
}

View File

@@ -68,5 +68,15 @@ namespace Robust.Client.Graphics.Audio
{
ActualImplementation.SetMasterVolume(newVolume);
}
public void DisposeAllAudio()
{
ActualImplementation.DisposeAllAudio();
}
public void StopAllAudio()
{
ActualImplementation.StopAllAudio();
}
}
}

View File

@@ -13,6 +13,10 @@ namespace Robust.Client.Graphics
void SetMasterVolume(float newVolume);
void DisposeAllAudio();
void StopAllAudio();
IClydeAudioSource? CreateAudioSource(AudioStream stream);
IClydeBufferedAudioSource CreateBufferedAudioSource(int buffers, bool floatAudio=false);
}