public void StopSound(string name)
    {
        LoopedSound loopedSound = _loopedSounds.Find(sound => sound.Name == name);

        if (loopedSound != null)
        {
            loopedSound.Counter--;
            this.Log(string.Format("Decrement {0} {1}", loopedSound.Name, loopedSound.Counter));
            if (loopedSound.Counter > 0)
            {
                return;
            }
            _loopedSounds.Remove(loopedSound);
        }
        FindAndStopAudioSource(name);
    }
 public void PlaySound(string name, bool pausable = true, bool loop = false)
 {
     if (loop)
     {
         LoopedSound loopedSound = _loopedSounds.Find(sound => sound.Name == name);
         if (loopedSound != null)
         {
             loopedSound.Counter++;
             this.Log(string.Format("Increment {0} {1}", loopedSound.Name, loopedSound.Counter));
             return;
         }
         else
         {
             _loopedSounds.Add(new LoopedSound(name));
             this.Log(string.Format("Add {0} 1", name));
         }
     }
     PlaySoundInternal(name, pausable, loop);
 }
Exemple #3
0
    public AudioSource PlaySound(SoundList sound, float timeToLoop = 0.0f)
    {
        //return null;
        AudioSource emitterAvailable = null;

        foreach (AudioSource emitter in emitters)
        {
            if (!emitter.isPlaying)
            {
                emitterAvailable = emitter;
            }
        }

        if (emitterAvailable != null)
        {
            emitterAvailable.loop = false;
            int index = 0;
            switch (sound)
            {
            case SoundList.WALK:
                index = Random.Range(0, listWalkSounds.Count);
                emitterAvailable.clip = listWalkSounds[index];
                emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("Walk")[0];
                break;

            case SoundList.PUNCH:
                index = Random.Range(0, listPunchSounds.Count);
                emitterAvailable.clip = listPunchSounds[index];
                emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("Punch")[0];
                break;

            case SoundList.IS_HIT:
                index = Random.Range(0, listHitSounds.Count);
                emitterAvailable.clip = listHitSounds[index];
                emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("Effects")[0];
                break;

            case SoundList.HAND_MOVEMENT:
                emitterAvailable.clip = handMovementSoundClip;
                emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("Effects")[0];
                break;

            case SoundList.FLAG_BACK:
                emitterAvailable.clip = flagBackSoundClip;
                emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("LittleMusics")[0];
                break;

            case SoundList.TAKE_FLAG:
                emitterAvailable.clip = takeFlagSoundClip;
                emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("LittleMusics")[0];
                break;

            case SoundList.WIN_SOUND:
                emitterAvailable.clip = winSoundClip;
                emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("LittleMusics")[0];
                break;

            case SoundList.LOSE_SOUND:
                emitterAvailable.clip = loseSoundClip;
                emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("LittleMusics")[0];
                break;
            }

            if (timeToLoop > 0.0f)
            {
                emitterAvailable.loop = true;
                LoopedSound newLoopSound = new LoopedSound
                {
                    audioSource   = emitterAvailable,
                    timeUntilStop = Utility.StartTimer(timeToLoop)
                };
                loopedSoundList.Add(newLoopSound);
            }

            emitterAvailable.Play();
            return(emitterAvailable);
        }
        else
        {
            Debug.Log("no emitter available");
            return(null);
        }
    }
Exemple #4
0
    public void PlaySound(SoundList sound, AudioMixerGroup group, float timeToLoop = 0.0f, bool infiniteLoop = false)
    {
        AudioSource emitterAvailable = null;

        if (sound == SoundList.TRASH_IMPACT)
        {
            foreach (AudioSource emitter in trashEmitters)
            {
                if (!emitter.isPlaying)
                {
                    emitterAvailable = emitter;
                }
            }

            if (emitterAvailable != null)
            {
                emitterAvailable.loop = false;
                emitterAvailable.clip = trashImpactClip[Random.Range(0, trashImpactClip.Length - 1)];
                emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("Environment")[0];
                emitterAvailable.Play();
            }

            return;
        }

        foreach (AudioSource emitter in emitters)
        {
            if (!emitter.isPlaying)
            {
                emitterAvailable = emitter;
            }
        }

        if (emitterAvailable != null)
        {
            emitterAvailable.loop = false;
            switch (sound)
            {
            case SoundList.RUN:
                emitterAvailable.clip = runClips[Random.Range(0, runClips.Length - 1)];
                break;

            case SoundList.FIRE:
                emitterAvailable.clip = fireClip;
                break;

            case SoundList.WOOD_IMPACT:
                emitterAvailable.clip = woodImpactClip[Random.Range(0, woodImpactClip.Length - 1)];
                break;

            case SoundList.STEEL_IMPACT:
                emitterAvailable.clip = steelImpactClip[Random.Range(0, steelImpactClip.Length - 1)];
                break;

            case SoundList.CONVEYORBELT:
                emitterAvailable.clip = conveyorBeltclip;
                break;

            case SoundList.GENE_DAMAGE:
                emitterAvailable.clip = geneDamageClip;
                break;

            case SoundList.GENE_DESTROY:
                emitterAvailable.clip = geneDestroyClip;
                break;

            case SoundList.POWER_UP:
                emitterAvailable.clip = powerUpClip;
                break;

            case SoundList.PICK_UP:
                emitterAvailable.clip = pickupClip;
                break;

            case SoundList.WOOD_DESTROY:
                emitterAvailable.clip = woodDestroyClip;
                break;

            case SoundList.DEATH:
                emitterAvailable.clip = deathClips[Random.Range(0, deathClips.Length - 1)];
                break;

            case SoundList.MENU_SELECTION:
                emitterAvailable.clip = menuSelection;
                break;

            case SoundList.MENU_VALIDATION:
                emitterAvailable.clip = menuValidation;
                break;

            case SoundList.WIN_MUSIC:
                musicEmitter.clip = winMusicClip;
                musicEmitter.Play();
                break;

            case SoundList.LOSE_MUSIC:
                musicEmitter.clip = loseMusicClip;
                musicEmitter.Play();
                break;
            }

            if (timeToLoop > 0.0f)
            {
                emitterAvailable.loop = true;

                if (!infiniteLoop)
                {
                    LoopedSound newLoopSound = new LoopedSound
                    {
                        audioSource   = emitterAvailable,
                        timeUntilStop = Utilities.StartTimer(timeToLoop)
                    };
                    loopedSoundList.Add(newLoopSound);
                }
            }

            switch (group)
            {
            case AudioMixerGroup.PLAYER:
                emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("Player")[0];
                break;

            case AudioMixerGroup.ENVIRONMENT:
                emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("Environment")[0];
                break;

            case AudioMixerGroup.CONSTANT_NOISE:
                emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("ConstantNoise")[0];
                break;
            }

            emitterAvailable.Play();
        }
        else
        {
            Debug.Log("no emitter available");
        }
    }
Exemple #5
0
    public AudioSource PlaySound(SoundList sound, float volume = 1.0f, float timeToLoop = 0.0f)
    {
        //return null;
        AudioSource emitterAvailable = null;

        foreach (AudioSource emitter in emitters)
        {
            if (!emitter.isPlaying)
            {
                emitterAvailable = emitter;
            }
        }

        if (emitterAvailable != null)
        {
            emitterAvailable.loop   = false;
            emitterAvailable.volume = volume;
            Debug.Log(sound.ToString());
            switch (sound)
            {
            case SoundList.PAS:
                int indexWalk = Random.Range(0, listPasSounds.Count);
                emitterAvailable.clip = listPasSounds[indexWalk];
                emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("Marche")[0];
                break;

            case SoundList.BUISSON:
                int indexBuisson = Random.Range(0, listBuissonSounds.Count);
                emitterAvailable.clip = listBuissonSounds[indexBuisson];
                emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("Buisson")[0];
                break;

            case SoundList.LOUP_CRI:
                emitterAvailable.clip = loupCriClip;
                emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("Cri")[0];
                break;

            case SoundList.LOUP_GROGNEMENT:
                emitterAvailable.clip = loupGrognementClip;
                emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("Grognement")[0];
                break;

            case SoundList.CLIC:
                emitterAvailable.clip = clicClip;
                emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("Clic")[0];
                break;

            case SoundList.DIALOGUE:
                emitterAvailable.clip = dialogueClip;
                emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("Dialogue")[0];
                break;

            case SoundList.FEUILLAGE:
                int indexFeuillage = Random.Range(0, listFeuillageSounds.Count);
                emitterAvailable.clip = listFeuillageSounds[indexFeuillage];
                emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("Feuillage")[0];
                break;

            case SoundList.GRAB:
                emitterAvailable.clip = grabClip;
                emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("Ramasser")[0];
                break;
            }

            if (timeToLoop > 0.0f)
            {
                emitterAvailable.loop = true;
                LoopedSound newLoopSound = new LoopedSound
                {
                    audioSource   = emitterAvailable,
                    timeUntilStop = Utility.StartTimer(timeToLoop)
                };
                loopedSoundList.Add(newLoopSound);
            }

            emitterAvailable.Play();
            return(emitterAvailable);
        }
        else
        {
            return(null);
        }
    }
Exemple #6
0
    public AudioSource PlaySound(SoundList sound, float timeToLoop = 0.0f)
    {
        AudioSource emitterAvailable = null;

        foreach (AudioSource emitter in emitters)
        {
            if (!emitter.isPlaying)
            {
                emitterAvailable = emitter;
            }
        }

        if (emitterAvailable != null)
        {
            emitterAvailable.loop = false;
            Debug.Log(sound.ToString());
            switch (sound)
            {
            case SoundList.WALK:
                int indexWalk = Random.Range(0, listWalkSounds.Count);
                emitterAvailable.clip = listWalkSounds[indexWalk];
                emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("Effects")[0];
                break;

            case SoundList.CLOCK:
                emitterAvailable.clip = clockClip;
                emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("Effects")[0];
                break;

            case SoundList.DEATH:
                emitterAvailable.clip = deathClip;
                emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("Effects")[0];
                break;

            case SoundList.ITEM_PICKUP:
                emitterAvailable.clip = getItemClip;
                emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("Effects")[0];
                break;

            case SoundList.GUN_FIRE:
                emitterAvailable.clip = gunFireClip;
                emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("Effects")[0];

                break;

            case SoundList.DEMON_NOISE:
                int indexNoise = Random.Range(0, listDemonNoiseSounds.Count);
                emitterAvailable.clip = listDemonNoiseSounds[indexNoise];
                emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("Effects")[0];
                break;

            case SoundList.DEMON_DEATH:
                emitterAvailable.clip = DemonDeath;
                emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("Effects")[0];
                break;

            case SoundList.NEKO_NOISE:
                emitterAvailable.clip = nekoNoiseClip;
                emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("Effects")[0];
                break;

            case SoundList.SPACE_NEKO_DEATH:
                emitterAvailable.clip = spaceNekoNoiseClip;
                emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("Effects")[0];
                break;

            case SoundList.STAIRS:
                emitterAvailable.clip = stairsClip;
                emitterAvailable.outputAudioMixerGroup = audioMixer.FindMatchingGroups("Effects")[0];
                break;
            }

            if (timeToLoop > 0.0f)
            {
                emitterAvailable.loop = true;
                LoopedSound newLoopSound = new LoopedSound
                {
                    audioSource   = emitterAvailable,
                    timeUntilStop = Utility.StartTimer(timeToLoop)
                };
                loopedSoundList.Add(newLoopSound);
            }

            emitterAvailable.Play();
            return(emitterAvailable);
        }
        else
        {
            Debug.Log("no emitter available");
            return(null);
        }
    }