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
This commit is contained in:
Pablo Dobarro 2019-10-07 22:07:29 +02:00
parent ec9044e2b2
commit 06c5520bda
Notes: blender-bot 2023-02-14 03:34:17 +01:00
Referenced by issue #70554, Snake Hook + Ctrl does not set the brush stroke in its normal direction
3 changed files with 11 additions and 2 deletions

View File

@ -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;

View File

@ -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,

View File

@ -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)