void CreateMesh(List <Vector2> stroke) { var go = new GameObject(); go.name = "Polygon"; go.transform.parent = this.transform; go.transform.localRotation = Quaternion.Euler(Vector3.zero); var mesh = new Mesh(); mesh.vertices = PurifyStroke(stroke).Select(v2 => new Vector3(v2.x, v2.y, -(polygonCount + 1) / 100.0f)).ToArray(); var indices = new List <int>(); Triangulate.EarCut(mesh.vertices, indices); mesh.SetIndices(indices.ToArray(), MeshTopology.Triangles, 0); var renderer = go.AddComponent <MeshRenderer>(); renderer.material = BrushMaterial; renderer.material.color = palette[currentBrush.PaletteIndex]; var filter = go.AddComponent <MeshFilter>(); filter.mesh = mesh; this.mesh = mesh; polygonCount++; }
void UpdateMesh(List <Vector2> stroke) { mesh.vertices = PurifyStroke(stroke).Select(v2 => new Vector3(v2.x, v2.y, -(polygonCount + 1) / 100.0f)).ToArray(); var indices = new List <int>(); Triangulate.EarCut(mesh.vertices, indices); mesh.SetIndices(indices.ToArray(), MeshTopology.Triangles, 0); }