Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2019-01-23 00:24:54 +0300
committerCampbell Barton <ideasman42@gmail.com>2019-01-23 00:45:43 +0300
commit69529177be11be25b5a929c658af66612101d87b (patch)
tree4fe9af73539a119acc22dccc1cbf7f5cc02122a0 /source/blender/editors/sculpt_paint/paint_vertex_weight_ops.c
parent3891ad8e03176d993b8082292638117a2963f931 (diff)
Revert "Fix T60126: Gradient affects hidden vertices when weight painting"
This reverts commit 06a6b5dba459d4153d85c5894e3c3e72abeb34e3. The error is that geometry was hidden in the first place, this should only apply when selecting verts/faces.
Diffstat (limited to 'source/blender/editors/sculpt_paint/paint_vertex_weight_ops.c')
-rw-r--r--source/blender/editors/sculpt_paint/paint_vertex_weight_ops.c80
1 files changed, 38 insertions, 42 deletions
diff --git a/source/blender/editors/sculpt_paint/paint_vertex_weight_ops.c b/source/blender/editors/sculpt_paint/paint_vertex_weight_ops.c
index e94e8a2eee2..7100bf33a47 100644
--- a/source/blender/editors/sculpt_paint/paint_vertex_weight_ops.c
+++ b/source/blender/editors/sculpt_paint/paint_vertex_weight_ops.c
@@ -625,13 +625,13 @@ static void gradientVertUpdate__mapFunc(
const float UNUSED(no_f[3]), const short UNUSED(no_s[3]))
{
WPGradient_userData *grad_data = userData;
- WPGradient_vertStore *vs = &grad_data->vert_cache->elem[index];
-
- if (vs->sco[0] == FLT_MAX) {
- return;
+ Mesh *me = grad_data->me;
+ if ((grad_data->use_select == false) || (me->mvert[index].flag & SELECT)) {
+ WPGradient_vertStore *vs = &grad_data->vert_cache->elem[index];
+ if (vs->sco[0] != FLT_MAX) {
+ gradientVert_update(grad_data, index);
+ }
}
-
- gradientVert_update(grad_data, index);
}
static void gradientVertInit__mapFunc(
@@ -640,46 +640,42 @@ static void gradientVertInit__mapFunc(
{
WPGradient_userData *grad_data = userData;
Mesh *me = grad_data->me;
- WPGradient_vertStore *vs = &grad_data->vert_cache->elem[index];
- if (grad_data->use_select && !(me->mvert[index].flag & SELECT)) {
- copy_v2_fl(vs->sco, FLT_MAX);
- return;
- }
-
- if (me->mvert[index].flag & ME_HIDE) {
- copy_v2_fl(vs->sco, FLT_MAX);
- return;
- }
-
- /* run first pass only,
- * the screen coords of the verts need to be cached because
- * updating the mesh may move them about (entering feedback loop) */
- if (BLI_BITMAP_TEST(grad_data->vert_visit, index)) {
- copy_v2_fl(vs->sco, FLT_MAX);
- return;
- }
+ if ((grad_data->use_select == false) || (me->mvert[index].flag & SELECT)) {
+ /* run first pass only,
+ * the screen coords of the verts need to be cached because
+ * updating the mesh may move them about (entering feedback loop) */
+
+ if (BLI_BITMAP_TEST(grad_data->vert_visit, index) == 0) {
+ WPGradient_vertStore *vs = &grad_data->vert_cache->elem[index];
+ if (ED_view3d_project_float_object(
+ grad_data->ar,
+ co, vs->sco,
+ V3D_PROJ_TEST_CLIP_BB | V3D_PROJ_TEST_CLIP_NEAR) == V3D_PROJ_RET_OK)
+ {
+ /* ok */
+ MDeformVert *dv = &me->dvert[index];
+ const MDeformWeight *dw;
+ dw = defvert_find_index(dv, grad_data->def_nr);
+ if (dw) {
+ vs->weight_orig = dw->weight;
+ vs->flag = VGRAD_STORE_DW_EXIST;
+ }
+ else {
+ vs->weight_orig = 0.0f;
+ vs->flag = VGRAD_STORE_NOP;
+ }
- if (ED_view3d_project_float_object(
- grad_data->ar,
- co, vs->sco,
- V3D_PROJ_TEST_CLIP_BB | V3D_PROJ_TEST_CLIP_NEAR) != V3D_PROJ_RET_OK)
- {
- return;
- }
+ BLI_BITMAP_ENABLE(grad_data->vert_visit, index);
- MDeformVert *dv = &me->dvert[index];
- const MDeformWeight *dw = defvert_find_index(dv, grad_data->def_nr);
- if (dw) {
- vs->weight_orig = dw->weight;
- vs->flag = VGRAD_STORE_DW_EXIST;
- }
- else {
- vs->weight_orig = 0.0f;
- vs->flag = VGRAD_STORE_NOP;
+ gradientVert_update(grad_data, index);
+ }
+ else {
+ /* no go */
+ copy_v2_fl(vs->sco, FLT_MAX);
+ }
+ }
}
- BLI_BITMAP_ENABLE(grad_data->vert_visit, index);
- gradientVert_update(grad_data, index);
}
static int paint_weight_gradient_modal(bContext *C, wmOperator *op, const wmEvent *event)