diff options
Diffstat (limited to 'Assets/Test/UIEffect/Program/Enums/EffectArea.cs')
-rw-r--r-- | Assets/Test/UIEffect/Program/Enums/EffectArea.cs | 116 |
1 files changed, 0 insertions, 116 deletions
diff --git a/Assets/Test/UIEffect/Program/Enums/EffectArea.cs b/Assets/Test/UIEffect/Program/Enums/EffectArea.cs deleted file mode 100644 index 4e5fa28..0000000 --- a/Assets/Test/UIEffect/Program/Enums/EffectArea.cs +++ /dev/null @@ -1,116 +0,0 @@ -using UnityEngine; -using UnityEngine.UI; - -namespace Coffee.UIEffects -{ - /// <summary> - /// Area for effect. - /// </summary> - public enum EffectArea - { - RectTransform, - Fit, - Character, - } - - public static class EffectAreaExtensions - { - static readonly Rect rectForCharacter = new Rect(0, 0, 1, 1); - static readonly Vector2[] splitedCharacterPosition = {Vector2.up, Vector2.one, Vector2.right, Vector2.zero}; - - /// <summary> - /// Gets effect for area. - /// </summary> - public static Rect GetEffectArea(this EffectArea area, VertexHelper vh, Rect rectangle, float aspectRatio = -1) - { - Rect rect = default(Rect); - switch (area) - { - case EffectArea.RectTransform: - rect = rectangle; - break; - case EffectArea.Character: - rect = rectForCharacter; - break; - case EffectArea.Fit: - // Fit to contents. - UIVertex vertex = default(UIVertex); - float xMin = float.MaxValue; - float yMin = float.MaxValue; - float xMax = float.MinValue; - float yMax = float.MinValue; - for (int i = 0; i < vh.currentVertCount; i++) - { - vh.PopulateUIVertex(ref vertex, i); - float x = vertex.position.x; - float y = vertex.position.y; - xMin = Mathf.Min(xMin, x); - yMin = Mathf.Min(yMin, y); - xMax = Mathf.Max(xMax, x); - yMax = Mathf.Max(yMax, y); - } - - rect.Set(xMin, yMin, xMax - xMin, yMax - yMin); - break; - default: - rect = rectangle; - break; - } - - - if (0 < aspectRatio) - { - if (rect.width < rect.height) - { - rect.width = rect.height * aspectRatio; - } - else - { - rect.height = rect.width / aspectRatio; - } - } - - return rect; - } - - /// <summary> - /// Gets position factor for area. - /// </summary> - public static void GetPositionFactor(this EffectArea area, int index, Rect rect, Vector2 position, bool isText, - bool isTMPro, out float x, out float y) - { - if (isText && area == EffectArea.Character) - { - index = isTMPro ? (index + 3) % 4 : index % 4; - x = splitedCharacterPosition[index].x; - y = splitedCharacterPosition[index].y; - } - else if (area == EffectArea.Fit) - { - x = Mathf.Clamp01((position.x - rect.xMin) / rect.width); - y = Mathf.Clamp01((position.y - rect.yMin) / rect.height); - } - else - { - x = Mathf.Clamp01(position.x / rect.width + 0.5f); - y = Mathf.Clamp01(position.y / rect.height + 0.5f); - } - } - - /// <summary> - /// Normalize vertex position by local matrix. - /// </summary> - public static void GetNormalizedFactor(this EffectArea area, int index, Matrix2x3 matrix, Vector2 position, - bool isText, out Vector2 nomalizedPos) - { - if (isText && area == EffectArea.Character) - { - nomalizedPos = matrix * splitedCharacterPosition[(index + 3) % 4]; - } - else - { - nomalizedPos = matrix * position; - } - } - } -} |