X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=src%2Fmesh.c;h=1811bb6112e89480c05d6adda595395cb699bcf3;hb=0492cd9f104920e15a6ad3e7751bfe68b3bdaca7;hp=9f208a44630f4d30133efac1d768d7b3a5ec11b1;hpb=2562604c2c0de321b67317f315a52335a60b708f;p=vrlugburz diff --git a/src/mesh.c b/src/mesh.c index 9f208a4..1811bb6 100644 --- a/src/mesh.c +++ b/src/mesh.c @@ -16,6 +16,7 @@ void init_mesh(struct mesh *m) void destroy_mesh(struct mesh *m) { + free(m->name); free(m->varr); free(m->iarr); @@ -29,9 +30,11 @@ void destroy_mesh(struct mesh *m) void clear_mesh(struct mesh *m) { + free(m->name); free(m->varr); free(m->iarr); + m->name = 0; m->varr = 0; m->iarr = 0; m->num_verts = m->max_verts = m->num_idx = m->max_idx = 0; @@ -43,6 +46,10 @@ int copy_mesh(struct mesh *dest, struct mesh *src) { init_mesh(dest); + if(src->name) { + dest->name = strdup(src->name); + } + if(src->max_verts && !(dest->varr = malloc(src->max_verts * sizeof *dest->varr))) { return -1; } @@ -372,8 +379,8 @@ void xform_mesh(struct mesh *mesh, float *mat) mesh->bbvalid = 0; for(i=0; inum_verts; i++) { - cgm_vmul_v3m4(&mesh->varr[i].pos, mat); - cgm_vmul_v3m3(&mesh->varr[i].norm, mat); - cgm_vmul_v3m3(&mesh->varr[i].tang, mat); + cgm_vmul_m4v3(&mesh->varr[i].pos, mat); + cgm_vmul_m3v3(&mesh->varr[i].norm, mat); + cgm_vmul_m3v3(&mesh->varr[i].tang, mat); } }