1
0
forked from cgvr/DeltaVR

radio particle emission rate corresponds with mic input volume

This commit is contained in:
2026-03-06 17:41:52 +02:00
parent 1bef5a6815
commit c0e7f292a0
4 changed files with 99 additions and 10 deletions

View File

@@ -14,9 +14,14 @@ public class RadioTransmitter : XRGrabInteractable
public FMODWhisperBridge fmodWhisperBridge;
public ReleasableButton radioButton;
public TextMeshProUGUI computerScreen;
[Header("Particle System Config")]
public ParticleSystem particles;
public float baseEmissionRate = 3;
public float maxExtraEmissionRate = 50;
private bool isProcessing;
private ParticleSystem.EmissionModule particleEmission;
// Start is called before the first frame update
void Start()
@@ -26,14 +31,20 @@ public class RadioTransmitter : XRGrabInteractable
radioButton.Lock();
isProcessing = false;
var emission = particles.emission;
emission.enabled = false;
particleEmission = particles.emission;
particleEmission.enabled = false;
}
// Update is called once per frame
void Update()
{
particles.transform.LookAt(computerScreen.transform.position);
if (particles.emission.enabled)
{
particles.transform.LookAt(computerScreen.transform.position);
Debug.Log("speech volume normalized: " + fmodWhisperBridge.GetNormalizedVolume01());
Debug.Log("speech volume decibels: " + fmodWhisperBridge.GetCurrentVolumeDb());
particleEmission.rateOverTime = baseEmissionRate + fmodWhisperBridge.GetNormalizedVolume01() * maxExtraEmissionRate;
}
}
protected async override void OnSelectEntered(SelectEnterEventArgs args)
@@ -55,8 +66,7 @@ public class RadioTransmitter : XRGrabInteractable
fmodWhisperBridge.OnWhisperSegmentFinished += OnPlayerSpeechFinished;
fmodWhisperBridge.ActivateRecording();
var emission = particles.emission;
emission.enabled = true;
particleEmission.enabled = true;
}
}
@@ -81,7 +91,6 @@ public class RadioTransmitter : XRGrabInteractable
fmodWhisperBridge.OnWhisperSegmentFinished -= OnPlayerSpeechFinished;
fmodWhisperBridge.DeactivateRecording();
var emission = particles.emission;
emission.enabled = false;
particleEmission.enabled = false;
}
}