diff options
author | Julian Eisel <julian@blender.org> | 2020-03-09 14:20:29 +0300 |
---|---|---|
committer | Julian Eisel <julian@blender.org> | 2020-03-09 14:20:36 +0300 |
commit | 814931d27d01e5883c94658e7c963268088af7bd (patch) | |
tree | 26743b913a14d43a9e43eaedf4200bbf9e7546a7 /release/scripts | |
parent | da10812f25031032b6bbedbf61710a2a66a24f34 (diff) | |
parent | f73a6c517ca1e17ce4e9a98f9f033edcc1e4f0fe (diff) |
Merge branch 'soc-2019-openxr' into vr_scene_inspection
Diffstat (limited to 'release/scripts')
m--------- | release/scripts/addons | 0 | ||||
m--------- | release/scripts/addons_contrib | 0 | ||||
-rw-r--r-- | release/scripts/modules/rna_keymap_ui.py | 3 | ||||
-rw-r--r-- | release/scripts/modules/sys_info.py | 8 | ||||
-rw-r--r-- | release/scripts/presets/keyconfig/keymap_data/blender_default.py | 171 | ||||
-rw-r--r-- | release/scripts/startup/bl_ui/properties_data_mesh.py | 1 | ||||
-rw-r--r-- | release/scripts/startup/bl_ui/properties_paint_common.py | 3 | ||||
-rw-r--r-- | release/scripts/startup/bl_ui/properties_particle.py | 33 | ||||
-rw-r--r-- | release/scripts/startup/bl_ui/properties_physics_fluid.py | 18 | ||||
-rw-r--r-- | release/scripts/startup/bl_ui/space_toolsystem_toolbar.py | 1 | ||||
-rw-r--r-- | release/scripts/startup/bl_ui/space_view3d.py | 54 | ||||
-rw-r--r-- | release/scripts/startup/bl_ui/space_view3d_toolbar.py | 1 |
12 files changed, 204 insertions, 89 deletions
diff --git a/release/scripts/addons b/release/scripts/addons -Subproject 14ee8dfc0f360d7ea53c467e218f45fbf965da7 +Subproject 7f50343d1c53ca9a5ca747f47e3b1e5bbcbe847 diff --git a/release/scripts/addons_contrib b/release/scripts/addons_contrib -Subproject 68f6291ef28902de6ddaffc3fa18748a95569c0 +Subproject 9468c406fb554e32ff47b62bfef356b3908ec65 diff --git a/release/scripts/modules/rna_keymap_ui.py b/release/scripts/modules/rna_keymap_ui.py index b8a9aa40a0b..30170e34bfa 100644 --- a/release/scripts/modules/rna_keymap_ui.py +++ b/release/scripts/modules/rna_keymap_ui.py @@ -184,6 +184,9 @@ def draw_kmi(display_keymaps, kc, km, kmi, layout, level): if map_type == 'KEYBOARD': subrow.prop(kmi, "type", text="", event=True) subrow.prop(kmi, "value", text="") + subrow_repeat = subrow.row(align=True) + subrow_repeat.active = kmi.value in {'ANY', 'PRESS'} + subrow_repeat.prop(kmi, "repeat", text="Repeat") elif map_type in {'MOUSE', 'NDOF'}: subrow.prop(kmi, "type", text="") subrow.prop(kmi, "value", text="") diff --git a/release/scripts/modules/sys_info.py b/release/scripts/modules/sys_info.py index 656e2b3bd54..fc3ffe4dd88 100644 --- a/release/scripts/modules/sys_info.py +++ b/release/scripts/modules/sys_info.py @@ -70,9 +70,13 @@ def write_sysinfo(filepath): output.write("build linkflags: %s\n" % prepr(bpy.app.build_linkflags)) output.write("build system: %s\n" % prepr(bpy.app.build_system)) - # python info + # Python info. output.write(title("Python")) - output.write("version: %s\n" % (sys.version)) + output.write("version: %s\n" % (sys.version.replace("\n", " "))) + output.write("file system encoding: %s:%s\n" % ( + sys.getfilesystemencoding(), + sys.getfilesystemencodeerrors(), + )) output.write("paths:\n") for p in sys.path: output.write("\t%r\n" % p) diff --git a/release/scripts/presets/keyconfig/keymap_data/blender_default.py b/release/scripts/presets/keyconfig/keymap_data/blender_default.py index bd381666eda..5aff2a75e03 100644 --- a/release/scripts/presets/keyconfig/keymap_data/blender_default.py +++ b/release/scripts/presets/keyconfig/keymap_data/blender_default.py @@ -855,12 +855,12 @@ def km_uv_editor(params): op_menu_pie("IMAGE_MT_uvs_snap_pie", {"type": 'S', "value": 'PRESS', "shift": True}), op_menu("IMAGE_MT_uvs_select_mode", {"type": 'TAB', "value": 'PRESS', "ctrl": True}), *_template_items_proportional_editing(connected=False), - ("transform.translate", {"type": 'G', "value": 'PRESS'}, None), + ("transform.translate", {"type": 'G', "value": 'PRESS', "repeat": False}, None), ("transform.translate", {"type": params.select_tweak, "value": 'ANY'}, None), - ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None), - ("transform.resize", {"type": 'S', "value": 'PRESS'}, None), - ("transform.shear", {"type": 'S', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, None), - ("transform.mirror", {"type": 'M', "value": 'PRESS', "ctrl": True}, None), + ("transform.rotate", {"type": 'R', "value": 'PRESS', "repeat": False}, None), + ("transform.resize", {"type": 'S', "value": 'PRESS', "repeat": False}, None), + ("transform.shear", {"type": 'S', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True, "repeat": False}, None), + ("transform.mirror", {"type": 'M', "value": 'PRESS', "ctrl": True, "repeat": False}, None), ("wm.context_toggle", {"type": 'TAB', "value": 'PRESS', "shift": True}, {"properties": [("data_path", 'tool_settings.use_snap')]}), ("wm.context_menu_enum", {"type": 'TAB', "value": 'PRESS', "shift": True, "ctrl": True}, @@ -1142,19 +1142,19 @@ def km_view3d(params): ("view3d.copybuffer", {"type": 'C', "value": 'PRESS', "ctrl": True}, None), ("view3d.pastebuffer", {"type": 'V', "value": 'PRESS', "ctrl": True}, None), # Transform. - ("transform.translate", {"type": 'G', "value": 'PRESS'}, None), + ("transform.translate", {"type": 'G', "value": 'PRESS', "repeat": False}, None), ("transform.translate", {"type": params.select_tweak, "value": 'ANY'}, None), - ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None), - ("transform.resize", {"type": 'S', "value": 'PRESS'}, None), - ("transform.bend", {"type": 'W', "value": 'PRESS', "shift": True}, None), - ("transform.tosphere", {"type": 'S', "value": 'PRESS', "shift": True, "alt": True}, None), - ("transform.shear", {"type": 'S', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, None), - ("transform.mirror", {"type": 'M', "value": 'PRESS', "ctrl": True}, None), + ("transform.rotate", {"type": 'R', "value": 'PRESS', "repeat": False}, None), + ("transform.resize", {"type": 'S', "value": 'PRESS', "repeat": False}, None), + ("transform.bend", {"type": 'W', "value": 'PRESS', "shift": True, "repeat": False}, None), + ("transform.tosphere", {"type": 'S', "value": 'PRESS', "shift": True, "alt": True, "repeat": False}, None), + ("transform.shear", {"type": 'S', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True, "repeat": False}, None), + ("transform.mirror", {"type": 'M', "value": 'PRESS', "ctrl": True, "repeat": False}, None), ("wm.context_toggle", {"type": 'TAB', "value": 'PRESS', "shift": True}, {"properties": [("data_path", 'tool_settings.use_snap')]}), op_panel("VIEW3D_PT_snapping", {"type": 'TAB', "value": 'PRESS', "shift": True, "ctrl": True}, [("keep_open", False)]), ("object.transform_axis_target", {"type": 'T', "value": 'PRESS', "shift": True}, None), - ("transform.skin_resize", {"type": 'A', "value": 'PRESS', "ctrl": True}, None), + ("transform.skin_resize", {"type": 'A', "value": 'PRESS', "ctrl": True, "repeat": False}, None), ]) if not params.legacy: @@ -1210,9 +1210,9 @@ def km_view3d(params): {"properties": [("type", 'RIGHT')]}), ("transform.create_orientation", {"type": 'SPACE', "value": 'PRESS', "ctrl": True, "alt": True}, {"properties": [("use", True)]}), - ("transform.translate", {"type": 'T', "value": 'PRESS', "shift": True}, + ("transform.translate", {"type": 'T', "value": 'PRESS', "shift": True, "repeat": False}, {"properties": [("texture_space", True)]}), - ("transform.resize", {"type": 'T', "value": 'PRESS', "shift": True, "alt": True}, + ("transform.resize", {"type": 'T', "value": 'PRESS', "shift": True, "alt": True, "repeat": False}, {"properties": [("texture_space", True)]}), # Old pivot. ("wm.context_set_enum", {"type": 'COMMA', "value": 'PRESS'}, @@ -1312,10 +1312,10 @@ def km_mask_editing(params): ("mask.duplicate_move", {"type": 'D', "value": 'PRESS', "shift": True}, None), ("mask.copy_splines", {"type": 'C', "value": 'PRESS', "ctrl": True}, None), ("mask.paste_splines", {"type": 'V', "value": 'PRESS', "ctrl": True}, None), - ("transform.translate", {"type": 'G', "value": 'PRESS'}, None), - ("transform.resize", {"type": 'S', "value": 'PRESS'}, None), - ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None), - ("transform.transform", {"type": 'S', "value": 'PRESS', "alt": True}, + ("transform.translate", {"type": 'G', "value": 'PRESS', "repeat": False}, None), + ("transform.resize", {"type": 'S', "value": 'PRESS', "repeat": False}, None), + ("transform.rotate", {"type": 'R', "value": 'PRESS', "repeat": False}, None), + ("transform.transform", {"type": 'S', "value": 'PRESS', "alt": True, "repeat": False}, {"properties": [("mode", 'MASK_SHRINKFATTEN')]}), ]) @@ -1514,12 +1514,12 @@ def km_graph_editor(params): ("graph.fmodifier_add", {"type": 'M', "value": 'PRESS', "shift": True, "ctrl": True}, {"properties": [("only_active", False)]}), ("anim.channels_editable_toggle", {"type": 'TAB', "value": 'PRESS'}, None), - ("transform.translate", {"type": 'G', "value": 'PRESS'}, None), + ("transform.translate", {"type": 'G', "value": 'PRESS', "repeat": False}, None), ("transform.translate", {"type": params.select_tweak, "value": 'ANY'}, None), - ("transform.transform", {"type": 'E', "value": 'PRESS'}, + ("transform.transform", {"type": 'E', "value": 'PRESS', "repeat": False}, {"properties": [("mode", 'TIME_EXTEND')]}), - ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None), - ("transform.resize", {"type": 'S', "value": 'PRESS'}, None), + ("transform.rotate", {"type": 'R', "value": 'PRESS', "repeat": False}, None), + ("transform.resize", {"type": 'S', "value": 'PRESS', "repeat": False}, None), ("wm.context_toggle", {"type": 'O', "value": 'PRESS'}, {"properties": [("data_path", 'tool_settings.use_proportional_fcurve')]}), op_menu_pie("VIEW3D_MT_proportional_editing_falloff_pie", {"type": 'O', "value": 'PRESS', "shift": True}), @@ -1770,13 +1770,13 @@ def km_node_editor(params): ("node.translate_attach", {"type": 'G', "value": 'PRESS'}, None), ("node.translate_attach", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, None), ("node.translate_attach", {"type": params.select_tweak, "value": 'ANY'}, None), - ("transform.translate", {"type": 'G', "value": 'PRESS'}, None), + ("transform.translate", {"type": 'G', "value": 'PRESS', "repeat": False}, None), ("transform.translate", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, {"properties": [("release_confirm", True)]}), ("transform.translate", {"type": params.select_tweak, "value": 'ANY'}, {"properties": [("release_confirm", True)]}), - ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None), - ("transform.resize", {"type": 'S', "value": 'PRESS'}, None), + ("transform.rotate", {"type": 'R', "value": 'PRESS', "repeat": False}, None), + ("transform.resize", {"type": 'S', "value": 'PRESS', "repeat": False}, None), ("node.move_detach_links", {"type": 'D', "value": 'PRESS', "alt": True}, None), ("node.move_detach_links_release", {"type": params.action_tweak, "value": 'ANY', "alt": True}, None), ("node.move_detach_links", {"type": params.select_tweak, "value": 'ANY', "alt": True}, None), @@ -2052,15 +2052,15 @@ def km_dopesheet(params): ("action.view_frame", {"type": 'NUMPAD_0', "value": 'PRESS'}, None), ("anim.channels_editable_toggle", {"type": 'TAB', "value": 'PRESS'}, None), ("anim.channels_find", {"type": 'F', "value": 'PRESS', "ctrl": True}, None), - ("transform.transform", {"type": 'G', "value": 'PRESS'}, + ("transform.transform", {"type": 'G', "value": 'PRESS', "repeat": False}, {"properties": [("mode", 'TIME_TRANSLATE')]}), ("transform.transform", {"type": params.select_tweak, "value": 'ANY'}, {"properties": [("mode", 'TIME_TRANSLATE')]}), - ("transform.transform", {"type": 'E', "value": 'PRESS'}, + ("transform.transform", {"type": 'E', "value": 'PRESS', "repeat": False}, {"properties": [("mode", 'TIME_EXTEND')]}), - ("transform.transform", {"type": 'S', "value": 'PRESS'}, + ("transform.transform", {"type": 'S', "value": 'PRESS', "repeat": False}, {"properties": [("mode", 'TIME_SCALE')]}), - ("transform.transform", {"type": 'T', "value": 'PRESS', "shift": True}, + ("transform.transform", {"type": 'T', "value": 'PRESS', "shift": True, "repeat": False}, {"properties": [("mode", 'TIME_SLIDE')]}), ("wm.context_toggle", {"type": 'O', "value": 'PRESS'}, {"properties": [("data_path", 'tool_settings.use_proportional_action')]}), @@ -2183,13 +2183,13 @@ def km_nla_editor(params): ("nla.clear_scale", {"type": 'S', "value": 'PRESS', "alt": True}, None), op_menu_pie("NLA_MT_snap_pie", {"type": 'S', "value": 'PRESS', "shift": True}), ("nla.fmodifier_add", {"type": 'M', "value": 'PRESS', "shift": True, "ctrl": True}, None), - ("transform.transform", {"type": 'G', "value": 'PRESS'}, + ("transform.transform", {"type": 'G', "value": 'PRESS', "repeat": False}, {"properties": [("mode", 'TRANSLATION')]}), ("transform.transform", {"type": params.select_tweak, "value": 'ANY'}, {"properties": [("mode", 'TRANSLATION')]}), - ("transform.transform", {"type": 'E', "value": 'PRESS'}, + ("transform.transform", {"type": 'E', "value": 'PRESS', "repeat": False}, {"properties": [("mode", 'TIME_EXTEND')]}), - ("transform.transform", {"type": 'S', "value": 'PRESS'}, + ("transform.transform", {"type": 'S', "value": 'PRESS', "repeat": False}, {"properties": [("mode", 'TIME_SCALE')]}), ("marker.add", {"type": 'M', "value": 'PRESS'}, None), ("marker.rename", {"type": 'M', "value": 'PRESS', "ctrl": True}, None), @@ -2494,9 +2494,9 @@ def km_sequencer(params): ("sequencer.slip", {"type": 'S', "value": 'PRESS'}, None), ("wm.context_set_int", {"type": 'O', "value": 'PRESS'}, {"properties": [("data_path", 'scene.sequence_editor.overlay_frame'), ("value", 0)]}), - ("transform.seq_slide", {"type": 'G', "value": 'PRESS'}, None), + ("transform.seq_slide", {"type": 'G', "value": 'PRESS', "repeat": False}, None), ("transform.seq_slide", {"type": params.select_tweak, "value": 'ANY'}, None), - ("transform.transform", {"type": 'E', "value": 'PRESS'}, + ("transform.transform", {"type": 'E', "value": 'PRESS', "repeat": False}, {"properties": [("mode", 'TIME_EXTEND')]}), ("marker.add", {"type": 'M', "value": 'PRESS'}, None), ("marker.rename", {"type": 'M', "value": 'PRESS', "ctrl": True}, None), @@ -2735,10 +2735,10 @@ def km_clip_editor(params): {"properties": [("data_path", 'space_data.show_marker_search')]}), ("wm.context_toggle", {"type": 'M', "value": 'PRESS'}, {"properties": [("data_path", 'space_data.use_mute_footage')]}), - ("transform.translate", {"type": 'G', "value": 'PRESS'}, None), + ("transform.translate", {"type": 'G', "value": 'PRESS', "repeat": False}, None), ("transform.translate", {"type": params.select_tweak, "value": 'ANY'}, None), - ("transform.resize", {"type": 'S', "value": 'PRESS'}, None), - ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None), + ("transform.resize", {"type": 'S', "value": 'PRESS', "repeat": False}, None), + ("transform.rotate", {"type": 'R', "value": 'PRESS', "repeat": False}, None), ("clip.clear_track_path", {"type": 'T', "value": 'PRESS', "alt": True}, {"properties": [("action", 'REMAINED'), ("clear_active", False)]}), ("clip.clear_track_path", {"type": 'T', "value": 'PRESS', "shift": True}, @@ -2792,10 +2792,10 @@ def km_clip_graph_editor(params): {"properties": [("action", 'ALL'), ("clear_active", True)]}), ("clip.graph_disable_markers", {"type": 'D', "value": 'PRESS', "shift": True}, {"properties": [("action", 'TOGGLE')]}), - ("transform.translate", {"type": 'G', "value": 'PRESS'}, None), + ("transform.translate", {"type": 'G', "value": 'PRESS', "repeat": False}, None), ("transform.translate", {"type": params.select_tweak, "value": 'ANY'}, None), - ("transform.resize", {"type": 'S', "value": 'PRESS'}, None), - ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None), + ("transform.resize", {"type": 'S', "value": 'PRESS', "repeat": False}, None), + ("transform.rotate", {"type": 'R', "value": 'PRESS', "repeat": False}, None), ]) if params.select_mouse == 'LEFTMOUSE' and not params.legacy: @@ -3143,17 +3143,17 @@ def km_grease_pencil_stroke_edit_mode(params): # Move to layer op_menu("GPENCIL_MT_move_to_layer", {"type": 'M', "value": 'PRESS'}), # Transform tools - ("transform.translate", {"type": 'G', "value": 'PRESS'}, None), + ("transform.translate", {"type": 'G', "value": 'PRESS', "repeat": False}, None), ("transform.translate", {"type": params.select_tweak, "value": 'ANY'}, None), - ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None), - ("transform.resize", {"type": 'S', "value": 'PRESS'}, None), - ("transform.mirror", {"type": 'M', "value": 'PRESS', "ctrl": True}, None), - ("transform.bend", {"type": 'W', "value": 'PRESS', "shift": True}, None), - ("transform.tosphere", {"type": 'S', "value": 'PRESS', "shift": True, "alt": True}, None), - ("transform.shear", {"type": 'S', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, None), - ("transform.transform", {"type": 'S', "value": 'PRESS', "alt": True}, + ("transform.rotate", {"type": 'R', "value": 'PRESS', "repeat": False}, None), + ("transform.resize", {"type": 'S', "value": 'PRESS', "repeat": False}, None), + ("transform.mirror", {"type": 'M', "value": 'PRESS', "ctrl": True, "repeat": False}, None), + ("transform.bend", {"type": 'W', "value": 'PRESS', "shift": True, "repeat": False}, None), + ("transform.tosphere", {"type": 'S', "value": 'PRESS', "shift": True, "alt": True, "repeat": False}, None), + ("transform.shear", {"type": 'S', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True, "repeat": False}, None), + ("transform.transform", {"type": 'S', "value": 'PRESS', "alt": True, "repeat": False}, {"properties": [("mode", 'GPENCIL_SHRINKFATTEN')]}), - ("transform.transform", {"type": 'F', "value": 'PRESS', "shift": True}, + ("transform.transform", {"type": 'F', "value": 'PRESS', "shift": True, "repeat": False}, {"properties": [("mode", 'GPENCIL_OPACITY')]}), # Proportional editing. *_template_items_proportional_editing(connected=True), @@ -3475,7 +3475,7 @@ def km_pose(params): ("armature.layers_show_all", {"type": 'ACCENT_GRAVE', "value": 'PRESS', "ctrl": True}, None), ("armature.armature_layers", {"type": 'M', "value": 'PRESS', "shift": True}, None), ("pose.bone_layers", {"type": 'M', "value": 'PRESS'}, None), - ("transform.bbone_resize", {"type": 'S', "value": 'PRESS', "ctrl": True, "alt": True}, None), + ("transform.bbone_resize", {"type": 'S', "value": 'PRESS', "ctrl": True, "alt": True, "repeat": False}, None), ("anim.keyframe_insert_menu", {"type": 'I', "value": 'PRESS'}, None), ("anim.keyframe_delete_v3d", {"type": 'I', "value": 'PRESS', "alt": True}, None), ("anim.keying_set_active_set", {"type": 'I', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True}, None), @@ -3621,10 +3621,10 @@ def km_paint_curve(params): ("paintcurve.delete_point", {"type": 'DEL', "value": 'PRESS'}, None), ("paintcurve.draw", {"type": 'RET', "value": 'PRESS'}, None), ("paintcurve.draw", {"type": 'NUMPAD_ENTER', "value": 'PRESS'}, None), - ("transform.translate", {"type": 'G', "value": 'PRESS'}, None), + ("transform.translate", {"type": 'G', "value": 'PRESS', "repeat": False}, None), ("transform.translate", {"type": params.select_tweak, "value": 'ANY'}, None), - ("transform.rotate", {"type": 'R', "value": 'PRESS'}, None), - ("transform.resize", {"type": 'S', "value": 'PRESS'}, None), + ("transform.rotate", {"type": 'R', "value": 'PRESS', "repeat": False}, None), + ("transform.resize", {"type": 'S', "value": 'PRESS', "repeat": False}, None), ]) return keymap @@ -3664,8 +3664,8 @@ def km_curve(params): ("curve.dissolve_verts", {"type": 'X', "value": 'PRESS', "ctrl": True}, None), ("curve.dissolve_verts", {"type": 'DEL', "value": 'PRESS', "ctrl": True}, None), ("curve.tilt_clear", {"type": 'T', "value": 'PRESS', "alt": True}, None), - ("transform.tilt", {"type": 'T', "value": 'PRESS', "ctrl": True}, None), - ("transform.transform", {"type": 'S', "value": 'PRESS', "alt": True}, + ("transform.tilt", {"type": 'T', "value": 'PRESS', "ctrl": True, "repeat": False}, None), + ("transform.transform", {"type": 'S', "value": 'PRESS', "alt": True, "repeat": False}, {"properties": [("mode", 'CURVE_SHRINKFATTEN')]}), ("curve.reveal", {"type": 'H', "value": 'PRESS', "alt": True}, None), ("curve.hide", {"type": 'H', "value": 'PRESS'}, @@ -3901,12 +3901,14 @@ def km_sculpt(params): ("sculpt.brush_stroke", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True}, {"properties": [("mode", 'SMOOTH')]}), # Partial Visibility Show/hide - ("paint.hide_show", {"type": 'H', "value": 'PRESS', "shift": True}, - {"properties": [("action", 'SHOW'), ("area", 'INSIDE')]}), - ("paint.hide_show", {"type": 'H', "value": 'PRESS'}, - {"properties": [("action", 'HIDE'), ("area", 'INSIDE')]}), - ("paint.hide_show", {"type": 'H', "value": 'PRESS', "alt": True}, - {"properties": [("action", 'SHOW'), ("area", 'ALL')]}), + ("sculpt.face_set_change_visibility", {"type": 'H', "value": 'PRESS'}, + {"properties": [("mode", 'TOGGLE')]}), + ("sculpt.face_set_change_visibility", {"type": 'H', "value": 'PRESS', "shift": True}, + {"properties": [("mode", 'HIDE_ACTIVE')]}), + ("sculpt.face_set_change_visibility", {"type": 'H', "value": 'PRESS', "alt": True}, + {"properties": [("mode", 'SHOW_ALL')]}), + ("sculpt.mask_expand", {"type": 'W', "value": 'PRESS', "shift": True}, + {"properties": [("use_normals", False), ("keep_previous_mask", False), ("invert", False), ("smooth_iterations", 0), ("create_face_set", True)]}), # Subdivision levels *_template_items_object_subdivision_set(), ("object.subdivision_set", {"type": 'PAGE_UP', "value": 'PRESS'}, @@ -3922,9 +3924,9 @@ def km_sculpt(params): ("wm.context_toggle", {"type": 'M', "value": 'PRESS', "ctrl": True}, {"properties": [("data_path", 'scene.tool_settings.sculpt.show_mask')]}), ("sculpt.mask_expand", {"type": 'A', "value": 'PRESS', "shift": True}, - {"properties": [("use_normals", False), ("keep_previous_mask", False), ("invert", True), ("smooth_iterations", 2)]}), + {"properties": [("use_normals", False), ("keep_previous_mask", False), ("invert", True), ("smooth_iterations", 2), ("create_face_set", False)]}), ("sculpt.mask_expand", {"type": 'A', "value": 'PRESS', "shift": True, 'alt': True}, - {"properties": [("use_normals", True), ("keep_previous_mask", True), ("invert", False), ("smooth_iterations", 0)]}), + {"properties": [("use_normals", True), ("keep_previous_mask", True), ("invert", False), ("smooth_iterations", 0), ("create_face_set", False)]}), # Dynamic topology ("sculpt.dynamic_topology_toggle", {"type": 'D', "value": 'PRESS', "ctrl": True}, None), ("sculpt.set_detail_size", {"type": 'D', "value": 'PRESS', "shift": True}, None), @@ -3980,6 +3982,7 @@ def km_sculpt(params): {"properties": [("data_path", 'tool_settings.sculpt.brush.use_smooth_stroke')]}), op_menu("VIEW3D_MT_angle_control", {"type": 'R', "value": 'PRESS'}), op_menu_pie("VIEW3D_MT_sculpt_mask_edit_pie", {"type" : 'A', "value": 'PRESS'}), + op_menu_pie("VIEW3D_MT_sculpt_face_sets_edit_pie", {"type" : 'W', "value": 'PRESS'}), *_template_items_context_panel("VIEW3D_PT_sculpt_context_menu", params.context_menu_event), ]) @@ -4050,7 +4053,7 @@ def km_mesh(params): {"properties": [("inside", True)]}), ("view3d.edit_mesh_extrude_move_normal", {"type": 'E', "value": 'PRESS'}, None), op_menu("VIEW3D_MT_edit_mesh_extrude", {"type": 'E', "value": 'PRESS', "alt": True}), - ("transform.edge_crease", {"type": 'E', "value": 'PRESS', "shift": True}, None), + ("transform.edge_crease", {"type": 'E', "value": 'PRESS', "shift": True, "repeat": False}, None), ("mesh.fill", {"type": 'F', "value": 'PRESS', "alt": True}, None), ("mesh.quads_convert_to_tris", {"type": 'T', "value": 'PRESS', "ctrl": True}, {"properties": [("quad_method", 'BEAUTY'), ("ngon_method", 'BEAUTY')]}), @@ -4063,7 +4066,7 @@ def km_mesh(params): {"properties": [("MESH_OT_rip", [("use_fill", True), ],)]}), ("mesh.rip_edge_move", {"type": 'D', "value": 'PRESS', "alt": True}, None), op_menu("VIEW3D_MT_edit_mesh_merge", {"type": 'M', "value": 'PRESS', "alt": True}), - ("transform.shrink_fatten", {"type": 'S', "value": 'PRESS', "alt": True}, None), + ("transform.shrink_fatten", {"type": 'S', "value": 'PRESS', "alt": True, "repeat": False}, None), ("mesh.edge_face_add", {"type": 'F', "value": 'PRESS'}, None), ("mesh.duplicate_move", {"type": 'D', "value": 'PRESS', "shift": True}, None), op_menu("VIEW3D_MT_mesh_add", {"type": 'A', "value": 'PRESS', "shift": True}), @@ -4071,7 +4074,7 @@ def km_mesh(params): ("mesh.split", {"type": 'Y', "value": 'PRESS'}, None), ("mesh.vert_connect_path", {"type": 'J', "value": 'PRESS'}, None), ("mesh.point_normals", {"type": 'L', "value": 'PRESS', "alt": True}, None), - ("transform.vert_slide", {"type": 'V', "value": 'PRESS', "shift": True}, None), + ("transform.vert_slide", {"type": 'V', "value": 'PRESS', "shift": True, "repeat": False}, None), ("mesh.dupli_extrude_cursor", {"type": params.action_mouse, "value": 'CLICK', "ctrl": True}, {"properties": [("rotate_source", True)]}), ("mesh.dupli_extrude_cursor", {"type": params.action_mouse, "value": 'CLICK', "shift": True, "ctrl": True}, @@ -4193,10 +4196,10 @@ def km_armature(params): ("armature.armature_layers", {"type": 'M', "value": 'PRESS', "shift": True}, None), ("armature.bone_layers", {"type": 'M', "value": 'PRESS'}, None), # Special transforms. - ("transform.bbone_resize", {"type": 'S', "value": 'PRESS', "ctrl": True, "alt": True}, None), - ("transform.transform", {"type": 'S', "value": 'PRESS', "alt": True}, + ("transform.bbone_resize", {"type": 'S', "value": 'PRESS', "ctrl": True, "alt": True, "repeat": False}, None), + ("transform.transform", {"type": 'S', "value": 'PRESS', "alt": True, "repeat": False}, {"properties": [("mode", 'BONE_ENVELOPE')]}), - ("transform.transform", {"type": 'R', "value": 'PRESS', "ctrl": True}, + ("transform.transform", {"type": 'R', "value": 'PRESS', "ctrl": True, "repeat": False}, {"properties": [("mode", 'BONE_ROLL')]}), # Menus. *_template_items_context_menu("VIEW3D_MT_armature_context_menu", params.context_menu_event), @@ -4500,23 +4503,23 @@ def km_transform_modal_map(_params): ("CONFIRM", {"type": 'NUMPAD_ENTER', "value": 'PRESS', "any": True}, None), ("CANCEL", {"type": 'RIGHTMOUSE', "value": 'PRESS', "any": True}, None), ("CANCEL", {"type": 'ESC', "value": 'PRESS', "any": True}, None), - ("AXIS_X", {"type": 'X', "value": 'PRESS'}, None), - ("AXIS_Y", {"type": 'Y', "value": 'PRESS'}, None), - ("AXIS_Z", {"type": 'Z', "value": 'PRESS'}, None), - ("PLANE_X", {"type": 'X', "value": 'PRESS', "shift": True}, None), - ("PLANE_Y", {"type": 'Y', "value": 'PRESS', "shift": True}, None), - ("PLANE_Z", {"type": 'Z', "value": 'PRESS', "shift": True}, None), - ("CONS_OFF", {"type": 'C', "value": 'PRESS'}, None), - ("TRANSLATE", {"type": 'G', "value": 'PRESS'}, None), - ("ROTATE", {"type": 'R', "value": 'PRESS'}, None), - ("RESIZE", {"type": 'S', "value": 'PRESS'}, None), - ("SNAP_TOGGLE", {"type": 'TAB', "value": 'PRESS', "shift": True}, None), + ("AXIS_X", {"type": 'X', "value": 'PRESS', "repeat": False}, None), + ("AXIS_Y", {"type": 'Y', "value": 'PRESS', "repeat": False}, None), + ("AXIS_Z", {"type": 'Z', "value": 'PRESS', "repeat": False}, None), + ("PLANE_X", {"type": 'X', "value": 'PRESS', "shift": True, "repeat": False}, None), + ("PLANE_Y", {"type": 'Y', "value": 'PRESS', "shift": True, "repeat": False}, None), + ("PLANE_Z", {"type": 'Z', "value": 'PRESS', "shift": True, "repeat": False}, None), + ("CONS_OFF", {"type": 'C', "value": 'PRESS', "repeat": False}, None), + ("TRANSLATE", {"type": 'G', "value": 'PRESS', "repeat": False}, None), + ("ROTATE", {"type": 'R', "value": 'PRESS', "repeat": False}, None), + ("RESIZE", {"type": 'S', "value": 'PRESS', "repeat": False}, None), + ("SNAP_TOGGLE", {"type": 'TAB', "value": 'PRESS', "shift": True, "repeat": False}, None), ("SNAP_INV_ON", {"type": 'LEFT_CTRL', "value": 'PRESS', "any": True}, None), ("SNAP_INV_OFF", {"type": 'LEFT_CTRL', "value": 'RELEASE', "any": True}, None), ("SNAP_INV_ON", {"type": 'RIGHT_CTRL', "value": 'PRESS', "any": True}, None), ("SNAP_INV_OFF", {"type": 'RIGHT_CTRL', "value": 'RELEASE', "any": True}, None), - ("ADD_SNAP", {"type": 'A', "value": 'PRESS'}, None), - ("REMOVE_SNAP", {"type": 'A', "value": 'PRESS', "alt": True}, None), + ("ADD_SNAP", {"type": 'A', "value": 'PRESS', "repeat": False}, None), + ("REMOVE_SNAP", {"type": 'A', "value": 'PRESS', "alt": True, "repeat": False}, None), ("PROPORTIONAL_SIZE_UP", {"type": 'PAGE_UP', "value": 'PRESS'}, None), ("PROPORTIONAL_SIZE_DOWN", {"type": 'PAGE_DOWN', "value": 'PRESS'}, None), ("PROPORTIONAL_SIZE_UP", {"type": 'PAGE_UP', "value": 'PRESS', "shift": True}, None), @@ -4532,7 +4535,7 @@ def km_transform_modal_map(_params): ("AUTOIK_CHAIN_LEN_DOWN", {"type": 'PAGE_DOWN', "value": 'PRESS', "shift": True}, None), ("AUTOIK_CHAIN_LEN_UP", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "shift": True}, None), ("AUTOIK_CHAIN_LEN_DOWN", {"type": 'WHEELUPMOUSE', "value": 'PRESS', "shift": True}, None), - ("INSERTOFS_TOGGLE_DIR", {"type": 'T', "value": 'PRESS'}, None), + ("INSERTOFS_TOGGLE_DIR", {"type": 'T', "value": 'PRESS', "repeat": False}, None), ]) return keymap diff --git a/release/scripts/startup/bl_ui/properties_data_mesh.py b/release/scripts/startup/bl_ui/properties_data_mesh.py index d6aa986613d..d91b2ceb7f7 100644 --- a/release/scripts/startup/bl_ui/properties_data_mesh.py +++ b/release/scripts/startup/bl_ui/properties_data_mesh.py @@ -487,6 +487,7 @@ class DATA_PT_remesh(MeshButtonsPanel, Panel): col.prop(mesh, "use_remesh_smooth_normals") col.prop(mesh, "use_remesh_preserve_volume") col.prop(mesh, "use_remesh_preserve_paint_mask") + col.prop(mesh, "use_remesh_preserve_sculpt_face_sets") col.operator("object.voxel_remesh", text="Voxel Remesh") else: col.operator("object.quadriflow_remesh", text="QuadriFlow Remesh") diff --git a/release/scripts/startup/bl_ui/properties_paint_common.py b/release/scripts/startup/bl_ui/properties_paint_common.py index 83455ae4af2..f1f6e9898b1 100644 --- a/release/scripts/startup/bl_ui/properties_paint_common.py +++ b/release/scripts/startup/bl_ui/properties_paint_common.py @@ -807,6 +807,9 @@ def brush_settings_advanced(layout, context, brush, popover=False): # topology automasking layout.prop(brush, "use_automasking_topology") + # face masks automasking + layout.prop(brush, "use_automasking_face_sets") + # sculpt plane settings if capabilities.has_sculpt_plane: layout.prop(brush, "sculpt_plane") diff --git a/release/scripts/startup/bl_ui/properties_particle.py b/release/scripts/startup/bl_ui/properties_particle.py index 3384032e332..7eb173c88bb 100644 --- a/release/scripts/startup/bl_ui/properties_particle.py +++ b/release/scripts/startup/bl_ui/properties_particle.py @@ -413,6 +413,38 @@ class PARTICLE_PT_hair_dynamics(ParticleButtonsPanel, Panel): box.label(text="Error: %.5f .. %.5f (avg. %.5f)" % (result.min_error, result.max_error, result.avg_error)) +class PARTICLE_PT_hair_dynamics_collision(ParticleButtonsPanel, Panel): + bl_label = "Collisions" + bl_parent_id = "PARTICLE_PT_hair_dynamics" + bl_options = {'DEFAULT_CLOSED'} + COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH'} + + @classmethod + def poll(cls, context): + return context.particle_system.cloth is not None + + def draw(self, context): + layout = self.layout + + psys = context.particle_system + cloth_md = psys.cloth + cloth_collision = cloth_md.collision_settings + + layout.enabled = psys.use_hair_dynamics and psys.point_cache.is_baked is False + + layout.use_property_split = True + + col = layout.column() + col.prop(cloth_collision, "collision_quality", text="Quality") + + layout.separator() + + col = layout.column() + col.prop(cloth_collision, "distance_min", slider=True, text="Distance") + col.prop(cloth_collision, "impulse_clamp") + col.prop(cloth_collision, "collection") + + class PARTICLE_PT_hair_dynamics_structure(ParticleButtonsPanel, Panel): bl_label = "Structure" bl_parent_id = "PARTICLE_PT_hair_dynamics" @@ -1986,6 +2018,7 @@ classes = ( PARTICLE_PT_emission, PARTICLE_PT_emission_source, PARTICLE_PT_hair_dynamics, + PARTICLE_PT_hair_dynamics_collision, PARTICLE_PT_hair_dynamics_structure, PARTICLE_PT_hair_dynamics_volume, PARTICLE_PT_cache, diff --git a/release/scripts/startup/bl_ui/properties_physics_fluid.py b/release/scripts/startup/bl_ui/properties_physics_fluid.py index 117352bf8f4..ba21fe47519 100644 --- a/release/scripts/startup/bl_ui/properties_physics_fluid.py +++ b/release/scripts/startup/bl_ui/properties_physics_fluid.py @@ -262,12 +262,16 @@ class PHYSICS_PT_settings(PhysicButtonsPanel, Panel): row = layout.row() row.prop(effector_settings, "effector_type") - flow = layout.grid_flow(row_major=True, columns=0, even_columns=True, even_rows=False, align=False) + grid = layout.grid_flow(row_major=True, columns=0, even_columns=True, even_rows=False, align=False) - col = flow.column() + col = grid.column() + col.prop(effector_settings, "subframes", text="Sampling Substeps") + col.prop(effector_settings, "surface_distance", text="Surface Thickness") + + col = grid.column() + col.prop(effector_settings, "use_effector", text="Use Effector") col.prop(effector_settings, "use_plane_init", text="Is Planar") - col.prop(effector_settings, "surface_distance", text="Surface Thickness") col.prop(effector_settings, "delete_in_obstacle", text="Delete In Obstacle") if effector_settings.effector_type == 'GUIDE': @@ -957,6 +961,14 @@ class PHYSICS_PT_diffusion(PhysicButtonsPanel, Panel): return (context.engine in cls.COMPAT_ENGINES) + def draw_header(self, context): + md = context.fluid.domain_settings + domain = context.fluid.domain_settings + is_baking_any = domain.is_cache_baking_any + has_baked_any = domain.has_cache_baked_any + self.layout.enabled = not is_baking_any and not has_baked_any + self.layout.prop(md, "use_diffusion", text="") + def draw_header_preset(self, _context): FLUID_PT_presets.draw_panel_header(self.layout) diff --git a/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py b/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py index 2c79ceb5763..63fb72a71bd 100644 --- a/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py +++ b/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py @@ -1030,6 +1030,7 @@ class _defs_sculpt: layout.prop(props, "type", expand=False) layout.prop(props, "strength") layout.prop(props, "deform_axis") + layout.prop(props, "use_face_sets") return dict( idname="builtin.mesh_filter", diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py index d94df81a032..1931337b384 100644 --- a/release/scripts/startup/bl_ui/space_view3d.py +++ b/release/scripts/startup/bl_ui/space_view3d.py @@ -878,6 +878,7 @@ class VIEW3D_MT_editor_menus(Menu): layout.menu("VIEW3D_MT_%s" % mode_string.lower()) if mode_string == 'SCULPT': layout.menu("VIEW3D_MT_mask") + layout.menu("VIEW3D_MT_face_sets") else: layout.menu("VIEW3D_MT_object") @@ -2996,12 +2997,14 @@ class VIEW3D_MT_mask(Menu): props.keep_previous_mask = False props.invert = True props.smooth_iterations = 2 + props.create_face_set = False props = layout.operator("sculpt.mask_expand", text="Expand Mask By Curvature") props.use_normals = True props.keep_previous_mask = True props.invert = False props.smooth_iterations = 0 + props.create_face_set = False layout.separator() @@ -3020,6 +3023,31 @@ class VIEW3D_MT_mask(Menu): props = layout.operator("sculpt.dirty_mask", text='Dirty Mask') +class VIEW3D_MT_face_sets(Menu): + bl_label = "Face Sets" + + def draw(self, _context): + layout = self.layout + + + op = layout.operator("sculpt.face_sets_create", text='Face Set From Masked') + op.mode = 'MASKED' + + op = layout.operator("sculpt.face_sets_create", text='Face Set From Visible') + op.mode = 'VISIBLE' + + layout.separator() + + op = layout.operator("sculpt.face_set_change_visibility", text='Invert Visible Face Sets') + op.mode = 'INVERT' + + op = layout.operator("sculpt.face_set_change_visibility", text='Show All Face Sets') + op.mode = 'SHOW_ALL' + + layout.separator() + + op = layout.operator("sculpt.face_sets_randomize_colors", text='Randomize Colors') + class VIEW3D_MT_sculpt_set_pivot(Menu): bl_label = "Sculpt Set Pivot" @@ -5037,6 +5065,24 @@ class VIEW3D_MT_sculpt_mask_edit_pie(Menu): op.filter_type = 'CONTRAST_DECREASE' op.auto_iteration_count = False +class VIEW3D_MT_sculpt_face_sets_edit_pie(Menu): + bl_label = "Face Sets Edit" + + def draw(self, _context): + layout = self.layout + pie = layout.menu_pie() + + op = pie.operator("sculpt.face_sets_create", text='Face Set From Masked') + op.mode = 'MASKED' + + op = pie.operator("sculpt.face_sets_create", text='Face Set From Visible') + op.mode = 'VISIBLE' + + op = pie.operator("sculpt.face_set_change_visibility", text='Invert Visible') + op.mode = 'INVERT' + + op = pie.operator("sculpt.face_set_change_visibility", text='Show All') + op.mode = 'SHOW_ALL' class VIEW3D_MT_wpaint_vgroup_lock_pie(Menu): bl_label = "Vertex Group Locks" @@ -6145,6 +6191,12 @@ class VIEW3D_PT_overlay_sculpt(Panel): sub.active = sculpt.show_mask sub.prop(overlay, "sculpt_mode_mask_opacity", text="Mask") + row = layout.row(align=True) + row.prop(sculpt, "show_face_sets", text="") + sub = row.row() + sub.active = sculpt.show_face_sets + row.prop(overlay, "sculpt_mode_face_sets_opacity", text="Face Sets") + class VIEW3D_PT_overlay_pose(Panel): bl_space_type = 'VIEW_3D' @@ -7088,6 +7140,7 @@ classes = ( VIEW3D_MT_sculpt, VIEW3D_MT_sculpt_set_pivot, VIEW3D_MT_mask, + VIEW3D_MT_face_sets, VIEW3D_MT_particle, VIEW3D_MT_particle_context_menu, VIEW3D_MT_particle_showhide, @@ -7172,6 +7225,7 @@ classes = ( VIEW3D_MT_proportional_editing_falloff_pie, VIEW3D_MT_sculpt_mask_edit_pie, VIEW3D_MT_wpaint_vgroup_lock_pie, + VIEW3D_MT_sculpt_face_sets_edit_pie, VIEW3D_PT_active_tool, VIEW3D_PT_active_tool_duplicate, VIEW3D_PT_view3d_properties, diff --git a/release/scripts/startup/bl_ui/space_view3d_toolbar.py b/release/scripts/startup/bl_ui/space_view3d_toolbar.py index 9c8378438c7..1990e9a7260 100644 --- a/release/scripts/startup/bl_ui/space_view3d_toolbar.py +++ b/release/scripts/startup/bl_ui/space_view3d_toolbar.py @@ -846,6 +846,7 @@ class VIEW3D_PT_sculpt_voxel_remesh(Panel, View3DPaintPanel): col.prop(mesh, "use_remesh_smooth_normals") col.prop(mesh, "use_remesh_preserve_volume") col.prop(mesh, "use_remesh_preserve_paint_mask") + col.prop(mesh, "use_remesh_preserve_sculpt_face_sets") col.operator("object.voxel_remesh", text="Remesh") |