diff options
author | Pablo Dobarro <pablodp606@gmail.com> | 2020-10-21 18:44:00 +0300 |
---|---|---|
committer | Dalai Felinto <dalai@blender.org> | 2020-10-21 19:17:36 +0300 |
commit | 7ff6bfd1e0af67d2e583d12ce5aee5d2bf8ef96e (patch) | |
tree | 44e6816f47bf51c0d019ef582f393510fb62cb29 /source/blender/editors/sculpt_paint | |
parent | 1b577d0d6d4f6517ae2a22edd92a0c4cff4b2255 (diff) |
UI: Allow changing the active side of line gestures
Line gesture use always the right side of the line as active (the area
of the mesh that is going to be modified) by default.
This adds the ability to change the active side when the line gesture is
active by pressing the F key.
This allows more freedom to position the line after starting the
gestures, as it won't be required to cancel the operation or undo if the
line was used in the wrong direction.
Reviewed By: Severin
Differential Revision: https://developer.blender.org/D9301
Diffstat (limited to 'source/blender/editors/sculpt_paint')
-rw-r--r-- | source/blender/editors/sculpt_paint/paint_mask.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/source/blender/editors/sculpt_paint/paint_mask.c b/source/blender/editors/sculpt_paint/paint_mask.c index f130c2ee685..305347b46a7 100644 --- a/source/blender/editors/sculpt_paint/paint_mask.c +++ b/source/blender/editors/sculpt_paint/paint_mask.c @@ -248,6 +248,7 @@ typedef struct LassoGestureData { typedef struct LineGestureData { float true_plane[4]; float plane[4]; + bool flip; } LineGestureData; struct SculptGestureOperation; @@ -461,6 +462,8 @@ static SculptGestureContext *sculpt_gesture_init_from_line(bContext *C, wmOperat line_points[1][0] = RNA_int_get(op->ptr, "xend"); line_points[1][1] = RNA_int_get(op->ptr, "yend"); + sgcontext->line.flip = RNA_boolean_get(op->ptr, "flip"); + float depth_point[3]; float plane_points[3][3]; @@ -481,6 +484,12 @@ static SculptGestureContext *sculpt_gesture_init_from_line(bContext *C, wmOperat if (!sgcontext->vc.rv3d->is_persp) { mul_v3_fl(normal, -1.0f); } + + /* Apply flip. */ + if (sgcontext->line.flip) { + mul_v3_fl(normal, -1.0f); + } + mul_v3_mat3_m4v3(normal, sgcontext->vc.obact->imat, normal); float plane_point_object_space[3]; mul_v3_m4v3(plane_point_object_space, sgcontext->vc.obact->imat, plane_points[0]); |