public virtual void ShowImportSettings(BaseTextureImportPlatformSettings editor) { // Max texture size EditorGUI.BeginChangeCheck(); EditorGUI.showMixedValue = editor.model.maxTextureSizeIsDifferent; int maxTextureSize = EditorGUILayout.IntPopup(maxSize.text, editor.model.platformTextureSettings.maxTextureSize, kMaxTextureSizeStrings, kMaxTextureSizeValues); EditorGUI.showMixedValue = false; if (EditorGUI.EndChangeCheck()) { editor.model.SetMaxTextureSizeForAll(maxTextureSize); } // Show a note if max size is overriden globally by the user var userMaxSizeOverride = EditorUserBuildSettings.overrideMaxTextureSize; if (userMaxSizeOverride > 0 && userMaxSizeOverride < maxTextureSize) { EditorGUILayout.HelpBox(string.Format(kMaxSizeOverrideString, userMaxSizeOverride), MessageType.Info); } // Resize Algorithm EditorGUI.BeginChangeCheck(); EditorGUI.showMixedValue = editor.model.resizeAlgorithmIsDifferent; int resizeAlgorithmVal = EditorGUILayout.IntPopup(kResizeAlgorithm.text, (int)editor.model.platformTextureSettings.resizeAlgorithm, kResizeAlgorithmStrings, kResizeAlgorithmValues); EditorGUI.showMixedValue = false; if (EditorGUI.EndChangeCheck()) { editor.model.SetResizeAlgorithmForAll((TextureResizeAlgorithm)resizeAlgorithmVal); } // Texture format int[] formatValuesForAll = {}; string[] formatStringsForAll = {}; bool formatOptionsAreDifferent = false; int formatForAll = 0; var textureShape = TextureImporterShape.Texture2D; // TODO : This should not be calculated every refresh and be kept in a cache somewhere instead... for (int i = 0; i < editor.GetTargetCount(); i++) { TextureImporterSettings settings = editor.GetImporterSettings(i); TextureImporterType textureTypeForThis = editor.textureTypeHasMultipleDifferentValues ? settings.textureType : editor.textureType; int format = (int)editor.model.platformTextureSettings.format; int[] formatValues = null; string[] formatStrings = null; if (!editor.model.isDefault && !editor.model.platformTextureSettings.overridden) { // If not overriden, show what the auto format is going to be // don't care about alpha in normal maps. If editor.assetTarget is null // then we are dealing with texture preset and we show all options. var showSettingsForPreset = editor.ShowPresetSettings(); var sourceHasAlpha = showSettingsForPreset || (editor.DoesSourceTextureHaveAlpha(i) && textureTypeForThis != TextureImporterType.NormalMap); format = (int)TextureImporter.DefaultFormatFromTextureParameters(settings, editor.model.platformTextureSettings, !showSettingsForPreset && sourceHasAlpha, !showSettingsForPreset && editor.IsSourceTextureHDR(i), editor.model.buildTarget); formatValues = new int[] { format }; formatStrings = new string[] { TextureUtil.GetTextureFormatString((TextureFormat)format) }; } else { // otherwise show valid formats editor.model.GetValidTextureFormatsAndStrings(textureTypeForThis, out formatValues, out formatStrings); } // Check if values are the same if (i == 0) { formatValuesForAll = formatValues; formatStringsForAll = formatStrings; formatForAll = format; textureShape = settings.textureShape; } else { if (!formatValues.SequenceEqual(formatValuesForAll) || !formatStrings.SequenceEqual(formatStringsForAll)) { formatOptionsAreDifferent = true; break; } } } using (new EditorGUI.DisabledScope(formatOptionsAreDifferent || formatStringsForAll.Length == 1)) { EditorGUI.BeginChangeCheck(); bool mixedValues = formatOptionsAreDifferent || editor.model.textureFormatIsDifferent; EditorGUI.showMixedValue = mixedValues; var selectionResult = EditorGUILayout.IntPopup(kTextureFormat, formatForAll, EditorGUIUtility.TempContent(formatStringsForAll), formatValuesForAll); EditorGUI.showMixedValue = false; if (EditorGUI.EndChangeCheck()) { editor.model.SetTextureFormatForAll((TextureImporterFormat)selectionResult); formatForAll = selectionResult; } if (!mixedValues && !Array.Exists(formatValuesForAll, i => i == formatForAll)) { EditorGUILayout.HelpBox(string.Format(L10n.Tr("The selected format value {0} is not compatible on this platform for the selected texture type, please change it to a valid one from the dropdown."), (TextureImporterFormat)formatForAll), MessageType.Error); } } // Texture Compression if (editor.model.isDefault && editor.model.platformTextureSettings.format == TextureImporterFormat.Automatic) { EditorGUI.BeginChangeCheck(); EditorGUI.showMixedValue = editor.model.overriddenIsDifferent || editor.model.textureCompressionIsDifferent; TextureImporterCompression textureCompression = (TextureImporterCompression)EditorGUILayout.IntPopup(kTextureCompression, (int)editor.model.platformTextureSettings.textureCompression, kTextureCompressionOptions, kTextureCompressionValues); EditorGUI.showMixedValue = false; if (EditorGUI.EndChangeCheck()) { editor.model.SetTextureCompressionForAll(textureCompression); } } // Use Crunch Compression if (editor.model.isDefault && (TextureImporterFormat)formatForAll == TextureImporterFormat.Automatic && editor.model.platformTextureSettings.textureCompression != TextureImporterCompression.Uncompressed && (textureShape == TextureImporterShape.Texture2D || textureShape == TextureImporterShape.TextureCube)) // 2DArray & 3D don't support Crunch { EditorGUI.BeginChangeCheck(); EditorGUI.showMixedValue = editor.model.overriddenIsDifferent || editor.model.crunchedCompressionIsDifferent; bool crunchedCompression = EditorGUILayout.Toggle( kCrunchedCompression, editor.model.platformTextureSettings.crunchedCompression); EditorGUI.showMixedValue = false; if (EditorGUI.EndChangeCheck()) { editor.model.SetCrunchedCompressionForAll(crunchedCompression); } } // compression quality bool isCrunchedFormat = false || TextureUtil.IsCompressedCrunchTextureFormat((TextureFormat)formatForAll) ; if ( (editor.model.isDefault && (TextureImporterFormat)formatForAll == TextureImporterFormat.Automatic && editor.model.platformTextureSettings.textureCompression != TextureImporterCompression.Uncompressed && editor.model.platformTextureSettings.crunchedCompression) || (editor.model.isDefault && editor.model.platformTextureSettings.crunchedCompression && isCrunchedFormat) || (!editor.model.isDefault && isCrunchedFormat) || (!editor.model.textureFormatIsDifferent && ArrayUtility.Contains <TextureImporterFormat>( TextureImporterInspector.kFormatsWithCompressionSettings, (TextureImporterFormat)formatForAll))) { EditorGUI.BeginChangeCheck(); EditorGUI.showMixedValue = editor.model.overriddenIsDifferent || editor.model.compressionQualityIsDifferent; // Prior to exposing compression quality for BC6H/BC7 formats they were always compressed at maximum quality even though the setting was // defaulted to 'Normal'. Now BC6H/BC7 quality is exposed to the user as Fast/Normal/Best 'Normal' maps to one setting down from maximum in the // ISPC compressor but to maintain the behaviour of existing projects we need to force their quality up to 'Best'. The 'forceMaximumCompressionQuality_BC6H_BC7' // flag is set when loading existing texture platform settings to do this and cleared when the compression quality level is manually set (by UI or API) bool forceBestQuality = editor.model.forceMaximumCompressionQuality_BC6H_BC7 && (((TextureImporterFormat)formatForAll == TextureImporterFormat.BC6H) || ((TextureImporterFormat)formatForAll == TextureImporterFormat.BC7)); int compressionQuality = forceBestQuality ? (int)TextureCompressionQuality.Best : editor.model.platformTextureSettings.compressionQuality; compressionQuality = EditCompressionQuality(editor.model.buildTarget, compressionQuality, isCrunchedFormat, (TextureImporterFormat)formatForAll); EditorGUI.showMixedValue = false; if (EditorGUI.EndChangeCheck()) { editor.model.SetCompressionQualityForAll(compressionQuality); //SyncPlatformSettings (); } } // show the ETC1 split option only for sprites on platforms supporting ETC and only when there is an alpha channel bool isETCPlatform = TextureImporter.IsETC1SupportedByBuildTarget(BuildPipeline.GetBuildTargetByName(editor.model.platformTextureSettings.name)); bool isDealingWithSprite = (editor.spriteImportMode != SpriteImportMode.None); bool isETCFormatSelected = TextureImporter.IsTextureFormatETC1Compression((TextureFormat)formatForAll); if (isETCPlatform && isDealingWithSprite && isETCFormatSelected) { EditorGUI.BeginChangeCheck(); EditorGUI.showMixedValue = editor.model.overriddenIsDifferent || editor.model.allowsAlphaSplitIsDifferent; bool allowsAlphaSplit = EditorGUILayout.Toggle(kUseAlphaSplitLabel, editor.model.platformTextureSettings.allowsAlphaSplitting); if (EditorGUI.EndChangeCheck()) { editor.model.SetAllowsAlphaSplitForAll(allowsAlphaSplit); } } }
public virtual void ShowImportSettings(Editor baseEditor, TextureImportPlatformSettings platformSettings) { TextureImporterInspector editor = baseEditor as TextureImporterInspector; // Max texture size EditorGUI.BeginChangeCheck(); EditorGUI.showMixedValue = platformSettings.overriddenIsDifferent || platformSettings.maxTextureSizeIsDifferent; int maxTextureSize = EditorGUILayout.IntPopup(maxSize.text, platformSettings.maxTextureSize, kMaxTextureSizeStrings, kMaxTextureSizeValues); EditorGUI.showMixedValue = false; if (EditorGUI.EndChangeCheck()) { platformSettings.SetMaxTextureSizeForAll(maxTextureSize); } // Resize Algorithm EditorGUI.BeginChangeCheck(); EditorGUI.showMixedValue = platformSettings.overriddenIsDifferent || platformSettings.resizeAlgorithmIsDifferent; int resizeAlgorithmVal = EditorGUILayout.IntPopup(resizeAlgorithm.text, (int)platformSettings.resizeAlgorithm, kResizeAlgorithmStrings, kResizeAlgorithmValues); EditorGUI.showMixedValue = false; if (EditorGUI.EndChangeCheck()) { platformSettings.SetResizeAlgorithmForAll((TextureResizeAlgorithm)resizeAlgorithmVal); } // Texture format int[] formatValuesForAll = null; string[] formatStringsForAll = null; bool formatOptionsAreDifferent = false; int formatForAll = 0; for (int i = 0; i < editor.targets.Length; i++) { TextureImporter imp = editor.targets[i] as TextureImporter; TextureImporterSettings settings = platformSettings.GetSettings(imp); TextureImporterType textureTypeForThis = editor.textureTypeHasMultipleDifferentValues ? settings.textureType : editor.textureType; int format = (int)platformSettings.format; int[] formatValues = null; string[] formatStrings = null; if (!platformSettings.isDefault && !platformSettings.overridden) { // If not overriden, show what the auto format is going to be // don't care about alpha in normal maps. If editor.assetTarget is null // then we are dealing with texture preset and we show all options. var showSettingsForPreset = editor.assetTarget == null; var sourceHasAlpha = showSettingsForPreset || (imp.DoesSourceTextureHaveAlpha() && textureTypeForThis != TextureImporterType.NormalMap); format = (int)TextureImporter.DefaultFormatFromTextureParameters(settings, platformSettings.platformTextureSettings, editor.assetTarget && sourceHasAlpha, editor.assetTarget && imp.IsSourceTextureHDR(), platformSettings.m_Target); formatValues = new int[] { format }; formatStrings = new string[] { TextureUtil.GetTextureFormatString((TextureFormat)format) }; } else { // otherwise show valid formats platformSettings.GetValidTextureFormatsAndStrings(textureTypeForThis, out formatValues, out formatStrings); } // Check if values are the same if (i == 0) { formatValuesForAll = formatValues; formatStringsForAll = formatStrings; formatForAll = format; } else { if (!formatValues.SequenceEqual(formatValuesForAll) || !formatStrings.SequenceEqual(formatStringsForAll)) { formatOptionsAreDifferent = true; break; } } } using (new EditorGUI.DisabledScope(formatOptionsAreDifferent || formatStringsForAll.Length == 1)) { EditorGUI.BeginChangeCheck(); EditorGUI.showMixedValue = formatOptionsAreDifferent || platformSettings.textureFormatIsDifferent; formatForAll = EditorGUILayout.IntPopup(TextureImporterInspector.s_Styles.textureFormat, formatForAll, EditorGUIUtility.TempContent(formatStringsForAll), formatValuesForAll); EditorGUI.showMixedValue = false; if (EditorGUI.EndChangeCheck()) { platformSettings.SetTextureFormatForAll((TextureImporterFormat)formatForAll); } // In case the platform is overriden, the chosen format can become invalid when changing texture type (example: Switching from "Default" overridden with RGBAHalf to "Single Channel" where only Alpha8 is available) if (Array.IndexOf(formatValuesForAll, formatForAll) == -1) { platformSettings.SetTextureFormatForAll((TextureImporterFormat)formatValuesForAll[0]); } } // Texture Compression if (platformSettings.isDefault && platformSettings.format == TextureImporterFormat.Automatic) { EditorGUI.BeginChangeCheck(); EditorGUI.showMixedValue = platformSettings.overriddenIsDifferent || platformSettings.textureCompressionIsDifferent || platformSettings.format != TextureImporterFormat.Automatic; TextureImporterCompression textureCompression = (TextureImporterCompression)EditorGUILayout.IntPopup(kTextureCompression, (int)platformSettings.textureCompression, kTextureCompressionOptions, kTextureCompressionValues); EditorGUI.showMixedValue = false; if (EditorGUI.EndChangeCheck()) { platformSettings.SetTextureCompressionForAll(textureCompression); } } // Use Crunch Compression if (platformSettings.isDefault && (TextureImporterFormat)formatForAll == TextureImporterFormat.Automatic && platformSettings.textureCompression != TextureImporterCompression.Uncompressed) { EditorGUI.BeginChangeCheck(); EditorGUI.showMixedValue = platformSettings.overriddenIsDifferent || platformSettings.crunchedCompressionIsDifferent; bool crunchedCompression = EditorGUILayout.Toggle( TextureImporterInspector.s_Styles.crunchedCompression, platformSettings.crunchedCompression); EditorGUI.showMixedValue = false; if (EditorGUI.EndChangeCheck()) { platformSettings.SetCrunchedCompressionForAll(crunchedCompression); } } // compression quality bool isCrunchedFormat = false || TextureUtil.IsCompressedCrunchTextureFormat((TextureFormat)formatForAll) ; if ( (platformSettings.isDefault && (TextureImporterFormat)formatForAll == TextureImporterFormat.Automatic && platformSettings.textureCompression != TextureImporterCompression.Uncompressed && platformSettings.crunchedCompression) || (platformSettings.isDefault && platformSettings.crunchedCompression && isCrunchedFormat) || (!platformSettings.isDefault && isCrunchedFormat) || (!platformSettings.textureFormatIsDifferent && ArrayUtility.Contains <TextureImporterFormat>( TextureImporterInspector.kFormatsWithCompressionSettings, (TextureImporterFormat)formatForAll))) { EditorGUI.BeginChangeCheck(); EditorGUI.showMixedValue = platformSettings.overriddenIsDifferent || platformSettings.compressionQualityIsDifferent; int compressionQuality = EditCompressionQuality(platformSettings.m_Target, platformSettings.compressionQuality, isCrunchedFormat); EditorGUI.showMixedValue = false; if (EditorGUI.EndChangeCheck()) { platformSettings.SetCompressionQualityForAll(compressionQuality); //SyncPlatformSettings (); } } // show the ETC1 split option only for sprites on platforms supporting ETC and only when there is an alpha channel bool isETCPlatform = TextureImporter.IsETC1SupportedByBuildTarget(BuildPipeline.GetBuildTargetByName(platformSettings.name)); bool isDealingWithSprite = (editor.spriteImportMode != SpriteImportMode.None); bool isETCFormatSelected = TextureImporter.IsTextureFormatETC1Compression((TextureFormat)formatForAll); if (isETCPlatform && isDealingWithSprite && isETCFormatSelected) { EditorGUI.BeginChangeCheck(); EditorGUI.showMixedValue = platformSettings.overriddenIsDifferent || platformSettings.allowsAlphaSplitIsDifferent; bool allowsAlphaSplit = EditorGUILayout.Toggle(TextureImporterInspector.s_Styles.useAlphaSplitLabel, platformSettings.allowsAlphaSplitting); if (EditorGUI.EndChangeCheck()) { platformSettings.SetAllowsAlphaSplitForAll(allowsAlphaSplit); } } }
public bool HandlePlatformSettings(BuildTarget buildTarget, List <TextureImporterPlatformSettings> platformSettings, ITexturePlatformSettingsView view, ITexturePlatformSettingsFormatHelper formatHelper) { Assert.IsTrue(platformSettings.Count > 0, "At least 1 platform setting is needed to display the texture platform setting UI."); var allOverride = platformSettings[0].overridden; var allSize = platformSettings[0].maxTextureSize; var allFormat = platformSettings[0].format; var allCompressionQuality = platformSettings[0].compressionQuality; var allAlphaSplit = platformSettings[0].allowsAlphaSplitting; var mixedOverride = false; var mixedSize = false; var mixedFormat = false; var mixedCompression = false; var mixedAlphaSplit = false; var overrideChanged = false; var sizeChanged = false; var formatChanged = false; var compressionChanged = false; var alphaSplitChanged = false; for (var i = 1; i < platformSettings.Count; ++i) { var settings = platformSettings[i]; if (settings.overridden != allOverride) { mixedOverride = true; } if (settings.maxTextureSize != allSize) { mixedSize = true; } if (settings.format != allFormat) { mixedFormat = true; } if (settings.compressionQuality != allCompressionQuality) { mixedCompression = true; } if (settings.allowsAlphaSplitting != allAlphaSplit) { mixedAlphaSplit = true; } } allOverride = view.DrawOverride(allOverride, mixedOverride, out overrideChanged); allSize = view.DrawMaxSize(allSize, mixedSize, mixedOverride || !allOverride, out sizeChanged); int[] formatValues = null; string[] formatStrings = null; formatHelper.AcquireTextureFormatValuesAndStrings(buildTarget, out formatValues, out formatStrings); allFormat = view.DrawFormat(allFormat, formatValues, formatStrings, mixedFormat, mixedOverride || !allOverride, out formatChanged); if (!mixedFormat && formatHelper.TextureFormatRequireCompressionQualityInput(allFormat)) { bool showAsEnum = BuildTargetDiscovery.PlatformHasFlag(buildTarget, TargetAttributes.HasIntegratedGPU); if (showAsEnum) { var compressionMode = 1; if (allCompressionQuality == (int)TextureCompressionQuality.Fast) { compressionMode = 0; } else if (allCompressionQuality == (int)TextureCompressionQuality.Best) { compressionMode = 2; } compressionMode = view.DrawCompressionQualityPopup(compressionMode, mixedCompression, mixedOverride || !allOverride, out compressionChanged); if (compressionChanged) { switch (compressionMode) { case 0: allCompressionQuality = (int)TextureCompressionQuality.Fast; break; case 1: allCompressionQuality = (int)TextureCompressionQuality.Normal; break; case 2: allCompressionQuality = (int)TextureCompressionQuality.Best; break; default: Assert.IsTrue(false, "ITexturePlatformSettingsView.DrawCompressionQualityPopup should never return compression option value that's not 0, 1 or 2."); break; } } } else { allCompressionQuality = view.DrawCompressionQualitySlider(allCompressionQuality, mixedCompression, mixedOverride || !allOverride, out compressionChanged); } // show the ETC1 split option only for sprites on platforms supporting ETC. bool isETCPlatform = TextureImporter.IsETC1SupportedByBuildTarget(buildTarget); bool isETCFormatSelected = TextureImporter.IsTextureFormatETC1Compression((TextureFormat)allFormat); if (isETCPlatform && isETCFormatSelected) { allAlphaSplit = view.DrawAlphaSplit(allAlphaSplit, mixedAlphaSplit, mixedOverride || !allOverride, out alphaSplitChanged); } } if (overrideChanged || sizeChanged || formatChanged || compressionChanged || alphaSplitChanged) { for (var i = 0; i < platformSettings.Count; ++i) { if (overrideChanged) { platformSettings[i].overridden = allOverride; } if (sizeChanged) { platformSettings[i].maxTextureSize = allSize; } if (formatChanged) { platformSettings[i].format = allFormat; } if (compressionChanged) { platformSettings[i].compressionQuality = allCompressionQuality; } if (alphaSplitChanged) { platformSettings[i].allowsAlphaSplitting = allAlphaSplit; } } return(true); } else { return(false); } }
public virtual void ShowImportSettings(Editor baseEditor, TextureImportPlatformSettings platformSettings) { TextureImporterInspector textureImporterInspector = baseEditor as TextureImporterInspector; EditorGUI.BeginChangeCheck(); EditorGUI.showMixedValue = (platformSettings.overriddenIsDifferent || platformSettings.maxTextureSizeIsDifferent); int maxTextureSizeForAll = EditorGUILayout.IntPopup(DefaultTextureImportSettingsExtension.maxSize.text, platformSettings.maxTextureSize, DefaultTextureImportSettingsExtension.kMaxTextureSizeStrings, DefaultTextureImportSettingsExtension.kMaxTextureSizeValues, new GUILayoutOption[0]); EditorGUI.showMixedValue = false; if (EditorGUI.EndChangeCheck()) { platformSettings.SetMaxTextureSizeForAll(maxTextureSizeForAll); } using (new EditorGUI.DisabledScope(platformSettings.overridden && !platformSettings.isDefault)) { EditorGUI.BeginChangeCheck(); EditorGUI.showMixedValue = (platformSettings.overriddenIsDifferent || platformSettings.textureCompressionIsDifferent || (platformSettings.overridden && !platformSettings.isDefault)); TextureImporterCompression textureCompressionForAll = (TextureImporterCompression)EditorGUILayout.IntPopup(DefaultTextureImportSettingsExtension.kTextureCompression, (int)platformSettings.textureCompression, DefaultTextureImportSettingsExtension.kTextureCompressionOptions, DefaultTextureImportSettingsExtension.kTextureCompressionValues, new GUILayoutOption[0]); EditorGUI.showMixedValue = false; if (EditorGUI.EndChangeCheck()) { platformSettings.SetTextureCompressionForAll(textureCompressionForAll); } } int[] array = null; string[] array2 = null; bool flag = false; int num = 0; for (int i = 0; i < textureImporterInspector.targets.Length; i++) { TextureImporter textureImporter = textureImporterInspector.targets[i] as TextureImporter; TextureImporterSettings settings = platformSettings.GetSettings(textureImporter); TextureImporterType textureImporterType = (!textureImporterInspector.textureTypeHasMultipleDifferentValues) ? textureImporterInspector.textureType : settings.textureType; int num2 = (int)platformSettings.format; int[] array3; string[] array4; if (platformSettings.isDefault) { num2 = -1; array3 = new int[] { -1 }; array4 = new string[] { "Auto" }; } else if (!platformSettings.overridden) { num2 = (int)TextureImporter.FormatFromTextureParameters(settings, platformSettings.platformTextureSettings, textureImporter.DoesSourceTextureHaveAlpha(), textureImporter.IsSourceTextureHDR(), platformSettings.m_Target); array3 = new int[] { num2 }; array4 = new string[] { TextureUtil.GetTextureFormatString((TextureFormat)num2) }; } else if (textureImporterType == TextureImporterType.Cookie || textureImporterType == TextureImporterType.SingleChannel) { array3 = TextureImportPlatformSettings.kTextureFormatsValueSingleChannel; array4 = TextureImporterInspector.s_TextureFormatStringsSingleChannel; } else if (TextureImporterInspector.IsGLESMobileTargetPlatform(platformSettings.m_Target)) { if (platformSettings.m_Target == BuildTarget.iOS || platformSettings.m_Target == BuildTarget.tvOS) { array3 = TextureImportPlatformSettings.kTextureFormatsValueApplePVR; array4 = TextureImporterInspector.s_TextureFormatStringsApplePVR; } else if (platformSettings.m_Target == BuildTarget.SamsungTV) { array3 = TextureImportPlatformSettings.kTextureFormatsValueSTV; array4 = TextureImporterInspector.s_TextureFormatStringsSTV; } else { array3 = TextureImportPlatformSettings.kTextureFormatsValueAndroid; array4 = TextureImporterInspector.s_TextureFormatStringsAndroid; } } else if (textureImporterType == TextureImporterType.NormalMap) { array3 = TextureImportPlatformSettings.kNormalFormatsValueDefault; array4 = TextureImporterInspector.s_NormalFormatStringsDefault; } else if (platformSettings.m_Target == BuildTarget.WebGL) { array3 = TextureImportPlatformSettings.kTextureFormatsValueWebGL; array4 = TextureImporterInspector.s_TextureFormatStringsWebGL; } else if (platformSettings.m_Target == BuildTarget.WiiU) { array3 = TextureImportPlatformSettings.kTextureFormatsValueWiiU; array4 = TextureImporterInspector.s_TextureFormatStringsWiiU; } else { array3 = TextureImportPlatformSettings.kTextureFormatsValueDefault; array4 = TextureImporterInspector.s_TextureFormatStringsDefault; } if (i == 0) { array = array3; array2 = array4; num = num2; } else if (!array3.SequenceEqual(array) || !array4.SequenceEqual(array2)) { flag = true; break; } } using (new EditorGUI.DisabledScope(flag || array2.Length == 1)) { EditorGUI.BeginChangeCheck(); EditorGUI.showMixedValue = (flag || platformSettings.textureFormatIsDifferent); num = EditorGUILayout.IntPopup(TextureImporterInspector.s_Styles.textureFormat, num, EditorGUIUtility.TempContent(array2), array, new GUILayoutOption[0]); EditorGUI.showMixedValue = false; if (EditorGUI.EndChangeCheck()) { platformSettings.SetTextureFormatForAll((TextureImporterFormat)num); } if (Array.IndexOf <int>(array, num) == -1) { platformSettings.SetTextureFormatForAll((TextureImporterFormat)array[0]); } } if ((platformSettings.isDefault && platformSettings.textureCompression != TextureImporterCompression.Uncompressed) || (platformSettings.allAreOverridden && TextureImporterInspector.IsCompressedDXTTextureFormat((TextureImporterFormat)num))) { EditorGUI.BeginChangeCheck(); EditorGUI.showMixedValue = (platformSettings.overriddenIsDifferent || platformSettings.crunchedCompressionIsDifferent); bool crunchedCompressionForAll = EditorGUILayout.Toggle(TextureImporterInspector.s_Styles.crunchedCompression, platformSettings.crunchedCompression, new GUILayoutOption[0]); EditorGUI.showMixedValue = false; if (EditorGUI.EndChangeCheck()) { platformSettings.SetCrunchedCompressionForAll(crunchedCompressionForAll); } } if ((platformSettings.crunchedCompression && !platformSettings.crunchedCompressionIsDifferent && (platformSettings.textureCompression != TextureImporterCompression.Uncompressed || num == 10 || num == 12)) || (!platformSettings.textureFormatIsDifferent && ArrayUtility.Contains <TextureImporterFormat>(TextureImporterInspector.kFormatsWithCompressionSettings, (TextureImporterFormat)num))) { EditorGUI.BeginChangeCheck(); EditorGUI.showMixedValue = (platformSettings.overriddenIsDifferent || platformSettings.compressionQualityIsDifferent); int compressionQualityForAll = this.EditCompressionQuality(platformSettings.m_Target, platformSettings.compressionQuality); EditorGUI.showMixedValue = false; if (EditorGUI.EndChangeCheck()) { platformSettings.SetCompressionQualityForAll(compressionQualityForAll); } } bool flag2 = TextureImporter.IsETC1SupportedByBuildTarget(BuildPipeline.GetBuildTargetByName(platformSettings.name)); bool flag3 = textureImporterInspector.spriteImportMode != SpriteImportMode.None; bool flag4 = platformSettings.textureCompression != TextureImporterCompression.Uncompressed || TextureImporter.IsTextureFormatETC1Compression((TextureFormat)num); if (flag2 && flag3 && flag4) { EditorGUI.BeginChangeCheck(); EditorGUI.showMixedValue = (platformSettings.overriddenIsDifferent || platformSettings.allowsAlphaSplitIsDifferent); bool allowsAlphaSplitForAll = GUILayout.Toggle(platformSettings.allowsAlphaSplitting, TextureImporterInspector.s_Styles.etc1Compression, new GUILayoutOption[0]); if (EditorGUI.EndChangeCheck()) { platformSettings.SetAllowsAlphaSplitForAll(allowsAlphaSplitForAll); } } }
public virtual void ShowImportSettings(Editor baseEditor, TextureImportPlatformSettings platformSettings) { TextureImporterInspector inspector = baseEditor as TextureImporterInspector; EditorGUI.BeginChangeCheck(); EditorGUI.showMixedValue = platformSettings.overriddenIsDifferent || platformSettings.maxTextureSizeIsDifferent; int maxTextureSize = EditorGUILayout.IntPopup(maxSize.text, platformSettings.maxTextureSize, kMaxTextureSizeStrings, kMaxTextureSizeValues, new GUILayoutOption[0]); EditorGUI.showMixedValue = false; if (EditorGUI.EndChangeCheck()) { platformSettings.SetMaxTextureSizeForAll(maxTextureSize); } using (new EditorGUI.DisabledScope(platformSettings.overridden && !platformSettings.isDefault)) { EditorGUI.BeginChangeCheck(); EditorGUI.showMixedValue = (platformSettings.overriddenIsDifferent || platformSettings.textureCompressionIsDifferent) || (platformSettings.overridden && !platformSettings.isDefault); TextureImporterCompression textureCompression = (TextureImporterCompression)EditorGUILayout.IntPopup(kTextureCompression, (int)platformSettings.textureCompression, kTextureCompressionOptions, kTextureCompressionValues, new GUILayoutOption[0]); EditorGUI.showMixedValue = false; if (EditorGUI.EndChangeCheck()) { platformSettings.SetTextureCompressionForAll(textureCompression); } } int[] second = null; string[] strArray = null; bool flag = false; int selectedValue = 0; for (int i = 0; i < inspector.targets.Length; i++) { TextureImporter importer = inspector.targets[i] as TextureImporter; TextureImporterSettings settings = platformSettings.GetSettings(importer); TextureImporterType type = !inspector.textureTypeHasMultipleDifferentValues ? inspector.textureType : settings.textureType; int format = (int)platformSettings.format; int[] first = null; string[] strArray2 = null; if (platformSettings.isDefault) { format = -1; first = new int[] { -1 }; strArray2 = new string[] { "Auto" }; } else if (!platformSettings.overridden) { format = (int)TextureImporter.FormatFromTextureParameters(settings, platformSettings.platformTextureSettings, importer.DoesSourceTextureHaveAlpha(), importer.IsSourceTextureHDR(), platformSettings.m_Target); first = new int[] { format }; strArray2 = new string[] { TextureUtil.GetTextureFormatString((TextureFormat)format) }; } else { switch (type) { case TextureImporterType.Cookie: case TextureImporterType.SingleChannel: first = TextureImportPlatformSettings.kTextureFormatsValueSingleChannel; strArray2 = TextureImporterInspector.s_TextureFormatStringsSingleChannel; goto Label_0304; } if (TextureImporterInspector.IsGLESMobileTargetPlatform(platformSettings.m_Target)) { if ((platformSettings.m_Target == BuildTarget.iOS) || (platformSettings.m_Target == BuildTarget.tvOS)) { first = TextureImportPlatformSettings.kTextureFormatsValueApplePVR; strArray2 = TextureImporterInspector.s_TextureFormatStringsApplePVR; } else if (platformSettings.m_Target == BuildTarget.SamsungTV) { first = TextureImportPlatformSettings.kTextureFormatsValueSTV; strArray2 = TextureImporterInspector.s_TextureFormatStringsSTV; } else { first = TextureImportPlatformSettings.kTextureFormatsValueAndroid; strArray2 = TextureImporterInspector.s_TextureFormatStringsAndroid; } } else if (type == TextureImporterType.NormalMap) { first = TextureImportPlatformSettings.kNormalFormatsValueDefault; strArray2 = TextureImporterInspector.s_NormalFormatStringsDefault; } else if (platformSettings.m_Target == BuildTarget.WebGL) { first = TextureImportPlatformSettings.kTextureFormatsValueWebGL; strArray2 = TextureImporterInspector.s_TextureFormatStringsWebGL; } else if (platformSettings.m_Target == BuildTarget.WiiU) { first = TextureImportPlatformSettings.kTextureFormatsValueWiiU; strArray2 = TextureImporterInspector.s_TextureFormatStringsWiiU; } else { first = TextureImportPlatformSettings.kTextureFormatsValueDefault; strArray2 = TextureImporterInspector.s_TextureFormatStringsDefault; } } Label_0304: if (i == 0) { second = first; strArray = strArray2; selectedValue = format; } else if (!first.SequenceEqual <int>(second) || !strArray2.SequenceEqual <string>(strArray)) { flag = true; break; } } using (new EditorGUI.DisabledScope(flag || (strArray.Length == 1))) { EditorGUI.BeginChangeCheck(); EditorGUI.showMixedValue = flag || platformSettings.textureFormatIsDifferent; selectedValue = EditorGUILayout.IntPopup(TextureImporterInspector.s_Styles.textureFormat, selectedValue, EditorGUIUtility.TempContent(strArray), second, new GUILayoutOption[0]); EditorGUI.showMixedValue = false; if (EditorGUI.EndChangeCheck()) { platformSettings.SetTextureFormatForAll((TextureImporterFormat)selectedValue); } if (Array.IndexOf <int>(second, selectedValue) == -1) { platformSettings.SetTextureFormatForAll((TextureImporterFormat)second[0]); } } if ((platformSettings.isDefault && (platformSettings.textureCompression != TextureImporterCompression.Uncompressed)) || (platformSettings.allAreOverridden && TextureImporterInspector.IsCompressedDXTTextureFormat((TextureImporterFormat)selectedValue))) { EditorGUI.BeginChangeCheck(); EditorGUI.showMixedValue = platformSettings.overriddenIsDifferent || platformSettings.crunchedCompressionIsDifferent; bool crunched = EditorGUILayout.Toggle(TextureImporterInspector.s_Styles.crunchedCompression, platformSettings.crunchedCompression, new GUILayoutOption[0]); EditorGUI.showMixedValue = false; if (EditorGUI.EndChangeCheck()) { platformSettings.SetCrunchedCompressionForAll(crunched); } } if (((platformSettings.crunchedCompression && !platformSettings.crunchedCompressionIsDifferent) && (((platformSettings.textureCompression != TextureImporterCompression.Uncompressed) || (selectedValue == 10)) || (selectedValue == 12))) || (!platformSettings.textureFormatIsDifferent && ArrayUtility.Contains <TextureImporterFormat>(TextureImporterInspector.kFormatsWithCompressionSettings, (TextureImporterFormat)selectedValue))) { EditorGUI.BeginChangeCheck(); EditorGUI.showMixedValue = platformSettings.overriddenIsDifferent || platformSettings.compressionQualityIsDifferent; int quality = this.EditCompressionQuality(platformSettings.m_Target, platformSettings.compressionQuality); EditorGUI.showMixedValue = false; if (EditorGUI.EndChangeCheck()) { platformSettings.SetCompressionQualityForAll(quality); } } bool flag3 = TextureImporter.IsETC1SupportedByBuildTarget(BuildPipeline.GetBuildTargetByName(platformSettings.name)); bool flag4 = inspector.spriteImportMode != SpriteImportMode.None; bool flag5 = TextureImporter.IsTextureFormatETC1Compression((TextureFormat)selectedValue); if ((flag3 && flag4) && flag5) { EditorGUI.BeginChangeCheck(); EditorGUI.showMixedValue = platformSettings.overriddenIsDifferent || platformSettings.allowsAlphaSplitIsDifferent; bool flag6 = GUILayout.Toggle(platformSettings.allowsAlphaSplitting, TextureImporterInspector.s_Styles.etc1Compression, new GUILayoutOption[0]); if (EditorGUI.EndChangeCheck()) { platformSettings.SetAllowsAlphaSplitForAll(flag6); } } }
public virtual void ShowImportSettings(Editor baseEditor, TextureImportPlatformSettings platformSettings) { TextureImporterInspector editor = baseEditor as TextureImporterInspector; // Max texture size EditorGUI.BeginChangeCheck(); EditorGUI.showMixedValue = platformSettings.overriddenIsDifferent || platformSettings.maxTextureSizeIsDifferent; int maxTextureSize = EditorGUILayout.IntPopup(maxSize.text, platformSettings.maxTextureSize, kMaxTextureSizeStrings, kMaxTextureSizeValues); EditorGUI.showMixedValue = false; if (EditorGUI.EndChangeCheck()) { platformSettings.SetMaxTextureSizeForAll(maxTextureSize); } // Resize Algorithm EditorGUI.BeginChangeCheck(); EditorGUI.showMixedValue = platformSettings.overriddenIsDifferent || platformSettings.resizeAlgorithmIsDifferent; int resizeAlgorithmVal = EditorGUILayout.IntPopup(resizeAlgorithm.text, (int)platformSettings.resizeAlgorithm, kResizeAlgorithmStrings, kResizeAlgorithmValues); EditorGUI.showMixedValue = false; if (EditorGUI.EndChangeCheck()) { platformSettings.SetResizeAlgorithmForAll((TextureResizeAlgorithm)resizeAlgorithmVal); } // Texture Compression using (new EditorGUI.DisabledScope(platformSettings.overridden && !platformSettings.isDefault)) { EditorGUI.BeginChangeCheck(); EditorGUI.showMixedValue = platformSettings.overriddenIsDifferent || platformSettings.textureCompressionIsDifferent || (platformSettings.overridden && !platformSettings.isDefault); TextureImporterCompression textureCompression = (TextureImporterCompression)EditorGUILayout.IntPopup(kTextureCompression, (int)platformSettings.textureCompression, kTextureCompressionOptions, kTextureCompressionValues); EditorGUI.showMixedValue = false; if (EditorGUI.EndChangeCheck()) { platformSettings.SetTextureCompressionForAll(textureCompression); } } // Texture format int[] formatValuesForAll = null; string[] formatStringsForAll = null; bool formatOptionsAreDifferent = false; int formatForAll = 0; for (int i = 0; i < editor.targets.Length; i++) { TextureImporter imp = editor.targets[i] as TextureImporter; TextureImporterSettings settings = platformSettings.GetSettings(imp); TextureImporterType textureTypeForThis = editor.textureTypeHasMultipleDifferentValues ? settings.textureType : editor.textureType; int format = (int)platformSettings.format; int[] formatValues = null; string[] formatStrings = null; if (platformSettings.isDefault) { format = (int)TextureImporterFormat.Automatic; formatValues = new int[] { (int)TextureImporterFormat.Automatic }; formatStrings = new string[] { "Auto" }; } else { // If not overriden, show what the auto format is going to be if (!platformSettings.overridden) { format = (int)TextureImporter.FormatFromTextureParameters(settings, platformSettings.platformTextureSettings, editor.assetTarget && imp.DoesSourceTextureHaveAlpha(), editor.assetTarget && imp.IsSourceTextureHDR(), platformSettings.m_Target); formatValues = new int[] { format }; formatStrings = new string[] { TextureUtil.GetTextureFormatString((TextureFormat)format) }; } // else show the format choice filtered by platform. else { // Single channel format is the same for all platform at the moment if (textureTypeForThis == TextureImporterType.Cookie || textureTypeForThis == TextureImporterType.SingleChannel) { formatValues = TextureImportPlatformSettings.kTextureFormatsValueSingleChannel; formatStrings = TextureImporterInspector.s_TextureFormatStringsSingleChannel; } else { // on gles targets we use rgb normal maps so no need to split formats if (TextureImporterInspector.IsGLESMobileTargetPlatform(platformSettings.m_Target)) { if (platformSettings.m_Target == BuildTarget.iOS || platformSettings.m_Target == BuildTarget.tvOS) { formatValues = TextureImportPlatformSettings.kTextureFormatsValueApplePVR; formatStrings = TextureImporterInspector.s_TextureFormatStringsApplePVR; } else { formatValues = TextureImportPlatformSettings.kTextureFormatsValueAndroid; formatStrings = TextureImporterInspector.s_TextureFormatStringsAndroid; } } else if (textureTypeForThis == TextureImporterType.NormalMap) { formatValues = TextureImportPlatformSettings.kNormalFormatsValueDefault; formatStrings = TextureImporterInspector.s_NormalFormatStringsDefault; } else { if (platformSettings.m_Target == BuildTarget.WebGL) { formatValues = TextureImportPlatformSettings.kTextureFormatsValueWebGL; formatStrings = TextureImporterInspector.s_TextureFormatStringsWebGL; } else if (platformSettings.m_Target == BuildTarget.PSP2) { formatValues = TextureImportPlatformSettings.kTextureFormatsValuePSP2; formatStrings = TextureImporterInspector.s_TextureFormatStringsPSP2; } else if (platformSettings.m_Target == BuildTarget.Switch) { formatValues = TextureImportPlatformSettings.kTextureFormatsValueSwitch; formatStrings = TextureImporterInspector.s_TextureFormatStringsSwitch; } else { formatValues = TextureImportPlatformSettings.kTextureFormatsValueDefault; formatStrings = TextureImporterInspector.s_TextureFormatStringsDefault; } } } } } // Check if values are the same if (i == 0) { formatValuesForAll = formatValues; formatStringsForAll = formatStrings; formatForAll = format; } else { if (!formatValues.SequenceEqual(formatValuesForAll) || !formatStrings.SequenceEqual(formatStringsForAll)) { formatOptionsAreDifferent = true; break; } } } using (new EditorGUI.DisabledScope(formatOptionsAreDifferent || formatStringsForAll.Length == 1)) { EditorGUI.BeginChangeCheck(); EditorGUI.showMixedValue = formatOptionsAreDifferent || platformSettings.textureFormatIsDifferent; formatForAll = EditorGUILayout.IntPopup(TextureImporterInspector.s_Styles.textureFormat, formatForAll, EditorGUIUtility.TempContent(formatStringsForAll), formatValuesForAll); EditorGUI.showMixedValue = false; if (EditorGUI.EndChangeCheck()) { platformSettings.SetTextureFormatForAll((TextureImporterFormat)formatForAll); } // In case the platform is overriden, the chosen format can become invalid when changing texture type (example: Switching from "Default" overridden with RGBAHalf to "Single Channel" where only Alpha8 is available) if (Array.IndexOf(formatValuesForAll, formatForAll) == -1) { platformSettings.SetTextureFormatForAll((TextureImporterFormat)formatValuesForAll[0]); } } if (platformSettings.isDefault && platformSettings.textureCompression != TextureImporterCompression.Uncompressed) { EditorGUI.BeginChangeCheck(); EditorGUI.showMixedValue = platformSettings.overriddenIsDifferent || platformSettings.crunchedCompressionIsDifferent; bool crunchedCompression = EditorGUILayout.Toggle(TextureImporterInspector.s_Styles.crunchedCompression, platformSettings.crunchedCompression); EditorGUI.showMixedValue = false; if (EditorGUI.EndChangeCheck()) { platformSettings.SetCrunchedCompressionForAll(crunchedCompression); } } // compression quality bool isCrunchedFormat = false || (TextureImporterFormat)formatForAll == TextureImporterFormat.DXT1Crunched || (TextureImporterFormat)formatForAll == TextureImporterFormat.DXT5Crunched || (TextureImporterFormat)formatForAll == TextureImporterFormat.ETC_RGB4Crunched || (TextureImporterFormat)formatForAll == TextureImporterFormat.ETC2_RGBA8Crunched ; if ( (platformSettings.isDefault && platformSettings.textureCompression != TextureImporterCompression.Uncompressed && platformSettings.crunchedCompression) || (!platformSettings.isDefault && isCrunchedFormat) || (!platformSettings.textureFormatIsDifferent && ArrayUtility.Contains <TextureImporterFormat>(TextureImporterInspector.kFormatsWithCompressionSettings, (TextureImporterFormat)formatForAll))) { EditorGUI.BeginChangeCheck(); EditorGUI.showMixedValue = platformSettings.overriddenIsDifferent || platformSettings.compressionQualityIsDifferent; int compressionQuality = EditCompressionQuality(platformSettings.m_Target, platformSettings.compressionQuality, isCrunchedFormat); EditorGUI.showMixedValue = false; if (EditorGUI.EndChangeCheck()) { platformSettings.SetCompressionQualityForAll(compressionQuality); //SyncPlatformSettings (); } } // show the ETC1 split option only for sprites on platforms supporting ETC. bool isETCPlatform = TextureImporter.IsETC1SupportedByBuildTarget(BuildPipeline.GetBuildTargetByName(platformSettings.name)); bool isDealingWithSprite = (editor.spriteImportMode != SpriteImportMode.None); bool isETCFormatSelected = TextureImporter.IsTextureFormatETC1Compression((TextureFormat)formatForAll); if (isETCPlatform && isDealingWithSprite && isETCFormatSelected) { EditorGUI.BeginChangeCheck(); EditorGUI.showMixedValue = platformSettings.overriddenIsDifferent || platformSettings.allowsAlphaSplitIsDifferent; bool allowsAlphaSplit = GUILayout.Toggle(platformSettings.allowsAlphaSplitting, TextureImporterInspector.s_Styles.etc1Compression); if (EditorGUI.EndChangeCheck()) { platformSettings.SetAllowsAlphaSplitForAll(allowsAlphaSplit); } } }