public void CreateVertex(Vector2 position, int edgeIndex) { Debug.Assert(spriteMeshData != null, "Assert failed. Expected: spriteMeshData != null. Actual: spriteMeshData == null"); spriteMeshData.AddVertex(position, default(BoneWeight)); if (edgeIndex != -1) { Edge edge = spriteMeshData.edges[edgeIndex]; RemoveEdge(edge); CreateEdge(edge.index1, spriteMeshData.vertexCount - 1); CreateEdge(edge.index2, spriteMeshData.vertexCount - 1); } }
public void DebugMesh(ISpriteMeshData spriteMeshData, Vector2[] vertices, Edge[] edges, Vector2[] controlPoints, Edge[] bones, int[] pins) { var boneSamples = SampleBones(controlPoints, bones, kNumSamples); var verticesList = new List <Vector2>(vertices.Length + controlPoints.Length + boneSamples.Length); var edgesList = new List <Edge>(edges); var indicesList = new List <int>(); verticesList.AddRange(vertices); verticesList.AddRange(controlPoints); verticesList.AddRange(boneSamples); TriangulationUtility.Tessellate(kMinAngle, 0f, kMeshAreaFactor, kLargestTriangleAreaFactor, 0, verticesList, edgesList, indicesList); spriteMeshData.Clear(); verticesList.ForEach(v => spriteMeshData.AddVertex(v, new BoneWeight())); spriteMeshData.edges.AddRange(edgesList); spriteMeshData.indices.AddRange(indicesList); }