diff --git a/source/blender/editors/sculpt_paint/paint_vertex_weight_ops.cc b/source/blender/editors/sculpt_paint/paint_vertex_weight_ops.cc index 46540486600..ecd68f2dc90 100644 --- a/source/blender/editors/sculpt_paint/paint_vertex_weight_ops.cc +++ b/source/blender/editors/sculpt_paint/paint_vertex_weight_ops.cc @@ -19,6 +19,7 @@ #include "RNA_define.h" #include "RNA_enum_types.h" +#include "BKE_attribute.hh" #include "BKE_brush.h" #include "BKE_colortools.h" #include "BKE_context.h" @@ -592,6 +593,7 @@ struct WPGradient_userData { Mesh *me; MDeformVert *dvert; const bool *select_vert; + blender::VArray hide_vert; Brush *brush; const float *sco_start; /* [2] */ const float *sco_end; /* [2] */ @@ -678,6 +680,10 @@ static void gradientVertUpdate__mapFunc(void *userData, return; } + if (grad_data->hide_vert[index]) { + return; + } + gradientVert_update(grad_data, index); } @@ -815,12 +821,15 @@ static int paint_weight_gradient_exec(bContext *C, wmOperator *op) __func__)); } + const blender::bke::AttributeAccessor attributes = me->attributes(); + data.region = region; data.scene = scene; data.me = me; data.dvert = dverts; data.select_vert = (const bool *)CustomData_get_layer_named( &me->vdata, CD_PROP_BOOL, ".select_vert"); + data.hide_vert = attributes.lookup_or_default(".hide_vert", ATTR_DOMAIN_POINT, false); data.sco_start = sco_start; data.sco_end = sco_end; data.sco_line_div = 1.0f / len_v2v2(sco_start, sco_end);