public void OnEnable() { TMP_UIStyleManager.GetUIStyles(); fontAsset_prop = base.serializedObject.FindProperty("m_fontAsset"); spriteAsset_prop = base.serializedObject.FindProperty("m_spriteAsset"); m_SubMeshComponent = (base.target as TMP_SubMesh); m_Renderer = m_SubMeshComponent.renderer; }
static void DuplicateMaterial(MenuCommand command) { // Get the type of text object // If material is not a base material, we get material leaks... Material source_Mat = (Material)command.context; if (!EditorUtility.IsPersistent(source_Mat)) { Debug.LogWarning("Material is an instance and cannot be converted into a permanent asset."); return; } string assetPath = AssetDatabase.GetAssetPath(source_Mat).Split('.')[0]; Material duplicate = new Material(source_Mat); // Need to manually copy the shader keywords duplicate.shaderKeywords = source_Mat.shaderKeywords; AssetDatabase.CreateAsset(duplicate, AssetDatabase.GenerateUniqueAssetPath(assetPath + ".mat")); GameObject[] selectedObjects = Selection.gameObjects; // Assign new Material Preset to selected text objects. for (int i = 0; i < selectedObjects.Length; i++) { TMP_Text textObject = selectedObjects[i].GetComponent <TMP_Text>(); if (textObject != null) { textObject.fontSharedMaterial = duplicate; } else { TMP_SubMesh subMeshObject = selectedObjects[i].GetComponent <TMP_SubMesh>(); if (subMeshObject != null) { subMeshObject.sharedMaterial = duplicate; } else { TMP_SubMeshUI subMeshUIObject = selectedObjects[i].GetComponent <TMP_SubMeshUI>(); if (subMeshUIObject != null) { subMeshUIObject.sharedMaterial = duplicate; } } } } // Ping newly created Material Preset. EditorUtility.FocusProjectWindow(); EditorGUIUtility.PingObject(duplicate); }
public void OnEnable() { fontAsset_prop = serializedObject.FindProperty("m_fontAsset"); spriteAsset_prop = serializedObject.FindProperty("m_spriteAsset"); m_SubMeshComponent = target as TMP_SubMesh; m_Renderer = m_SubMeshComponent.renderer; }
public void OnEnable() { // Get the UI Skin and Styles for the various Editors TMP_UIStyleManager.GetUIStyles(); m_SubMeshComponent = target as TMP_SubMesh; m_Renderer = m_SubMeshComponent.renderer; }
public void OnEnable() { // Get the UI Skin and Styles for the various Editors TMP_UIStyleManager.GetUIStyles(); fontAsset_prop = serializedObject.FindProperty("m_fontAsset"); spriteAsset_prop = serializedObject.FindProperty("m_spriteAsset"); m_SubMeshComponent = target as TMP_SubMesh; m_Renderer = m_SubMeshComponent.renderer; }
static void DuplicateMaterial(MenuCommand command) { // Get the type of text object // If material is not a base material, we get material leaks... Material source_Mat = (Material)command.context; if (!EditorUtility.IsPersistent(source_Mat)) { Debug.LogWarning("Material is an instance and cannot be converted into a permanent asset."); return; } string assetPath = AssetDatabase.GetAssetPath(source_Mat).Split('.')[0]; Material duplicate = new Material(source_Mat); // Need to manually copy the shader keywords duplicate.shaderKeywords = source_Mat.shaderKeywords; AssetDatabase.CreateAsset(duplicate, AssetDatabase.GenerateUniqueAssetPath(assetPath + ".mat")); // Assign duplicate Material to selected object (if one is) if (Selection.activeGameObject != null) { TMP_Text textObject = Selection.activeGameObject.GetComponent <TMP_Text>(); if (textObject != null) { textObject.fontSharedMaterial = duplicate; } else { TMP_SubMesh subMeshObject = Selection.activeGameObject.GetComponent <TMP_SubMesh>(); if (subMeshObject != null) { subMeshObject.sharedMaterial = duplicate; } else { TMP_SubMeshUI subMeshUIObject = Selection.activeGameObject.GetComponent <TMP_SubMeshUI>(); if (subMeshUIObject != null) { subMeshUIObject.sharedMaterial = duplicate; } } } } }
[OvldGenCallTarget] static void Text_Internal(string content, [OvldDefault(nameof(Font))] TMP_FontAsset font, [OvldDefault(nameof(FontSize))] float fontSize, [OvldDefault(nameof(TextAlign))] TextAlign align, [OvldDefault(nameof(Color))] Color color) { TextMeshPro tmp = ShapesTextDrawer.Instance.tmp; // styling tmp.font = font; tmp.color = color; tmp.fontSize = fontSize; tmp.fontStyle = FontStyle; tmp.characterSpacing = TextCharacterSpacing; tmp.wordSpacing = TextWordSpacing; tmp.lineSpacing = TextLineSpacing; tmp.paragraphSpacing = TextParagraphSpacing; tmp.margin = TextMargins; // content tmp.text = content; // positioning tmp.alignment = align.GetTMPAlignment(); tmp.rectTransform.pivot = align.GetPivot(); tmp.transform.position = Matrix.GetColumn(3); tmp.rectTransform.rotation = Matrix.rotation; tmp.ForceMeshUpdate(); using (new IMDrawer(mpbText, font.material, tmp.mesh, drawType: IMDrawer.DrawType.Text, allowInstancing: false)) { // will draw on dispose } // ;-; if (tmp.textInfo.materialCount > 1) { // we have fallback fonts so GreaT!! let's just draw everything because f**k me for (int i = 0; i < tmp.transform.childCount; i++) { TMP_SubMesh sm = tmp.transform.GetChild(i).GetComponent <TMP_SubMesh>(); using (new IMDrawer(mpbText, sm.material, sm.mesh, drawType: IMDrawer.DrawType.Text, allowInstancing: false)) { // will draw on dispose } } } }
private static void DuplicateMaterial(MenuCommand command) { Material material = (Material)command.context; if (!EditorUtility.IsPersistent(material)) { Debug.LogWarning("Material is an instance and cannot be converted into a permanent asset."); return; } string str = AssetDatabase.GetAssetPath(material).Split('.')[0]; Material material2 = new Material(material); material2.shaderKeywords = material.shaderKeywords; AssetDatabase.CreateAsset(material2, AssetDatabase.GenerateUniqueAssetPath(str + ".mat")); if (Selection.activeGameObject != null) { TMP_Text component = Selection.activeGameObject.GetComponent <TMP_Text>(); if ((Object)(object)component != null) { component.fontSharedMaterial = material2; } else { TMP_SubMesh component2 = Selection.activeGameObject.GetComponent <TMP_SubMesh>(); if (component2 != null) { component2.sharedMaterial = material2; } else { TMP_SubMeshUI component3 = Selection.activeGameObject.GetComponent <TMP_SubMeshUI>(); if ((Object)(object)component3 != null) { component3.sharedMaterial = material2; } } } } EditorUtility.FocusProjectWindow(); EditorGUIUtility.PingObject(material2); }