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;
            }
        }
Exemple #4
0
        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);
        }
Exemple #5
0
 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();
     }
 }
Exemple #6
0
        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;
            }
        }
        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();
            }
        }
        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);
            }
        }
Exemple #12
0
        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);
            }
        }