2025-10-17 01:54:45 +03:00

67 lines
1.8 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 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;
}
}
}