/// <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);
        }