diff options
Diffstat (limited to 'Assets/Scripts/UIFlip.cs')
-rw-r--r-- | Assets/Scripts/UIFlip.cs | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/Assets/Scripts/UIFlip.cs b/Assets/Scripts/UIFlip.cs new file mode 100644 index 0000000..2cb7055 --- /dev/null +++ b/Assets/Scripts/UIFlip.cs @@ -0,0 +1,69 @@ +using System; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; + +namespace Coffee.UIEffects +{ + [DisallowMultipleComponent] + [AddComponentMenu("UI/UIEffects/UIFlip", 102)] + public class UIFlip : BaseMeshEffect + { + [Tooltip("Flip horizontally.")] [SerializeField] + private bool m_Horizontal = false; + + [Tooltip("Flip vertically.")] [SerializeField] + private bool m_Veritical = false; + + /// <summary> + /// Gets or sets a value indicating whether this <see cref="Coffee.UIEffects.UIFlip"/> should be flipped horizontally. + /// </summary> + /// <value><c>true</c> if be flipped horizontally; otherwise, <c>false</c>.</value> + public bool horizontal + { + get { return m_Horizontal; } + set + { + if (m_Horizontal == value) return; + m_Horizontal = value; + SetEffectParamsDirty(); + } + } + + /// <summary> + /// Gets or sets a value indicating whether this <see cref="Coffee.UIEffects.UIFlip"/> should be flipped vertically. + /// </summary> + /// <value><c>true</c> if be flipped horizontally; otherwise, <c>false</c>.</value> + public bool vertical + { + get { return m_Veritical; } + set + { + if (m_Veritical == value) return; + m_Veritical = value; + SetEffectParamsDirty(); + } + } + + /// <summary> + /// Call used to modify mesh. + /// </summary> + /// <param name="vh">VertexHelper.</param> + public override void ModifyMesh(VertexHelper vh, Graphic graphic) + { + if (!isActiveAndEnabled) return; + + var vt = default(UIVertex); + for (var i = 0; i < vh.currentVertCount; i++) + { + vh.PopulateUIVertex(ref vt, i); + var pos = vt.position; + vt.position = new Vector3( + m_Horizontal ? -pos.x : pos.x, + m_Veritical ? -pos.y : pos.y + ); + vh.SetUIVertex(vt, i); + } + } + } +} |