public AudioLoopToken LoopSound(PooledAudioRequest request) { _currentRequest = request; // bail gracefully if request is null if (request == null) return new AudioLoopToken { Replace = replacementRequest => LoopSound(replacementRequest), End = () => { } }; _audio.loop = true; _audio.transform.position = request.IsSpatial ? request.Target : _cameraTransform.position; _audio.clip = request.Sound; _audio.volume = request.Volume * (request.IsMusic ? _config.MusicVolume : _config.GameVolume); _audio.Play(); return new AudioLoopToken { Replace = replacementRequest => LoopSound(replacementRequest), End = () => Stop() }; }
public AudioLoopToken LoopSound(PooledAudioRequest request) { for (var i = 0; i < NumberOfSources; i++) if (!_sources[i].IsActive) { var source = _sources[i]; return source.LoopSound(request); } _logger.Log("NOTE! ran out of audio sources in pool!", true); return new AudioLoopToken { Replace = newRequest => LoopSound(newRequest), End = () => {} }; }
public void Stop() { _audio.Stop(); _currentRequest = null; }
public void PlaySound(PooledAudioRequest request) { _currentRequest = request; // bail if the sound is null if (request == null) return; _audio.loop = false; _audio.transform.position = request.IsSpatial ? request.Target : _cameraTransform.position; _audio.clip = request.Sound; _audio.volume = request.Volume * (request.IsMusic ? _config.MusicVolume : _config.GameVolume); _audio.Play(); }
public void PlaySound(PooledAudioRequest request) { for (var i = 0; i < NumberOfSources; i++) if (!_sources[i].IsActive) { _sources[i].PlaySound(request); return; } _logger.Log("NOTE! ran out of audio sources in pool!", true); }