Mesh: Replace MLoop struct with generic attributes #104424

Merged
Hans Goudey merged 261 commits from refactor-mesh-corners-generic into main 2023-03-20 15:55:25 +01:00
1 changed files with 0 additions and 9 deletions
Showing only changes of commit ee64fa0717 - Show all commits

View File

@ -204,17 +204,14 @@ Mesh *BKE_mesh_merge_verts(Mesh *mesh,
const int totedge = mesh->totedge; const int totedge = mesh->totedge;
const int totloop = mesh->totloop; const int totloop = mesh->totloop;
const int totpoly = mesh->totpoly; const int totpoly = mesh->totpoly;
const float(*src_positions)[3] = BKE_mesh_positions(mesh);
const MEdge *src_edges = BKE_mesh_edges(mesh); const MEdge *src_edges = BKE_mesh_edges(mesh);
const MPoly *src_polys = BKE_mesh_polys(mesh); const MPoly *src_polys = BKE_mesh_polys(mesh);
const MLoop *src_loops = BKE_mesh_loops(mesh); const MLoop *src_loops = BKE_mesh_loops(mesh);
const int totvert_final = totvert - tot_vtargetmap; 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 *oldv = MEM_malloc_arrayN(totvert_final, sizeof(*oldv), __func__);
int *newv = MEM_malloc_arrayN(totvert, sizeof(*newv), __func__); int *newv = MEM_malloc_arrayN(totvert, sizeof(*newv), __func__);
STACK_DECLARE(positions);
STACK_DECLARE(oldv); STACK_DECLARE(oldv);
/* NOTE: create (totedge + totloop) elements because partially invalid polys due to merge may /* 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++) { for (i = 0; i < totvert; i++) {
if (vtargetmap[i] == -1) { if (vtargetmap[i] == -1) {
STACK_PUSH(oldv, i); STACK_PUSH(oldv, i);
copy_v3_v3(positions[i], src_positions[c]);
newv[i] = c++; newv[i] = c++;
} }
else { 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. */ /* 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)) { if (STACK_SIZE(medge)) {
memcpy(BKE_mesh_edges_for_write(result), medge, sizeof(MEdge) * 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)); memcpy(BKE_mesh_polys_for_write(result), mpoly, sizeof(MPoly) * STACK_SIZE(mpoly));
} }
MEM_freeN(positions);
MEM_freeN(medge); MEM_freeN(medge);
MEM_freeN(mloop); MEM_freeN(mloop);
MEM_freeN(mpoly); MEM_freeN(mpoly);