示例#1
0
 static TexFontSigned Convert(TexAsset asset)
 {
     if (asset.type == TexAssetType.FontSigned)
     {
         return((TexFontSigned)asset);
     }
     else
     {
         var n = ScriptableObject.CreateInstance <TexFontSigned>();
         asset.ImportDictionary();
         EditorJsonUtility.FromJsonOverwrite(EditorJsonUtility.ToJson(asset), n);
         n.rawpath = AssetDatabase.GetAssetPath(((TexFont)asset).asset);
         var main = TEXPreference.main;
         main.fontnames[asset.id] = main.fonts[Array.IndexOf(main.fonts, asset)] = n;
         AssetDatabase.CreateAsset(n, AssetDatabase.GetAssetPath(asset));
         return(n);
     }
 }
示例#2
0
        static void LoadPrimaryDefinitionSubset <T>(TEXPreference pref, List <TexAsset> fontList, string folderPath, string typeStr, TexAssetType typeEnum, int mode) where T : TexAsset
        {
            if (!AssetDatabase.IsValidFolder(folderPath))
            {
                return;
            }
            string[] customF = AssetDatabase.FindAssets(typeStr, new string[] { folderPath });
            for (int i = 0; i < customF.Length; i++)
            {
                if (fontList.Count >= 31)
                {
                    Debug.LogWarning("Font/Sprite database count are beyond 31, ignoring any assets after " + fontList[fontList.Count - 1].id);
                    break;
                }
                string realPath = AssetDatabase.GUIDToAssetPath(customF[i]);
                string id       = Path.GetFileNameWithoutExtension(realPath).ToLower();

                if (fontList.Any((x) => x.id == id))
                {
                    continue;
                }

                if (!isNameValid(id))
                {
                    // We show this for information purpose, since *-Regular or *_ is very common mistake
                    // We are not showing this for frequent update, since this behavior is 'intended' for giving an alternative styling
                    if (id.Contains("-Regular") || id.Substring(id.Length - 1) == "_")
                    {
                        Debug.LogWarning("File " + id + " is ignored since it has invalid character(s) in its name");
                    }
                    continue;
                }

                UpdateProgress(mode, id, i, customF.Length);

                string   json     = null;
                var      metaPath = pref.MainFolderPath + resourceFontMetaPath + id + ".asset";
                TexAsset metadata = AssetDatabase.LoadAssetAtPath <T>(metaPath);

#if TEXDRAW_TMP
                string sdfPath = pref.MainFolderPath + "/Fonts/TMPro/" + id + ".asset";
                if (typeEnum == TexAssetType.Font && File.Exists(sdfPath))
                {
                    metadata = AssetDatabase.LoadAssetAtPath <TexFontSigned>(metaPath);
                    if (!metadata)
                    {
                        metadata = CreateAndRecover <TexFontSigned>(metaPath);
                        ((TexFontSigned)metadata).rawpath = realPath;
                        AssetDatabase.CreateAsset(metadata, metaPath);
                    }
                    realPath = sdfPath;
                }
#endif
                if (!metadata)
                {
                    metadata = CreateAndRecover <T>(metaPath);
                    AssetDatabase.CreateAsset(metadata, metaPath);
                }
                else
                {
                    json = JsonUtility.ToJson(metadata);
                }

                metadata.id    = id;
                metadata.index = fontList.Count;
                metadata.ImportAsset(realPath);
                metadata.ImportDictionary();

                if (json != JsonUtility.ToJson(metadata))
                {
                    // this is necessary to avoid messing with Git version control
                    EditorUtility.SetDirty(metadata);
                }

                fontList.Add(metadata);
            }
        }