BoxVolume.CopyMesh C# (CSharp) Method

CopyMesh() public method

public CopyMesh ( Mesh original ) : Mesh
original Mesh
return Mesh
    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;
    }