[Bf-blender-cvs] [1f14310d910] refactor-mesh-remove-pointers: Use new API for retrieving vertex group data in some places
Hans Goudey
noreply at git.blender.org
Thu Sep 1 23:55:17 CEST 2022
Commit: 1f14310d910875c4047198a3c3367a383d36fce3
Author: Hans Goudey
Date: Thu Sep 1 16:55:08 2022 -0500
Branches: refactor-mesh-remove-pointers
https://developer.blender.org/rB1f14310d910875c4047198a3c3367a383d36fce3
Use new API for retrieving vertex group data in some places
===================================================================
M source/blender/blenkernel/intern/fluid.c
M source/blender/blenkernel/intern/geometry_component_mesh.cc
M source/blender/blenkernel/intern/gpencil_geom.cc
M source/blender/blenkernel/intern/mesh_mirror.c
M source/blender/blenkernel/intern/mesh_runtime.cc
M source/blender/blenkernel/intern/mesh_validate.cc
M source/blender/blenkernel/intern/object_deform.c
M source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_weights.cc
M source/blender/editors/mesh/meshtools.cc
M source/blender/editors/object/object_vgroup.cc
M source/blender/io/wavefront_obj/importer/obj_import_mesh.cc
M source/blender/modifiers/intern/MOD_mask.cc
===================================================================
diff --git a/source/blender/blenkernel/intern/fluid.c b/source/blender/blenkernel/intern/fluid.c
index 7c1dc4361f7..24c61a792eb 100644
--- a/source/blender/blenkernel/intern/fluid.c
+++ b/source/blender/blenkernel/intern/fluid.c
@@ -2078,7 +2078,7 @@ static void emit_from_mesh(
const MLoop *mloop = BKE_mesh_loops(me);
const MLoopTri *mlooptri = BKE_mesh_runtime_looptri_ensure(me);
const int numverts = me->totvert;
- const MDeformVert *dvert = CustomData_get_layer(&me->vdata, CD_MDEFORMVERT);
+ const MDeformVert *dvert = BKE_mesh_deform_verts(me);
const MLoopUV *mloopuv = CustomData_get_layer_named(&me->ldata, CD_MLOOPUV, ffs->uvlayer_name);
if (ffs->flags & FLUID_FLOW_INITVELOCITY) {
diff --git a/source/blender/blenkernel/intern/geometry_component_mesh.cc b/source/blender/blenkernel/intern/geometry_component_mesh.cc
index 11ca2ba2087..a577b59d254 100644
--- a/source/blender/blenkernel/intern/geometry_component_mesh.cc
+++ b/source/blender/blenkernel/intern/geometry_component_mesh.cc
@@ -1017,8 +1017,7 @@ class VertexGroupsAttributeProvider final : public DynamicAttributesProvider {
if (vertex_group_index < 0) {
return {};
}
- const MDeformVert *dvert = (const MDeformVert *)CustomData_get_layer(&mesh->vdata,
- CD_MDEFORMVERT);
+ const MDeformVert *dvert = BKE_mesh_deform_verts(mesh);
if (dvert == nullptr) {
static const float default_value = 0.0f;
return {VArray<float>::ForSingle(default_value, mesh->totvert), ATTR_DOMAIN_POINT};
@@ -1069,7 +1068,7 @@ class VertexGroupsAttributeProvider final : public DynamicAttributesProvider {
}
BLI_remlink(&mesh->vertex_group_names, group);
MEM_freeN(group);
- if (!CustomData_has_layer(&mesh->vdata, CD_MDEFORMVERT)) {
+ if (!BKE_mesh_deform_verts(mesh)) {
return true;
}
diff --git a/source/blender/blenkernel/intern/gpencil_geom.cc b/source/blender/blenkernel/intern/gpencil_geom.cc
index 9eb3775cb19..94e493a19ea 100644
--- a/source/blender/blenkernel/intern/gpencil_geom.cc
+++ b/source/blender/blenkernel/intern/gpencil_geom.cc
@@ -2542,8 +2542,7 @@ static void gpencil_generate_edgeloops(Object *ob,
gpf_stroke, MAX2(stroke_mat_index, 0), array_len + 1, thickness * thickness, false);
/* Create dvert data. */
- const MDeformVert *me_dvert = (const MDeformVert *)CustomData_get_layer(&me->vdata,
- CD_MDEFORMVERT);
+ const MDeformVert *me_dvert = BKE_mesh_deform_verts(me);
if (use_vgroups && me_dvert) {
gps_stroke->dvert = (MDeformVert *)MEM_callocN(sizeof(MDeformVert) * (array_len + 1),
"gp_stroke_dverts");
@@ -2743,8 +2742,7 @@ bool BKE_gpencil_convert_mesh(Main *bmain,
gps_fill->flag |= GP_STROKE_CYCLIC;
/* Create dvert data. */
- const MDeformVert *me_dvert = (const MDeformVert *)CustomData_get_layer(&me_eval->vdata,
- CD_MDEFORMVERT);
+ const MDeformVert *me_dvert = BKE_mesh_deform_verts(me_eval);
if (use_vgroups && me_dvert) {
gps_fill->dvert = (MDeformVert *)MEM_callocN(sizeof(MDeformVert) * mp->totloop,
"gp_fill_dverts");
diff --git a/source/blender/blenkernel/intern/mesh_mirror.c b/source/blender/blenkernel/intern/mesh_mirror.c
index fccc02a010d..534c8241820 100644
--- a/source/blender/blenkernel/intern/mesh_mirror.c
+++ b/source/blender/blenkernel/intern/mesh_mirror.c
@@ -451,8 +451,7 @@ Mesh *BKE_mesh_mirror_apply_mirror_on_axis_for_modifier(MirrorModifierData *mmd,
/* handle vgroup stuff */
if ((mmd->flag & MOD_MIR_VGROUP) && CustomData_has_layer(&result->vdata, CD_MDEFORMVERT)) {
- MDeformVert *dvert = (MDeformVert *)CustomData_get_layer(&result->vdata, CD_MDEFORMVERT) +
- maxVerts;
+ MDeformVert *dvert = BKE_mesh_deform_verts_for_write(result) + maxVerts;
int *flip_map = NULL, flip_map_len = 0;
flip_map = BKE_object_defgroup_flip_map(ob, &flip_map_len, false);
diff --git a/source/blender/blenkernel/intern/mesh_runtime.cc b/source/blender/blenkernel/intern/mesh_runtime.cc
index c04a9f2b6f9..cbf934551ea 100644
--- a/source/blender/blenkernel/intern/mesh_runtime.cc
+++ b/source/blender/blenkernel/intern/mesh_runtime.cc
@@ -361,7 +361,7 @@ bool BKE_mesh_runtime_is_valid(Mesh *me_eval)
loops.size(),
polys.data(),
polys.size(),
- (MDeformVert *)CustomData_get_layer(&me_eval->vdata, CD_MDEFORMVERT),
+ BKE_mesh_deform_verts_for_write(me_eval),
do_verbose,
do_fixes,
&changed);
diff --git a/source/blender/blenkernel/intern/mesh_validate.cc b/source/blender/blenkernel/intern/mesh_validate.cc
index 972841405e3..41c29edd3d1 100644
--- a/source/blender/blenkernel/intern/mesh_validate.cc
+++ b/source/blender/blenkernel/intern/mesh_validate.cc
@@ -1083,7 +1083,7 @@ bool BKE_mesh_validate(Mesh *me, const bool do_verbose, const bool cddata_check_
loops.size(),
polys.data(),
polys.size(),
- (MDeformVert *)CustomData_get_layer(&me->vdata, CD_MDEFORMVERT),
+ BKE_mesh_deform_verts_for_write(me),
do_verbose,
true,
&changed);
@@ -1125,22 +1125,21 @@ bool BKE_mesh_is_valid(Mesh *me)
MutableSpan<MPoly> polys = me->polygons_for_write();
MutableSpan<MLoop> loops = me->loops_for_write();
- is_valid &= BKE_mesh_validate_arrays(
- me,
- verts.data(),
- verts.size(),
- edges.data(),
- edges.size(),
- (MFace *)CustomData_get_layer(&me->fdata, CD_MFACE),
- me->totface,
- loops.data(),
- loops.size(),
- polys.data(),
- polys.size(),
- (MDeformVert *)CustomData_get_layer(&me->vdata, CD_MDEFORMVERT),
- do_verbose,
- do_fixes,
- &changed);
+ is_valid &= BKE_mesh_validate_arrays(me,
+ verts.data(),
+ verts.size(),
+ edges.data(),
+ edges.size(),
+ (MFace *)CustomData_get_layer(&me->fdata, CD_MFACE),
+ me->totface,
+ loops.data(),
+ loops.size(),
+ polys.data(),
+ polys.size(),
+ BKE_mesh_deform_verts_for_write(me),
+ do_verbose,
+ do_fixes,
+ &changed);
BLI_assert(changed == false);
diff --git a/source/blender/blenkernel/intern/object_deform.c b/source/blender/blenkernel/intern/object_deform.c
index 859bc5d2d09..4c59b4a5210 100644
--- a/source/blender/blenkernel/intern/object_deform.c
+++ b/source/blender/blenkernel/intern/object_deform.c
@@ -162,7 +162,7 @@ bool BKE_object_defgroup_clear(Object *ob, bDeformGroup *dg, const bool use_sele
}
}
else {
- if (CustomData_has_layer(&me->vdata, CD_MDEFORMVERT)) {
+ if (BKE_mesh_deform_verts(me)) {
const MVert *mv;
int i;
diff --git a/source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_weights.cc b/source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_weights.cc
index 509331f2f1e..dcf19b0674a 100644
--- a/source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_weights.cc
+++ b/source/blender/draw/intern/mesh_extractors/extract_mesh_vbo_weights.cc
@@ -106,7 +106,7 @@ static void extract_weights_init(const MeshRenderData *mr,
data->cd_ofs = CustomData_get_offset(&mr->bm->vdata, CD_MDEFORMVERT);
}
else {
- data->dvert = (const MDeformVert *)CustomData_get_layer(&mr->me->vdata, CD_MDEFORMVERT);
+ data->dvert = BKE_mesh_deform_verts(mr->me);
data->cd_ofs = -1;
}
}
diff --git a/source/blender/editors/mesh/meshtools.cc b/source/blender/editors/mesh/meshtools.cc
index a6abd0a2a59..36e1f22a914 100644
--- a/source/blender/editors/mesh/meshtools.cc
+++ b/source/blender/editors/mesh/meshtools.cc
@@ -1465,7 +1465,7 @@ MDeformVert *ED_mesh_active_dvert_get_ob(Object *ob, int *r_index)
if (r_index) {
*r_index = index;
}
- if (index == -1 || !CustomData_has_layer(&me->vdata, CD_MDEFORMVERT)) {
+ if (index == -1 || !BKE_mesh_deform_verts(me)) {
return nullptr;
}
MDeformVert *dvert = BKE_mesh_deform_verts_for_write(me);
diff --git a/source/blender/editors/object/object_vgroup.cc b/source/blender/editors/object/object_vgroup.cc
index aadfa523a3e..2a37d48e914 100644
--- a/source/blender/editors/object/object_vgroup.cc
+++ b/source/blender/editors/object/object_vgroup.cc
@@ -196,9 +196,9 @@ bool ED_vgroup_parray_alloc(ID *id,
return true;
}
- if (CustomData_has_layer(&me->vdata, CD_MDEFORMVERT)) {
+ if (BKE_mesh_deform_verts(me)) {
const blender::Span<MVert> verts = me->vertices();
- MDeformVert *dvert = (MDeformVert *)CustomData_get_layer(&me->vdata, CD_MDEFORMVERT);
+ MDeformVert *dvert = BKE_mesh_deform_verts_for_write(me);
*dvert_tot = me->totvert;
*dvert_arr = static_cast<MDeformVert **>(
@@ -548,7 +548,7 @@ static void ED_mesh_defvert_mirror_update_ob(Object *ob, int def_nr, int vidx)
vidx_mirr = mesh_get_x_mirror_vert(ob, nullptr, vidx, use_topology);
- MDeformVert *dvert = (MDeformVert *)CustomData_get_layer(&me->vdata, CD_MDEFORMVERT);
+ MDeformVert *dvert = BKE_mesh_deform_verts_for_write(me);
if ((vidx_mirr) >= 0 && (vidx_mirr != vidx)) {
MDeformVert *dvert_src = &dvert[vidx];
MDeformVert *dvert_dst = &dvert[vidx_mirr];
@@ -666,7 +666,7 @@ static void vgroup_copy_active_to_sel(Object *ob, eVGroupSelect subset_type)
dvert_act = ED_mesh_active_dve
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list