71 lines
2.0 KiB
C#

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 EventInstance ServerButton;
private bool hasAlarm = false;
private void Awake()
{
RoomHum = AudioManager.Instance.CreateInstance(FMODEvents.Instance.ServerRoomHumming); //initialise the instance
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
}
void Start()
{
RoomHum.start();
//start playing the sound
if (PushButton != null)
{
PushButton.onPress.AddListener(OnButtonPressed);
}
}
void OnButtonPressed()
{
AudioManager.Instance.PlayAttachedInstance(FMODEvents.Instance.ServerRoomButton, gameObject); //3d oneshot instance
Debug.Log("Alarm button Pressed!");
if (!AudioManager.IsPlaying(AlarmSound)){ //if alarm isn't already triggered.
VentilationSequence.Stop();
AlarmSequence.Play();
AlarmSound.start(); //start playing the sound
RoomHum.stop(FMOD.Studio.STOP_MODE.ALLOWFADEOUT); //stop playing the sound
hasAlarm = true;
}
}
void Update()
{
if(hasAlarm && !AudioManager.IsPlaying(AlarmSound)) // If alarm state has ended.
{
VentilationSequence.Play(); // Return to normal.
RoomHum.start();
hasAlarm = false;
}
}
}