Fix #106354: Account for hidden vertices in weight gradient operator #106417
|
@ -8,6 +8,7 @@
|
|||
|
||||
#include "BLI_bitmap.h"
|
||||
#include "BLI_math.h"
|
||||
#include "BLI_virtual_array.hh"
|
||||
ChengduLittleA marked this conversation as resolved
Outdated
|
||||
|
||||
#include "DNA_brush_types.h"
|
||||
#include "DNA_mesh_types.h"
|
||||
|
@ -19,6 +20,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 +594,7 @@ struct WPGradient_userData {
|
|||
Mesh *me;
|
||||
MDeformVert *dvert;
|
||||
const bool *select_vert;
|
||||
blender::VArray<bool> hide_vert;
|
||||
Brush *brush;
|
||||
const float *sco_start; /* [2] */
|
||||
const float *sco_end; /* [2] */
|
||||
|
@ -678,6 +681,10 @@ static void gradientVertUpdate__mapFunc(void *userData,
|
|||
return;
|
||||
}
|
||||
|
||||
if (grad_data->hide_vert[index]) {
|
||||
return;
|
||||
}
|
||||
|
||||
gradientVert_update(grad_data, index);
|
||||
}
|
||||
|
||||
|
@ -815,12 +822,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<bool>(".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);
|
||||
|
|
Loading…
Reference in New Issue
BKE_attribute.hh
includesBLI_virtual_array.hh
indirectly, no need to add it here separately.