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); } }
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); } }