Exemplo n.º 1
0
        internal static void PopulateSkin(SkinTarget target, IEnumerable <string> folders, GUISkin skin)
        {
            var resolver = ConverterUtils.ResolveFromSheetsFolder(folders, target);

            resolver.Resolve();
            PopulateSkin(resolver, skin);
        }
Exemplo n.º 2
0
        public static GUISkin CreatePackageSkinFromBundleSkin(SkinTarget target)
        {
            var packageSkin = CreateDefaultGUISkin();
            var bundleSkin  = LoadBundleSkin(target);

            packageSkin.Assign(bundleSkin);
            ConvertToPackageAsset(packageSkin, bundleSkin);
            return(packageSkin);
        }
Exemplo n.º 3
0
        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");
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        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;
            }
        }
Exemplo n.º 6
0
        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);
            }
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
 internal static GUISkin CreateGUISkinFromSheetsFolder(SkinTarget target, IEnumerable <string> folders, GUISkin skin = null)
 {
     skin = skin ?? ConverterUtils.CreateDefaultGUISkin();
     PopulateSkin(target, folders, skin);
     return(skin);
 }
Exemplo n.º 9
0
        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);
        }
Exemplo n.º 10
0
 internal static StyleSheetResolver ResolveFromSheetsFolder(string folder, SkinTarget target, StyleSheetResolver.ResolvingOptions options = null, string sheetPostFix = "")
 {
     return(ResolveFromSheetsFolder(new[] { folder }, target, options, sheetPostFix));
 }
Exemplo n.º 11
0
        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);
        }
Exemplo n.º 12
0
        public static GUISkin LoadBundleSkin(SkinTarget target)
        {
            var editorAssetBundle = EditorGUIUtility.GetEditorAssetBundle();

            return(editorAssetBundle.LoadAsset <GUISkin>(GetSkinPath(target, true).ToLower()));
        }
Exemplo n.º 13
0
 public static GUISkin LoadSkin(SkinTarget target)
 {
     return(LoadResource <GUISkin>(GetSkinPath(target)));
 }
Exemplo n.º 14
0
        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);
        }
Exemplo n.º 15
0
        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);
        }
Exemplo n.º 16
0
        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));
        }