71 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			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;   
 | |
|         }
 | |
|     }
 | |
| 
 | |
| }
 |