public static float DisplayVolumeField(float vol, VolumeFieldType fieldType, MasterAudio.MixerWidthMode widthMode, float volumeMin = 0f, bool showFieldName = false, string fieldName = "Volume") { var wideMode = widthMode == MasterAudio.MixerWidthMode.Wide; var narrowMode = widthMode == MasterAudio.MixerWidthMode.Narrow; var forceToNonDb = MasterAudio.UseDbScaleForVolume && vol < 0; if (!MasterAudio.UseDbScaleForVolume || forceToNonDb) { switch (fieldType) { case VolumeFieldType.MixerGroup: return GUILayout.HorizontalSlider(vol, 0f, 1f, GUILayout.Width(wideMode ? WideModeWidth : NormalModeWidth)); case VolumeFieldType.DynamicMixerGroup: return GUILayout.HorizontalSlider(vol, 0f, 1f, GUILayout.Width(100)); case VolumeFieldType.Bus: var width = wideMode ? WideModeWidth : NormalBusWidth; if (narrowMode) { width = NormalModeWidth; } return GUILayout.HorizontalSlider(vol, 0f, 1f, GUILayout.Width(width)); case VolumeFieldType.PlaylistController: var wid = 74; if (narrowMode) { wid = NormalModeWidth; } return GUILayout.HorizontalSlider(vol, 0f, 1f, GUILayout.Width(wid)); case VolumeFieldType.None: if (showFieldName) { return EditorGUILayout.Slider(fieldName, vol, volumeMin, 1f); } return EditorGUILayout.Slider(vol, volumeMin, 1f, narrowMode ? GUILayout.Width(115) : GUILayout.Width(252)); case VolumeFieldType.GlobalVolume: if (showFieldName) { return EditorGUILayout.Slider(fieldName, vol, volumeMin, 1f); } var newVol = GUILayout.HorizontalSlider(vol, volumeMin, 1f, narrowMode ? GUILayout.Width(61) : GUILayout.Width(198)); var newVol2 = EditorGUILayout.FloatField(vol, GUILayout.Width(50)); if (newVol > 1) { newVol = 1; } if (newVol < 0) { newVol = 0; } if (newVol != vol) { return newVol; } return newVol2; } } var dbLevel = (float)Math.Round(AudioUtil.GetDbFromFloatVolume(vol), 1); var newDbLevel = 0f; switch (fieldType) { case VolumeFieldType.MixerGroup: newDbLevel = GUILayout.HorizontalSlider(dbLevel, MinDb, MaxDb, GUILayout.Width(wideMode ? WideModeWidth : NormalModeWidth)); break; case VolumeFieldType.DynamicMixerGroup: newDbLevel = GUILayout.HorizontalSlider(dbLevel, MinDb, MaxDb, GUILayout.Width(100)); break; case VolumeFieldType.Bus: var sliderWidth = wideMode ? WideModeWidth : NormalBusWidth; if (narrowMode) { sliderWidth = NormalModeWidth; } newDbLevel = GUILayout.HorizontalSlider(dbLevel, MinDb, MaxDb, GUILayout.Width(sliderWidth)); break; case VolumeFieldType.PlaylistController: var sliderWid = 74; if (narrowMode) { sliderWid = NormalModeWidth; } newDbLevel = GUILayout.HorizontalSlider(dbLevel, MinDb, MaxDb, GUILayout.Width(sliderWid)); break; case VolumeFieldType.None: // ReSharper disable once ConvertIfStatementToConditionalTernaryExpression if (showFieldName) { newDbLevel = EditorGUILayout.Slider(fieldName + DbText, dbLevel, MinDb, MaxDb); } else { newDbLevel = EditorGUILayout.Slider(dbLevel, MinDb, MaxDb, narrowMode ? GUILayout.Width(115) : GUILayout.Width(252)); } break; case VolumeFieldType.GlobalVolume: if (showFieldName) { return EditorGUILayout.Slider(fieldName + DbText, dbLevel, MinDb, MaxDb); } newDbLevel = GUILayout.HorizontalSlider(dbLevel, MinDb, MaxDb, narrowMode ? GUILayout.Width(61) : GUILayout.Width(198)); newDbLevel = EditorGUILayout.FloatField(newDbLevel, GUILayout.Width(50)); if (newDbLevel > MaxDb) { newDbLevel = MaxDb; } if (newDbLevel < MinDb) { newDbLevel = MinDb; } break; } return AudioUtil.GetFloatVolumeFromDb(newDbLevel); }
public static float DisplayVolumeField(float vol, VolumeFieldType fieldType, MasterAudio.MixerWidthMode widthMode, float volumeMin = 0f, bool showFieldName = false, string fieldName = "Volume") { var wideMode = widthMode == MasterAudio.MixerWidthMode.Wide; var narrowMode = widthMode == MasterAudio.MixerWidthMode.Narrow; var forceToNonDb = MasterAudio.UseDbScaleForVolume && vol < 0; if (!MasterAudio.UseDbScaleForVolume || forceToNonDb) { switch (fieldType) { case VolumeFieldType.MixerGroup: return(GUILayout.HorizontalSlider(vol, 0f, 1f, GUILayout.Width(wideMode ? WideModeWidth : NormalModeWidth))); case VolumeFieldType.DynamicMixerGroup: return(GUILayout.HorizontalSlider(vol, 0f, 1f, GUILayout.Width(100))); case VolumeFieldType.Bus: var width = wideMode ? WideModeWidth : NormalBusWidth; if (narrowMode) { width = NormalModeWidth; } return(GUILayout.HorizontalSlider(vol, 0f, 1f, GUILayout.Width(width))); case VolumeFieldType.PlaylistController: var wid = 74; if (narrowMode) { wid = NormalModeWidth; } return(GUILayout.HorizontalSlider(vol, 0f, 1f, GUILayout.Width(wid))); case VolumeFieldType.None: if (showFieldName) { return(EditorGUILayout.Slider(fieldName, vol, volumeMin, 1f)); } return(EditorGUILayout.Slider(vol, volumeMin, 1f, narrowMode ? GUILayout.Width(115) : GUILayout.Width(252))); case VolumeFieldType.GlobalVolume: if (showFieldName) { return(EditorGUILayout.Slider(fieldName, vol, volumeMin, 1f)); } var newVol = GUILayout.HorizontalSlider(vol, volumeMin, 1f, narrowMode ? GUILayout.Width(61) : GUILayout.Width(198)); var newVol2 = EditorGUILayout.FloatField(vol, GUILayout.Width(50)); if (newVol > 1) { newVol = 1; } if (newVol < 0) { newVol = 0; } if (newVol != vol) { return(newVol); } return(newVol2); } } var dbLevel = (float)Math.Round(AudioUtil.GetDbFromFloatVolume(vol), 1); var newDbLevel = 0f; switch (fieldType) { case VolumeFieldType.MixerGroup: newDbLevel = GUILayout.HorizontalSlider(dbLevel, MinDb, MaxDb, GUILayout.Width(wideMode ? WideModeWidth : NormalModeWidth)); break; case VolumeFieldType.DynamicMixerGroup: newDbLevel = GUILayout.HorizontalSlider(dbLevel, MinDb, MaxDb, GUILayout.Width(100)); break; case VolumeFieldType.Bus: var sliderWidth = wideMode ? WideModeWidth : NormalBusWidth; if (narrowMode) { sliderWidth = NormalModeWidth; } newDbLevel = GUILayout.HorizontalSlider(dbLevel, MinDb, MaxDb, GUILayout.Width(sliderWidth)); break; case VolumeFieldType.PlaylistController: var sliderWid = 74; if (narrowMode) { sliderWid = NormalModeWidth; } newDbLevel = GUILayout.HorizontalSlider(dbLevel, MinDb, MaxDb, GUILayout.Width(sliderWid)); break; case VolumeFieldType.None: // ReSharper disable once ConvertIfStatementToConditionalTernaryExpression if (showFieldName) { newDbLevel = EditorGUILayout.Slider(fieldName + DbText, dbLevel, MinDb, MaxDb); } else { newDbLevel = EditorGUILayout.Slider(dbLevel, MinDb, MaxDb, narrowMode ? GUILayout.Width(115) : GUILayout.Width(252)); } break; case VolumeFieldType.GlobalVolume: if (showFieldName) { return(EditorGUILayout.Slider(fieldName + DbText, dbLevel, MinDb, MaxDb)); } newDbLevel = GUILayout.HorizontalSlider(dbLevel, MinDb, MaxDb, narrowMode ? GUILayout.Width(61) : GUILayout.Width(198)); newDbLevel = EditorGUILayout.FloatField(newDbLevel, GUILayout.Width(50)); if (newDbLevel > MaxDb) { newDbLevel = MaxDb; } if (newDbLevel < MinDb) { newDbLevel = MinDb; } break; } return(AudioUtil.GetFloatVolumeFromDb(newDbLevel)); }