Elin Decompiled Documentation EA 23.102 Nightly
Loading...
Searching...
No Matches
SkewEffect.cs
Go to the documentation of this file.
1using System.Collections.Generic;
2using UnityEngine;
3using UnityEngine.UI;
4
5[AddComponentMenu("UI/ToJ Effects/Skew Effect", 5)]
6[RequireComponent(typeof(Text))]
7public class SkewEffect : BaseMeshEffect
8{
9 public enum SkewMode
10 {
13 }
14
15 [SerializeField]
17
18 [SerializeField]
19 private Vector2 m_UpperLeftOffset = Vector2.zero;
20
21 [SerializeField]
22 private Vector2 m_UpperRightOffset = Vector2.zero;
23
24 [SerializeField]
25 private Vector2 m_LowerLeftOffset = Vector2.zero;
26
27 [SerializeField]
28 private Vector2 m_LowerRightOffset = Vector2.zero;
29
30 private List<UIVertex> m_Verts = new List<UIVertex>();
31
32 public Vector2 upperLeftOffset
33 {
34 get
35 {
36 return m_UpperLeftOffset;
37 }
38 set
39 {
40 m_UpperLeftOffset = value;
41 if (base.graphic != null)
42 {
43 base.graphic.SetVerticesDirty();
44 }
45 }
46 }
47
48 public Vector2 upperRightOffset
49 {
50 get
51 {
52 return m_UpperRightOffset;
53 }
54 set
55 {
56 m_UpperRightOffset = value;
57 if (base.graphic != null)
58 {
59 base.graphic.SetVerticesDirty();
60 }
61 }
62 }
63
64 public Vector2 lowerLeftOffset
65 {
66 get
67 {
68 return m_LowerLeftOffset;
69 }
70 set
71 {
72 m_LowerLeftOffset = value;
73 if (base.graphic != null)
74 {
75 base.graphic.SetVerticesDirty();
76 }
77 }
78 }
79
80 public Vector2 lowerRightOffset
81 {
82 get
83 {
84 return m_LowerRightOffset;
85 }
86 set
87 {
88 m_LowerRightOffset = value;
89 if (base.graphic != null)
90 {
91 base.graphic.SetVerticesDirty();
92 }
93 }
94 }
95
96 protected SkewEffect()
97 {
98 }
99
100 public override void ModifyMesh(VertexHelper vh)
101 {
102 if (!IsActive())
103 {
104 return;
105 }
106 vh.GetUIVertexStream(m_Verts);
107 if (m_Verts.Count == 0)
108 {
109 return;
110 }
111 Vector2 zero = Vector2.zero;
112 Vector2 zero2 = Vector2.zero;
113 if (m_SkewMode == SkewMode.FullRect)
114 {
115 Rect rect = GetComponent<RectTransform>().rect;
116 zero = new Vector2(rect.xMin, rect.yMax);
117 zero2 = new Vector2(rect.xMax, rect.yMin);
118 }
119 else
120 {
121 zero = m_Verts[0].position;
122 zero2 = m_Verts[m_Verts.Count - 1].position;
123 for (int i = 0; i < m_Verts.Count; i++)
124 {
125 if (m_Verts[i].position.x < zero.x)
126 {
127 zero.x = m_Verts[i].position.x;
128 }
129 if (m_Verts[i].position.y > zero.y)
130 {
131 zero.y = m_Verts[i].position.y;
132 }
133 if (m_Verts[i].position.x > zero2.x)
134 {
135 zero2.x = m_Verts[i].position.x;
136 }
137 if (m_Verts[i].position.y < zero2.y)
138 {
139 zero2.y = m_Verts[i].position.y;
140 }
141 }
142 }
143 float num = zero.y - zero2.y;
144 float num2 = zero2.x - zero.x;
145 for (int j = 0; j < m_Verts.Count; j++)
146 {
147 UIVertex value = m_Verts[j];
148 float num3 = (value.position.y - zero2.y) / num;
149 float num4 = 1f - num3;
150 float num5 = (zero2.x - value.position.x) / num2;
151 float num6 = 1f - num5;
152 Vector3 zero3 = Vector3.zero;
153 zero3.y = (upperLeftOffset.y * num3 + lowerLeftOffset.y * num4) * num5 + (upperRightOffset.y * num3 + lowerRightOffset.y * num4) * num6;
154 zero3.x = (upperLeftOffset.x * num5 + upperRightOffset.x * num6) * num3 + (lowerLeftOffset.x * num5 + lowerRightOffset.x * num6) * num4;
155 value.position += zero3;
156 m_Verts[j] = value;
157 }
158 vh.Clear();
159 vh.AddUIVertexTriangleStream(m_Verts);
160 }
161}
Vector2 m_LowerLeftOffset
Definition: SkewEffect.cs:25
Vector2 lowerLeftOffset
Definition: SkewEffect.cs:65
Vector2 lowerRightOffset
Definition: SkewEffect.cs:81
Vector2 m_UpperRightOffset
Definition: SkewEffect.cs:22
Vector2 upperLeftOffset
Definition: SkewEffect.cs:33
Vector2 m_LowerRightOffset
Definition: SkewEffect.cs:28
Vector2 m_UpperLeftOffset
Definition: SkewEffect.cs:19
Vector2 upperRightOffset
Definition: SkewEffect.cs:49
List< UIVertex > m_Verts
Definition: SkewEffect.cs:30
override void ModifyMesh(VertexHelper vh)
Definition: SkewEffect.cs:100
SkewMode m_SkewMode
Definition: SkewEffect.cs:16