1
0
forked from cgvr/DeltaVR

fixed bug with radio not recording voice

This commit is contained in:
2026-03-15 12:40:27 +02:00
parent e0492595e1
commit 717964affd

View File

@@ -20,7 +20,7 @@ public class RadioTransmitter : XRGrabInteractable
public float baseEmissionRate = 3;
public float maxExtraEmissionRate = 50;
private bool isProcessing;
private bool isRecording;
private ParticleSystem.EmissionModule particleEmission;
// Start is called before the first frame update
@@ -29,7 +29,7 @@ public class RadioTransmitter : XRGrabInteractable
radioButton.OnButtonPressed += OnRadioButtonPressed;
radioButton.OnButtonReleased += OnRadioButtonReleased;
radioButton.Lock();
isProcessing = false;
isRecording = false;
particleEmission = particles.emission;
particleEmission.enabled = false;
@@ -41,7 +41,13 @@ public class RadioTransmitter : XRGrabInteractable
if (particleEmission.enabled)
{
particles.transform.LookAt(computerScreen.transform.position);
particleEmission.rateOverTime = baseEmissionRate + fmodWhisperBridge.GetNormalizedVolume01() * maxExtraEmissionRate;
if (isRecording)
{
particleEmission.rateOverTime = baseEmissionRate + fmodWhisperBridge.GetNormalizedVolume01() * maxExtraEmissionRate;
} else
{
particleEmission.rateOverTime = baseEmissionRate;
}
}
}
@@ -63,21 +69,20 @@ public class RadioTransmitter : XRGrabInteractable
private void OnRadioButtonPressed()
{
AudioManager.Instance.PlayAttachedInstance(FMODEvents.Instance.RadioButton, gameObject);
if (!isProcessing)
{
isProcessing = true;
fmodWhisperBridge.OnWhisperSegmentUpdated += OnPlayerSpeechUpdated;
fmodWhisperBridge.OnWhisperSegmentFinished += OnPlayerSpeechFinished;
fmodWhisperBridge.ActivateRecording();
fmodWhisperBridge.OnWhisperSegmentUpdated += OnPlayerSpeechUpdated;
fmodWhisperBridge.OnWhisperSegmentFinished += OnPlayerSpeechFinished;
fmodWhisperBridge.ActivateRecording();
particleEmission.enabled = true;
}
isRecording = true;
particleEmission.enabled = true;
}
private void OnRadioButtonReleased()
{
fmodWhisperBridge.DeactivateRecording();
AudioManager.Instance.PlayAttachedInstance(FMODEvents.Instance.RadioButton, gameObject);
isRecording = false;
}
private void OnPlayerSpeechUpdated(string text)
@@ -88,9 +93,7 @@ public class RadioTransmitter : XRGrabInteractable
private void OnPlayerSpeechFinished(string playerText)
{
computerScreen.text = playerText;
isProcessing = false;
OnPlayerFinishedSpeaking?.Invoke();
fmodWhisperBridge.OnWhisperSegmentUpdated -= OnPlayerSpeechUpdated;
fmodWhisperBridge.OnWhisperSegmentFinished -= OnPlayerSpeechFinished;