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 bool hasAlarm = false; private void Awake() { RoomHum = AudioManager.Instance.CreateInstance(FMODEvents.Instance.ServerRoomHumming); RoomHum.set3DAttributes(FMODUnity.RuntimeUtils.To3DAttributes(gameObject)); AlarmSound = AudioManager.Instance.CreateInstance(FMODEvents.Instance.ServerRoomAlarm); AlarmSound.set3DAttributes(FMODUnity.RuntimeUtils.To3DAttributes(gameObject)); } void Start() { if (PushButton != null) { PushButton.onPress.AddListener(OnButtonPressed); AudioManager.Instance.PlayAttachedInstance(FMODEvents.Instance.ServerRoomButton, gameObject); } } void OnButtonPressed() { Debug.Log("Alarm button Pressed!"); if (!AudioManager.IsPlaying(AlarmSound)){ //if alarm isn't already triggered. VentilationSequence.Stop(); AlarmSequence.Play(); AlarmSound.start(); AudioManager.Instance.StopInstance(RoomHum, STOP_MODE.ALLOWFADEOUT); hasAlarm = true; } } void Update() { if(hasAlarm && !AudioManager.IsPlaying(AlarmSound)) // If alarm state has ended. { VentilationSequence.Play(); // Return to normal. RoomHum.start(); hasAlarm = false; } } }