示例#1
0
    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);
    }
示例#2
0
    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));
    }