Animation: Weight Paint select more/less for vertices #105633
|
@ -445,7 +445,7 @@ void paintvert_select_linked_pick(struct bContext *C,
|
||||||
const int region_coordinates[2],
|
const int region_coordinates[2],
|
||||||
bool select);
|
bool select);
|
||||||
void paintvert_select_more(struct Mesh *mesh, bool face_step);
|
void paintvert_select_more(struct Mesh *mesh, bool face_step);
|
||||||
void paintvert_select_less(struct bContext *C, struct Object *ob, bool face_step);
|
void paintvert_select_less(struct Mesh *mesh, bool face_step);
|
||||||
void paintvert_hide(struct bContext *C, struct Object *ob, bool unselected);
|
void paintvert_hide(struct bContext *C, struct Object *ob, bool unselected);
|
||||||
void paintvert_reveal(struct bContext *C, struct Object *ob, bool select);
|
void paintvert_reveal(struct bContext *C, struct Object *ob, bool select);
|
||||||
|
|
||||||
|
|
|
@ -714,13 +714,9 @@ void paintvert_select_more(Mesh *mesh, const bool face_step)
|
||||||
select_vert.finish();
|
select_vert.finish();
|
||||||
}
|
}
|
||||||
|
|
||||||
void paintvert_select_less(bContext *C, Object *ob, const bool face_step)
|
void paintvert_select_less(Mesh *mesh, const bool face_step)
|
||||||
{
|
{
|
||||||
using namespace blender;
|
using namespace blender;
|
||||||
Mesh *mesh = BKE_mesh_from_object(ob);
|
|
||||||
if (mesh == nullptr || mesh->totpoly == 0) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
bke::MutableAttributeAccessor attributes = mesh->attributes_for_write();
|
bke::MutableAttributeAccessor attributes = mesh->attributes_for_write();
|
||||||
bke::SpanAttributeWriter<bool> select_vert = attributes.lookup_or_add_for_write_span<bool>(
|
bke::SpanAttributeWriter<bool> select_vert = attributes.lookup_or_add_for_write_span<bool>(
|
||||||
|
@ -735,7 +731,7 @@ void paintvert_select_less(bContext *C, Object *ob, const bool face_step)
|
||||||
const Span<MEdge> edges = mesh->edges();
|
const Span<MEdge> edges = mesh->edges();
|
||||||
|
|
||||||
MeshElemMap *edge_poly_map;
|
MeshElemMap *edge_poly_map;
|
||||||
int *edge_poly_mem;
|
int *edge_poly_mem = nullptr;
|
||||||
if (face_step) {
|
if (face_step) {
|
||||||
BKE_mesh_edge_poly_map_create(&edge_poly_map,
|
BKE_mesh_edge_poly_map_create(&edge_poly_map,
|
||||||
&edge_poly_mem,
|
&edge_poly_mem,
|
||||||
|
@ -774,10 +770,11 @@ void paintvert_select_less(bContext *C, Object *ob, const bool face_step)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (edge_poly_mem) {
|
||||||
|
MEM_freeN(edge_poly_map);
|
||||||
|
MEM_freeN(edge_poly_mem);
|
||||||
|
}
|
||||||
select_vert.finish();
|
select_vert.finish();
|
||||||
paintvert_flush_flags(ob);
|
|
||||||
paintvert_tag_select_update(C, ob);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void paintvert_tag_select_update(bContext *C, Object *ob)
|
void paintvert_tag_select_update(bContext *C, Object *ob)
|
||||||
|
|
|
@ -831,9 +831,19 @@ void PAINT_OT_vert_select_more(wmOperatorType *ot)
|
||||||
|
|
||||||
static int paintvert_select_less_exec(bContext *C, wmOperator *op)
|
static int paintvert_select_less_exec(bContext *C, wmOperator *op)
|
||||||
{
|
{
|
||||||
|
Object *ob = CTX_data_active_object(C);
|
||||||
|
Mesh *mesh = BKE_mesh_from_object(ob);
|
||||||
|
if (mesh == NULL || mesh->totpoly == 0) {
|
||||||
|
return OPERATOR_CANCELLED;
|
||||||
|
}
|
||||||
|
|
||||||
const bool face_step = RNA_boolean_get(op->ptr, "face_step");
|
const bool face_step = RNA_boolean_get(op->ptr, "face_step");
|
||||||
paintvert_select_less(C, CTX_data_active_object(C), face_step);
|
paintvert_select_less(mesh, face_step);
|
||||||
|
|
||||||
|
paintvert_flush_flags(ob);
|
||||||
|
paintvert_tag_select_update(C, ob);
|
||||||
ED_region_tag_redraw(CTX_wm_region(C));
|
ED_region_tag_redraw(CTX_wm_region(C));
|
||||||
|
|
||||||
return OPERATOR_FINISHED;
|
return OPERATOR_FINISHED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue