internal static void PopulateSkin(SkinTarget target, IEnumerable <string> folders, GUISkin skin) { var resolver = ConverterUtils.ResolveFromSheetsFolder(folders, target); resolver.Resolve(); PopulateSkin(resolver, skin); }
public static GUISkin CreatePackageSkinFromBundleSkin(SkinTarget target) { var packageSkin = CreateDefaultGUISkin(); var bundleSkin = LoadBundleSkin(target); packageSkin.Assign(bundleSkin); ConvertToPackageAsset(packageSkin, bundleSkin); return(packageSkin); }
public static string GetSkinPath(SkinTarget target, bool bundle = false, bool pristine = false) { var skinName = target == SkinTarget.Dark ? "DarkSkin" : "LightSkin"; if (pristine) { skinName += "_Pristine"; } return($"{(bundle ? k_BundleSkinPath : k_GeneratedSkinPath)}/{skinName}.guiskin"); }
internal static GUISkin CreateGUISkinFromSheetsFolder(string sheetsPath, SkinTarget target, GUISkin skin = null) { skin = skin ?? ConverterUtils.CreateDefaultGUISkin(); var resolver = ResolveFromSheetsFolder(sheetsPath, target); PopulateSkin(resolver.ResolvedSheet, skin); Array.Sort(skin.customStyles, (s1, s2) => s1.name.CompareTo(s2.name)); return(skin); }
public static void ResetSkinToPristine(GUISkin skin, SkinTarget target) { var pristinePath = GetSkinPath(target, true, true); var pristineSkin = LoadResource <GUISkin>(pristinePath); if (pristineSkin != null) { var originalName = skin.name; skin.Assign(pristineSkin); skin.name = originalName; } }
public static void PopulateSkinFromSheetFolders(string[] sheetFolders) { GUISkin currentSkin = null; SkinTarget currentTarget = SkinTarget.Light; if (EditorGUIUtility.isProSkin) { currentTarget = SkinTarget.Dark; } currentSkin = ConverterUtils.LoadBundleSkin(currentTarget); ConverterUtils.SetToDefault(currentSkin); foreach (string folder in sheetFolders) { StyleSheetToGUISkin.CreateGUISkinFromSheetsFolder(folder, currentTarget, currentSkin); } }
public static GUISkin CreatePackageSkinFromBundleSkin(SkinTarget target) { var packageSkin = CreateDefaultGUISkin(); var bundleSkin = LoadBundleSkin(target); packageSkin.Assign(bundleSkin); // Switch all images and font to package resources: if (bundleSkin.font != null) { packageSkin.font = ConvertToPackageAsset(bundleSkin.font); } ConvertToPackageAsset(packageSkin.box, bundleSkin.box); ConvertToPackageAsset(packageSkin.label, bundleSkin.label); ConvertToPackageAsset(packageSkin.textField, bundleSkin.textField); ConvertToPackageAsset(packageSkin.textArea, bundleSkin.textArea); ConvertToPackageAsset(packageSkin.button, bundleSkin.button); ConvertToPackageAsset(packageSkin.toggle, bundleSkin.toggle); ConvertToPackageAsset(packageSkin.window, bundleSkin.window); ConvertToPackageAsset(packageSkin.horizontalSlider, bundleSkin.horizontalSlider); ConvertToPackageAsset(packageSkin.horizontalSliderThumb, bundleSkin.horizontalSliderThumb); ConvertToPackageAsset(packageSkin.verticalSlider, bundleSkin.verticalSlider); ConvertToPackageAsset(packageSkin.verticalSliderThumb, bundleSkin.verticalSliderThumb); ConvertToPackageAsset(packageSkin.horizontalScrollbar, bundleSkin.horizontalScrollbar); ConvertToPackageAsset(packageSkin.horizontalScrollbarThumb, bundleSkin.horizontalScrollbarThumb); ConvertToPackageAsset(packageSkin.horizontalScrollbarLeftButton, bundleSkin.horizontalScrollbarLeftButton); ConvertToPackageAsset(packageSkin.horizontalScrollbarRightButton, bundleSkin.horizontalScrollbarRightButton); ConvertToPackageAsset(packageSkin.verticalScrollbar, bundleSkin.verticalScrollbar); ConvertToPackageAsset(packageSkin.verticalScrollbarThumb, bundleSkin.verticalScrollbarThumb); ConvertToPackageAsset(packageSkin.verticalScrollbarUpButton, bundleSkin.verticalScrollbarUpButton); ConvertToPackageAsset(packageSkin.verticalScrollbarDownButton, bundleSkin.verticalScrollbarDownButton); ConvertToPackageAsset(packageSkin.scrollView, bundleSkin.scrollView); for (var i = 0; i < packageSkin.customStyles.Length; ++i) { var packageStyle = packageSkin.customStyles[i]; var bundleStyle = bundleSkin.customStyles[i]; ConvertToPackageAsset(packageStyle, bundleStyle); } return(packageSkin); }
internal static GUISkin CreateGUISkinFromSheetsFolder(SkinTarget target, IEnumerable <string> folders, GUISkin skin = null) { skin = skin ?? ConverterUtils.CreateDefaultGUISkin(); PopulateSkin(target, folders, skin); return(skin); }
internal static StyleSheetResolver ResolveFromSheetsFolder(IEnumerable <string> folders, SkinTarget target, StyleSheetResolver.ResolvingOptions options = null, string sheetPostFix = "") { var sheetPaths = ConverterUtils.GetSheetPathsFromRootFolders(folders, target, sheetPostFix); if (sheetPaths.Length == 0) { throw new Exception("Cannot find sheets to generate skin"); } var resolver = new StyleSheetResolver(options ?? new StyleSheetResolver.ResolvingOptions() { ThrowIfCannotResolve = true }); foreach (var sheet in sheetPaths) { resolver.AddStyleSheets(sheet); } return(resolver); }
internal static StyleSheetResolver ResolveFromSheetsFolder(string folder, SkinTarget target, StyleSheetResolver.ResolvingOptions options = null, string sheetPostFix = "") { return(ResolveFromSheetsFolder(new[] { folder }, target, options, sheetPostFix)); }
public static string[] GetSheetPathsFromRootFolders(IEnumerable <string> rootFolders, SkinTarget target, string sheetPostFix = "") { var skinSheetName = $"{(target == SkinTarget.Light ? "light" : "dark")}{sheetPostFix}.uss"; var sheetPaths = rootFolders.Select(folderPath => Directory.GetFiles(EditorResources.ExpandPath(folderPath), "*.uss", SearchOption.AllDirectories)) .SelectMany(p => p) .Where(p => p.EndsWith("common.uss") || p.EndsWith(skinSheetName)) .Select(p => p.Replace("\\", "/")) .ToArray(); return(sheetPaths); }
public static GUISkin LoadBundleSkin(SkinTarget target) { var editorAssetBundle = EditorGUIUtility.GetEditorAssetBundle(); return(editorAssetBundle.LoadAsset <GUISkin>(GetSkinPath(target, true).ToLower())); }
public static GUISkin LoadSkin(SkinTarget target) { return(LoadResource <GUISkin>(GetSkinPath(target))); }
internal static StyleSheetResolver ResolveFromSheetsFolder(string sheetsPath, SkinTarget target, StyleSheetResolver.ResolvingOptions options = null, string sheetPostFix = "") { var sheetFolders = AssetDatabase.GetSubFolders(sheetsPath); if (sheetFolders.Length == 0) { throw new Exception("Cannot find EditorStyles: " + sheetsPath); } var skinSheetName = string.Format("{0}{1}.uss", target == SkinTarget.Light ? "light" : "dark", sheetPostFix); var resolver = new StyleSheetResolver(options ?? new StyleSheetResolver.ResolvingOptions() { ThrowIfCannotResolve = true }); var themeDir = sheetsPath + "/_Variables"; if (Directory.Exists(themeDir)) { var themeSheetPath = themeDir + "/" + skinSheetName; resolver.AddStyleSheet(themeSheetPath); } foreach (var sheetFolder in sheetFolders) { var commonPath = sheetFolder + "/" + string.Format("{0}{1}.uss", "common", sheetPostFix); var skinSheetPath = sheetFolder + "/" + skinSheetName; resolver.AddStyleSheets(commonPath, skinSheetPath); } return(resolver); }
internal static void PopulateSkinFromSheetFolder(GUISkin skin, string sheetFolder, SkinTarget target) { if (!Directory.Exists(sheetFolder)) { throw new Exception("Sheet Folder doesn't exists: " + sheetFolder); } var commonPath = sheetFolder + "/common.uss"; var skinSheetName = target == SkinTarget.Dark ? "dark.uss" : "light.uss"; var skinSheetPath = sheetFolder + "/" + skinSheetName; StyleSheet mergedSheet; var themeDir = Path.GetDirectoryName(sheetFolder) + "/_Variables"; if (Directory.Exists(themeDir)) { var themeSheetPath = themeDir + "/" + skinSheetName; mergedSheet = ResolveSheets(themeSheetPath, commonPath, skinSheetPath); } else { mergedSheet = ResolveSheets(commonPath, skinSheetPath); } PopulateSkin(mergedSheet, skin); }
public static string GetSkinPath(SkinTarget target, bool bundle = false) { var skinName = target == SkinTarget.Dark ? "darkskin.guiskin" : "lightskin.guiskin"; return(String.Format("{0}/{1}", bundle ? k_BundleSkinPath : k_GeneratedSkinPath, skinName)); }