Merge branch 'blender-v4.1-release'
This commit is contained in:
commit
84aed88b91
Binary file not shown.
@ -205,11 +205,40 @@ def bake_action_iter(
|
||||
"bbone_easeout": 1,
|
||||
}
|
||||
|
||||
def can_be_keyed(value):
|
||||
"""Returns a tri-state boolean.
|
||||
|
||||
- True: known to be keyable.
|
||||
- False: known to not be keyable.
|
||||
- None: unknown, might be an enum property for which RNA uses a string to
|
||||
indicate a specific item (keyable) or an actual string property (not
|
||||
keyable).
|
||||
"""
|
||||
if isinstance(value, (int, float, bool)):
|
||||
# These types are certainly keyable.
|
||||
return True
|
||||
if isinstance(value, (list, tuple, set, dict)):
|
||||
# These types are certainly not keyable.
|
||||
return False
|
||||
# Maybe this could be made stricter, as also ID pointer properties and
|
||||
# some other types cannot be keyed. However, the above checks are enough
|
||||
# to fix the crash that this code was written for (#117988).
|
||||
return None
|
||||
|
||||
# Convert rna_prop types (IDPropertyArray, etc) to python types.
|
||||
def clean_custom_properties(obj):
|
||||
if not bake_options.do_custom_props:
|
||||
# Don't bother remembering any custom properties when they're not
|
||||
# going to be baked anyway.
|
||||
return {}
|
||||
|
||||
# Be careful about which properties to actually consider for baking, as
|
||||
# keeping references to complex Blender datastructures around for too long
|
||||
# can cause crashes. See #117988.
|
||||
clean_props = {
|
||||
key: rna_idprop_value_to_python(value)
|
||||
for key, value in obj.items()
|
||||
if can_be_keyed(value) is not False
|
||||
}
|
||||
return clean_props
|
||||
|
||||
@ -339,7 +368,8 @@ def bake_action_iter(
|
||||
lookup_fcurves = {(fcurve.data_path, fcurve.array_index): fcurve for fcurve in action.fcurves}
|
||||
if bake_options.do_pose:
|
||||
for f, armature_custom_properties in armature_info:
|
||||
bake_custom_properties(obj, custom_props=armature_custom_properties, frame=f)
|
||||
bake_custom_properties(obj, custom_props=armature_custom_properties,
|
||||
frame=f, group_name="Armature Custom Properties")
|
||||
|
||||
for name, pbone in obj.pose.bones.items():
|
||||
if bake_options.only_selected and not pbone.bone.select:
|
||||
|
@ -803,6 +803,7 @@ class _defs_edit_mesh:
|
||||
def draw_settings(_context, layout, tool):
|
||||
props = tool.operator_properties("mesh.spin")
|
||||
layout.prop(props, "steps")
|
||||
layout.prop(props, "dupli")
|
||||
props = tool.gizmo_group_properties("MESH_GGT_spin")
|
||||
layout.prop(props, "axis")
|
||||
|
||||
@ -815,23 +816,6 @@ class _defs_edit_mesh:
|
||||
draw_settings=draw_settings,
|
||||
)
|
||||
|
||||
@ToolDef.from_fn
|
||||
def spin_duplicate():
|
||||
def draw_settings(_context, layout, tool):
|
||||
props = tool.operator_properties("mesh.spin")
|
||||
layout.prop(props, "steps")
|
||||
props = tool.gizmo_group_properties("MESH_GGT_spin")
|
||||
layout.prop(props, "axis")
|
||||
|
||||
return dict(
|
||||
idname="builtin.spin_duplicates",
|
||||
label="Spin Duplicates",
|
||||
icon="ops.mesh.spin.duplicate",
|
||||
widget="MESH_GGT_spin",
|
||||
keymap=(),
|
||||
draw_settings=draw_settings,
|
||||
)
|
||||
|
||||
@ToolDef.from_fn
|
||||
def inset():
|
||||
def draw_settings(_context, layout, tool):
|
||||
@ -2996,10 +2980,7 @@ class VIEW3D_PT_tools_active(ToolSelectPanelHelper, Panel):
|
||||
_defs_edit_mesh.bisect,
|
||||
),
|
||||
_defs_edit_mesh.poly_build,
|
||||
(
|
||||
_defs_edit_mesh.spin,
|
||||
_defs_edit_mesh.spin_duplicate,
|
||||
),
|
||||
(
|
||||
_defs_edit_mesh.vertex_smooth,
|
||||
_defs_edit_mesh.vertex_randomize,
|
||||
|
@ -855,7 +855,6 @@ set_property(GLOBAL PROPERTY ICON_GEOM_NAMES
|
||||
ops.mesh.rip
|
||||
ops.mesh.rip_edge
|
||||
ops.mesh.spin
|
||||
ops.mesh.spin.duplicate
|
||||
ops.mesh.vertices_smooth
|
||||
ops.node.links_cut
|
||||
ops.paint.eyedropper_add
|
||||
|
Loading…
Reference in New Issue
Block a user