Files
DeltaVR/Assets/_PROJECT/Components/NewHandPresence/Prefabs/XROrigin Scripts/SliderToVCA.cs

94 lines
2.7 KiB
C#

using UnityEngine;
public class SliderToVCA : MonoBehaviour
{
public enum VCATarget
{
Master,
Ambiences,
Music,
SFX,
UI,
Voiceovers
}
public VCATarget target;
public AudioSliderDragHandler slider;
private void Awake()
{
slider.OnValueChanged += ApplyVolume;
}
private void Start()
{
float initialValue = GetInitialValue();
slider.SetHandleValue(initialValue);
}
private float GetInitialValue()
{
switch (target)
{
case VCATarget.Master:
return ConfigManager.instance.getVolumeMaster();
case VCATarget.Ambiences:
return ConfigManager.instance.getVolumeAmbient();
case VCATarget.Music:
return ConfigManager.instance.getVolumeMusic();
case VCATarget.SFX:
return ConfigManager.instance.getVolumeSFX();
case VCATarget.UI:
return ConfigManager.instance.getVolumeUI();
case VCATarget.Voiceovers:
return ConfigManager.instance.getVolumeVO();
default:
return 0.5f;
}
}
private void Update()
{
// Constantly push slider value to the VCA
ApplyVolume(slider.CurrentValue, false);
//Debug.Log("CurrentValue: " + slider.CurrentValue);
}
private void ApplyVolume(float value, bool isLastChange)
{
switch (target)
{
case VCATarget.Master:
AudioManager.Instance.SetMasterVCA(value);
if (isLastChange) ConfigManager.instance.SetVolumeMaster(value);
break;
case VCATarget.Ambiences:
AudioManager.Instance.SetAmbientVCA(value);
if (isLastChange) ConfigManager.instance.SetVolumeAmbient(value);
break;
case VCATarget.Music:
AudioManager.Instance.SetMusicVCA(value);
if (isLastChange) ConfigManager.instance.SetVolumeMusic(value);
break;
case VCATarget.SFX:
AudioManager.Instance.SetSFXVCA(value);
if (isLastChange) ConfigManager.instance.SetVolumeSFX(value);
break;
case VCATarget.UI:
AudioManager.Instance.SetUIVCA(value);
if (isLastChange) ConfigManager.instance.SetVolumeUI(value);
break;
case VCATarget.Voiceovers:
AudioManager.Instance.SetVoiceoverVCA(value);
if (isLastChange) ConfigManager.instance.SetVolumeVO(value);
break;
}
}
}