/// <summary> /// Handles the event. /// </summary> /// <param name="eventType">Event type.</param> /// <param name="data">A Vector3 of the world position of the event. If ignored, will be Vector3 zero.</param> private void HandleEvent(EventType eventType, object data = null) { string eventString = eventType.ToString().ToLower(); AudioClip eventClip = null; foreach (AudioClip clip in _audioClips) { if (clip.name.ToLower().Equals(eventString)) { eventClip = clip; break; } } // If this is null, we did not find a match. if (eventClip == null) { return; } Vector3 worldPosition = data == null ? Vector3.zero : (Vector3)data; float panStereo = GenericSoundPlayer.GetPanStereo(Camera.main, worldPosition); GenericSoundPlayer soundPlayer = GetSoundPlayer(); soundPlayer.PlayStereo(eventClip, panStereo); }
private GenericSoundPlayer GetSoundPlayer() { GenericSoundPlayer soundPlayer = null; int count = _soundPlayers.Count; for (int i = count - 1; i >= 0; i--) { if (_soundPlayers[i] == null) { _soundPlayers.RemoveAt(i); } else if (_soundPlayers[i].IsPlaying == false) { soundPlayer = _soundPlayers[i]; break; } } if (soundPlayer == null) { GameObject newPlayerObject = new GameObject("SoundPlayer"); newPlayerObject.transform.parent = transform; soundPlayer = newPlayerObject.AddComponent <GenericSoundPlayer>(); } return(soundPlayer); }