Cleanup: use new BKE_mesh_iterator foreach_mapped helpers in WPaint gradient code.
This commit is contained in:
parent
f58fa57b83
commit
1b2a2e0862
@ -51,6 +51,7 @@
|
|||||||
#include "BKE_context.h"
|
#include "BKE_context.h"
|
||||||
#include "BKE_deform.h"
|
#include "BKE_deform.h"
|
||||||
#include "BKE_mesh.h"
|
#include "BKE_mesh.h"
|
||||||
|
#include "BKE_mesh_iterators.h"
|
||||||
#include "BKE_mesh_mapping.h"
|
#include "BKE_mesh_mapping.h"
|
||||||
#include "BKE_mesh_runtime.h"
|
#include "BKE_mesh_runtime.h"
|
||||||
#include "BKE_modifier.h"
|
#include "BKE_modifier.h"
|
||||||
@ -785,31 +786,16 @@ static int paint_weight_gradient_exec(bContext *C, wmOperator *op)
|
|||||||
ED_view3d_init_mats_rv3d(ob, ar->regiondata);
|
ED_view3d_init_mats_rv3d(ob, ar->regiondata);
|
||||||
|
|
||||||
Mesh *me_eval = mesh_get_eval_final(depsgraph, scene, ob, scene->customdata_mask | CD_MASK_ORIGINDEX);
|
Mesh *me_eval = mesh_get_eval_final(depsgraph, scene, ob, scene->customdata_mask | CD_MASK_ORIGINDEX);
|
||||||
int *mv_orig_indices = CustomData_get_layer(&me_eval->vdata, CD_ORIGINDEX);
|
|
||||||
MVert *mv = me_eval->mvert;
|
|
||||||
/* NULL origindex is valid when wehave no generative modifiers... */
|
|
||||||
BLI_assert(mv_orig_indices != NULL || me_eval->totvert == me->totvert);
|
|
||||||
if (data.is_init) {
|
if (data.is_init) {
|
||||||
data.vert_visit = BLI_BITMAP_NEW(me->totvert, __func__);
|
data.vert_visit = BLI_BITMAP_NEW(me->totvert, __func__);
|
||||||
|
|
||||||
/* TODO add some similar helpers as DM's foreachMappedXXX callbacks, for evaluated mesh? */
|
BKE_mesh_foreach_mapped_vert(me_eval, gradientVertInit__mapFunc, &data, MESH_FOREACH_NOP);
|
||||||
for (int mv_idx = 0; mv_idx < me_eval->totvert; mv_idx++, mv++) {
|
|
||||||
const int mv_orig_idx = mv_orig_indices != NULL ? mv_orig_indices[mv_idx] : mv_idx;
|
|
||||||
if (mv_orig_idx != ORIGINDEX_NONE) {
|
|
||||||
gradientVertInit__mapFunc(&data, mv_orig_idx, mv->co, NULL, NULL);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
MEM_freeN(data.vert_visit);
|
MEM_freeN(data.vert_visit);
|
||||||
data.vert_visit = NULL;
|
data.vert_visit = NULL;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
for (int mv_idx = 0; mv_idx < me_eval->totvert; mv_idx++, mv++) {
|
BKE_mesh_foreach_mapped_vert(me_eval, gradientVertUpdate__mapFunc, &data, MESH_FOREACH_NOP);
|
||||||
const int mv_orig_idx = mv_orig_indices != NULL ? mv_orig_indices[mv_idx] : mv_idx;
|
|
||||||
if (mv_orig_idx != ORIGINDEX_NONE) {
|
|
||||||
gradientVertUpdate__mapFunc(&data, mv_orig_idx, mv->co, NULL, NULL);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
DEG_id_tag_update(&ob->id, OB_RECALC_DATA);
|
DEG_id_tag_update(&ob->id, OB_RECALC_DATA);
|
||||||
|
Loading…
Reference in New Issue
Block a user