X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=dosdemo;a=blobdiff_plain;f=src%2Fmesh.c;h=0e8d869312be48dd74ef09c03d8bdd24b557fb63;hp=88c6edc6221fa97a08882d82e1e55d83bc13b398;hb=3eeca1cc95bdeaf3f6be3fd6064a065e39c08eda;hpb=c912e59b898fe1ac461a1468e4a2e1937de286d7 diff --git a/src/mesh.c b/src/mesh.c index 88c6edc..0e8d869 100644 --- a/src/mesh.c +++ b/src/mesh.c @@ -17,6 +17,28 @@ void destroy_mesh(struct g3d_mesh *mesh) free(mesh->iarr); } +int copy_mesh(struct g3d_mesh *dest, struct g3d_mesh *src) +{ + dest->prim = src->prim; + if(src->varr) { + if(!(dest->varr = malloc(src->vcount * sizeof *src->varr))) { + return -1; + } + memcpy(dest->varr, src->varr, src->vcount * sizeof *src->varr); + } + dest->vcount = src->vcount; + if(src->iarr) { + if(!(dest->iarr = malloc(src->icount * sizeof *src->iarr))) { + free(dest->varr); + dest->varr = 0; + return -1; + } + memcpy(dest->iarr, src->iarr, src->icount * sizeof *src->iarr); + } + dest->icount = src->icount; + return 0; +} + static struct { int prim; struct g3d_vertex *varr;