From 8ae051b7b2c69978fba1d9159b6c72afeea0e92a Mon Sep 17 00:00:00 2001 From: Takashi Sakai Date: Sun, 6 May 2018 21:09:32 +0900 Subject: [PATCH] Feature: Flip horizontal/vertical #47 --- Assets/UIEffect/UIFlip.cs | 58 ++++++++++++++++++++++++++++++++++ Assets/UIEffect/UIFlip.cs.meta | 12 +++++++ 2 files changed, 70 insertions(+) create mode 100644 Assets/UIEffect/UIFlip.cs create mode 100644 Assets/UIEffect/UIFlip.cs.meta diff --git a/Assets/UIEffect/UIFlip.cs b/Assets/UIEffect/UIFlip.cs new file mode 100644 index 00000000..008fbde3 --- /dev/null +++ b/Assets/UIEffect/UIFlip.cs @@ -0,0 +1,58 @@ +using System; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; + +namespace Coffee.UIExtensions +{ + + [RequireComponent(typeof(Graphic))] + [DisallowMultipleComponent] + public class UIFlip : BaseMeshEffect + { + //################################ + // Serialize Members. + //################################ + [SerializeField] private bool m_Horizontal = false; + [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; } } + + /// + /// 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; } } + + /// + /// 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 +// m_Horizontal ? (pos.x + (center.x - pos.x) * 2) : pos.x, +// m_Veritical ? (pos.y + (center.y - pos.y) * 2) : pos.y + ); + vh.SetUIVertex(vt, i); + } + } + } +} \ No newline at end of file diff --git a/Assets/UIEffect/UIFlip.cs.meta b/Assets/UIEffect/UIFlip.cs.meta new file mode 100644 index 00000000..86d3ecba --- /dev/null +++ b/Assets/UIEffect/UIFlip.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9bb4e59514e90489d985e9a17c838085 +timeCreated: 1525607243 +licenseType: Pro +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: