[Bf-blender-cvs] [62b3c4630c6] refactor-mesh-selection-generic: Cleanup, fixes

Hans Goudey noreply at git.blender.org
Mon Sep 5 22:21:26 CEST 2022


Commit: 62b3c4630c68336ac220a773e92cc41337b36d26
Author: Hans Goudey
Date:   Mon Sep 5 15:21:17 2022 -0500
Branches: refactor-mesh-selection-generic
https://developer.blender.org/rB62b3c4630c68336ac220a773e92cc41337b36d26

Cleanup, fixes

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

M	source/blender/blenkernel/intern/mesh.cc
M	source/blender/blenkernel/intern/mesh_calc_edges.cc
M	source/blender/blenkernel/intern/mesh_legacy_convert.cc
M	source/blender/blenkernel/intern/object_deform.c
M	source/blender/editors/mesh/editface.cc
M	source/blender/editors/mesh/mesh_data.cc
M	source/blender/editors/object/object_modifier.cc
M	source/blender/editors/object/object_vgroup.cc
M	source/blender/editors/sculpt_paint/paint_vertex.cc
M	source/blender/editors/sculpt_paint/paint_vertex_weight_ops.c
M	source/blender/editors/space_view3d/view3d_select.cc
M	tests/python/modules/mesh_test.py

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

diff --git a/source/blender/blenkernel/intern/mesh.cc b/source/blender/blenkernel/intern/mesh.cc
index 348bf210706..94ab38573f9 100644
--- a/source/blender/blenkernel/intern/mesh.cc
+++ b/source/blender/blenkernel/intern/mesh.cc
@@ -1656,9 +1656,6 @@ void BKE_mesh_mselect_validate(Mesh *me)
   if (me->totselect == 0) {
     return;
   }
-  const Span<MVert> verts = me->vertices();
-  const Span<MEdge> edges = me->edges();
-  const Span<MPoly> polys = me->polygons();
 
   mselect_src = me->mselect;
   mselect_dst = (MSelect *)MEM_malloc_arrayN(
diff --git a/source/blender/blenkernel/intern/mesh_calc_edges.cc b/source/blender/blenkernel/intern/mesh_calc_edges.cc
index b19f4a2cb14..2ea3bebffdc 100644
--- a/source/blender/blenkernel/intern/mesh_calc_edges.cc
+++ b/source/blender/blenkernel/intern/mesh_calc_edges.cc
@@ -149,7 +149,7 @@ static void serialize_and_initialize_deduplicated_edges(Mesh &mesh,
         /* Initialize new edge. */
         new_edge.v1 = item.key.v_low;
         new_edge.v2 = item.key.v_high;
-        new_edge.flag = (ME_EDGEDRAW | ME_EDGERENDER);
+        new_edge.flag = ME_EDGEDRAW | ME_EDGERENDER;
       }
       item.value.index = new_edge_index;
       new_edge_index++;
diff --git a/source/blender/blenkernel/intern/mesh_legacy_convert.cc b/source/blender/blenkernel/intern/mesh_legacy_convert.cc
index b0f4e7a6620..9c89e4c17f9 100644
--- a/source/blender/blenkernel/intern/mesh_legacy_convert.cc
+++ b/source/blender/blenkernel/intern/mesh_legacy_convert.cc
@@ -1054,7 +1054,7 @@ void BKE_mesh_legacy_convert_selection_layers_to_flags(Mesh *mesh)
   using namespace blender::bke;
   const AttributeAccessor attributes = mesh_attributes(*mesh);
 
-  MutableSpan<MVert> verts(mesh->mvert, mesh->totvert);
+  MutableSpan<MVert> verts = mesh->vertices_for_write();
   const VArray<bool> selection_vert = attributes.lookup_or_default<bool>(
       ".selection_vert", ATTR_DOMAIN_POINT, false);
   threading::parallel_for(verts.index_range(), 4096, [&](IndexRange range) {
@@ -1063,7 +1063,7 @@ void BKE_mesh_legacy_convert_selection_layers_to_flags(Mesh *mesh)
     }
   });
 
-  MutableSpan<MEdge> edges(mesh->medge, mesh->totedge);
+  MutableSpan<MEdge> edges = mesh->edges_for_write();
   const VArray<bool> selection_edge = attributes.lookup_or_default<bool>(
       ".selection_edge", ATTR_DOMAIN_EDGE, false);
   threading::parallel_for(edges.index_range(), 4096, [&](IndexRange range) {
@@ -1072,7 +1072,7 @@ void BKE_mesh_legacy_convert_selection_layers_to_flags(Mesh *mesh)
     }
   });
 
-  MutableSpan<MPoly> polys(mesh->mpoly, mesh->totpoly);
+  MutableSpan<MPoly> polys = mesh->polygons_for_write();
   const VArray<bool> selection_poly = attributes.lookup_or_default<bool>(
       ".selection_poly", ATTR_DOMAIN_FACE, false);
   threading::parallel_for(polys.index_range(), 4096, [&](IndexRange range) {
@@ -1088,7 +1088,7 @@ void BKE_mesh_legacy_convert_flags_to_selection_layers(Mesh *mesh)
   using namespace blender::bke;
   MutableAttributeAccessor attributes = mesh_attributes_for_write(*mesh);
 
-  const Span<MVert> verts(mesh->mvert, mesh->totvert);
+  const Span<MVert> verts = mesh->vertices();
   if (std::any_of(
           verts.begin(), verts.end(), [](const MVert &vert) { return vert.flag & SELECT; })) {
     SpanAttributeWriter<bool> selection_vert = attributes.lookup_or_add_for_write_only_span<bool>(
@@ -1101,7 +1101,7 @@ void BKE_mesh_legacy_convert_flags_to_selection_layers(Mesh *mesh)
     selection_vert.finish();
   }
 
-  const Span<MEdge> edges(mesh->medge, mesh->totedge);
+  const Span<MEdge> edges = mesh->edges();
   if (std::any_of(
           edges.begin(), edges.end(), [](const MEdge &edge) { return edge.flag & SELECT; })) {
     SpanAttributeWriter<bool> selection_edge = attributes.lookup_or_add_for_write_only_span<bool>(
@@ -1114,7 +1114,7 @@ void BKE_mesh_legacy_convert_flags_to_selection_layers(Mesh *mesh)
     selection_edge.finish();
   }
 
-  const Span<MPoly> polys(mesh->mpoly, mesh->totpoly);
+  const Span<MPoly> polys = mesh->polygons();
   if (std::any_of(
           polys.begin(), polys.end(), [](const MPoly &poly) { return poly.flag & ME_FACE_SEL; })) {
     SpanAttributeWriter<bool> selection_poly = attributes.lookup_or_add_for_write_only_span<bool>(
diff --git a/source/blender/blenkernel/intern/object_deform.c b/source/blender/blenkernel/intern/object_deform.c
index 99bc1fec5bd..32d8a70163e 100644
--- a/source/blender/blenkernel/intern/object_deform.c
+++ b/source/blender/blenkernel/intern/object_deform.c
@@ -163,7 +163,7 @@ bool BKE_object_defgroup_clear(Object *ob, bDeformGroup *dg, const bool use_sele
     }
     else {
       if (BKE_mesh_deform_verts(me)) {
-        const const bool *selection_vert = (const bool *)CustomData_get_layer_named(
+        const bool *selection_vert = (const bool *)CustomData_get_layer_named(
             &me->vdata, CD_PROP_BOOL, ".selection_vert");
         int i;
 
diff --git a/source/blender/editors/mesh/editface.cc b/source/blender/editors/mesh/editface.cc
index 683dd217b03..a2926c5689d 100644
--- a/source/blender/editors/mesh/editface.cc
+++ b/source/blender/editors/mesh/editface.cc
@@ -73,7 +73,6 @@ void paintface_flush_flags(bContext *C,
   Mesh *me_eval = (Mesh *)ob_eval->runtime.data_eval;
   bke::MutableAttributeAccessor attributes_eval = bke::mesh_attributes_for_write(*me_eval);
   bool updated = false;
-  const Span<MPoly> me_polys = me->polygons();
 
   if (me_orig != nullptr && me_eval != nullptr && me_orig->totpoly == me->totpoly) {
     /* Update the COW copy of the mesh. */
@@ -155,7 +154,6 @@ void paintface_hide(bContext *C, Object *ob, const bool unselected)
     return;
   }
 
-  MutableSpan<MPoly> polys = me->polygons_for_write();
   bke::MutableAttributeAccessor attributes = bke::mesh_attributes_for_write(*me);
   bke::SpanAttributeWriter<bool> hide_poly = attributes.lookup_or_add_for_write_span<bool>(
       ".hide_poly", ATTR_DOMAIN_FACE);
@@ -190,7 +188,6 @@ void paintface_reveal(bContext *C, Object *ob, const bool select)
     return;
   }
 
-  MutableSpan<MPoly> polys = me->polygons_for_write();
   bke::MutableAttributeAccessor attributes = bke::mesh_attributes_for_write(*me);
 
   if (select) {
@@ -247,7 +244,7 @@ static void select_linked_tfaces_with_seams(Mesh *me, const uint index, const bo
       }
       else if (selection_poly.span[i]) {
         const MPoly &poly = polys[i];
-        BKE_mesh_poly_edgebitmap_insert(edge_tag, &poly, me->mloop + poly.loopstart);
+        BKE_mesh_poly_edgebitmap_insert(edge_tag, &poly, &loops[poly.loopstart]);
         BLI_BITMAP_ENABLE(poly_tag, i);
       }
     }
@@ -398,13 +395,13 @@ bool paintface_minmax(Object *ob, float r_min[3], float r_max[3])
       ".selection_poly", ATTR_DOMAIN_FACE, false);
 
   for (int i = 0; i < me->totpoly; i++) {
-    MPoly *mp = &me->mpoly[i];
     if (hide_poly[i] || !selection_poly[i]) {
       continue;
     }
 
-    const MLoop *ml = &loops[mp->loopstart];
-    for (int b = 0; b < mp->totloop; b++, ml++) {
+    const MPoly &poly = polys[i];
+    const MLoop *ml = &loops[poly.loopstart];
+    for (int b = 0; b < poly.totloop; b++, ml++) {
       mul_v3_m3v3(vec, bmat, verts[ml->v].co);
       add_v3_v3v3(vec, vec, ob->obmat[3]);
       minmax_v3v3_v3(r_min, r_max, vec);
@@ -637,9 +634,8 @@ void paintvert_select_ungrouped(Object *ob, bool extend, bool flush_flags)
       ".selection_vert", ATTR_DOMAIN_POINT);
 
   for (int i = 0; i < me->totvert; i++) {
-    const MDeformVert *dv = &me->dvert[i];
     if (!hide_vert[i]) {
-      if (dv->dw == nullptr) {
+      if (dverts[i].dw == nullptr) {
         /* if null weight then not grouped */
         selection_vert.span[i] = true;
       }
@@ -661,7 +657,6 @@ void paintvert_hide(bContext *C, Object *ob, const bool unselected)
     return;
   }
 
-  MutableSpan<MVert> verts = me->vertices_for_write();
   bke::MutableAttributeAccessor attributes = bke::mesh_attributes_for_write(*me);
   bke::SpanAttributeWriter<bool> hide_vert = attributes.lookup_or_add_for_write_span<bool>(
       ".hide_vert", ATTR_DOMAIN_POINT);
@@ -696,7 +691,6 @@ void paintvert_reveal(bContext *C, Object *ob, const bool select)
     return;
   }
 
-  MutableSpan<MVert> verts = me->vertices_for_write();
   bke::MutableAttributeAccessor attributes = bke::mesh_attributes_for_write(*me);
   const VArray<bool> hide_vert = attributes.lookup_or_default<bool>(
       ".hide_vert", ATTR_DOMAIN_POINT, false);
@@ -709,6 +703,8 @@ void paintvert_reveal(bContext *C, Object *ob, const bool select)
     }
   }
 
+  selection_vert.finish();
+
   /* Remove the hide attribute to reveal all vertices. */
   attributes.remove(".hide_vert");
 
diff --git a/source/blender/editors/mesh/mesh_data.cc b/source/blender/editors/mesh/mesh_data.cc
index 763e3cd11cf..f9b26774fbf 100644
--- a/source/blender/editors/mesh/mesh_data.cc
+++ b/source/blender/editors/mesh/mesh_data.cc
@@ -17,6 +17,7 @@
 #include "BLI_math.h"
 #include "BLI_utildefines.h"
 
+#include "BKE_attribute.h"
 #include "BKE_attribute.hh"
 #include "BKE_context.h"
 #include "BKE_customdata.h"
diff --git a/source/blender/editors/object/object_modifier.cc b/source/blender/editors/object/object_modifier.cc
index 077a89c9585..6e5257d96b7 100644
--- a/source/blender/editors/object/object_modifier.cc
+++ b/source/blender/editors/object/object_modifier.cc
@@ -594,8 +594,6 @@ bool ED_object_modifier_convert_psys_to_mesh(ReportList *UNUSED(reports),
   CustomData_add_layer(&me->edata, CD_MEDGE, CD_SET_DEFAULT, nullptr, edges_num);
   CustomData_add_layer(&me->fdata, CD_MFACE, CD_SET_DEFAULT, nullptr, 0);
 
-  int vert_index = 0;
-
   blender::MutableSpan<MVert> verts = me->vertices_for_write();
   blender::MutableSpan<MEdge> edges = me->edges_for_write();
   MVert *mvert = verts.data();
@@ -606,6 +604,7 @@ bool ED_object_modifier_convert_psys_to_mesh(ReportList *UNUSED(reports),
       ".selection_vert", ATTR_DOMAIN_POINT);
 
   /* copy coordinates */
+  int vert_index = 0;
   cache = psys_eval->pathcache;
   for (int a = 0; a < part_num; a++) {
     ParticleCacheKey *key = cache[a];
diff --git a/source/blender/editors/object/object_vgroup.cc b/source/blender/editors/object/object_vgroup.cc
index f4c5256fdaf..b6be0b03e2a 100644


@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list