private void ResetSettingsFromBackend() { if (GetAllAudioImporterTargets().Any()) { AudioImporter firstImporter = GetAllAudioImporterTargets().First(); //Just load the settings from the first importer for the default settings m_DefaultSampleSettings.settings = firstImporter.defaultSampleSettings; m_DefaultSampleSettings.ClearChangedFlags(); m_SampleSettingOverrides = new Dictionary <BuildTargetGroup, SampleSettingProperties>(); List <BuildPlatform> validPlatforms = BuildPlatforms.instance.GetValidPlatforms(); foreach (BuildPlatform platform in validPlatforms) { BuildTargetGroup platformGroup = platform.targetGroup; foreach (AudioImporter importer in GetAllAudioImporterTargets()) { if (importer.Internal_ContainsSampleSettingsOverride(platformGroup)) { SampleSettingProperties newProperties = new SampleSettingProperties(); newProperties.settings = importer.Internal_GetOverrideSampleSettings(platformGroup); m_SampleSettingOverrides[platformGroup] = newProperties; //Just grab the first settings we find from any of the importers. //This will be sorted later by checking if there are any differences between importers. break; } } //If we failed to find a valid override setting, just create a default one for use later. if (!m_SampleSettingOverrides.ContainsKey(platformGroup)) { SampleSettingProperties newProperties = new SampleSettingProperties(); newProperties.settings = firstImporter.Internal_GetOverrideSampleSettings(platformGroup); m_SampleSettingOverrides[platformGroup] = newProperties; } } } }
private bool SyncSettingsToBackend() { BuildPlatform[] validPlatforms = BuildPlatforms.instance.GetValidPlatforms().ToArray(); foreach (AudioImporter importer in GetAllAudioImporterTargets()) { { AudioImporterSampleSettings importerDefaults = importer.defaultSampleSettings; //Importer default settings if (m_DefaultSampleSettings.loadTypeChanged) { importerDefaults.loadType = m_DefaultSampleSettings.settings.loadType; } if (m_DefaultSampleSettings.sampleRateSettingChanged) { importerDefaults.sampleRateSetting = m_DefaultSampleSettings.settings.sampleRateSetting; } if (m_DefaultSampleSettings.sampleRateOverrideChanged) { importerDefaults.sampleRateOverride = m_DefaultSampleSettings.settings.sampleRateOverride; } if (m_DefaultSampleSettings.compressionFormatChanged) { importerDefaults.compressionFormat = m_DefaultSampleSettings.settings.compressionFormat; } if (m_DefaultSampleSettings.qualityChanged) { importerDefaults.quality = m_DefaultSampleSettings.settings.quality; } if (m_DefaultSampleSettings.conversionModeChanged) { importerDefaults.conversionMode = m_DefaultSampleSettings.settings.conversionMode; } //Set the default settings on the importer after the changes. importer.defaultSampleSettings = importerDefaults; } //Get all the valid platforms, and write changes only for those ones foreach (BuildPlatform platform in validPlatforms) { BuildTargetGroup platformGroup = platform.targetGroup; if (m_SampleSettingOverrides.ContainsKey(platformGroup)) { SampleSettingProperties overrideProperties = m_SampleSettingOverrides[platformGroup]; if (overrideProperties.overrideIsForced && !overrideProperties.forcedOverrideState) { importer.Internal_ClearSampleSettingOverride(platformGroup); } else if (importer.Internal_ContainsSampleSettingsOverride(platformGroup) || (overrideProperties.overrideIsForced && overrideProperties.forcedOverrideState)) { AudioImporterSampleSettings overrideSettings = importer.Internal_GetOverrideSampleSettings(platformGroup); if (overrideProperties.loadTypeChanged) { overrideSettings.loadType = overrideProperties.settings.loadType; } if (overrideProperties.sampleRateSettingChanged) { overrideSettings.sampleRateSetting = overrideProperties.settings.sampleRateSetting; } if (overrideProperties.sampleRateOverrideChanged) { overrideSettings.sampleRateOverride = overrideProperties.settings.sampleRateOverride; } if (overrideProperties.compressionFormatChanged) { overrideSettings.compressionFormat = overrideProperties.settings.compressionFormat; } if (overrideProperties.qualityChanged) { overrideSettings.quality = overrideProperties.settings.quality; } if (overrideProperties.conversionModeChanged) { overrideSettings.conversionMode = overrideProperties.settings.conversionMode; } //Set the default settings on the importer after the changes. importer.Internal_SetOverrideSampleSettings(platformGroup, overrideSettings); } m_SampleSettingOverrides[platformGroup] = overrideProperties; } } } //Now that we are in sync with the backend, we need to clear the changed flags within //the properties m_DefaultSampleSettings.ClearChangedFlags(); foreach (BuildPlatform platform in validPlatforms) { BuildTargetGroup platformGroup = platform.targetGroup; if (m_SampleSettingOverrides.ContainsKey(platformGroup)) { SampleSettingProperties overrideProperties = m_SampleSettingOverrides[platformGroup]; overrideProperties.ClearChangedFlags(); m_SampleSettingOverrides[platformGroup] = overrideProperties; } } return(true); }
private void OnAudioImporterGUI(bool selectionContainsTrackerFile) { if (!selectionContainsTrackerFile) { EditorGUILayout.PropertyField(m_ForceToMono); EditorGUI.indentLevel++; using (new EditorGUI.DisabledScope(!m_ForceToMono.boolValue)) { EditorGUILayout.PropertyField(m_Normalize); } EditorGUI.indentLevel--; EditorGUILayout.PropertyField(m_LoadInBackground); EditorGUILayout.PropertyField(m_Ambisonic); } BuildPlatform[] validPlatforms = BuildPlatforms.instance.GetValidPlatforms().ToArray(); GUILayout.Space(10); int shownSettingsPage = EditorGUILayout.BeginPlatformGrouping(validPlatforms, GUIContent.Temp("Default")); if (shownSettingsPage == -1) { // If the loadtype is streaming on the selected platform, gray out the "Preload Audio Data" option and show the checkbox as unchecked. bool disablePreloadAudioDataOption = (m_DefaultSampleSettings.settings.loadType == AudioClipLoadType.Streaming); MultiValueStatus multiStatus = GetMultiValueStatus(BuildTargetGroup.Unknown); OnSampleSettingGUI(BuildTargetGroup.Unknown, multiStatus, selectionContainsTrackerFile, ref m_DefaultSampleSettings, disablePreloadAudioDataOption); } else { BuildTargetGroup platform = validPlatforms[shownSettingsPage].targetGroup; SampleSettingProperties properties = m_SampleSettingOverrides[platform]; OverrideStatus status = GetOverrideStatus(platform); // Define the UI state of the override here. EditorGUI.BeginChangeCheck(); EditorGUI.showMixedValue = (status == OverrideStatus.MixedOverrides) && !properties.overrideIsForced; bool overrideState = (properties.overrideIsForced && properties.forcedOverrideState) || (!properties.overrideIsForced && status != OverrideStatus.NoOverrides); overrideState = EditorGUILayout.ToggleLeft("Override for " + validPlatforms[shownSettingsPage].title.text, overrideState); EditorGUI.showMixedValue = false; if (EditorGUI.EndChangeCheck()) { properties.forcedOverrideState = overrideState; properties.overrideIsForced = true; } // If the loadtype is streaming on the selected platform, gray out the "Preload Audio Data" option and show the checkbox as unchecked. bool disablePreloadAudioDataOption = ((properties.overrideIsForced && properties.forcedOverrideState) || GetOverrideStatus(platform) == OverrideStatus.AllOverrides) && properties.settings.loadType == AudioClipLoadType.Streaming; MultiValueStatus multiStatus = GetMultiValueStatus(platform); bool platformSettingsDisabled = !((properties.overrideIsForced && properties.forcedOverrideState) || status == OverrideStatus.AllOverrides); using (new EditorGUI.DisabledScope(platformSettingsDisabled)) { OnSampleSettingGUI(platform, multiStatus, selectionContainsTrackerFile, ref properties, disablePreloadAudioDataOption); } m_SampleSettingOverrides[platform] = properties; } EditorGUILayout.EndPlatformGrouping(); }
private void OnSampleSettingGUI(BuildTargetGroup platform, MultiValueStatus status, bool selectionContainsTrackerFile, ref SampleSettingProperties properties, bool disablePreloadAudioDataOption) { //Load Type EditorGUI.showMixedValue = status.multiLoadType && !properties.loadTypeChanged; EditorGUI.BeginChangeCheck(); AudioClipLoadType newLoadType = (AudioClipLoadType)EditorGUILayout.EnumPopup("Load Type", properties.settings.loadType); if (EditorGUI.EndChangeCheck()) { properties.settings.loadType = newLoadType; properties.loadTypeChanged = true; } using (new EditorGUI.DisabledScope(disablePreloadAudioDataOption)) { if (disablePreloadAudioDataOption) { EditorGUILayout.Toggle("Preload Audio Data", false); } else { EditorGUILayout.PropertyField(m_PreloadAudioData); } } if (!selectionContainsTrackerFile) { //Compression format AudioCompressionFormat[] allowedFormats = GetFormatsForPlatform(platform); EditorGUI.showMixedValue = status.multiCompressionFormat && !properties.compressionFormatChanged; EditorGUI.BeginChangeCheck(); AudioCompressionFormat newFormat = (AudioCompressionFormat)EditorGUILayout.IntPopup("Compression Format", (int)properties.settings.compressionFormat, Array.ConvertAll(allowedFormats, value => value.ToString()), Array.ConvertAll(allowedFormats, value => (int)value)); if (EditorGUI.EndChangeCheck()) { properties.settings.compressionFormat = newFormat; properties.compressionFormatChanged = true; } //Quality if (CompressionFormatHasQuality(properties.settings.compressionFormat)) { EditorGUI.showMixedValue = status.multiQuality && !properties.qualityChanged; EditorGUI.BeginChangeCheck(); int newQuality = EditorGUILayout.IntSlider("Quality", (int)Mathf.Clamp(properties.settings.quality * 100.0f, 1.0f, 100.0f), 1, 100); if (EditorGUI.EndChangeCheck()) { properties.settings.quality = 0.01f * newQuality; properties.qualityChanged = true; } } if (platform != BuildTargetGroup.WebGL) { //Sample rate settings EditorGUI.showMixedValue = status.multiSampleRateSetting && !properties.sampleRateSettingChanged; EditorGUI.BeginChangeCheck(); AudioSampleRateSetting newSetting = (AudioSampleRateSetting)EditorGUILayout.EnumPopup("Sample Rate Setting", properties.settings.sampleRateSetting); if (EditorGUI.EndChangeCheck()) { properties.settings.sampleRateSetting = newSetting; properties.sampleRateSettingChanged = true; } //Sample rate settings if (properties.settings.sampleRateSetting == AudioSampleRateSetting.OverrideSampleRate) { EditorGUI.showMixedValue = status.multiSampleRateOverride && !properties.sampleRateOverrideChanged; EditorGUI.BeginChangeCheck(); int newRate = EditorGUILayout.IntPopup("Sample Rate", (int)properties.settings.sampleRateOverride, Styles.kSampleRateStrings, Styles.kSampleRateValues); if (EditorGUI.EndChangeCheck()) { properties.settings.sampleRateOverride = (uint)newRate; properties.sampleRateOverrideChanged = true; } } } //TODO include the settings for things like HEVAG EditorGUI.showMixedValue = false; } }