private void PlayLayer(ArdenAudioMixer.MixerLayer layer) { if (layer.loop) { PlayLayerAudio(layer, true); } else { //Wait for the delay, then play a shot, and start timer again float delay = layer.GetShotDelay(); Utility.CoroutineManager.RunDelayingCoroutine(delay, () => { if (completed || stopped) { return; } //Random chance utilized if (Random.Range(0, 1) < layer.randomChance) { PlayLayerAudio(layer, false); } //Play layer again PlayLayer(layer); }); } }
private void PlayLayerAudio(ArdenAudioMixer.MixerLayer layer, bool looping) { ArdenAudioInstance instance; if (playAtPoint) { instance = layer.asset.PlayAtPoint(sourceSettings, location, layer.volume * volume, group, looping); } else { instance = layer.asset.Play(sourceSettings, layer.volume * volume, group, looping); } currentlyPlayingChildren.Add(instance); instance.OnComplete += () => { currentlyPlayingChildren.Remove(instance); }; }