summaryrefslogtreecommitdiff
path: root/Assets/Scripts/Enums
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2021-04-07 21:33:14 +0800
committerchai <chaifix@163.com>2021-04-07 21:33:14 +0800
commitc47b92e92cf33ae8bf2f38929e137294397e4735 (patch)
treec67ae3419eaf15e84f1679186e107f598de33978 /Assets/Scripts/Enums
Diffstat (limited to 'Assets/Scripts/Enums')
-rw-r--r--Assets/Scripts/Enums/BlurMode.cs13
-rw-r--r--Assets/Scripts/Enums/BlurMode.cs.meta12
-rw-r--r--Assets/Scripts/Enums/ColorMode.cs13
-rw-r--r--Assets/Scripts/Enums/ColorMode.cs.meta12
-rw-r--r--Assets/Scripts/Enums/EffectArea.cs116
-rw-r--r--Assets/Scripts/Enums/EffectArea.cs.meta12
-rw-r--r--Assets/Scripts/Enums/EffectMode.cs14
-rw-r--r--Assets/Scripts/Enums/EffectMode.cs.meta12
-rw-r--r--Assets/Scripts/Enums/ShadowStyle.cs14
-rw-r--r--Assets/Scripts/Enums/ShadowStyle.cs.meta12
10 files changed, 230 insertions, 0 deletions
diff --git a/Assets/Scripts/Enums/BlurMode.cs b/Assets/Scripts/Enums/BlurMode.cs
new file mode 100644
index 0000000..e3ef417
--- /dev/null
+++ b/Assets/Scripts/Enums/BlurMode.cs
@@ -0,0 +1,13 @@
+namespace Coffee.UIEffects
+{
+ /// <summary>
+ /// Blur effect mode.
+ /// </summary>
+ public enum BlurMode
+ {
+ None = 0,
+ FastBlur = 1,
+ MediumBlur = 2,
+ DetailBlur = 3,
+ }
+}
diff --git a/Assets/Scripts/Enums/BlurMode.cs.meta b/Assets/Scripts/Enums/BlurMode.cs.meta
new file mode 100644
index 0000000..504b62a
--- /dev/null
+++ b/Assets/Scripts/Enums/BlurMode.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 5645838b01af8764d8f381f04b62b9a2
+timeCreated: 1528296875
+licenseType: Free
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Enums/ColorMode.cs b/Assets/Scripts/Enums/ColorMode.cs
new file mode 100644
index 0000000..567624b
--- /dev/null
+++ b/Assets/Scripts/Enums/ColorMode.cs
@@ -0,0 +1,13 @@
+namespace Coffee.UIEffects
+{
+ /// <summary>
+ /// Color effect mode.
+ /// </summary>
+ public enum ColorMode
+ {
+ Multiply = 0,
+ Fill = 1,
+ Add = 2,
+ Subtract = 3,
+ }
+}
diff --git a/Assets/Scripts/Enums/ColorMode.cs.meta b/Assets/Scripts/Enums/ColorMode.cs.meta
new file mode 100644
index 0000000..ba60cab
--- /dev/null
+++ b/Assets/Scripts/Enums/ColorMode.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: e6ba1e487e0a19644afde2bd5531bd04
+timeCreated: 1528296875
+licenseType: Free
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Enums/EffectArea.cs b/Assets/Scripts/Enums/EffectArea.cs
new file mode 100644
index 0000000..4e5fa28
--- /dev/null
+++ b/Assets/Scripts/Enums/EffectArea.cs
@@ -0,0 +1,116 @@
+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;
+ }
+ }
+ }
+}
diff --git a/Assets/Scripts/Enums/EffectArea.cs.meta b/Assets/Scripts/Enums/EffectArea.cs.meta
new file mode 100644
index 0000000..4bc2fa4
--- /dev/null
+++ b/Assets/Scripts/Enums/EffectArea.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: a78f43d1382a048a99411472ca714e1b
+timeCreated: 1528636556
+licenseType: Pro
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Enums/EffectMode.cs b/Assets/Scripts/Enums/EffectMode.cs
new file mode 100644
index 0000000..84f3eb4
--- /dev/null
+++ b/Assets/Scripts/Enums/EffectMode.cs
@@ -0,0 +1,14 @@
+namespace Coffee.UIEffects
+{
+ /// <summary>
+ /// Effect mode.
+ /// </summary>
+ public enum EffectMode
+ {
+ None = 0,
+ Grayscale = 1,
+ Sepia = 2,
+ Nega = 3,
+ Pixel = 4,
+ }
+}
diff --git a/Assets/Scripts/Enums/EffectMode.cs.meta b/Assets/Scripts/Enums/EffectMode.cs.meta
new file mode 100644
index 0000000..76773db
--- /dev/null
+++ b/Assets/Scripts/Enums/EffectMode.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 092769547c242d74cbad96631a00963f
+timeCreated: 1528296875
+licenseType: Free
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Enums/ShadowStyle.cs b/Assets/Scripts/Enums/ShadowStyle.cs
new file mode 100644
index 0000000..1cfe058
--- /dev/null
+++ b/Assets/Scripts/Enums/ShadowStyle.cs
@@ -0,0 +1,14 @@
+namespace Coffee.UIEffects
+{
+ /// <summary>
+ /// Shadow effect style.
+ /// </summary>
+ public enum ShadowStyle
+ {
+ None = 0,
+ Shadow,
+ Outline,
+ Outline8,
+ Shadow3,
+ }
+}
diff --git a/Assets/Scripts/Enums/ShadowStyle.cs.meta b/Assets/Scripts/Enums/ShadowStyle.cs.meta
new file mode 100644
index 0000000..337e823
--- /dev/null
+++ b/Assets/Scripts/Enums/ShadowStyle.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: b0eda5bf10146491c9cfe6a31c66f9a7
+timeCreated: 1528296875
+licenseType: Free
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant: