Fix mesh merge function
This commit is contained in:
parent
698766cb92
commit
ee64fa0717
|
@ -204,17 +204,14 @@ Mesh *BKE_mesh_merge_verts(Mesh *mesh,
|
|||
const int totedge = mesh->totedge;
|
||||
const int totloop = mesh->totloop;
|
||||
const int totpoly = mesh->totpoly;
|
||||
const float(*src_positions)[3] = BKE_mesh_positions(mesh);
|
||||
const MEdge *src_edges = BKE_mesh_edges(mesh);
|
||||
const MPoly *src_polys = BKE_mesh_polys(mesh);
|
||||
const MLoop *src_loops = BKE_mesh_loops(mesh);
|
||||
|
||||
const int totvert_final = totvert - tot_vtargetmap;
|
||||
|
||||
float(*positions)[3] = MEM_malloc_arrayN(totvert_final, sizeof(float[3]), __func__);
|
||||
int *oldv = MEM_malloc_arrayN(totvert_final, sizeof(*oldv), __func__);
|
||||
int *newv = MEM_malloc_arrayN(totvert, sizeof(*newv), __func__);
|
||||
STACK_DECLARE(positions);
|
||||
STACK_DECLARE(oldv);
|
||||
|
||||
/* NOTE: create (totedge + totloop) elements because partially invalid polys due to merge may
|
||||
|
@ -265,7 +262,6 @@ Mesh *BKE_mesh_merge_verts(Mesh *mesh,
|
|||
for (i = 0; i < totvert; i++) {
|
||||
if (vtargetmap[i] == -1) {
|
||||
STACK_PUSH(oldv, i);
|
||||
copy_v3_v3(positions[i], src_positions[c]);
|
||||
newv[i] = c++;
|
||||
}
|
||||
else {
|
||||
|
@ -606,10 +602,6 @@ Mesh *BKE_mesh_merge_verts(Mesh *mesh,
|
|||
}
|
||||
|
||||
/* Copy over data. #CustomData_add_layer can do this, need to look it up. */
|
||||
if (totvert_final > 0) {
|
||||
memcpy(
|
||||
BKE_mesh_positions_for_write(result), positions, sizeof(float[3]) * STACK_SIZE(positions));
|
||||
}
|
||||
if (STACK_SIZE(medge)) {
|
||||
memcpy(BKE_mesh_edges_for_write(result), medge, sizeof(MEdge) * STACK_SIZE(medge));
|
||||
}
|
||||
|
@ -620,7 +612,6 @@ Mesh *BKE_mesh_merge_verts(Mesh *mesh,
|
|||
memcpy(BKE_mesh_polys_for_write(result), mpoly, sizeof(MPoly) * STACK_SIZE(mpoly));
|
||||
}
|
||||
|
||||
MEM_freeN(positions);
|
||||
MEM_freeN(medge);
|
||||
MEM_freeN(mloop);
|
||||
MEM_freeN(mpoly);
|
||||
|
|
Loading…
Reference in New Issue