using System.Collections; using System.Collections.Generic; using System.Runtime.Remoting.Messaging; using UnityEngine; using UnityEngine.PlayerLoop; using UnityEngine.XR.Content.Interaction; using FMOD.Studio; public class AlarmTrigger : MonoBehaviour { public XRPushButton PushButton; public AudioSource AlarmSequence; public AudioSource VentilationSequence; private EventInstance RoomHum; private EventInstance AlarmSound; private FirstPersonOcclusion occlusion; private bool hasAlarm = false; private void Awake() { RoomHum = AudioManager.Instance.CreateInstance(FMODEvents.Instance.ServerRoomHumming); //initialise the instance RoomHum.setParameterByName("AlarmLogic", 1); RoomHum.set3DAttributes(FMODUnity.RuntimeUtils.To3DAttributes(gameObject)); //make it 3d //AlarmSound = AudioManager.Instance.CreateInstance(FMODEvents.Instance.ServerRoomAlarm); //initialise the instance //AlarmSound.set3DAttributes(FMODUnity.RuntimeUtils.To3DAttributes(gameObject)); //make it 3d occlusion = GetComponent(); if (occlusion != null) occlusion.InitialiseWithInstance(RoomHum); occlusion.InitialiseWithInstance(AlarmSound); } void Start() { RoomHum.start(); //start playing the sound if (PushButton != null) { PushButton.onPress.AddListener(OnButtonPressed); } } void OnButtonPressed() { AudioManager.Instance.PlayAttachedInstance(FMODEvents.Instance.ServerRoomButton, PushButton.gameObject); //3d oneshot instance Debug.Log("Alarm button Pressed!"); RoomHum.setParameterByName("AlarmLogic", 0); hasAlarm = true; } void Update() { RoomHum.set3DAttributes(FMODUnity.RuntimeUtils.To3DAttributes(gameObject)); //updating 3d attributes AlarmSound.set3DAttributes(FMODUnity.RuntimeUtils.To3DAttributes(gameObject)); //updating 3d attributes VentilationSequence.Play(); // Return to normal. RoomHum.start(); AlarmSound.stop(FMOD.Studio.STOP_MODE.ALLOWFADEOUT); hasAlarm = false; } }