public void OnEndPolygon() { // First add vertices and indices for extrusions. outputMeshData.AddElements(extrusionVertices, extrusionIndices, options.Material); // Then tesselate polygon interior and add vertices and indices. var earcut = new Earcut(); earcut.Tesselate(coordinates.ToArray(), rings.ToArray()); var vertices = new List <Vector3>(earcut.Vertices.Length / 2); for (int i = 0; i < earcut.Vertices.Length; i += 2) { var v = new Vector3(earcut.Vertices[i], options.MaxHeight, earcut.Vertices[i + 1]); v = this.transform.MultiplyPoint(v); vertices.Add(v); } outputMeshData.AddElements(vertices, earcut.Indices, options.Material); earcut.Release(); }
public void OnEndPolygon() { // First add vertices and indices for extrusions. outputMeshData.AddElements(extrusionVertices, extrusionUVs, extrusionIndices, options.Material); if (coordinates.Count > 0) { // Then tesselate polygon interior and add vertices and indices. var indices = Mapbox.EarcutLibrary.Earcut(coordinates, holes, 2); var vertices = new List <Vector3>(coordinates.Count / 2); List <Vector2> uvs; if (polygonUVs.Count > 0) { uvs = polygonUVs; } else { uvs = new List <Vector2>(coordinates.Count / 2); for (int i = 0; i < coordinates.Count; i += 2) { uvs.Add(new Vector2(coordinates[i], coordinates[i + 1])); } } for (int i = 0; i < coordinates.Count; i += 2) { var v = new Vector3(coordinates[i], options.MaxHeight, coordinates[i + 1]); v = this.transform.MultiplyPoint(v); vertices.Add(v); } outputMeshData.AddElements(vertices, uvs, indices, options.Material); } }