diff options
Diffstat (limited to 'Assets/UIEffects/BaseUIEffect.cs')
-rw-r--r-- | Assets/UIEffects/BaseUIEffect.cs | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/Assets/UIEffects/BaseUIEffect.cs b/Assets/UIEffects/BaseUIEffect.cs new file mode 100644 index 0000000..4ee46c9 --- /dev/null +++ b/Assets/UIEffects/BaseUIEffect.cs @@ -0,0 +1,76 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; +using UnityEngine.EventSystems; +using UnityEditor; + +[ExecuteInEditMode] +[RequireComponent(typeof(Graphic))] +public abstract class BaseUIEffect : UIBehaviour, IMeshModifier, IMaterialModifier +{ + [NonSerialized] + private Graphic m_Graphic; + + protected Graphic graphic + { + get + { + if (m_Graphic == null) + m_Graphic = GetComponent<Graphic>(); + + return m_Graphic; + } + } + + protected override void OnEnable() + { + base.OnEnable(); + if (graphic != null) + graphic.SetVerticesDirty(); + } + + protected override void OnDisable() + { + if (graphic != null) + graphic.SetVerticesDirty(); + base.OnDisable(); + } + + protected override void OnDidApplyAnimationProperties() + { + if (graphic != null) + graphic.SetVerticesDirty(); + base.OnDidApplyAnimationProperties(); + } + +#if UNITY_EDITOR + protected override void OnValidate() + { + base.OnValidate(); + if (graphic != null) + graphic.SetVerticesDirty(); + } + +#endif + + public void ModifyMesh(Mesh mesh) + { + using (var vh = new VertexHelper(mesh)) + { + ModifyMesh(vh); + vh.FillMesh(mesh); + } + } + + public virtual void ModifyMesh(VertexHelper vh) + { + } + + public virtual Material GetModifiedMaterial(Material baseMaterial) + { + return baseMaterial; + } + +} |