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