forked from bartvdbraak/blender
key shortcits for sculpt back
- T was 'Flatten Brush', now Shift+T - added an option to OBJECT_OT_subdivision_set to set the level relatively (so page up/down works), however RNA lets it set one level higher then the maximum, this seems displays OK in the 3D view so not sure whats going on here (as if there is always an extra hidden multires level).
This commit is contained in:
parent
489ff11f2b
commit
bb094b8655
@ -84,7 +84,9 @@ class SubdivisionSet(bpy.types.Operator):
|
||||
bl_undo = True
|
||||
|
||||
level = IntProperty(name="Level",
|
||||
default=1, min=0, max=100, soft_min=0, soft_max=6)
|
||||
default=1, min=-100, max=100, soft_min=-6, soft_max=6)
|
||||
|
||||
relative = BoolProperty(name="Relative", description="Apply the subsurf level as an offset relative to the current level", default=False)
|
||||
|
||||
def poll(self, context):
|
||||
obs = context.selected_editable_objects
|
||||
@ -92,19 +94,35 @@ class SubdivisionSet(bpy.types.Operator):
|
||||
|
||||
def execute(self, context):
|
||||
level = self.properties.level
|
||||
relative = self.properties.relative
|
||||
|
||||
if relative and level == 0:
|
||||
return ('CANCELLED',) # nothing to do
|
||||
|
||||
def set_object_subd(obj):
|
||||
for mod in obj.modifiers:
|
||||
if mod.type == 'MULTIRES':
|
||||
if level < mod.total_levels:
|
||||
if obj.mode == 'SCULPT' and mod.sculpt_levels != level:
|
||||
mod.sculpt_levels = level
|
||||
elif obj.mode == 'OBJECT' and mod.levels != level:
|
||||
mod.levels = level
|
||||
if level <= mod.total_levels:
|
||||
if obj.mode == 'SCULPT':
|
||||
if relative:
|
||||
mod.sculpt_levels += level
|
||||
else:
|
||||
if mod.sculpt_levels != level:
|
||||
mod.sculpt_levels = level
|
||||
elif obj.mode == 'OBJECT':
|
||||
if relative:
|
||||
mod.levels += level
|
||||
else:
|
||||
if mod.levels != level:
|
||||
mod.levels = level
|
||||
return
|
||||
elif mod.type == 'SUBSURF':
|
||||
if mod.levels != level:
|
||||
mod.levels = level
|
||||
if relative:
|
||||
mod.levels += level
|
||||
else:
|
||||
if mod.levels != level:
|
||||
mod.levels = level
|
||||
|
||||
return
|
||||
|
||||
# adda new modifier
|
||||
|
@ -317,7 +317,7 @@ void ED_keymap_object(wmKeyConfig *keyconf)
|
||||
WM_keymap_verify_item(keymap, "GROUP_OT_objects_add_active", GKEY, KM_PRESS, KM_SHIFT|KM_CTRL, 0);
|
||||
WM_keymap_verify_item(keymap, "GROUP_OT_objects_remove_active", GKEY, KM_PRESS, KM_SHIFT|KM_ALT, 0);
|
||||
|
||||
for(i=1; i<=5; i++) {
|
||||
for(i=0; i<=5; i++) {
|
||||
kmi = WM_keymap_add_item(keymap, "OBJECT_OT_subdivision_set", ZEROKEY+i, KM_PRESS, KM_CTRL, 0);
|
||||
RNA_int_set(kmi->ptr, "level", i);
|
||||
}
|
||||
@ -342,15 +342,15 @@ void ED_object_generic_keymap(struct wmKeyConfig *keyconf, struct wmKeyMap *keym
|
||||
if(do_pet) {
|
||||
/* context ops */
|
||||
km = WM_keymap_add_item(keymap, "WM_OT_context_cycle_enum", OKEY, KM_PRESS, KM_SHIFT, 0);
|
||||
RNA_string_set(km->ptr, "path", "scene.tool_settings.proportional_editing_falloff");
|
||||
RNA_string_set(km->ptr, "path", "tool_settings.proportional_editing_falloff");
|
||||
|
||||
km = WM_keymap_add_item(keymap, "WM_OT_context_toggle_enum", OKEY, KM_PRESS, 0, 0);
|
||||
RNA_string_set(km->ptr, "path", "scene.tool_settings.proportional_editing");
|
||||
RNA_string_set(km->ptr, "path", "tool_settings.proportional_editing");
|
||||
RNA_string_set(km->ptr, "value_1", "DISABLED");
|
||||
RNA_string_set(km->ptr, "value_2", "ENABLED");
|
||||
|
||||
km = WM_keymap_add_item(keymap, "WM_OT_context_toggle_enum", OKEY, KM_PRESS, KM_ALT, 0);
|
||||
RNA_string_set(km->ptr, "path", "scene.tool_settings.proportional_editing");
|
||||
RNA_string_set(km->ptr, "path", "tool_settings.proportional_editing");
|
||||
RNA_string_set(km->ptr, "value_1", "DISABLED");
|
||||
RNA_string_set(km->ptr, "value_2", "CONNECTED");
|
||||
}
|
||||
|
@ -179,6 +179,7 @@ static void ed_keymap_paint_brush_switch(wmKeyMap *keymap, const char *path)
|
||||
void ED_keymap_paint(wmKeyConfig *keyconf)
|
||||
{
|
||||
wmKeyMap *keymap;
|
||||
wmKeyMapItem *kmi;
|
||||
int i;
|
||||
|
||||
/* Sculpt mode */
|
||||
@ -194,9 +195,51 @@ void ED_keymap_paint(wmKeyConfig *keyconf)
|
||||
|
||||
ed_keymap_paint_brush_switch(keymap, "tool_settings.sculpt.active_brush_index");
|
||||
|
||||
for(i=1; i<=5; i++)
|
||||
for(i=0; i<=5; i++)
|
||||
RNA_int_set(WM_keymap_add_item(keymap, "OBJECT_OT_subdivision_set", ZEROKEY+i, KM_PRESS, KM_CTRL, 0)->ptr, "level", i);
|
||||
|
||||
/* multires switch */
|
||||
kmi= WM_keymap_add_item(keymap, "OBJECT_OT_subdivision_set", PAGEUPKEY, KM_PRESS, 0, 0);
|
||||
RNA_int_set(kmi->ptr, "level", 1);
|
||||
RNA_boolean_set(kmi->ptr, "relative", 1);
|
||||
|
||||
kmi= WM_keymap_add_item(keymap, "OBJECT_OT_subdivision_set", PAGEDOWNKEY, KM_PRESS, 0, 0);
|
||||
RNA_int_set(kmi->ptr, "level", -1);
|
||||
RNA_boolean_set(kmi->ptr, "relative", 1);
|
||||
|
||||
/* toggles */
|
||||
kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", AKEY, KM_PRESS, 0, 0);
|
||||
RNA_string_set(kmi->ptr, "path", "tool_settings.sculpt.brush.use_anchor");
|
||||
|
||||
kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", SKEY, KM_PRESS, KM_SHIFT, 0);
|
||||
RNA_string_set(kmi->ptr, "path", "tool_settings.sculpt.brush.use_smooth_stroke");
|
||||
|
||||
/* brush switching */
|
||||
kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", DKEY, KM_PRESS, 0, 0);
|
||||
RNA_string_set(kmi->ptr, "path", "tool_settings.sculpt.brush.sculpt_tool");
|
||||
RNA_string_set(kmi->ptr, "value", "DRAW");
|
||||
|
||||
kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", SKEY, KM_PRESS, 0, 0);
|
||||
RNA_string_set(kmi->ptr, "path", "tool_settings.sculpt.brush.sculpt_tool");
|
||||
RNA_string_set(kmi->ptr, "value", "SMOOTH");
|
||||
|
||||
kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", PKEY, KM_PRESS, 0, 0);
|
||||
RNA_string_set(kmi->ptr, "path", "tool_settings.sculpt.brush.sculpt_tool");
|
||||
RNA_string_set(kmi->ptr, "value", "PINCH");
|
||||
|
||||
kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", GKEY, KM_PRESS, 0, 0);
|
||||
RNA_string_set(kmi->ptr, "path", "tool_settings.sculpt.brush.sculpt_tool");
|
||||
RNA_string_set(kmi->ptr, "value", "GRAB");
|
||||
|
||||
kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", LKEY, KM_PRESS, 0, 0);
|
||||
RNA_string_set(kmi->ptr, "path", "tool_settings.sculpt.brush.sculpt_tool");
|
||||
RNA_string_set(kmi->ptr, "value", "LAYER");
|
||||
|
||||
kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", TKEY, KM_PRESS, KM_SHIFT, 0); /* was just T in 2.4x */
|
||||
RNA_string_set(kmi->ptr, "path", "tool_settings.sculpt.brush.sculpt_tool");
|
||||
RNA_string_set(kmi->ptr, "value", "FLATTEN");
|
||||
|
||||
|
||||
/* Vertex Paint mode */
|
||||
keymap= WM_keymap_find(keyconf, "Vertex Paint", 0, 0);
|
||||
keymap->poll= vertex_paint_poll;
|
||||
|
@ -825,7 +825,7 @@ void transform_keymap_for_space(wmKeyConfig *keyconf, wmKeyMap *keymap, int spac
|
||||
km = WM_keymap_add_item(keymap, OP_MIRROR, MKEY, KM_PRESS, KM_CTRL, 0);
|
||||
|
||||
km = WM_keymap_add_item(keymap, "WM_OT_context_toggle", TABKEY, KM_PRESS, KM_SHIFT, 0);
|
||||
RNA_string_set(km->ptr, "path", "scene.tool_settings.snap");
|
||||
RNA_string_set(km->ptr, "path", "tool_settings.snap");
|
||||
|
||||
km = WM_keymap_add_item(keymap, "TRANSFORM_OT_snap_type", TABKEY, KM_PRESS, KM_SHIFT|KM_CLICK, 0);
|
||||
|
||||
@ -902,7 +902,7 @@ void transform_keymap_for_space(wmKeyConfig *keyconf, wmKeyMap *keymap, int spac
|
||||
km = WM_keymap_add_item(keymap, "TRANSFORM_OT_mirror", MKEY, KM_PRESS, KM_CTRL, 0);
|
||||
|
||||
km = WM_keymap_add_item(keymap, "WM_OT_context_toggle", TABKEY, KM_PRESS, KM_SHIFT, 0);
|
||||
RNA_string_set(km->ptr, "path", "scene.tool_settings.snap");
|
||||
RNA_string_set(km->ptr, "path", "tool_settings.snap");
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user