| 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);        }    }}
 |