private void RegenerateMesh(bool reverse = false) { List <bVertex> newBVertices = new List <bVertex>(); int[] newbTriangles = new int[triangles.ActiveCount * 3]; vertices.CopyActiveTo(newBVertices); Vector3[] newVertices = new Vector3[newBVertices.Count]; Vector2[] newUV = new Vector2[newBVertices.Count]; int ind = 0; foreach (bVertex v in newBVertices) { newVertices[ind] = v.vertex; newUV[ind] = v.uv; ind++; } ActiveNode <bTriangle> it = triangles.GetRootNode().nextActiveNode; ind = 0; while (!it.isRootNode) { newbTriangles[ind] = it.data.GetNode(0).activeIndex; newbTriangles[ind + 1] = it.data.GetNode(1).activeIndex; newbTriangles[ind + 2] = it.data.GetNode(2).activeIndex; it = it.nextActiveNode; ind += 3; } /* * if (!reverse) * { * targetMesh.SetVertices(newVertices); * targetMesh.SetbTriangles(newbTriangles, 0); * } * else * { * targetMesh.SetbTriangles(newbTriangles, 0); * targetMesh.SetVertices(newVertices); * } */ targetMesh.Clear(); targetMesh.vertices = newVertices; targetMesh.uv = newUV; targetMesh.triangles = newbTriangles; targetMesh.RecalculateNormals(); targetMesh.RecalculateTangents(); targetMesh.RecalculateBounds(); if (targetMeshCollider != null) { targetMeshCollider.sharedMesh = targetMesh; } }