[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