Fix #106354: Account for hidden vertices in weight gradient operator #106417
|
@ -19,6 +19,7 @@
|
||||||
#include "RNA_define.h"
|
#include "RNA_define.h"
|
||||||
#include "RNA_enum_types.h"
|
#include "RNA_enum_types.h"
|
||||||
|
|
||||||
|
#include "BKE_attribute.hh"
|
||||||
#include "BKE_brush.h"
|
#include "BKE_brush.h"
|
||||||
#include "BKE_colortools.h"
|
#include "BKE_colortools.h"
|
||||||
#include "BKE_context.h"
|
#include "BKE_context.h"
|
||||||
|
@ -592,6 +593,7 @@ struct WPGradient_userData {
|
||||||
Mesh *me;
|
Mesh *me;
|
||||||
MDeformVert *dvert;
|
MDeformVert *dvert;
|
||||||
const bool *select_vert;
|
const bool *select_vert;
|
||||||
|
blender::VArray<bool> hide_vert;
|
||||||
Brush *brush;
|
Brush *brush;
|
||||||
const float *sco_start; /* [2] */
|
const float *sco_start; /* [2] */
|
||||||
const float *sco_end; /* [2] */
|
const float *sco_end; /* [2] */
|
||||||
|
@ -678,6 +680,10 @@ static void gradientVertUpdate__mapFunc(void *userData,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (grad_data->hide_vert[index]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
gradientVert_update(grad_data, index);
|
gradientVert_update(grad_data, index);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -815,12 +821,15 @@ static int paint_weight_gradient_exec(bContext *C, wmOperator *op)
|
||||||
__func__));
|
__func__));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const blender::bke::AttributeAccessor attributes = me->attributes();
|
||||||
|
|
||||||
data.region = region;
|
data.region = region;
|
||||||
data.scene = scene;
|
data.scene = scene;
|
||||||
data.me = me;
|
data.me = me;
|
||||||
data.dvert = dverts;
|
data.dvert = dverts;
|
||||||
data.select_vert = (const bool *)CustomData_get_layer_named(
|
data.select_vert = (const bool *)CustomData_get_layer_named(
|
||||||
&me->vdata, CD_PROP_BOOL, ".select_vert");
|
&me->vdata, CD_PROP_BOOL, ".select_vert");
|
||||||
|
data.hide_vert = attributes.lookup_or_default<bool>(".hide_vert", ATTR_DOMAIN_POINT, false);
|
||||||
data.sco_start = sco_start;
|
data.sco_start = sco_start;
|
||||||
data.sco_end = sco_end;
|
data.sco_end = sco_end;
|
||||||
data.sco_line_div = 1.0f / len_v2v2(sco_start, sco_end);
|
data.sco_line_div = 1.0f / len_v2v2(sco_start, sco_end);
|
||||||
|
|
Loading…
Reference in New Issue