public void PlayAtPosition(int audioID, DonePlaying returnDelegate, Vector3 position)
    {
        StartCoroutine(SoundDonePlaying(returnDelegate, audioID, clips[audioID].length));
        soundsPlaying[audioID] = true;

        AudioSource.PlayClipAtPoint(clips[audioID], position);
    }
    public void PlayAtPosition(int audioID, DonePlaying returnDelegate, Vector3 position)
    {
        StartCoroutine(SoundDonePlaying(returnDelegate, audioID, clips[audioID].length));
        soundsPlaying[audioID] = true;

        AudioSource.PlayClipAtPoint(clips[audioID], position);
    }
    public void PlayAudio(int audioID, DonePlaying returnDelegate)
    {
        StartCoroutine(SoundDonePlaying(returnDelegate, audioID, clips[audioID].length));
        soundsPlaying[audioID] = true;

        source.PlayOneShot(clips[audioID], 1);
    }
    public IEnumerator SoundDonePlaying(DonePlaying returnDelegate, int audioID, float waitTime)
    {
        yield return new WaitForSeconds(waitTime);

        soundsPlaying[audioID] = false;
        if (returnDelegate != null) returnDelegate();
        yield return null;
    }
 public void PlayAudioIfNotPlaying(int audioID, DonePlaying returnDelegate)
 {
     if (!soundsPlaying[audioID])
     {
         soundsPlaying[audioID] = true;
         StartCoroutine(SoundDonePlaying(returnDelegate, audioID, clips[audioID].length));
         source.PlayOneShot(clips[audioID], 1);
     }
 }
    public IEnumerator SoundDonePlaying(DonePlaying returnDelegate, int audioID, float waitTime)
    {
        yield return(new WaitForSeconds(waitTime));

        soundsPlaying[audioID] = false;

        if (returnDelegate != null)
        {
            returnDelegate();
        }

        yield return(null);
    }
 public void StartAfterDelay(int audioID, float delay, DonePlaying returnDelegate)
 {
     source.clip = clips[audioID];
     source.PlayDelayed(delay);
 }
 public void StartAfterDelay(int audioID, float delay, DonePlaying returnDelegate)
 {
     source.clip = clips[audioID];
     source.PlayDelayed(delay);
 }