diff options
author | Pablo Dobarro <pablodp606@gmail.com> | 2019-10-07 23:07:29 +0300 |
---|---|---|
committer | Pablo Dobarro <pablodp606@gmail.com> | 2019-10-09 16:44:56 +0300 |
commit | 06c5520bda40c9b5b8240eaf4c8d0a1de7d2ffec (patch) | |
tree | 773791f0824dadc3c57f85a2a4632878e5f0b51a /source | |
parent | ec9044e2b2ea6609128cc1db98eb23411f5e2ade (diff) |
Fix T70554: Snake Hook + Ctrl does not set the brush stroke in its normal direction
This commit also fixes the same issue in elastic deform
Reviewed By: jbakker
Maniphest Tasks: T70554
Differential Revision: https://developer.blender.org/D6014
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/blenkernel/intern/brush.c | 1 | ||||
-rw-r--r-- | source/blender/editors/sculpt_paint/sculpt.c | 9 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_brush_types.h | 3 |
3 files changed, 11 insertions, 2 deletions
diff --git a/source/blender/blenkernel/intern/brush.c b/source/blender/blenkernel/intern/brush.c index 39a12a997ef..597a5c78a8d 100644 --- a/source/blender/blenkernel/intern/brush.c +++ b/source/blender/blenkernel/intern/brush.c @@ -935,6 +935,7 @@ void BKE_brush_sculpt_reset(Brush *br) break; case SCULPT_TOOL_SNAKE_HOOK: br->alpha = 1.0f; + br->rake_factor = 1.0f; break; case SCULPT_TOOL_THUMB: br->size = 75; diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c index 145bc77fb0f..cec323fd31f 100644 --- a/source/blender/editors/sculpt_paint/sculpt.c +++ b/source/blender/editors/sculpt_paint/sculpt.c @@ -2107,7 +2107,10 @@ static void update_sculpt_normal(Sculpt *sd, Object *ob, PBVHNode **nodes, int t StrokeCache *cache = ob->sculpt->cache; /* Grab brush does not update the sculpt normal during a stroke */ const bool update_normal = !(brush->flag & BRUSH_ORIGINAL_NORMAL) && - !(brush->sculpt_tool == SCULPT_TOOL_GRAB); + !(brush->sculpt_tool == SCULPT_TOOL_GRAB) && + !(brush->sculpt_tool == SCULPT_TOOL_ELASTIC_DEFORM) && + !(brush->sculpt_tool == SCULPT_TOOL_SNAKE_HOOK && + cache->normal_weight > 0.0f); if (cache->mirror_symmetry_pass == 0 && cache->radial_symmetry_pass == 0 && (cache->first_time || update_normal)) { @@ -3591,6 +3594,10 @@ static void do_elastic_deform_brush(Sculpt *sd, Object *ob, PBVHNode **nodes, in copy_v3_v3(grab_delta, ss->cache->grab_delta_symmetry); + if (ss->cache->normal_weight > 0.0f) { + sculpt_project_v3_normal_align(ss, ss->cache->normal_weight, grab_delta); + } + SculptThreadedTaskData data = { .sd = sd, .ob = ob, diff --git a/source/blender/makesdna/DNA_brush_types.h b/source/blender/makesdna/DNA_brush_types.h index aec28c0fe75..fc8763f1519 100644 --- a/source/blender/makesdna/DNA_brush_types.h +++ b/source/blender/makesdna/DNA_brush_types.h @@ -502,7 +502,8 @@ typedef enum eBrushUVSculptTool { SCULPT_TOOL_SCRAPE, \ SCULPT_TOOL_FLATTEN) -#define SCULPT_TOOL_HAS_NORMAL_WEIGHT(t) ELEM(t, SCULPT_TOOL_GRAB, SCULPT_TOOL_SNAKE_HOOK) +#define SCULPT_TOOL_HAS_NORMAL_WEIGHT(t) \ + ELEM(t, SCULPT_TOOL_GRAB, SCULPT_TOOL_SNAKE_HOOK, SCULPT_TOOL_ELASTIC_DEFORM) #define SCULPT_TOOL_HAS_RAKE(t) ELEM(t, SCULPT_TOOL_SNAKE_HOOK) |