[Bf-blender-cvs] [84a76415634] master: Cleanup: Simplify loop syntax, make function static

Hans Goudey noreply at git.blender.org
Sun May 15 20:59:15 CEST 2022


Commit: 84a764156340f3fff65cb76d3bd96f06807dc8c3
Author: Hans Goudey
Date:   Sun May 15 20:59:08 2022 +0200
Branches: master
https://developer.blender.org/rB84a764156340f3fff65cb76d3bd96f06807dc8c3

Cleanup: Simplify loop syntax, make function static

Use range based for loops, spans, references, and slice.
Change split from D14685, in order to simplify refactor
to the mesh hide masks.

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

M	source/blender/blenkernel/BKE_mesh.h
M	source/blender/blenkernel/intern/mesh_evaluate.cc

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

diff --git a/source/blender/blenkernel/BKE_mesh.h b/source/blender/blenkernel/BKE_mesh.h
index 3e06a9d9e9c..23ec69babc8 100644
--- a/source/blender/blenkernel/BKE_mesh.h
+++ b/source/blender/blenkernel/BKE_mesh.h
@@ -932,13 +932,6 @@ void BKE_mesh_flush_select_from_polys_ex(struct MVert *mvert,
                                          const struct MPoly *mpoly,
                                          int totpoly);
 void BKE_mesh_flush_select_from_polys(struct Mesh *me);
-void BKE_mesh_flush_select_from_verts_ex(const struct MVert *mvert,
-                                         int totvert,
-                                         const struct MLoop *mloop,
-                                         struct MEdge *medge,
-                                         int totedge,
-                                         struct MPoly *mpoly,
-                                         int totpoly);
 void BKE_mesh_flush_select_from_verts(struct Mesh *me);
 
 /* spatial evaluation */
diff --git a/source/blender/blenkernel/intern/mesh_evaluate.cc b/source/blender/blenkernel/intern/mesh_evaluate.cc
index 30b1e580b29..de0489d668f 100644
--- a/source/blender/blenkernel/intern/mesh_evaluate.cc
+++ b/source/blender/blenkernel/intern/mesh_evaluate.cc
@@ -18,8 +18,9 @@
 #include "BLI_alloca.h"
 #include "BLI_bitmap.h"
 #include "BLI_edgehash.h"
-
+#include "BLI_index_range.hh"
 #include "BLI_math.h"
+#include "BLI_span.hh"
 #include "BLI_utildefines.h"
 
 #include "BKE_customdata.h"
@@ -27,6 +28,10 @@
 #include "BKE_mesh.h"
 #include "BKE_multires.h"
 
+using blender::IndexRange;
+using blender::MutableSpan;
+using blender::Span;
+
 /* -------------------------------------------------------------------- */
 /** \name Polygon Calculations
  * \{ */
@@ -1113,58 +1118,49 @@ void BKE_mesh_flush_select_from_polys(Mesh *me)
       me->mvert, me->totvert, me->mloop, me->medge, me->totedge, me->mpoly, me->totpoly);
 }
 
-void BKE_mesh_flush_select_from_verts_ex(const MVert *mvert,
-                                         const int UNUSED(totvert),
-                                         const MLoop *mloop,
-                                         MEdge *medge,
-                                         const int totedge,
-                                         MPoly *mpoly,
-                                         const int totpoly)
+static void mesh_flush_select_from_verts(const Span<MVert> verts,
+                                         const Span<MLoop> loops,
+                                         MutableSpan<MEdge> edges,
+                                         MutableSpan<MPoly> polys)
 {
-  MEdge *med;
-  MPoly *mp;
-
-  /* edges */
-  int i = totedge;
-  for (med = medge; i--; med++) {
-    if ((med->flag & ME_HIDE) == 0) {
-      if ((mvert[med->v1].flag & SELECT) && (mvert[med->v2].flag & SELECT)) {
-        med->flag |= SELECT;
+  for (const int i : edges.index_range()) {
+    if ((edges[i].flag & ME_HIDE) == 0) {
+      MEdge &edge = edges[i];
+      if ((verts[edge.v1].flag & SELECT) && (verts[edge.v2].flag & SELECT)) {
+        edge.flag |= SELECT;
       }
       else {
-        med->flag &= ~SELECT;
+        edge.flag &= ~SELECT;
       }
     }
   }
 
-  /* polys */
-  i = totpoly;
-  for (mp = mpoly; i--; mp++) {
-    if ((mp->flag & ME_HIDE) == 0) {
-      bool ok = true;
-      const MLoop *ml;
-      int j;
-      j = mp->totloop;
-      for (ml = &mloop[mp->loopstart]; j--; ml++) {
-        if ((mvert[ml->v].flag & SELECT) == 0) {
-          ok = false;
-          break;
-        }
-      }
-
-      if (ok) {
-        mp->flag |= ME_FACE_SEL;
-      }
-      else {
-        mp->flag &= (char)~ME_FACE_SEL;
+  for (const int i : polys.index_range()) {
+    if (polys[i].flag & ME_HIDE) {
+      continue;
+    }
+    MPoly &poly = polys[i];
+    bool all_verts_selected = true;
+    for (const MLoop &loop : loops.slice(poly.loopstart, poly.totloop)) {
+      if (!(verts[loop.v].flag & SELECT)) {
+        all_verts_selected = false;
       }
     }
+    if (all_verts_selected) {
+      poly.flag |= ME_FACE_SEL;
+    }
+    else {
+      poly.flag &= (char)~ME_FACE_SEL;
+    }
   }
 }
+
 void BKE_mesh_flush_select_from_verts(Mesh *me)
 {
-  BKE_mesh_flush_select_from_verts_ex(
-      me->mvert, me->totvert, me->mloop, me->medge, me->totedge, me->mpoly, me->totpoly);
+  mesh_flush_select_from_verts({me->mvert, me->totvert},
+                               {me->mloop, me->totloop},
+                               {me->medge, me->totedge},
+                               {me->mpoly, me->totpoly});
 }
 
 /** \} */



More information about the Bf-blender-cvs mailing list