using UnityEngine; using UnityEngine.UI; namespace Coffee.UIExtensions { //[RequireComponent(typeof(Graphic))] [DisallowMultipleComponent] [AddComponentMenu("UI/MeshEffectForTextMeshPro/UIFlip", 102)] public class UIFlip : BaseMeshEffect { //################################ // Serialize Members. //################################ [Tooltip("Flip horizontally.")] [SerializeField] private bool m_Horizontal = false; [Tooltip("Flip vertically.")] [SerializeField] private bool m_Veritical = false; //################################ // Public Members. //################################ /// /// Gets or sets a value indicating whether this should be flipped horizontally. /// /// true if be flipped horizontally; otherwise, false. public bool horizontal { get { return this.m_Horizontal; } set { this.m_Horizontal = value; SetVerticesDirty(); } } /// /// Gets or sets a value indicating whether this should be flipped vertically. /// /// true if be flipped horizontally; otherwise, false. public bool vertical { get { return this.m_Veritical; } set { this.m_Veritical = value; SetVerticesDirty(); } } /// /// Call used to modify mesh. /// /// VertexHelper. public override void ModifyMesh(VertexHelper vh) { RectTransform rt = graphic.rectTransform; UIVertex vt = default(UIVertex); Vector3 pos; Vector2 center = rt.rect.center; for (int i = 0; i < vh.currentVertCount; i++) { vh.PopulateUIVertex(ref vt, i); pos = vt.position; vt.position = new Vector3( m_Horizontal ? -pos.x : pos.x, m_Veritical ? -pos.y : pos.y ); vh.SetUIVertex(vt, i); } } } }