diff options
author | Antony Riakiotakis <kalast@gmail.com> | 2013-09-05 18:02:59 +0400 |
---|---|---|
committer | Antony Riakiotakis <kalast@gmail.com> | 2013-09-05 18:02:59 +0400 |
commit | 4b1436b5252a6a006f0155e1bbb6c6b449b8f4e9 (patch) | |
tree | d544d077b8668520bac726677848fcf3a31131e3 /source/blender/editors/sculpt_paint/paint_ops.c | |
parent | 4df6c73d25f9e772d52b083655157ee99eeb617f (diff) |
Ctr-Alt-F radial control operator for texture painting, controls the
rotation of the brush mask texture.
Unfortunately secondary path does not work here because we do not have a
permanent switch to choose between primary-secondary brush texture. Use
operator property instead.
Diffstat (limited to 'source/blender/editors/sculpt_paint/paint_ops.c')
-rw-r--r-- | source/blender/editors/sculpt_paint/paint_ops.c | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/source/blender/editors/sculpt_paint/paint_ops.c b/source/blender/editors/sculpt_paint/paint_ops.c index bdf542526ee..0b0607babc1 100644 --- a/source/blender/editors/sculpt_paint/paint_ops.c +++ b/source/blender/editors/sculpt_paint/paint_ops.c @@ -1011,7 +1011,8 @@ typedef enum { RC_COLOR = 1, RC_ROTATION = 2, RC_ZOOM = 4, - RC_WEIGHT = 8 + RC_WEIGHT = 8, + RC_SECONDARY_ROTATION = 16 } RCFlags; static void set_brush_rc_path(PointerRNA *ptr, const char *brush_path, @@ -1043,7 +1044,10 @@ static void set_brush_rc_props(PointerRNA *ptr, const char *paint, RNA_string_set(ptr, "data_path_secondary", ""); } set_brush_rc_path(ptr, brush_path, "color_path", "cursor_color_add"); - set_brush_rc_path(ptr, brush_path, "rotation_path", "texture_slot.angle"); + if (flags & RC_SECONDARY_ROTATION) + set_brush_rc_path(ptr, brush_path, "rotation_path", "mask_texture_slot.angle"); + else + set_brush_rc_path(ptr, brush_path, "rotation_path", "texture_slot.angle"); RNA_string_set(ptr, "image_id", brush_path); if (flags & RC_COLOR) @@ -1055,6 +1059,11 @@ static void set_brush_rc_props(PointerRNA *ptr, const char *paint, else RNA_string_set(ptr, "zoom_path", ""); + if (flags & RC_SECONDARY_ROTATION) + RNA_boolean_set(ptr, "secondary_tex", true); + else + RNA_boolean_set(ptr, "secondary_tex", false); + MEM_freeN(brush_path); } @@ -1064,6 +1073,7 @@ static void ed_keymap_paint_brush_radial_control(wmKeyMap *keymap, const char *p wmKeyMapItem *kmi; /* only size needs to follow zoom, strength shows fixed size circle */ int flags_nozoom = flags & (~RC_ZOOM); + int flags_noradial_secondary = flags & (~(RC_SECONDARY_ROTATION | RC_ZOOM)); kmi = WM_keymap_add_item(keymap, "WM_OT_radial_control", FKEY, KM_PRESS, 0, 0); set_brush_rc_props(kmi->ptr, paint, "size", "use_unified_size", flags); @@ -1078,7 +1088,12 @@ static void ed_keymap_paint_brush_radial_control(wmKeyMap *keymap, const char *p if (flags & RC_ROTATION) { kmi = WM_keymap_add_item(keymap, "WM_OT_radial_control", FKEY, KM_PRESS, KM_CTRL, 0); - set_brush_rc_props(kmi->ptr, paint, "texture_slot.angle", NULL, flags_nozoom); + set_brush_rc_props(kmi->ptr, paint, "texture_slot.angle", NULL, flags_noradial_secondary); + } + + if (flags & RC_SECONDARY_ROTATION) { + kmi = WM_keymap_add_item(keymap, "WM_OT_radial_control", FKEY, KM_PRESS, KM_CTRL | KM_ALT, 0); + set_brush_rc_props(kmi->ptr, paint, "mask_texture_slot.angle", NULL, flags_nozoom); } } @@ -1265,7 +1280,7 @@ void ED_keymap_paint(wmKeyConfig *keyconf) ed_keymap_paint_brush_switch(keymap, "image_paint"); ed_keymap_paint_brush_size(keymap, "tool_settings.image_paint.brush.size"); - ed_keymap_paint_brush_radial_control(keymap, "image_paint", RC_COLOR | RC_ZOOM | RC_ROTATION); + ed_keymap_paint_brush_radial_control(keymap, "image_paint", RC_COLOR | RC_ZOOM | RC_ROTATION | RC_SECONDARY_ROTATION); ed_keymap_stencil(keymap); |