public Mesh CopyMesh(Mesh original)
{
Mesh mesh = new Mesh();
// Copy Verts
Vector3[] verts = new Vector3[original.vertices.Length];
original.vertices.CopyTo(verts, 0);
mesh.vertices = verts;
// Copy UV
Vector2[] uv = new Vector2[original.uv.Length];
original.uv.CopyTo(uv, 0);
mesh.uv = uv;
// Copy UV1
Vector2[] uv1 = new Vector2[original.uv1.Length];
original.uv1.CopyTo(uv1, 0);
mesh.uv1 = uv1;
// Copy UV2
Vector2[] uv2 = new Vector2[original.uv2.Length];
original.uv2.CopyTo(uv2, 0);
mesh.uv2 = uv2;
// Copy Normals
Vector3[] norms = new Vector3[original.normals.Length];
original.normals.CopyTo(norms, 0);
mesh.normals = norms;
// Copy Tangents
Vector4[] tans = new Vector4[original.tangents.Length];
original.tangents.CopyTo(tans, 0);
mesh.tangents = tans;
// Copy Colors
Color[] cols = new Color[original.colors.Length];
original.colors.CopyTo(cols, 0);
mesh.colors = cols;
// Triangles (sub meshes)
mesh.subMeshCount = original.subMeshCount;
for (int i = 0; i < original.subMeshCount; i++)
{
int[] subTris = original.GetTriangles(i);
int[] triangles = new int[subTris.Length];
subTris.CopyTo(triangles, 0);
mesh.SetTriangles(subTris, i);
}
mesh.RecalculateBounds();
return mesh;
}