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. @@ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org List details, subscription details or unsubscribe: https://lists.blender.org/mailman/listinfo/bf-blender-cvs