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: