Elin Decompiled Documentation EA 23.102 Nightly
Loading...
Searching...
No Matches
PrimitiveUI.PrimitiveCanvas.PUIUtils Class Reference

Static Public Member Functions

static float Cross2D (Vector2 lhs, Vector2 rhs)
 
static float GetTriangleArea (Vector2 tri0, Vector2 tri1, Vector2 tri2)
 
static bool PointInTriangle (Vector2 point, Vector2 tri0, Vector2 tri1, Vector2 tri2, float triAarea)
 
static ? Vector2 GetLineIntersection (Vector2 line1P1, Vector2 line1P2, Vector2 line2P1, Vector2 line2P2)
 
static Vector2[] GetLinePoints (Vector2 point1, Vector2 point2, float strokeThickness, float aspectRatio)
 
static Vector2[] GetPathPoints (Vector2[] points, bool closePath, float strokeThickness, float aspectRatio)
 

Detailed Description

Definition at line 133 of file PrimitiveCanvas.cs.

Member Function Documentation

◆ Cross2D()

static float PrimitiveUI.PrimitiveCanvas.PUIUtils.Cross2D ( Vector2  lhs,
Vector2  rhs 
)
inlinestatic

Definition at line 135 of file PrimitiveCanvas.cs.

136 {
137 return lhs.x * rhs.y - lhs.y * rhs.x;
138 }

◆ GetLineIntersection()

static ? Vector2 PrimitiveUI.PrimitiveCanvas.PUIUtils.GetLineIntersection ( Vector2  line1P1,
Vector2  line1P2,
Vector2  line2P1,
Vector2  line2P2 
)
inlinestatic

Definition at line 156 of file PrimitiveCanvas.cs.

157 {
158 float num = (line2P2.y - line2P1.y) * (line1P2.x - line1P1.x) - (line2P2.x - line2P1.x) * (line1P2.y - line1P1.y);
159 float num2 = (line2P2.x - line2P1.x) * (line1P1.y - line2P1.y) - (line2P2.y - line2P1.y) * (line1P1.x - line2P1.x);
160 float f = (line1P2.x - line1P1.x) * (line1P1.y - line2P1.y) - (line1P2.y - line1P1.y) * (line1P1.x - line2P1.x);
161 if (Mathf.Abs(num2) < Mathf.Epsilon && Mathf.Abs(f) < Mathf.Epsilon && Mathf.Abs(num) < Mathf.Epsilon)
162 {
163 return new Vector2((line1P1.x + line1P2.x) * 0.5f, (line1P1.y + line1P2.y) * 0.5f);
164 }
165 if (Mathf.Abs(num) < Mathf.Epsilon)
166 {
167 return null;
168 }
169 float num3 = num2 / num;
170 return new Vector2(line1P1.x + num3 * (line1P2.x - line1P1.x), line1P1.y + num3 * (line1P2.y - line1P1.y));
171 }

Referenced by PrimitiveUI.PrimitiveCanvas.PUIUtils.GetPathPoints().

◆ GetLinePoints()

static Vector2[] PrimitiveUI.PrimitiveCanvas.PUIUtils.GetLinePoints ( Vector2  point1,
Vector2  point2,
float  strokeThickness,
float  aspectRatio 
)
inlinestatic

Definition at line 173 of file PrimitiveCanvas.cs.

174 {
175 Vector2 vector = new Vector2(strokeThickness, strokeThickness * aspectRatio);
176 Vector2 normalized = (point2 - point1).normalized;
177 Vector2 vector2 = new Vector2((0f - normalized.y) * vector.x, normalized.x * vector.y);
178 return new Vector2[4]
179 {
180 point1 - vector2,
181 point1 + vector2,
182 point2 + vector2,
183 point2 - vector2
184 };
185 }

References PrimitiveUI.PrimitiveCanvas.aspectRatio.

Referenced by PrimitiveUI.PrimitiveCanvas.DrawLine(), and PrimitiveUI.PrimitiveCanvas.OnRectTransformDimensionsChange().

◆ GetPathPoints()

static Vector2[] PrimitiveUI.PrimitiveCanvas.PUIUtils.GetPathPoints ( Vector2[]  points,
bool  closePath,
float  strokeThickness,
float  aspectRatio 
)
inlinestatic

Definition at line 187 of file PrimitiveCanvas.cs.

188 {
189 Vector2 vector = new Vector2(strokeThickness, strokeThickness * aspectRatio);
190 Vector2 normalized = (points[1] - points[0]).normalized;
191 Vector2 vector2 = new Vector2((0f - normalized.y) * vector.x, normalized.x * vector.y);
192 List<Vector2> list = new List<Vector2>();
193 list.Add(points[0] - vector2);
194 list.Add(points[0] + vector2);
195 list.Add(points[1] + vector2);
196 list.Add(points[1] - vector2);
197 for (int i = 1; i < points.Length - 1; i++)
198 {
199 normalized = (points[i + 1] - points[i]).normalized;
200 vector2 = new Vector2((0f - normalized.y) * vector.x, normalized.x * vector.y);
201 list.Add(points[i] - vector2);
202 list.Add(points[i] + vector2);
203 list.Add(points[i + 1] + vector2);
204 list.Add(points[i + 1] - vector2);
205 Vector2? lineIntersection = GetLineIntersection(list[list.Count - 8], list[list.Count - 5], list[list.Count - 4], list[list.Count - 1]);
206 Vector2? lineIntersection2 = GetLineIntersection(list[list.Count - 7], list[list.Count - 6], list[list.Count - 3], list[list.Count - 2]);
207 if (lineIntersection.HasValue)
208 {
209 Vector2 value = lineIntersection.Value;
210 int index = list.Count - 5;
211 Vector2 value2 = (list[list.Count - 4] = value);
212 list[index] = value2;
213 }
214 if (lineIntersection2.HasValue)
215 {
216 Vector2 value = lineIntersection2.Value;
217 int index2 = list.Count - 6;
218 Vector2 value2 = (list[list.Count - 3] = value);
219 list[index2] = value2;
220 }
221 }
222 if (closePath)
223 {
224 normalized = (points[^1] - points[0]).normalized;
225 vector2 = new Vector2((0f - normalized.y) * vector.x, normalized.x * vector.y);
226 list.Add(points[^1] - vector2);
227 list.Add(points[^1] + vector2);
228 list.Add(points[0] + vector2);
229 list.Add(points[0] - vector2);
230 Vector2? lineIntersection = GetLineIntersection(list[list.Count - 8], list[list.Count - 5], list[list.Count - 3], list[list.Count - 2]);
231 Vector2? lineIntersection2 = GetLineIntersection(list[list.Count - 7], list[list.Count - 6], list[list.Count - 4], list[list.Count - 1]);
232 if (lineIntersection.HasValue)
233 {
234 Vector2 value = lineIntersection.Value;
235 int index3 = list.Count - 5;
236 Vector2 value2 = (list[list.Count - 3] = value);
237 list[index3] = value2;
238 }
239 if (lineIntersection2.HasValue)
240 {
241 Vector2 value = lineIntersection2.Value;
242 int index4 = list.Count - 6;
243 Vector2 value2 = (list[list.Count - 4] = value);
244 list[index4] = value2;
245 }
246 lineIntersection = GetLineIntersection(list[3], list[0], list[list.Count - 3], list[list.Count - 2]);
247 lineIntersection2 = GetLineIntersection(list[2], list[1], list[list.Count - 4], list[list.Count - 1]);
248 if (lineIntersection.HasValue)
249 {
250 Vector2 value = lineIntersection.Value;
251 Vector2 value2 = (list[list.Count - 2] = value);
252 list[0] = value2;
253 }
254 if (lineIntersection2.HasValue)
255 {
256 Vector2 value = lineIntersection2.Value;
257 Vector2 value2 = (list[list.Count - 1] = value);
258 list[1] = value2;
259 }
260 }
261 return list.ToArray();
262 }
static ? Vector2 GetLineIntersection(Vector2 line1P1, Vector2 line1P2, Vector2 line2P1, Vector2 line2P2)

References PrimitiveUI.PrimitiveCanvas.aspectRatio, and PrimitiveUI.PrimitiveCanvas.PUIUtils.GetLineIntersection().

Referenced by PrimitiveUI.PrimitiveCanvas.DrawPath(), and PrimitiveUI.PrimitiveCanvas.OnRectTransformDimensionsChange().

◆ GetTriangleArea()

static float PrimitiveUI.PrimitiveCanvas.PUIUtils.GetTriangleArea ( Vector2  tri0,
Vector2  tri1,
Vector2  tri2 
)
inlinestatic

Definition at line 140 of file PrimitiveCanvas.cs.

141 {
142 return Mathf.Abs((0f - tri1.y) * tri2.x + tri0.y * (0f - tri1.x + tri2.x) + tri0.x * (tri1.y - tri2.y) + tri1.x * tri2.y);
143 }

Referenced by PrimitiveUI.PrimitiveCanvas.DrawPolygon().

◆ PointInTriangle()

static bool PrimitiveUI.PrimitiveCanvas.PUIUtils.PointInTriangle ( Vector2  point,
Vector2  tri0,
Vector2  tri1,
Vector2  tri2,
float  triAarea 
)
inlinestatic

Definition at line 145 of file PrimitiveCanvas.cs.

146 {
147 float num = tri0.y * tri2.x - tri0.x * tri2.y + (tri2.y - tri0.y) * point.x + (tri0.x - tri2.x) * point.y;
148 float num2 = tri0.x * tri1.y - tri0.y * tri1.x + (tri0.y - tri1.y) * point.x + (tri1.x - tri0.x) * point.y;
149 if (num <= 0f || num2 <= 0f)
150 {
151 return false;
152 }
153 return num + num2 < triAarea;
154 }

Referenced by PrimitiveUI.PrimitiveCanvas.DrawPolygon().


The documentation for this class was generated from the following file: