/// <summary> /// Stop playing the sound /// </summary> public void Stop() { if (!_isPlaying) { return; } _isPaused = false; _isPlaying = false; if (_update != null) { StopCoroutine(_update); _update = null; } MainMultiAudioListener.OnVirtualAudioListenerAdded -= VirtualAudioListenerAdded; MainMultiAudioListener.OnVirtualAudioListenerRemoved -= VirtualAudioListenerRemoved; //Remove all old subAudio foreach (var subAudioSource in _subAudioSources) { if (subAudioSource.Value != null) { MainMultiAudioListener.EnquequeAudioSourceInPool(subAudioSource.Value); } } _subAudioSources.Clear(); if (_safetyAudioSource != null) { _safetyAudioSource.Stop(); } }
private void VirtualAudioListenerRemoved(VirtualMultiAudioListener virtualAudioListener) { var audioSource = _subAudioSources[virtualAudioListener]; _subAudioSources.Remove(virtualAudioListener); if (audioSource != null) { MainMultiAudioListener.EnquequeAudioSourceInPool(audioSource); } }
private void OnDestroy() { //Stop all sounds and destroy the safety audio source if (_isPlaying) { Stop(); } if (_safetyAudioSource != null) { MainMultiAudioListener.EnquequeAudioSourceInPool(_safetyAudioSource); } }