| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 | 
							- using UnityEngine;
 
- namespace Coffee.UIExtensions
 
- {
 
-     [System.Serializable]
 
-     public class AnimatableProperty : ISerializationCallbackReceiver
 
-     {
 
-         public enum ShaderPropertyType
 
-         {
 
-             Color,
 
-             Vector,
 
-             Float,
 
-             Range,
 
-             Texture,
 
-         }
 
-         [SerializeField] string m_Name = "";
 
-         [SerializeField] ShaderPropertyType m_Type = ShaderPropertyType.Vector;
 
-         public int id { get; private set; }
 
-         public ShaderPropertyType type
 
-         {
 
-             get { return m_Type; }
 
-         }
 
-         public void UpdateMaterialProperties(Material material, MaterialPropertyBlock mpb)
 
-         {
 
-             if (!material.HasProperty(id)) return;
 
-             switch (type)
 
-             {
 
-                 case ShaderPropertyType.Color:
 
-                     var color = mpb.GetColor(id);
 
-                     if (color != default(Color))
 
-                         material.SetColor(id, color);
 
-                     break;
 
-                 case ShaderPropertyType.Vector:
 
-                     var vector = mpb.GetVector(id);
 
-                     if (vector != default(Vector4))
 
-                         material.SetVector(id, vector);
 
-                     break;
 
-                 case ShaderPropertyType.Float:
 
-                 case ShaderPropertyType.Range:
 
-                     var value = mpb.GetFloat(id);
 
-                     if (value != default(float))
 
-                         material.SetFloat(id, value);
 
-                     break;
 
-                 case ShaderPropertyType.Texture:
 
-                     var tex = mpb.GetTexture(id);
 
-                     if (tex != default(Texture))
 
-                         material.SetTexture(id, tex);
 
-                     break;
 
-             }
 
-         }
 
-         public void OnBeforeSerialize()
 
-         {
 
-         }
 
-         public void OnAfterDeserialize()
 
-         {
 
-             id = Shader.PropertyToID(m_Name);
 
-         }
 
-     }
 
- }
 
 
  |