1
0
forked from cgvr/DeltaVR
Files
DeltaVR3DModelGeneration/Assets/_PROJECT/Scripts/ModeGeneration/ShapeDetection/RadioTransmitter.cs
2026-02-17 17:40:46 +02:00

54 lines
1.5 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;
}
// 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();
// TODO: deactivate when button is released
}
private void OnPlayerSpeechUpdated(string text)
{
computerScreen.text = text;
}
private void OnPlayerSpeechFinished(string playerText)
{
OnPlayerFinishedSpeaking?.Invoke();
}
}