forked from cgvr/DeltaVR
63 lines
1.9 KiB
C#
63 lines
1.9 KiB
C#
using TMPro;
|
|
using UnityEngine;
|
|
using UnityEngine.XR.Interaction.Toolkit;
|
|
|
|
public class RadioTransmitter : XRGrabInteractable
|
|
{
|
|
public delegate void OnPlayerPickUpDelegate();
|
|
public event OnPlayerPickUpDelegate OnPlayerPickUp;
|
|
public delegate void OnPlayerFinishedSpeakingDelegate();
|
|
public event OnPlayerFinishedSpeakingDelegate OnPlayerFinishedSpeaking;
|
|
|
|
[Header("Custom Config")]
|
|
public FMODWhisperBridge fmodWhisperBridge;
|
|
public ReleasableButton radioButton;
|
|
public TextMeshProUGUI computerScreen;
|
|
|
|
// Start is called before the first frame update
|
|
void Start()
|
|
{
|
|
radioButton.OnButtonPressed += OnRadioButtonPressed;
|
|
radioButton.OnButtonReleased += OnRadioButtonReleased;
|
|
}
|
|
|
|
// Update is called once per frame
|
|
void Update()
|
|
{
|
|
|
|
}
|
|
|
|
protected override void OnSelectEntered(SelectEnterEventArgs args)
|
|
{
|
|
base.OnSelectEntered(args);
|
|
OnPlayerPickUp?.Invoke();
|
|
}
|
|
|
|
private void OnRadioButtonPressed()
|
|
{
|
|
fmodWhisperBridge.OnWhisperSegmentUpdated += OnPlayerSpeechUpdated;
|
|
fmodWhisperBridge.OnWhisperSegmentFinished += OnPlayerSpeechFinished;
|
|
AudioManager.Instance.PlayAttachedInstance(FMODEvents.Instance.RadioButton, gameObject);
|
|
fmodWhisperBridge.ActivateRecording();
|
|
}
|
|
|
|
private void OnRadioButtonReleased()
|
|
{
|
|
fmodWhisperBridge.OnWhisperSegmentUpdated -= OnPlayerSpeechUpdated;
|
|
fmodWhisperBridge.OnWhisperSegmentFinished -= OnPlayerSpeechFinished;
|
|
AudioManager.Instance.PlayAttachedInstance(FMODEvents.Instance.RadioButton, gameObject);
|
|
fmodWhisperBridge.DeactivateRecording();
|
|
}
|
|
|
|
private void OnPlayerSpeechUpdated(string text)
|
|
{
|
|
computerScreen.text = text;
|
|
OnPlayerFinishedSpeaking?.Invoke();
|
|
}
|
|
|
|
private void OnPlayerSpeechFinished(string playerText)
|
|
{
|
|
OnPlayerFinishedSpeaking?.Invoke();
|
|
}
|
|
}
|