| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226 | using UnityEngine;namespace XCharts.Runtime{    public static class LayerHelper    {        private static Vector2 s_Vector0And0 = new Vector2(0, 0);        private static Vector2 s_Vector0And0Dot5 = new Vector2(0, 0.5f);        private static Vector2 s_Vector0And1 = new Vector2(0, 1f);        private static Vector2 s_Vector0Dot5And1 = new Vector2(0.5f, 1f);        private static Vector2 s_Vector0Dot5And0Dot5 = new Vector2(0.5f, 0.5f);        private static Vector2 s_Vector0Dot5And0 = new Vector2(0.5f, 0f);        private static Vector2 s_Vector1And1 = new Vector2(1f, 1f);        private static Vector2 s_Vector1And0Dot5 = new Vector2(1f, 0.5f);        private static Vector2 s_Vector1And0 = new Vector2(1f, 0);        internal static Vector2 ResetChartPositionAndPivot(Vector2 minAnchor, Vector2 maxAnchor, float width,            float height, ref float chartX, ref float chartY)        {            if (IsLeftTop(minAnchor, maxAnchor))            {                chartX = 0;                chartY = -height;                return s_Vector0And1;            }            else if (IsLeftCenter(minAnchor, maxAnchor))            {                chartX = 0;                chartY = -height / 2;                return s_Vector0And0Dot5;            }            else if (IsLeftBottom(minAnchor, maxAnchor))            {                chartX = 0;                chartY = 0;                return s_Vector0And0;            }            else if (IsCenterTop(minAnchor, maxAnchor))            {                chartX = -width / 2;                chartY = -height;                return s_Vector0Dot5And1;            }            else if (IsCenterCenter(minAnchor, maxAnchor))            {                chartX = -width / 2;                chartY = -height / 2;                return s_Vector0Dot5And0Dot5;            }            else if (IsCenterBottom(minAnchor, maxAnchor))            {                chartX = -width / 2;                chartY = 0;                return s_Vector0Dot5And0;            }            else if (IsRightTop(minAnchor, maxAnchor))            {                chartX = -width;                chartY = -height;                return s_Vector1And1;            }            else if (IsRightCenter(minAnchor, maxAnchor))            {                chartX = -width;                chartY = -height / 2;                return s_Vector1And0Dot5;            }            else if (IsRightBottom(minAnchor, maxAnchor))            {                chartX = -width;                chartY = 0;                return s_Vector1And0;            }            else if (IsStretchTop(minAnchor, maxAnchor))            {                chartX = -width / 2;                chartY = -height;                return s_Vector0Dot5And1;            }            else if (IsStretchMiddle(minAnchor, maxAnchor))            {                chartX = -width / 2;                chartY = -height / 2;                return s_Vector0Dot5And0Dot5;            }            else if (IsStretchBottom(minAnchor, maxAnchor))            {                chartX = -width / 2;                chartY = 0;                return s_Vector0Dot5And0;            }            else if (IsStretchLeft(minAnchor, maxAnchor))            {                chartX = 0;                chartY = -height / 2;                return s_Vector0And0Dot5;            }            else if (IsStretchCenter(minAnchor, maxAnchor))            {                chartX = -width / 2;                chartY = -height / 2;                return s_Vector0Dot5And0Dot5;            }            else if (IsStretchRight(minAnchor, maxAnchor))            {                chartX = -width;                chartY = -height / 2;                return s_Vector1And0Dot5;            }            else if (IsStretchStrech(minAnchor, maxAnchor))            {                chartX = -width / 2;                chartY = -height / 2;                return s_Vector0Dot5And0Dot5;            }            chartX = 0;            chartY = 0;            return Vector2.zero;        }        private static bool IsLeftTop(Vector2 minAnchor, Vector2 maxAnchor)        {            return minAnchor == s_Vector0And1 && maxAnchor == s_Vector0And1;        }        private static bool IsLeftCenter(Vector2 minAnchor, Vector2 maxAnchor)        {            return minAnchor == s_Vector0And0Dot5 && maxAnchor == s_Vector0And0Dot5;        }        private static bool IsLeftBottom(Vector2 minAnchor, Vector2 maxAnchor)        {            return minAnchor == Vector2.zero && maxAnchor == Vector2.zero;        }        private static bool IsCenterTop(Vector2 minAnchor, Vector2 maxAnchor)        {            return minAnchor == s_Vector0Dot5And1 && maxAnchor == s_Vector0Dot5And1;        }        private static bool IsCenterCenter(Vector2 minAnchor, Vector2 maxAnchor)        {            return minAnchor == s_Vector0Dot5And0Dot5 && maxAnchor == s_Vector0Dot5And0Dot5;        }        private static bool IsCenterBottom(Vector2 minAnchor, Vector2 maxAnchor)        {            return minAnchor == s_Vector0Dot5And0 && maxAnchor == s_Vector0Dot5And0;        }        private static bool IsRightTop(Vector2 minAnchor, Vector2 maxAnchor)        {            return minAnchor == s_Vector1And1 && maxAnchor == s_Vector1And1;        }        private static bool IsRightCenter(Vector2 minAnchor, Vector2 maxAnchor)        {            return minAnchor == s_Vector1And0Dot5 && maxAnchor == s_Vector1And0Dot5;        }        private static bool IsRightBottom(Vector2 minAnchor, Vector2 maxAnchor)        {            return minAnchor == s_Vector1And0 && maxAnchor == s_Vector1And0;        }        private static bool IsStretchTop(Vector2 minAnchor, Vector2 maxAnchor)        {            return minAnchor == s_Vector0And1 && maxAnchor == s_Vector1And1;        }        private static bool IsStretchMiddle(Vector2 minAnchor, Vector2 maxAnchor)        {            return minAnchor == s_Vector0And0Dot5 && maxAnchor == s_Vector1And0Dot5;        }        private static bool IsStretchBottom(Vector2 minAnchor, Vector2 maxAnchor)        {            return minAnchor == s_Vector0And0 && maxAnchor == s_Vector1And0;        }        private static bool IsStretchLeft(Vector2 minAnchor, Vector2 maxAnchor)        {            return minAnchor == s_Vector0And0 && maxAnchor == s_Vector0And1;        }        private static bool IsStretchCenter(Vector2 minAnchor, Vector2 maxAnchor)        {            return minAnchor == s_Vector0Dot5And0 && maxAnchor == s_Vector0Dot5And1;        }        private static bool IsStretchRight(Vector2 minAnchor, Vector2 maxAnchor)        {            return minAnchor == s_Vector1And0 && maxAnchor == s_Vector1And1;        }        private static bool IsStretchStrech(Vector2 minAnchor, Vector2 maxAnchor)        {            return minAnchor == s_Vector0And0 && maxAnchor == s_Vector1And1;        }        public static bool IsStretchPivot(RectTransform rt)        {            return IsStretchTop(rt.anchorMin, rt.anchorMax) ||                IsStretchMiddle(rt.anchorMin, rt.anchorMax) ||                IsStretchBottom(rt.anchorMin, rt.anchorMax) ||                IsStretchLeft(rt.anchorMin, rt.anchorMax) ||                IsStretchCenter(rt.anchorMin, rt.anchorMax) ||                IsStretchRight(rt.anchorMin, rt.anchorMax) ||                IsStretchStrech(rt.anchorMin, rt.anchorMax);        }        public static bool IsFixedWidthHeight(RectTransform rt)        {            return IsLeftTop(rt.anchorMin, rt.anchorMax) ||                IsLeftCenter(rt.anchorMin, rt.anchorMax) ||                IsLeftBottom(rt.anchorMin, rt.anchorMax) ||                IsCenterTop(rt.anchorMin, rt.anchorMax) ||                IsCenterCenter(rt.anchorMin, rt.anchorMax) ||                IsCenterBottom(rt.anchorMin, rt.anchorMax) ||                IsRightTop(rt.anchorMin, rt.anchorMax) ||                IsRightCenter(rt.anchorMin, rt.anchorMax) ||                IsRightBottom(rt.anchorMin, rt.anchorMax);        }    }}
 |