public void OnEnable() { font_atlas_prop = base.serializedObject.FindProperty("atlas"); font_material_prop = base.serializedObject.FindProperty("material"); fontWeights_prop = base.serializedObject.FindProperty("fontWeights"); m_list = new ReorderableList(base.serializedObject, base.serializedObject.FindProperty("fallbackFontAssets"), true, true, true, true); m_list.drawElementCallback = delegate(Rect rect, int index, bool isActive, bool isFocused) { SerializedProperty arrayElementAtIndex = m_list.serializedProperty.GetArrayElementAtIndex(index); rect.y += 2f; EditorGUI.PropertyField(new Rect(rect.x, rect.y, rect.width, EditorGUIUtility.singleLineHeight), arrayElementAtIndex, GUIContent.none); }; m_list.drawHeaderCallback = delegate(Rect rect) { EditorGUI.LabelField(rect, "<b>Fallback Font Asset List</b>", TMP_UIStyleManager.Label); }; font_normalStyle_prop = base.serializedObject.FindProperty("normalStyle"); font_normalSpacing_prop = base.serializedObject.FindProperty("normalSpacingOffset"); font_boldStyle_prop = base.serializedObject.FindProperty("boldStyle"); font_boldSpacing_prop = base.serializedObject.FindProperty("boldSpacing"); font_italicStyle_prop = base.serializedObject.FindProperty("italicStyle"); font_tabSize_prop = base.serializedObject.FindProperty("tabSize"); m_fontInfo_prop = base.serializedObject.FindProperty("m_fontInfo"); m_glyphInfoList_prop = base.serializedObject.FindProperty("m_glyphInfoList"); m_kerningInfo_prop = base.serializedObject.FindProperty("m_kerningInfo"); m_kerningPair_prop = base.serializedObject.FindProperty("m_kerningPair"); m_fontAsset = (base.target as TMP_FontAsset); m_kerningTable = m_fontAsset.kerningInfo; m_materialPresets = TMP_EditorUtility.FindMaterialReferences(m_fontAsset); TMP_UIStyleManager.GetUIStyles(); m_searchList = new List <int>(); }
/// <summary> /// Method to retrieve the material presets that match the currently selected font asset. /// </summary> protected GUIContent[] GetMaterialPresets() { TMP_FontAsset fontAsset = m_FontAssetProp.objectReferenceValue as TMP_FontAsset; if (fontAsset == null) { return(null); } m_MaterialPresets = TMP_EditorUtility.FindMaterialReferences(fontAsset); m_MaterialPresetNames = new GUIContent[m_MaterialPresets.Length]; for (int i = 0; i < m_MaterialPresetNames.Length; i++) { m_MaterialPresetNames[i] = new GUIContent(m_MaterialPresets[i].name); if (m_TargetMaterial.GetInstanceID() == m_MaterialPresets[i].GetInstanceID()) { m_MaterialPresetSelectionIndex = i; } } m_IsPresetListDirty = false; return(m_MaterialPresetNames); }
/// <summary> /// Method to retrieve the material presets that match the currently selected font asset. /// </summary> private string[] GetMaterialPresets() { TMP_FontAsset fontAsset = fontAsset_prop.objectReferenceValue as TMP_FontAsset; if (fontAsset == null) { return(null); } m_materialPresets = TMP_EditorUtility.FindMaterialReferences(fontAsset); m_materialPresetNames = new string[m_materialPresets.Length]; for (int i = 0; i < m_materialPresetNames.Length; i++) { m_materialPresetNames[i] = m_materialPresets[i].name; if (m_targetMaterial.GetInstanceID() == m_materialPresets[i].GetInstanceID()) { m_materialPresetSelectionIndex = i; } } m_isPresetListDirty = false; return(m_materialPresetNames); }
public void OnEnable() { font_atlas_prop = serializedObject.FindProperty("atlas"); font_material_prop = serializedObject.FindProperty("material"); fontWeights_prop = serializedObject.FindProperty("fontWeights"); m_list = new ReorderableList(serializedObject, serializedObject.FindProperty("fallbackFontAssets"), true, true, true, true); m_list.drawElementCallback = (Rect rect, int index, bool isActive, bool isFocused) => { var element = m_list.serializedProperty.GetArrayElementAtIndex(index); rect.y += 2; EditorGUI.PropertyField(new Rect(rect.x, rect.y, rect.width, EditorGUIUtility.singleLineHeight), element, GUIContent.none); }; m_list.drawHeaderCallback = rect => { EditorGUI.LabelField(rect, "<b>Fallback Font Asset List</b>", TMP_UIStyleManager.Label); }; font_normalStyle_prop = serializedObject.FindProperty("normalStyle"); font_normalSpacing_prop = serializedObject.FindProperty("normalSpacingOffset"); font_boldStyle_prop = serializedObject.FindProperty("boldStyle"); font_boldSpacing_prop = serializedObject.FindProperty("boldSpacing"); font_italicStyle_prop = serializedObject.FindProperty("italicStyle"); font_tabSize_prop = serializedObject.FindProperty("tabSize"); m_fontInfo_prop = serializedObject.FindProperty("m_fontInfo"); m_glyphInfoList_prop = serializedObject.FindProperty("m_glyphInfoList"); m_kerningInfo_prop = serializedObject.FindProperty("m_kerningInfo"); m_kerningPair_prop = serializedObject.FindProperty("m_kerningPair"); m_kerningPairs_prop = m_kerningInfo_prop.FindPropertyRelative("kerningPairs"); m_fontAsset = target as TMP_FontAsset; m_kerningTable = m_fontAsset.kerningInfo; m_materialPresets = TMP_EditorUtility.FindMaterialReferences(m_fontAsset); // Get the UI Skin and Styles for the various Editors TMP_UIStyleManager.GetUIStyles(); m_GlyphSearchList = new List <int>(); m_KerningTableSearchList = new List <int>(); }
private void Save_SDF_FontAsset(string filePath) { filePath = filePath.Substring(0, filePath.Length - 6); string dataPath = Application.dataPath; if (filePath.IndexOf(dataPath, StringComparison.InvariantCultureIgnoreCase) == -1) { Debug.LogError("You're saving the font asset in a directory outside of this project folder. This is not supported. Please select a directory under \"" + dataPath + "\""); return; } string path = filePath.Substring(dataPath.Length - 6); string directoryName = Path.GetDirectoryName(path); string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(path); string str = directoryName + "/" + fileNameWithoutExtension; TMP_FontAsset tMP_FontAsset = AssetDatabase.LoadAssetAtPath(str + ".asset", typeof(TMP_FontAsset)) as TMP_FontAsset; if (tMP_FontAsset == null) { tMP_FontAsset = ScriptableObject.CreateInstance <WeaverCore.Assets.TMPro.TMP_FontAsset>(); AssetDatabase.CreateAsset(tMP_FontAsset, str + ".asset"); tMP_FontAsset.fontAssetType = TMP_FontAsset.FontAssetTypes.SDF; int scaleFactor = (font_renderMode >= RenderModes.DistanceField16) ? 1 : font_scaledownFactor; FaceInfo faceInfo = GetFaceInfo(m_font_faceInfo, scaleFactor); tMP_FontAsset.AddFaceInfo(faceInfo); TMP_Glyph[] glyphInfo = GetGlyphInfo(m_font_glyphInfo, scaleFactor); tMP_FontAsset.AddGlyphInfo(glyphInfo); if (includeKerningPairs) { string assetPath = AssetDatabase.GetAssetPath(font_TTF); KerningTable kerningTable = GetKerningTable(assetPath, (int)faceInfo.PointSize); tMP_FontAsset.AddKerningInfo(kerningTable); } tMP_FontAsset.atlas = m_font_Atlas; m_font_Atlas.name = fileNameWithoutExtension + " Atlas"; AssetDatabase.AddObjectToAsset(m_font_Atlas, tMP_FontAsset); Shader shader = Shader.Find("TextMeshPro/Distance Field"); Material material = new Material(shader); material.name = fileNameWithoutExtension + " Material"; material.SetTexture(ShaderUtilities.ID_MainTex, m_font_Atlas); material.SetFloat(ShaderUtilities.ID_TextureWidth, m_font_Atlas.width); material.SetFloat(ShaderUtilities.ID_TextureHeight, m_font_Atlas.height); int num = font_padding + 1; material.SetFloat(ShaderUtilities.ID_GradientScale, num); material.SetFloat(ShaderUtilities.ID_WeightNormal, tMP_FontAsset.normalStyle); material.SetFloat(ShaderUtilities.ID_WeightBold, tMP_FontAsset.boldStyle); tMP_FontAsset.material = material; AssetDatabase.AddObjectToAsset(material, tMP_FontAsset); } else { Material[] array = TMP_EditorUtility.FindMaterialReferences(tMP_FontAsset); UnityEngine.Object.DestroyImmediate(tMP_FontAsset.atlas, true); tMP_FontAsset.fontAssetType = TMP_FontAsset.FontAssetTypes.SDF; int scaleFactor2 = (font_renderMode >= RenderModes.DistanceField16) ? 1 : font_scaledownFactor; FaceInfo faceInfo2 = GetFaceInfo(m_font_faceInfo, scaleFactor2); tMP_FontAsset.AddFaceInfo(faceInfo2); TMP_Glyph[] glyphInfo2 = GetGlyphInfo(m_font_glyphInfo, scaleFactor2); tMP_FontAsset.AddGlyphInfo(glyphInfo2); if (includeKerningPairs) { string assetPath2 = AssetDatabase.GetAssetPath(font_TTF); KerningTable kerningTable2 = GetKerningTable(assetPath2, (int)faceInfo2.PointSize); tMP_FontAsset.AddKerningInfo(kerningTable2); } tMP_FontAsset.atlas = m_font_Atlas; m_font_Atlas.name = fileNameWithoutExtension + " Atlas"; m_font_Atlas.hideFlags = HideFlags.None; tMP_FontAsset.material.hideFlags = HideFlags.None; AssetDatabase.AddObjectToAsset(m_font_Atlas, tMP_FontAsset); tMP_FontAsset.material.SetTexture(ShaderUtilities.ID_MainTex, tMP_FontAsset.atlas); for (int i = 0; i < array.Length; i++) { array[i].SetTexture(ShaderUtilities.ID_MainTex, m_font_Atlas); array[i].SetFloat(ShaderUtilities.ID_TextureWidth, m_font_Atlas.width); array[i].SetFloat(ShaderUtilities.ID_TextureHeight, m_font_Atlas.height); int num2 = font_padding + 1; array[i].SetFloat(ShaderUtilities.ID_GradientScale, num2); array[i].SetFloat(ShaderUtilities.ID_WeightNormal, tMP_FontAsset.normalStyle); array[i].SetFloat(ShaderUtilities.ID_WeightBold, tMP_FontAsset.boldStyle); } } AssetDatabase.SaveAssets(); AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath(tMP_FontAsset)); tMP_FontAsset.ReadFontDefinition(); AssetDatabase.Refresh(); m_font_Atlas = null; TMPro_EventManager.ON_FONT_PROPERTY_CHANGED(true, tMP_FontAsset); }