6 [AddComponentMenu(
"UI/Extensions/Primitives/UI Polygon")]
9 public bool fill =
true;
17 private float size = 0;
27 public void DrawPolygon(
int _sides,
float[] _VerticesDistances)
34 public void DrawPolygon(
int _sides,
float[] _VerticesDistances,
float _rotation)
43 size = rectTransform.rect.width;
44 if (rectTransform.rect.width > rectTransform.rect.height)
45 size = rectTransform.rect.height;
47 size = rectTransform.rect.width;
55 Vector2 prevX = Vector2.zero;
56 Vector2 prevY = Vector2.zero;
57 Vector2 uv0 =
new Vector2(0, 0);
58 Vector2 uv1 =
new Vector2(0, 1);
59 Vector2 uv2 =
new Vector2(1, 1);
60 Vector2 uv3 =
new Vector2(1, 0);
65 float degrees = 360f /
sides;
66 int vertices =
sides + 1;
74 for (
int i = 0; i < vertices; i++)
78 float rad = Mathf.Deg2Rad * (i * degrees +
rotation);
79 float c = Mathf.Cos(rad);
80 float s = Mathf.Sin(rad);
81 uv0 =
new Vector2(0, 1);
82 uv1 =
new Vector2(1, 1);
83 uv2 =
new Vector2(1, 0);
84 uv3 =
new Vector2(0, 0);
86 pos1 =
new Vector2(outer * c, outer * s);
94 pos2 =
new Vector2(inner * c, inner * s);
99 vh.AddUIVertexQuad(
SetVbo(
new[] { pos0, pos1, pos2, pos3 },
new[] { uv0, uv1, uv2, uv3 }));
void DrawPolygon(int _sides)
override void OnPopulateMesh(VertexHelper vh)
float[] VerticesDistances
void DrawPolygon(int _sides, float[] _VerticesDistances, float _rotation)
void DrawPolygon(int _sides, float[] _VerticesDistances)
UIVertex[] SetVbo(Vector2[] vertices, Vector2[] uvs)
Credit Erdener Gonenc - @PixelEnvision.