/// <summary> /// Prepare the style subwindow /// </summary> /// <param name="editStyle">If not null set in edit mode</param> public NewFolderStyleInspector(StyleGrid.StyleElement editStyle, bool isVarient) { this.editStyle = editStyle; iconsUi = new IconGrid(ResourceUtil.StyleIconsPath, 36, 12); styleProperties = new StyleProperties(); if (editStyle != null) { nameEdited = true; styleName = editStyle.Name; styleColor = editStyle.MainColor; selectedIcon = iconsUi.GetIconForId(editStyle.IconId); if (selectedIcon != null) { folderOriginalIcon48 = selectedIcon.VeryHighResTex; folderOriginalIcon24 = selectedIcon.HighResTex; folderOriginalIcon10 = selectedIcon.LowResTex; initIconsTexture = true; } ReadGradientInfo(); if (isVarient) { this.editStyle = null; } } else { styleColor = Color.HSVToRGB(Random.value, 0.85F, 0.75F); styleName = "New Style"; } }
private void IconGUI() { EditorGUILayout.BeginVertical(EditorStyles.helpBox); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Folder Icon", EditorStyles.boldLabel); if (GUILayout.Button("None", EditorStyles.miniButton, GUILayout.ExpandWidth(true), GUILayout.Width(40))) { selectedIcon = null; folderIcon24 = folderOriginalIcon24 = null; folderIcon10 = folderOriginalIcon10 = null; return; } EditorGUILayout.EndHorizontal(); ButtonGrid.ButtonAction bA = iconsUi.DrawGrid(); if (bA != null || initIconsTexture) { IconGrid.IconElement icon = null; if (initIconsTexture) { icon = selectedIcon; } else if (bA != null) { icon = (IconGrid.IconElement)bA.ClickedElement; if (!nameEdited) { styleName = bA.ClickedElement.GetElementName().Substring(0, Mathf.Min(bA.ClickedElement.GetElementName().Length, 14)); } } selectedIcon = icon; // High res icon folderIcon24 = new Texture2D(icon.HighResTex.width, icon.HighResTex.height, TextureFormat.RGBA32, true); Graphics.CopyTexture(icon.HighResTex, 0, 0, folderIcon24, 0, 0); folderOriginalIcon24 = icon.HighResTex; // Low res icon folderIcon10 = new Texture2D(icon.LowResTex.width, icon.LowResTex.height, TextureFormat.RGBA32, true); Graphics.CopyTexture(icon.LowResTex, 0, 0, folderIcon10, 0, 0); folderOriginalIcon10 = icon.LowResTex; initIconsTexture = false; } if (selectedIcon != null) { GUILayout.Space(4); styleProperties.iconOffset = DisplayOffsetField("Icon Offset", 100, styleProperties.iconOffset); } EditorGUILayout.EndVertical(); }
private static int GetIconId(IconGrid.IconElement selectedIcon) { return(selectedIcon != null ? selectedIcon.Id : 0); }
private static void EditStyle(string styleName, Color styleColor, StyleGrid.StyleElement editStyle, IconGrid.IconElement selectedIcon, Texture2D finalTexture, bool highRes, string suffix) { string newPath = ResourceUtil.CustomStylesPath + "/" + ColorUtils.ColorToInt(styleColor) + ";" + GetIconId(selectedIcon) + ";" + styleName + "_" + suffix + ".png"; // Edit texture info byte[] textureBytes = finalTexture.EncodeToPNG(); Texture2D targetTexture = highRes ? editStyle.HighResTex : editStyle.LowResTex; AssetDatabase.MoveAsset(AssetDatabase.GetAssetPath(targetTexture), newPath); File.WriteAllBytes(Application.dataPath + "/../" + newPath, textureBytes); }
// Quick & (really) dirty converter public static void ConvertStyles() { StyleGrid sg = new StyleGrid(ResourceUtil.CustomStylesPath, 64.0F + 16.0F, 8.0F); IconGrid iconsUi = new IconGrid(ResourceUtil.StyleIconsPath, 36, 12); foreach (ButtonGrid.GridElement ge in sg.elementList) { StyleGrid.StyleElement style = (StyleGrid.StyleElement)ge; NewFolderStyleInspector.StyleProperties styleProperties = new NewFolderStyleInspector.StyleProperties(); IconGrid.IconElement selectedIcon = iconsUi.GetIconForId(style.IconId); string styleName = style.Name; Color styleColor = style.MainColor; string lastJsonPath = null; string newPath = ResourceUtil.CustomStylesPath + "/" + ColorUtils.ColorToInt(styleColor) + ";" + GetIconId(selectedIcon) + ";" + styleName + "_prop.json"; if (File.Exists(newPath)) { StreamReader reader = new StreamReader(newPath); string json = reader.ReadToEnd(); reader.Close(); styleProperties = JsonUtility.FromJson <NewFolderStyleInspector.StyleProperties>(json); lastJsonPath = newPath; } Texture2D folderOriginalTexture64; Texture2D folderOriginalTexture16; if (PreferencesUI.settings.useNewUI) { folderOriginalTexture64 = (Texture2D)AssetDatabase.LoadMainAssetAtPath(ResourceUtil.TexturesPath + "/folder_icon_new.png"); folderOriginalTexture16 = (Texture2D)AssetDatabase.LoadMainAssetAtPath(ResourceUtil.TexturesPath + "/folder_icon_new_16.png"); } else { folderOriginalTexture64 = (Texture2D)AssetDatabase.LoadMainAssetAtPath(ResourceUtil.TexturesPath + "/folder_icon_64.png"); folderOriginalTexture16 = (Texture2D)AssetDatabase.LoadMainAssetAtPath(ResourceUtil.TexturesPath + "/folder_icon_16.png"); } Texture2D folderTexture64; Texture2D folderTexture16; folderTexture64 = new Texture2D(folderOriginalTexture64.width, folderOriginalTexture64.height, folderOriginalTexture64.format, false); Graphics.CopyTexture(folderOriginalTexture64, 0, 0, folderTexture64, 0, 0); folderTexture16 = new Texture2D(folderOriginalTexture16.width, folderOriginalTexture16.height, folderOriginalTexture16.format, false); Graphics.CopyTexture(folderOriginalTexture16, 0, 0, folderTexture16, 0, 0); Texture2D folderIcon48 = null; Texture2D folderOriginalIcon48 = null; Texture2D folderIcon24 = null; Texture2D folderOriginalIcon24 = null; Texture2D folderIcon10 = null; Texture2D folderOriginalIcon10 = null; if (selectedIcon != null) { // Very High res icon folderIcon48 = new Texture2D(selectedIcon.VeryHighResTex.width, selectedIcon.VeryHighResTex.height, TextureFormat.RGBA32, true); Graphics.CopyTexture(selectedIcon.VeryHighResTex, 0, 0, folderIcon48, 0, 0); folderOriginalIcon48 = selectedIcon.VeryHighResTex; // High res icon folderIcon24 = new Texture2D(selectedIcon.HighResTex.width, selectedIcon.HighResTex.height, TextureFormat.RGBA32, true); Graphics.CopyTexture(selectedIcon.HighResTex, 0, 0, folderIcon24, 0, 0); folderOriginalIcon24 = selectedIcon.HighResTex; // Low res icon folderIcon10 = new Texture2D(selectedIcon.LowResTex.width, selectedIcon.LowResTex.height, TextureFormat.RGBA32, true); Graphics.CopyTexture(selectedIcon.LowResTex, 0, 0, folderIcon10, 0, 0); folderOriginalIcon10 = selectedIcon.LowResTex; } int xOffset = Mathf.Clamp(styleProperties.iconOffset.x, -32, 8); int yOffset = Mathf.Clamp(styleProperties.iconOffset.y, -26, 14); Vector2Int bigOffset = new Vector2Int(xOffset, yOffset); xOffset = Mathf.Clamp(styleProperties.iconOffset.x / 4, -6, 0); yOffset = Mathf.Clamp(styleProperties.iconOffset.y / 4, -6, 0); Vector2Int smallOffset = new Vector2Int(xOffset, yOffset); if (PreferencesUI.settings.useNewUI) { UpdateTextureColor(styleProperties, styleColor, folderOriginalTexture64, folderTexture64, -7, 2, 96, 80, 16, 24, 2.0F); UpdateTextureColor(styleProperties, styleColor, folderOriginalTexture16, folderTexture16, 1, 3, 15, 13, 2, 3, 0.25F); UpdateTextureColor(styleProperties, styleColor, folderOriginalIcon24, folderIcon24, 32 + bigOffset.x - 3, 14 - bigOffset.y + 1, 48, 40, 8, 16, 1.0F); UpdateTextureColor(styleProperties, styleColor, folderOriginalIcon10, folderIcon10, 6 + smallOffset.x + 1, -smallOffset.y + 3, 15, 13, 2, 3, 0.25F); } else { UpdateTextureColor(styleProperties, styleColor, folderOriginalTexture64, folderTexture64, 3, 7, 56, 50, 3, 10, 1.0F); UpdateTextureColor(styleProperties, styleColor, folderOriginalTexture16, folderTexture16, 2, 3, 15, 13, 0, 1, 0.25F); UpdateTextureColor(styleProperties, styleColor, folderOriginalIcon24, folderIcon24, 32 + bigOffset.x + 3, 14 - bigOffset.y + 6, 56, 50, 4, 10, 1.0F); UpdateTextureColor(styleProperties, styleColor, folderOriginalIcon10, folderIcon10, 6 + smallOffset.x + 2, -smallOffset.y + 3, 15, 13, 0, 1, 0.25F); } Texture2D finalHigh; if (PreferencesUI.settings.useNewUI) { UpdateTextureColor(styleProperties, styleColor, folderOriginalIcon48, folderIcon48, (32 + bigOffset.x - 3) * 2, (14 - bigOffset.y + 1) * 2, 96, 80, 16, 24, 2.0F); finalHigh = BakeFinalTexture(folderTexture64, folderIcon48, (32 + bigOffset.x) * 2, (14 - bigOffset.y) * 2); } else { finalHigh = BakeFinalTexture(folderTexture64, folderIcon24, 32 + bigOffset.x, 14 - bigOffset.y); } Texture2D finalLow = BakeFinalTexture(folderTexture16, folderIcon10, 6 + smallOffset.x, -smallOffset.y); EditStyle(styleName, styleColor, style, selectedIcon, finalHigh, true, "64"); EditStyle(styleName, styleColor, style, selectedIcon, finalLow, false, "16"); // Delete previous json info if existing if (lastJsonPath != null) { AssetDatabase.DeleteAsset(lastJsonPath); } if (!(styleProperties.iconOffset == Vector2Int.zero && styleProperties.colorType == NewFolderStyleInspector.ColorType.SolidColor)) { int iconId = 0; if (selectedIcon != null) { iconId = selectedIcon.Id; } StreamWriter writer = new StreamWriter(lastJsonPath, false); writer.Write(JsonUtility.ToJson(styleProperties)); writer.Close(); } } AssetDatabase.Refresh(ImportAssetOptions.ForceUpdate); }
private void IconGUI() { EditorGUILayout.BeginHorizontal(FolderInspector.toolBarStyle); iconsOpen = EditorGUILayout.Foldout(iconsOpen, "Folder Icon", true); if (GUILayout.Button("Remove Icon", FolderInspector.toolBarButtonStyle, GUILayout.ExpandWidth(true), GUILayout.Width(80))) { selectedIcon = null; folderIcon48 = folderOriginalIcon48 = null; folderIcon24 = folderOriginalIcon24 = null; folderIcon10 = folderOriginalIcon10 = null; return; } EditorGUILayout.EndHorizontal(); if (iconsOpen) { GUILayout.BeginVertical(FolderInspector.styleListBackgroundStyle); GUILayout.Space(6); ButtonGrid.ButtonAction bA = iconsUi.DrawGrid(); if (bA != null || initIconsTexture) { IconGrid.IconElement icon = null; if (initIconsTexture) { icon = selectedIcon; } else if (bA != null) { icon = (IconGrid.IconElement)bA.ClickedElement; if (!nameEdited) { styleName = bA.ClickedElement.GetElementName().Substring(0, Mathf.Min(bA.ClickedElement.GetElementName().Length, 14)); } } selectedIcon = icon; // Very High res icon folderIcon48 = new Texture2D(icon.VeryHighResTex.width, icon.VeryHighResTex.height, TextureFormat.RGBA32, true); Graphics.CopyTexture(icon.VeryHighResTex, 0, 0, folderIcon48, 0, 0); folderOriginalIcon48 = icon.VeryHighResTex; // High res icon folderIcon24 = new Texture2D(icon.HighResTex.width, icon.HighResTex.height, TextureFormat.RGBA32, true); Graphics.CopyTexture(icon.HighResTex, 0, 0, folderIcon24, 0, 0); folderOriginalIcon24 = icon.HighResTex; // Low res icon folderIcon10 = new Texture2D(icon.LowResTex.width, icon.LowResTex.height, TextureFormat.RGBA32, true); Graphics.CopyTexture(icon.LowResTex, 0, 0, folderIcon10, 0, 0); folderOriginalIcon10 = icon.LowResTex; initIconsTexture = false; } EditorGUILayout.EndVertical(); if (selectedIcon != null) { GUILayout.BeginHorizontal(FolderInspector.toolBarStyle); GUILayout.Label("Icon settings"); GUILayout.EndHorizontal(); GUILayout.Space(4); styleProperties.iconOffset = DisplayOffsetField("Position", 100, styleProperties.iconOffset); GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); if (GUILayout.Button("Middle", GUILayout.Width(70.0f))) { styleProperties.iconOffset = new Vector2Int(-11, -2); } if (GUILayout.Button("Left", GUILayout.Width(70.0f))) { styleProperties.iconOffset = new Vector2Int(-24, -2); } if (GUILayout.Button("Reset", GUILayout.Width(70.0f))) { styleProperties.iconOffset = Vector2Int.zero; } GUILayout.EndHorizontal(); GUILayout.Space(6); } } }