| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 | 
							- using UnityEngine;
 
- using UnityEditor;
 
- using System.Linq;
 
- using System.Collections;
 
- namespace TMPro.EditorUtilities
 
- {
 
-     public static class EditorShaderUtilities 
 
-     {
 
-         /// <summary>
 
-         /// Copy Shader properties from source to destination material.
 
-         /// </summary>
 
-         /// <param name="source"></param>
 
-         /// <returns></returns>
 
-         public static void CopyMaterialProperties(Material source, Material destination)
 
-         {
 
-             MaterialProperty[] source_prop = MaterialEditor.GetMaterialProperties(new Material[] { source });
 
-             for (int i = 0; i < source_prop.Length; i++)
 
-             {
 
-                 int property_ID = Shader.PropertyToID(source_prop[i].name);
 
-                 if (destination.HasProperty(property_ID))
 
-                 {
 
-                     //Debug.Log(source_prop[i].name + "  Type:" + ShaderUtil.GetPropertyType(source.shader, i));
 
-                     switch (ShaderUtil.GetPropertyType(source.shader, i))
 
-                     {
 
-                         case ShaderUtil.ShaderPropertyType.Color:
 
-                             destination.SetColor(property_ID, source.GetColor(property_ID));                          
 
-                             break;
 
-                         case ShaderUtil.ShaderPropertyType.Float:
 
-                             destination.SetFloat(property_ID, source.GetFloat(property_ID));
 
-                             break;
 
-                         case ShaderUtil.ShaderPropertyType.Range:
 
-                             destination.SetFloat(property_ID, source.GetFloat(property_ID));
 
-                             break;
 
-                         case ShaderUtil.ShaderPropertyType.TexEnv:
 
-                             destination.SetTexture(property_ID, source.GetTexture(property_ID));
 
-                             break;
 
-                         case ShaderUtil.ShaderPropertyType.Vector:
 
-                             destination.SetVector(property_ID, source.GetVector(property_ID));
 
-                             break;
 
-                     }
 
-                 }
 
-             }
 
-         }
 
-       
 
-     }
 
- }
 
 
  |