UnityGameProjectsCode / NightwatchGame / AmbianceControl.cs
AmbianceControl.cs
Raw
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Audio;

public class AmbianceControl : MonoBehaviour
{
    public PlayerEventTrigger[] triggers = new PlayerEventTrigger[4];
    private bool playingInsideAmb = true;
    public AudioSource ambAudio, playerStepsAudio;
    public List<AudioSource> washersAndDryers = new List<AudioSource>();
    public AudioSource acUnit;
    public AudioSource wallClock;
    public AudioSource forestGirl;
    public AudioSource radio;
    public AudioMixer mix;


    private void Update()
    {
        foreach (PlayerEventTrigger trigger in triggers)
        {
            if (trigger.Triggered && trigger.gameObject.name.Contains("Inside") && !playingInsideAmb)
            {
                PlayInsideAmbiance();
                playingInsideAmb = true;
            }

            if (trigger.Triggered && trigger.gameObject.name.Contains("Outside") && playingInsideAmb)
            {
                PlayOutsideAmbiance();
                playingInsideAmb = false;
            }
        }
    }

    public void PlayOutsideAmbiance()
    {
        ambAudio.volume = 1f;
        playerStepsAudio.spread = 360;

        foreach (AudioSource machine in washersAndDryers)
        {
            machine.volume = 0.5f;
        }

        acUnit.volume = 1;
        wallClock.volume = 0.075f;
        forestGirl.volume = 0.5f;
        radio.volume = 0.2f;

        mix.SetFloat("ambCutOff", 5000f);
        mix.SetFloat("machinesCutOff", 2000f);
        mix.SetFloat("acCutOff", 22000f);
        mix.SetFloat("forestCutOff", 22000f);
        mix.SetFloat("clockCutOff", 2000f);
        mix.SetFloat("radioCutOff", 400f);
    }

    public void PlayInsideAmbiance()
    {
        ambAudio.volume = 0.5f;
        playerStepsAudio.spread = 0;

        foreach (AudioSource machine in washersAndDryers)
        {
            machine.volume = 1;
        }

        acUnit.volume = 0.5f;
        wallClock.volume = 0.25f;
        forestGirl.volume = 0.05f;
        radio.volume = 0.65f;

        mix.SetFloat("ambCutOff", 2000f);
        mix.SetFloat("machinesCutOff", 22000f);
        mix.SetFloat("acCutOff", 2000f);
        mix.SetFloat("forestCutOff", 2000f);
        mix.SetFloat("clockCutOff", 22000f);
        mix.SetFloat("radioCutOff", 1046f);
    }

    public bool GetPlayingInsideAmb()
    {
        return playingInsideAmb;
    }
}