diff --git a/Assets/BossRoom/Prefabs/CharGFX/BossGraphics.prefab b/Assets/BossRoom/Prefabs/CharGFX/BossGraphics.prefab index 81d895f60..271efdef0 100644 --- a/Assets/BossRoom/Prefabs/CharGFX/BossGraphics.prefab +++ b/Assets/BossRoom/Prefabs/CharGFX/BossGraphics.prefab @@ -2056,7 +2056,7 @@ AudioSource: m_GameObject: {fileID: 6839301660383890230} m_Enabled: 1 serializedVersion: 4 - OutputAudioMixerGroup: {fileID: 0} + OutputAudioMixerGroup: {fileID: -6199682581367681880, guid: e39f39bfdfb22b541bbc115192fc2809, type: 2} m_audioClip: {fileID: 0} m_PlayOnAwake: 0 m_Volume: 1 @@ -2179,7 +2179,7 @@ AudioSource: m_GameObject: {fileID: 6839301660383890230} m_Enabled: 1 serializedVersion: 4 - OutputAudioMixerGroup: {fileID: 0} + OutputAudioMixerGroup: {fileID: -6199682581367681880, guid: e39f39bfdfb22b541bbc115192fc2809, type: 2} m_audioClip: {fileID: 0} m_PlayOnAwake: 0 m_Volume: 1 @@ -2324,7 +2324,7 @@ AudioSource: m_GameObject: {fileID: 6839301660383890230} m_Enabled: 1 serializedVersion: 4 - OutputAudioMixerGroup: {fileID: 0} + OutputAudioMixerGroup: {fileID: -4341177700643628062, guid: e39f39bfdfb22b541bbc115192fc2809, type: 2} m_audioClip: {fileID: 0} m_PlayOnAwake: 0 m_Volume: 1 diff --git a/Assets/BossRoom/Prefabs/CharGFX/ImpGraphics.prefab b/Assets/BossRoom/Prefabs/CharGFX/ImpGraphics.prefab index 2ca87e33c..b4608c28f 100644 --- a/Assets/BossRoom/Prefabs/CharGFX/ImpGraphics.prefab +++ b/Assets/BossRoom/Prefabs/CharGFX/ImpGraphics.prefab @@ -1172,7 +1172,7 @@ AudioSource: m_GameObject: {fileID: 6839301660383890230} m_Enabled: 1 serializedVersion: 4 - OutputAudioMixerGroup: {fileID: 0} + OutputAudioMixerGroup: {fileID: -6199682581367681880, guid: e39f39bfdfb22b541bbc115192fc2809, type: 2} m_audioClip: {fileID: 0} m_PlayOnAwake: 0 m_Volume: 1 @@ -1295,7 +1295,7 @@ AudioSource: m_GameObject: {fileID: 6839301660383890230} m_Enabled: 1 serializedVersion: 4 - OutputAudioMixerGroup: {fileID: 0} + OutputAudioMixerGroup: {fileID: -6199682581367681880, guid: e39f39bfdfb22b541bbc115192fc2809, type: 2} m_audioClip: {fileID: 0} m_PlayOnAwake: 0 m_Volume: 1 @@ -1440,7 +1440,7 @@ AudioSource: m_GameObject: {fileID: 6839301660383890230} m_Enabled: 1 serializedVersion: 4 - OutputAudioMixerGroup: {fileID: 0} + OutputAudioMixerGroup: {fileID: -4341177700643628062, guid: e39f39bfdfb22b541bbc115192fc2809, type: 2} m_audioClip: {fileID: 0} m_PlayOnAwake: 0 m_Volume: 1 diff --git a/Assets/BossRoom/Prefabs/CharGFX/PlayerGraphics.prefab b/Assets/BossRoom/Prefabs/CharGFX/PlayerGraphics.prefab index 30ee98c7e..1d39b228d 100644 --- a/Assets/BossRoom/Prefabs/CharGFX/PlayerGraphics.prefab +++ b/Assets/BossRoom/Prefabs/CharGFX/PlayerGraphics.prefab @@ -1507,7 +1507,7 @@ AudioSource: m_GameObject: {fileID: 3736552308919084700} m_Enabled: 1 serializedVersion: 4 - OutputAudioMixerGroup: {fileID: 0} + OutputAudioMixerGroup: {fileID: -6199682581367681880, guid: e39f39bfdfb22b541bbc115192fc2809, type: 2} m_audioClip: {fileID: 0} m_PlayOnAwake: 0 m_Volume: 1 @@ -1630,7 +1630,7 @@ AudioSource: m_GameObject: {fileID: 3736552308919084700} m_Enabled: 1 serializedVersion: 4 - OutputAudioMixerGroup: {fileID: 0} + OutputAudioMixerGroup: {fileID: -6199682581367681880, guid: e39f39bfdfb22b541bbc115192fc2809, type: 2} m_audioClip: {fileID: 0} m_PlayOnAwake: 0 m_Volume: 1 @@ -1775,7 +1775,7 @@ AudioSource: m_GameObject: {fileID: 3736552308919084700} m_Enabled: 1 serializedVersion: 4 - OutputAudioMixerGroup: {fileID: 0} + OutputAudioMixerGroup: {fileID: -4341177700643628062, guid: e39f39bfdfb22b541bbc115192fc2809, type: 2} m_audioClip: {fileID: 0} m_PlayOnAwake: 0 m_Volume: 1 diff --git a/Assets/BossRoom/Prefabs/UI/SettingsPanelCanvas.prefab b/Assets/BossRoom/Prefabs/UI/SettingsPanelCanvas.prefab index d46b325b8..e502f3391 100644 --- a/Assets/BossRoom/Prefabs/UI/SettingsPanelCanvas.prefab +++ b/Assets/BossRoom/Prefabs/UI/SettingsPanelCanvas.prefab @@ -1185,10 +1185,10 @@ MonoBehaviour: m_FillRect: {fileID: 6005602306300149307} m_HandleRect: {fileID: 7817392311645474671} m_Direction: 0 - m_MinValue: 0 + m_MinValue: 0.0001 m_MaxValue: 1 m_WholeNumbers: 0 - m_Value: 0 + m_Value: 0.0001 m_OnValueChanged: m_PersistentCalls: m_Calls: [] @@ -1276,10 +1276,10 @@ MonoBehaviour: m_FillRect: {fileID: 1591034541050051854} m_HandleRect: {fileID: 1591034541991487326} m_Direction: 0 - m_MinValue: 0 + m_MinValue: 0.0001 m_MaxValue: 1 m_WholeNumbers: 0 - m_Value: 0 + m_Value: 0.0001 m_OnValueChanged: m_PersistentCalls: m_Calls: [] diff --git a/Assets/BossRoom/Scenes/Startup.unity b/Assets/BossRoom/Scenes/Startup.unity index 22617b75e..82a73b11d 100644 --- a/Assets/BossRoom/Scenes/Startup.unity +++ b/Assets/BossRoom/Scenes/Startup.unity @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:57c5d00aad2778da4bf04b8917e0215778ccd1e768cb03b34b137d189430b329 -size 25047 +oid sha256:fdf648e5a3c2730a1fc06b2122f60e7d29beb0b5dc6e9314de97f1d518874437 +size 26803 diff --git a/Assets/BossRoom/Scripts/Client/Audio/AudioMixerConfigurator.cs b/Assets/BossRoom/Scripts/Client/Audio/AudioMixerConfigurator.cs new file mode 100644 index 000000000..1192895df --- /dev/null +++ b/Assets/BossRoom/Scripts/Client/Audio/AudioMixerConfigurator.cs @@ -0,0 +1,57 @@ +using UnityEngine; +using UnityEngine.Audio; + +namespace BossRoom.Client +{ + /// + /// Initializes the game's AudioMixer to use volumes stored in preferences. Provides + /// a public function that can be called when these values change. + /// + public class AudioMixerConfigurator : MonoBehaviour + { + [SerializeField] + private AudioMixer m_Mixer; + + [SerializeField] + private string m_MixerVarMainVolume = "OverallVolume"; + + [SerializeField] + private string m_MixerVarMusicVolume = "MusicVolume"; + + public static AudioMixerConfigurator Instance { get; private set; } + + /// + /// The audio sliders use a value between 0.0001 and 1, but the mixer works in decibels -- by default, -80 to 0. + /// To convert, we use log10(slider) multiplied by 20. Why 20? because log10(.0001)*20=-80, which is the + /// bottom range for our mixer, meaning it's disabled. + /// + private const float k_VolumeLog10Multiplier = 20; + + private void Awake() + { + Instance = this; + DontDestroyOnLoad(gameObject); + } + + private void Start() + { + // note that trying to configure the AudioMixer during Awake does not work, must be initialized in Start + Configure(); + } + + public void Configure() + { + m_Mixer.SetFloat(m_MixerVarMainVolume, GetVolumeInDecibels(ClientPrefs.GetMasterVolume())); + m_Mixer.SetFloat(m_MixerVarMusicVolume, GetVolumeInDecibels(ClientPrefs.GetMusicVolume())); + } + + private float GetVolumeInDecibels(float volume) + { + if (volume <= 0) // sanity-check in case we have bad prefs data + { + volume = 0.0001f; + } + return Mathf.Log10(volume) * k_VolumeLog10Multiplier; + } + } +} diff --git a/Assets/BossRoom/Scripts/Client/Audio/AudioMixerConfigurator.cs.meta b/Assets/BossRoom/Scripts/Client/Audio/AudioMixerConfigurator.cs.meta new file mode 100644 index 000000000..3d4c27866 --- /dev/null +++ b/Assets/BossRoom/Scripts/Client/Audio/AudioMixerConfigurator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e49a0047dd875594a8b6209502628f62 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/BossRoom/Scripts/Client/Audio/ClientMusicPlayer.cs b/Assets/BossRoom/Scripts/Client/Audio/ClientMusicPlayer.cs index a80e0e19e..557f26444 100644 --- a/Assets/BossRoom/Scripts/Client/Audio/ClientMusicPlayer.cs +++ b/Assets/BossRoom/Scripts/Client/Audio/ClientMusicPlayer.cs @@ -73,12 +73,6 @@ private void Awake() } DontDestroyOnLoad(gameObject); Instance = this; - m_source.volume = ClientPrefs.GetMusicVolume(); - } - - public void SetMusicVolume(float volume) - { - m_source.volume = volume; } } } diff --git a/Assets/BossRoom/Scripts/Client/UI/UISettingsPanel.cs b/Assets/BossRoom/Scripts/Client/UI/UISettingsPanel.cs index ea89c1581..d92fae224 100644 --- a/Assets/BossRoom/Scripts/Client/UI/UISettingsPanel.cs +++ b/Assets/BossRoom/Scripts/Client/UI/UISettingsPanel.cs @@ -31,14 +31,14 @@ private void OnDisable() private void OnMasterVolumeSliderChanged(float newValue) { - AudioListener.volume = newValue; ClientPrefs.SetMasterVolume(newValue); + AudioMixerConfigurator.Instance.Configure(); } private void OnMusicVolumeSliderChanged(float newValue) { - ClientMusicPlayer.Instance.SetMusicVolume(newValue); ClientPrefs.SetMusicVolume(newValue); + AudioMixerConfigurator.Instance.Configure(); } } diff --git a/Assets/BossRoom/Sounds/BossRoomMixer.mixer b/Assets/BossRoom/Sounds/BossRoomMixer.mixer new file mode 100644 index 000000000..bbb810f86 --- /dev/null +++ b/Assets/BossRoom/Sounds/BossRoomMixer.mixer @@ -0,0 +1,211 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!243 &-6199682581367681880 +AudioMixerGroupController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: SFX + m_AudioMixer: {fileID: 24100000} + m_GroupID: fd76fc8381079ed44bd44808594595b7 + m_Children: [] + m_Volume: ed443103acfbf6845862cb22de603bfb + m_Pitch: 6ebb1509e7d4bc7498404613b335adce + m_Send: 00000000000000000000000000000000 + m_Effects: + - {fileID: 4515882175651799323} + m_UserColorIndex: 0 + m_Mute: 0 + m_Solo: 0 + m_BypassEffects: 0 +--- !u!243 &-4341177700643628062 +AudioMixerGroupController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Footsteps + m_AudioMixer: {fileID: 24100000} + m_GroupID: e42e31bb7e2a73e48a226bb7c974601b + m_Children: [] + m_Volume: 99f2d6a311387654f9284dcf4ea3fd66 + m_Pitch: ad5ad9758bb20844cb010a46546cc6b3 + m_Send: 00000000000000000000000000000000 + m_Effects: + - {fileID: 56952139443996888} + m_UserColorIndex: 0 + m_Mute: 0 + m_Solo: 0 + m_BypassEffects: 0 +--- !u!241 &24100000 +AudioMixerController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: BossRoomMixer + m_OutputGroup: {fileID: 0} + m_MasterGroup: {fileID: 24300002} + m_Snapshots: + - {fileID: 24500006} + m_StartSnapshot: {fileID: 24500006} + m_SuspendThreshold: -80 + m_EnableSuspend: 1 + m_UpdateMode: 0 + m_ExposedParameters: + - guid: 99f2d6a311387654f9284dcf4ea3fd66 + name: FootstepsVolume + - guid: d2b6ffd92000b4249a4b1383c4614b7a + name: OverallVolume + - guid: ea84b695fbafdda4cbed1526f2ff26cd + name: MusicVolume + - guid: ed443103acfbf6845862cb22de603bfb + name: SfxVolume + m_AudioMixerGroupViews: + - guids: + - 6a717046ed04a914abfa6be91cc0ef18 + - 21ca9eac40434f9419ba4c2fa9d33cc1 + - fd76fc8381079ed44bd44808594595b7 + - e42e31bb7e2a73e48a226bb7c974601b + name: View + m_CurrentViewIndex: 0 + m_TargetSnapshot: {fileID: 24500006} +--- !u!243 &24300002 +AudioMixerGroupController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Master + m_AudioMixer: {fileID: 24100000} + m_GroupID: 6a717046ed04a914abfa6be91cc0ef18 + m_Children: + - {fileID: 4503646073280770931} + - {fileID: -6199682581367681880} + - {fileID: -4341177700643628062} + m_Volume: d2b6ffd92000b4249a4b1383c4614b7a + m_Pitch: acdb5f1c71d1ac642b0bdd7efe15e440 + m_Send: 00000000000000000000000000000000 + m_Effects: + - {fileID: 24400004} + m_UserColorIndex: 0 + m_Mute: 0 + m_Solo: 0 + m_BypassEffects: 0 +--- !u!244 &24400004 +AudioMixerEffectController: + m_ObjectHideFlags: 3 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_EffectID: 070ad148f06c1da47add7458e71e0f34 + m_EffectName: Attenuation + m_MixLevel: b430fbc925c396f498d0ae25117e7e67 + m_Parameters: [] + m_SendTarget: {fileID: 0} + m_EnableWetMix: 0 + m_Bypass: 0 +--- !u!245 &24500006 +AudioMixerSnapshotController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Snapshot + m_AudioMixer: {fileID: 24100000} + m_SnapshotID: 5ffad3dcc7c4bea48b6cfca683c5b836 + m_FloatValues: + 99f2d6a311387654f9284dcf4ea3fd66: 0 + d2b6ffd92000b4249a4b1383c4614b7a: 0 + m_TransitionOverrides: {} +--- !u!244 &56952139443996888 +AudioMixerEffectController: + m_ObjectHideFlags: 3 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_EffectID: ae288c8e5ea4b304eaf420a01d032d54 + m_EffectName: Attenuation + m_MixLevel: b764ae32ad1e8964b88bc88e80b02c9b + m_Parameters: [] + m_SendTarget: {fileID: 0} + m_EnableWetMix: 0 + m_Bypass: 0 +--- !u!244 &154589635068778099 +AudioMixerEffectController: + m_ObjectHideFlags: 3 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_EffectID: 51e14d34b5bd8d546b7d362cbe3ee1be + m_EffectName: Duck Volume + m_MixLevel: 630473b0a1b024b4bb6f824a532bf25a + m_Parameters: + - m_ParameterName: Threshold + m_GUID: 5f73c939cdfcfcd40a4072f78c6e13f4 + - m_ParameterName: Ratio + m_GUID: 85ea6cbfbc7c91e4cbbcb18f4580e992 + - m_ParameterName: Attack Time + m_GUID: 89006b9e405c5e04e9ab9ad1232a8431 + - m_ParameterName: Release Time + m_GUID: 39d1cfcc683ba444bb6ab6b0e32e44bc + - m_ParameterName: Make-up Gain + m_GUID: 2f0137d6559b3bb4eb415f6b6ae85394 + - m_ParameterName: Knee + m_GUID: c26962dfac019f041b3800caccbcb115 + - m_ParameterName: Sidechain Mix + m_GUID: 47db96495a82c684cbeb58e4303720c9 + m_SendTarget: {fileID: 0} + m_EnableWetMix: 0 + m_Bypass: 0 +--- !u!243 &4503646073280770931 +AudioMixerGroupController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Music + m_AudioMixer: {fileID: 24100000} + m_GroupID: 21ca9eac40434f9419ba4c2fa9d33cc1 + m_Children: [] + m_Volume: ea84b695fbafdda4cbed1526f2ff26cd + m_Pitch: 14eac7f58a50d8542b2f3e0677f84279 + m_Send: 00000000000000000000000000000000 + m_Effects: + - {fileID: 5717233539500400283} + m_UserColorIndex: 0 + m_Mute: 0 + m_Solo: 0 + m_BypassEffects: 0 +--- !u!244 &4515882175651799323 +AudioMixerEffectController: + m_ObjectHideFlags: 3 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_EffectID: 7f9e483ddb698c8448020815f067cb24 + m_EffectName: Attenuation + m_MixLevel: 82de9ca462cad1d4d972df4c302d9958 + m_Parameters: [] + m_SendTarget: {fileID: 0} + m_EnableWetMix: 0 + m_Bypass: 0 +--- !u!244 &5717233539500400283 +AudioMixerEffectController: + m_ObjectHideFlags: 3 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: + m_EffectID: 6580f6fc3f0eb2d4cb75502be57653dc + m_EffectName: Attenuation + m_MixLevel: 53c8cf9eb8ed85d41ae34c6dfc17b411 + m_Parameters: [] + m_SendTarget: {fileID: 0} + m_EnableWetMix: 0 + m_Bypass: 0 diff --git a/Assets/BossRoom/Sounds/BossRoomMixer.mixer.meta b/Assets/BossRoom/Sounds/BossRoomMixer.mixer.meta new file mode 100644 index 000000000..201c5146c --- /dev/null +++ b/Assets/BossRoom/Sounds/BossRoomMixer.mixer.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e39f39bfdfb22b541bbc115192fc2809 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 24100000 + userData: + assetBundleName: + assetBundleVariant: