[Bf-blender-cvs] [619448eed68] refactor-mesh-corners-generic: 29 remaining uses of MLoop

Hans Goudey noreply at git.blender.org
Tue Dec 6 23:01:56 CET 2022


Commit: 619448eed683dbcbe1d6f34e72f52bd3168762da
Author: Hans Goudey
Date:   Tue Dec 6 15:58:50 2022 -0600
Branches: refactor-mesh-corners-generic
https://developer.blender.org/rB619448eed683dbcbe1d6f34e72f52bd3168762da

29 remaining uses of MLoop

===================================================================

M	source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_edge_fac.cc
M	source/blender/editors/mesh/meshtools.cc

===================================================================

diff --git a/source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_edge_fac.cc b/source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_edge_fac.cc
index 5c81626d700..2007c987d9c 100644
--- a/source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_edge_fac.cc
+++ b/source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_edge_fac.cc
@@ -110,30 +110,30 @@ static void extract_edge_fac_iter_poly_mesh(const MeshRenderData *mr,
 {
   MeshExtract_EdgeFac_Data *data = static_cast<MeshExtract_EdgeFac_Data *>(_data);
 
-  const MLoop *mloop = mr->mloop;
   const int ml_index_end = mp->loopstart + mp->totloop;
   for (int ml_index = mp->loopstart; ml_index < ml_index_end; ml_index += 1) {
-    const MLoop *ml = &mloop[ml_index];
+    const int vert_i = mr->corner_verts[ml_index];
+    const int edge_i = mr->corner_edges[ml_index];
 
     if (data->use_edge_render) {
-      const MEdge *med = &mr->medge[ml->e];
+      const MEdge *med = &mr->medge[edge_i];
       data->vbo_data[ml_index] = (med->flag & ME_EDGEDRAW) ? 255 : 0;
     }
     else {
 
       /* Count loop per edge to detect non-manifold. */
-      if (data->edge_loop_count[ml->e] < 3) {
-        data->edge_loop_count[ml->e]++;
+      if (data->edge_loop_count[edge_i] < 3) {
+        data->edge_loop_count[edge_i]++;
       }
-      if (data->edge_loop_count[ml->e] == 2) {
+      if (data->edge_loop_count[edge_i] == 2) {
         /* Manifold */
         const int ml_index_last = mp->totloop + mp->loopstart - 1;
         const int ml_index_other = (ml_index == ml_index_last) ? mp->loopstart : (ml_index + 1);
-        const MLoop *ml_next = &mr->mloop[ml_index_other];
+        const int vert_next = mr->corner_verts[ml_index_other];
         float ratio = loop_edge_factor_get(mr->poly_normals[mp_index],
-                                           mr->positions[ml->v],
-                                           mr->vert_normals[ml->v],
-                                           mr->positions[ml_next->v]);
+                                           mr->positions[vert_i],
+                                           mr->vert_normals[vert_i],
+                                           mr->positions[vert_next]);
         data->vbo_data[ml_index] = ratio * 253 + 1;
       }
       else {
diff --git a/source/blender/editors/mesh/meshtools.cc b/source/blender/editors/mesh/meshtools.cc
index 8984184005e..6ba80453747 100644
--- a/source/blender/editors/mesh/meshtools.cc
+++ b/source/blender/editors/mesh/meshtools.cc
@@ -74,7 +74,8 @@ static void join_mesh_single(Depsgraph *depsgraph,
                              const float imat[4][4],
                              float3 **positions_pp,
                              MEdge **medge_pp,
-                             MLoop **mloop_pp,
+                             int **corner_verts_pp,
+                             int **corner_edges_pp,
                              MPoly **mpoly_pp,
                              CustomData *vdata,
                              CustomData *edata,
@@ -99,7 +100,8 @@ static void join_mesh_single(Depsgraph *depsgraph,
   Mesh *me = static_cast<Mesh *>(ob_src->data);
   float3 *positions = *positions_pp;
   MEdge *medge = *medge_pp;
-  MLoop *mloop = *mloop_pp;
+  int *corner_verts = *corner_verts_pp;
+  int *corner_edges = *corner_edges_pp;
   MPoly *mpoly = *mpoly_pp;
 
   if (me->totvert) {
@@ -227,9 +229,9 @@ static void join_mesh_single(Depsgraph *depsgraph,
     CustomData_merge(&me->ldata, ldata, CD_MASK_MESH.lmask, CD_SET_DEFAULT, totloop);
     CustomData_copy_data_named(&me->ldata, ldata, 0, *loopofs, me->totloop);
 
-    for (a = 0; a < me->totloop; a++, mloop++) {
-      mloop->v += *vertofs;
-      mloop->e += *edgeofs;
+    for (a = 0; a < me->totloop; a++) {
+      corner_verts[a] += *vertofs;
+      corner_edges[a] += *edgeofs;
     }
   }
 
@@ -292,7 +294,8 @@ static void join_mesh_single(Depsgraph *depsgraph,
   *edgeofs += me->totedge;
   *medge_pp += me->totedge;
   *loopofs += me->totloop;
-  *mloop_pp += me->totloop;
+  *corner_verts_pp += me->totloop;
+  *corner_edges_pp += me->totloop;
   *polyofs += me->totpoly;
   *mpoly_pp += me->totpoly;
 }
@@ -333,7 +336,6 @@ int ED_mesh_join_objects_exec(bContext *C, wmOperator *op)
   Mesh *me;
   MEdge *medge = nullptr;
   MPoly *mpoly = nullptr;
-  MLoop *mloop = nullptr;
   Key *key, *nkey = nullptr;
   float imat[4][4];
   int a, b, totcol, totmat = 0, totedge = 0, totvert = 0;
@@ -584,7 +586,10 @@ int ED_mesh_join_objects_exec(bContext *C, wmOperator *op)
   float3 *positions = (float3 *)CustomData_add_layer_named(
       &vdata, CD_PROP_FLOAT3, CD_SET_DEFAULT, nullptr, totvert, "position");
   medge = (MEdge *)CustomData_add_layer(&edata, CD_MEDGE, CD_SET_DEFAULT, nullptr, totedge);
-  mloop = (MLoop *)CustomData_add_layer(&ldata, CD_MLOOP, CD_SET_DEFAULT, nullptr, totloop);
+  int *corner_verts = (int *)CustomData_add_layer(
+      &ldata, CD_MLOOP, CD_CONSTRUCT, nullptr, totloop);
+  int *corner_edges = (int *)CustomData_add_layer(
+      &ldata, CD_MLOOP, CD_CONSTRUCT, nullptr, totloop);
   mpoly = (MPoly *)CustomData_add_layer(&pdata, CD_MPOLY, CD_SET_DEFAULT, nullptr, totpoly);
 
   vertofs = 0;
@@ -609,7 +614,8 @@ int ED_mesh_join_objects_exec(bContext *C, wmOperator *op)
                    imat,
                    &positions,
                    &medge,
-                   &mloop,
+                   &corner_verts,
+                   &corner_edges,
                    &mpoly,
                    &vdata,
                    &edata,
@@ -643,7 +649,8 @@ int ED_mesh_join_objects_exec(bContext *C, wmOperator *op)
                        imat,
                        &positions,
                        &medge,
-                       &mloop,
+                       &corner_verts,
+                       &corner_edges,
                        &mpoly,
                        &vdata,
                        &edata,



More information about the Bf-blender-cvs mailing list