private bool getAvailable(out Gaze_AudioSource gas) { gas = null; if (audios.Count < 1) { return(false); } foreach (var a in audios) { if (a.nextAudioState == AudioState.STOPPED && a.audioState == AudioState.STOPPED && !a.isPlaying) { gas = a; return(true); } } return(false); }
public void playAudio(int key, int index) { if (audiosActions[key].stopOthers) { stopAudio(); } if (index == 3) { stopTrack(2); } else if (index == 4) { stopTrack(3); } if (((audiosActions[key].allowMultiple && !audiosActions[key].forceStop && audiosActions[key].nAudioPlaying < audiosActions[key].MAX_AUDIOS) || (!isPlaying(key)))) { Gaze_AudioSource available_AS = null; if (!getAvailable(out available_AS)) { AudioSource newAudioSource = gameObject.AddComponent <AudioSource>(); newAudioSource.hideFlags = HideFlags.HideInInspector; Gaze_AudioSource toAdd = new Gaze_AudioSource(newAudioSource); toAdd.clipIndex = audiosActions[key].lastClipIndex[index]; toAdd.key = key; audios.Add(toAdd); } else { available_AS.clipIndex = audiosActions[key].lastClipIndex[index]; available_AS.key = key; } } if (!audiosActions[key].allowMultiple) { if (isPlaying(key) && !audiosActions[key].forceStop) { return; } else { audiosActions[key].triggered.Enqueue(index); if (!audiosActions[key].forceStop) { audiosActions[key].nAudioPlaying++; } } } if ((audiosActions[key].allowMultiple && audiosActions[key].nAudioPlaying < audiosActions[key].MAX_AUDIOS) || audiosActions[key].forceStop) { audiosActions[key].triggered.Enqueue(index); if (!audiosActions[key].forceStop) { audiosActions[key].nAudioPlaying++; } } }