using System.Collections; using System.Collections.Generic; using System.Runtime.Remoting.Messaging; using UnityEngine; using UnityEngine.XR.Content.Interaction; using FMOD.Studio; public class AlarmTrigger : MonoBehaviour { public XRPushButton PushButton; private EventInstance RoomHum; private EventInstance AlarmSound; private FirstPersonOcclusion occlusion; private void Awake() { RoomHum = AudioManager.Instance.CreateInstance(FMODEvents.Instance.ServerRoomHumming); //initialise the instance AlarmSound = AudioManager.Instance.CreateInstance(FMODEvents.Instance.ServerRoomAlarm); //initialise the instance occlusion = GetComponent(); //apply occlusion if (occlusion != null) { occlusion.InitialiseWithInstance(RoomHum); //occlusion.InitialiseWithInstance(AlarmSound); } } void Start() { //start playing the Server overall sound //RoomHum.start(); 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.stop(FMOD.Studio.STOP_MODE.ALLOWFADEOUT); AlarmSound.start(); } void Update() { RoomHum.set3DAttributes(FMODUnity.RuntimeUtils.To3DAttributes(gameObject)); //updating 3d attributes AlarmSound.set3DAttributes(FMODUnity.RuntimeUtils.To3DAttributes(gameObject)); //updating 3d attributes // If alarm finished, restart hum once if (!AudioManager.IsPlaying(AlarmSound) && !AudioManager.IsPlaying(RoomHum)) { //RoomHum.start(); } } }