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