public static Mesh TriangleFan(Vector3 center, float radius, int segments, bool inverted = false) { var points = Polygon.Circle(radius, segments); if (inverted) { points.Reverse(); } var vertices = new Vector3[points.Count]; var uv = new Vector2[points.Count]; for (int i = 0; i < points.Count; i++) { vertices[i] = center + new Vector3(points[i].x, points[i].y); uv[i] = new Vector2(points[i].x / radius, points[i].y / radius); } var triangles = new List <int>(); for (int i = 1; i < vertices.Length; i++) { triangles.Add(0); triangles.Add(i); triangles.Add(i - 1); } var mesh = new Mesh { vertices = vertices, triangles = triangles.ToArray(), uv = uv }; mesh.RecalculateNormals(); return(mesh); }
public static void DrawCircle(Vector3 center, Vector3 radius, Color color, float duration, bool depthTest) { var polygon = Polygon.Circle(radius.magnitude) + center; DrawPolygon(polygon, color, duration, depthTest); }