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_SubMeshUI; //m_rectTransform = m_SubMeshComponent.rectTransform; m_canvasRenderer = m_SubMeshComponent.canvasRenderer; // Create new Material Editor if one does not exists if (m_canvasRenderer != null && m_canvasRenderer.GetMaterial() != null) { m_materialEditor = Editor.CreateEditor(m_canvasRenderer.GetMaterial()); m_targetMaterial = m_canvasRenderer.GetMaterial(); } }
public void UpdateSubmesh(bool tesselate, bool curve) { TMP_SubMeshUI TMPsub = gameObject.GetComponent <TMP_SubMeshUI>(); if (TMPsub == null) { return; } CurvedUIVertexEffect crvdVE = gameObject.AddComponentIfMissing <CurvedUIVertexEffect>(); if (tesselate || savedMesh == null || vh == null || (!Application.isPlaying)) { vh = new VertexHelper(TMPsub.mesh); ModifyMesh(crvdVE); savedMesh = new Mesh(); vh.FillMesh(savedMesh); crvdVE.TesselationRequired = true; } else if (curve) { ModifyMesh(crvdVE); vh.FillMesh(savedMesh); crvdVE.CurvingRequired = true; } TMPsub.canvasRenderer.SetMesh(savedMesh); }
public void UpdateSubmesh(bool tesselate, bool curve) { //find required components if (TMPsub == null) { TMPsub = gameObject.GetComponent <TMP_SubMeshUI>(); } if (TMPsub == null) { return; } if (TMPtext == null) { TMPtext = GetComponentInParent <TextMeshProUGUI>(); } if (crvdVE == null) { crvdVE = gameObject.AddComponentIfMissing <CurvedUIVertexEffect>(); } //perform tesselatio and curving if (tesselate || straightMesh == null || vh == null || (!Application.isPlaying)) { vh = new VertexHelper(TMPsub.mesh); //save straight mesh - it will be curved then every time the object moves on the canvas. straightMesh = new Mesh(); vh.FillMesh(straightMesh); curve = true; } if (curve) { //Debug.Log("Submesh: Curve", this.gameObject); vh = new VertexHelper(straightMesh); crvdVE.ModifyMesh(vh); curvedMesh = new Mesh(); vh.FillMesh(curvedMesh); crvdVE.CurvingRequired = true; } //upload mesh to TMP object's renderer TMPsub.canvasRenderer.SetMesh(curvedMesh); //cleanup for not needed submeshes. if (TMPtext != null && TMPtext.textInfo.materialCount < 2) { //Each submesh uses 1 additional material. //If materialCount is 1, this means Submesh is not needed. Bounce it to toggle cleanup. TMPsub.enabled = false; TMPsub.enabled = true; } }
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() { TMP_UIStyleManager.GetUIStyles(); fontAsset_prop = base.serializedObject.FindProperty("m_fontAsset"); spriteAsset_prop = base.serializedObject.FindProperty("m_spriteAsset"); m_SubMeshComponent = (base.target as TMP_SubMeshUI); m_canvasRenderer = m_SubMeshComponent.canvasRenderer; if (m_canvasRenderer != null && m_canvasRenderer.GetMaterial() != null) { m_materialEditor = Editor.CreateEditor(m_canvasRenderer.GetMaterial()); m_targetMaterial = m_canvasRenderer.GetMaterial(); } }
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; } } } } }
public void UpdateSubmesh(bool tesselate, bool curve) { if (TMPsub == null) { TMPsub = gameObject.GetComponent <TMP_SubMeshUI>(); } if (TMPsub == null) { return; } if (crvdVE == null) { crvdVE = gameObject.AddComponentIfMissing <CurvedUIVertexEffect>(); } if (tesselate || straightMesh == null || vh == null || (!Application.isPlaying)) { //Debug.Log("Submesh: tesselate", this.gameObject); vh = new VertexHelper(TMPsub.mesh); //save straight mesh - it will be curved then every time the object moves on the canvas. straightMesh = new Mesh(); vh.FillMesh(straightMesh); //we do it differently now //curve and save mesh //crvdVE.ModifyMesh(vh); //curvedMesh = new Mesh(); //vh.FillMesh(curvedMesh); curve = true; } if (curve) { //Debug.Log("Submesh: Curve", this.gameObject); vh = new VertexHelper(straightMesh); crvdVE.ModifyMesh(vh); curvedMesh = new Mesh(); vh.FillMesh(curvedMesh); crvdVE.CurvingRequired = true; } TMPsub.canvasRenderer.SetMesh(curvedMesh); }
protected override void OnDestroy() { this.OnDestroy(); TMP_SubMeshUI[] subTextObjects = base.m_subTextObjects; int num = subTextObjects.Length; for (int i = 1; i < num; i++) { TMP_SubMeshUI val = subTextObjects[i]; if (!(null == val)) { Object.Destroy(val.get_gameObject()); subTextObjects[i] = null; continue; } break; } }
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); }
//Drag-n-Drop related properties //private Rect m_inspectorStartRegion; //private Rect m_inspectorEndRegion; public void OnEnable() { // Get the UI Skin and Styles for the various Editors TMP_UIStyleManager.GetUIStyles(); //fontSharedMaterial_prop = serializedObject.FindProperty("m_sharedMaterial"); //raycastTarget_prop = serializedObject.FindProperty("m_RaycastTarget"); m_SubMeshComponent = target as TMP_SubMeshUI; //m_rectTransform = m_SubMeshComponent.rectTransform; m_canvasRenderer = m_SubMeshComponent.canvasRenderer; // Create new Material Editor if one does not exists if (m_canvasRenderer != null && m_canvasRenderer.GetMaterial() != null) { m_materialEditor = Editor.CreateEditor(m_canvasRenderer.GetMaterial()); m_targetMaterial = m_canvasRenderer.GetMaterial(); //UnityEditorInternal.InternalEditorUtility.SetIsInspectorExpanded(m_targetMaterial, true); //Debug.Log("Currently Assigned Material is " + m_targetMaterial + ". Font Material is " + m_textMeshProScript.fontSharedMaterial); } }
public void UpdateSubmesh(bool tesselate, bool curve) { TMP_SubMeshUI component = base.gameObject.GetComponent <TMP_SubMeshUI>(); if (component != null) { CurvedUIVertexEffect crvdVE = base.gameObject.AddComponentIfMissing <CurvedUIVertexEffect>(); if (tesselate || ((this.savedMesh == null) || ((this.vh == null) || !Application.isPlaying))) { this.vh = new VertexHelper(component.mesh); this.ModifyMesh(crvdVE); this.savedMesh = new Mesh(); this.vh.FillMesh(this.savedMesh); crvdVE.TesselationRequired = true; } else if (curve) { this.ModifyMesh(crvdVE); this.vh.FillMesh(this.savedMesh); crvdVE.CurvingRequired = true; } component.canvasRenderer.SetMesh(this.savedMesh); } }