work: restore shift+spacebar for media play/pause

maybe put in maya config? idk what funiman's preference is
This commit is contained in:
Nathan
2026-05-29 14:58:59 -06:00
parent 2f8e5f472f
commit 6c3b78075b
130 changed files with 10461 additions and 19696 deletions
+44 -19
View File
@@ -180,10 +180,11 @@ def smart_bake(context):
fcurves = anim_layers.get_fcurves(obj, track.strips[0].action)
total_iterations += len(fcurves)
wm.progress_begin(0, total_iterations)
wm.progress_begin(0, total_iterations)
processed = 0
for layer, track in zip(obj.Anim_Layers, anim_data.nla_tracks):
layer_items = [l for l in obj.Anim_Layers if l.type == 'LAYER']
for layer, track in zip(layer_items, anim_data.nla_tracks):
if track.mute:
continue
if len(track.strips) != 1 or track.strips[0].action is None:
@@ -242,9 +243,9 @@ def smart_bake(context):
smartkeys = smart_start_end(smartkeys, strip.frame_start, strip.frame_end)
smartkeys = remove_outofrange_keys(smartkeys, strip.frame_start, strip.frame_end)
#if the strip is cutting with a different strip, then add keyframes in the cut
#if the strip is cutting with a different strip, then add keyframes in the cut
for layercut in obj.Anim_Layers:
if layercut.mute or not layercut.custom_frame_range or layercut == layer:
if layercut.type == 'GROUP' or layercut.mute or not layercut.custom_frame_range or layercut == layer:
continue
if strip_start < layercut.frame_start < strip_end:
smartkeys = smart_start_end(smartkeys, (layercut.frame_start-1), strip.frame_end-1)
@@ -407,7 +408,7 @@ def unmute_modifiers(obj, nla_tracks, modifier_rec):
for mod in fcu.modifiers:
if mod in modifier_rec:
mod.mute = False
elif obj.als.mergefcurves and track == nla_tracks[obj.als.layer_index]:
elif obj.als.mergefcurves and track == nla_tracks[anim_layers.nla_idx(obj)]:
mod.mute = True
def invisible_layers(b_layers):
@@ -426,7 +427,14 @@ def select_keyframed_bones(self, context, obj):
if obj.mode != 'POSE':
bpy.ops.object.posemode_toggle()
bpy.ops.pose.select_all(action='DESELECT')
for i in range(0, obj.als.layer_index+1):
# Iterate over LAYER rows up to (and including) the active row, skipping
# group headers (they have no NLA track and no bones to select).
current_row = obj.als.layer_index
for i, it in enumerate(obj.Anim_Layers):
if i > current_row:
break
if it.type != 'LAYER':
continue
obj.als['layer_index'] = i
anim_layers.select_layer_bones(self, context)
@@ -446,7 +454,7 @@ def smartbake_apply(obj, nla_tracks, fcu_keys, extrapolations):
#apply smartbake for blenders bake
#smart bake - delete unnecessery keyframes:
# transform_types = ['location', 'rotation_euler', 'rotation_quaternion', 'scale']
strip = nla_tracks[obj.als.layer_index].strips[0]
strip = nla_tracks[anim_layers.nla_idx(obj)].strips[0]
# if strip.action is None:
# return
@@ -641,7 +649,7 @@ def AL_bake(frame_start, frame_end, nla_tracks, fcu_keys, additive, step, action
return
anim_data = anim_layers.anim_data_type(obj)
# baked_action = anim_data.action
track = nla_tracks[obj.als.layer_index]
track = nla_tracks[anim_layers.nla_idx(obj)]
baked_action = track.strips[0].action
clean_no_user_slots(baked_action)
#create the baked fcurve
@@ -1065,10 +1073,18 @@ class MergeAnimLayerDown(bpy.types.Operator):
bl_idname = "anim.layers_merge_down"
bl_label = "Merge_Layers_Down"
bl_options = {'REGISTER', 'UNDO'}
step: bpy.props.IntProperty(name='Step', description='Bake every number of frame steps', default=1)
actioncopy: bpy.props.BoolProperty(name='Copy original merged action', description='Create a copy of the original action that is being overwritten', default = False)
@classmethod
def poll(cls, context):
obj = context.object
if obj is None:
return False
# Disable when active row is a group header — merge only applies to NLA-backed layers.
return anim_layers.is_layer_row_active(obj)
def invoke(self, context, event):
obj = context.object
bake_range_type(context.scene.als, context)
@@ -1143,7 +1159,8 @@ class MergeAnimLayerDown(bpy.types.Operator):
# Incase the strips are shorter then the keyframe range (because scene is shorter)
# Then updating the strips length
for layer, track in zip(obj.Anim_Layers, anim_data.nla_tracks):
layer_items = [l for l in obj.Anim_Layers if l.type == 'LAYER']
for layer, track in zip(layer_items, anim_data.nla_tracks):
if layer.custom_frame_range:
continue
if len(track.strips) != 1:
@@ -1181,7 +1198,7 @@ class MergeAnimLayerDown(bpy.types.Operator):
if obj.als.direction == 'DOWN':
obj.als.layer_index = 0
baked_layer = None
strip = anim_data.nla_tracks[obj.als.layer_index].strips[0]
strip = anim_data.nla_tracks[anim_layers.nla_idx(obj)].strips[0]
action = strip.action
if hasattr(strip, 'action_slot'):
action_slot = strip.action_slot
@@ -1190,21 +1207,29 @@ class MergeAnimLayerDown(bpy.types.Operator):
#if baking to a new layer then setup the new index and layer
elif obj.als.operator == 'NEW':
self.actioncopy = False
# `add_at_nla` is the NLA-track index passed to add_animlayer.
if obj.als.direction == 'UP' and additive and 'REPLACE' in blendings:
obj.als.layer_index = layer_index + blendings.index('REPLACE') - 1
add_at_nla = layer_index + blendings.index('REPLACE') - 1
elif obj.als.direction == 'UP' or obj.als.direction == 'ALL':
obj.als.layer_index = len(obj.Anim_Layers)-1
add_at_nla = anim_layers.nla_layer_count(obj) - 1
else:
add_at_nla = anim_layers.nla_idx(obj)
layer_names = [layer.name for layer in obj.Anim_Layers]
baked_layer = anim_layers.add_animlayer(layer_name = anim_layers.unique_name(layer_names, 'Baked_Layer') , duplicate = False, index = obj.als.layer_index, blend_type = blend)
layer_names = [layer.name for layer in obj.Anim_Layers if layer.type == 'LAYER']
baked_layer = anim_layers.add_animlayer(layer_name = anim_layers.unique_name(layer_names, 'Baked_Layer') , duplicate = False, index = add_at_nla, blend_type = blend)
anim_layers.register_layers(obj, nla_tracks)
obj.als.layer_index += 1
# Point layer_index at the newly-added baked layer's collection row.
if baked_layer is not None:
for ridx, it in enumerate(obj.Anim_Layers):
if it.type == 'LAYER' and it.name == baked_layer.name:
obj.als.layer_index = ridx
break
#remove subsciption again after adding a layer there was new subsciption applied
subscriptions.subscriptions_remove()
track = nla_tracks[obj.als.layer_index]
track = nla_tracks[anim_layers.nla_idx(obj)]
#use internal bake
if obj.als.baketype =='NLA':
modifier_rec, extrapolations = mute_modifiers(obj, nla_tracks)
@@ -1282,7 +1307,7 @@ class MergeAnimLayerDown(bpy.types.Operator):
strip.action_slot = anim_layers.get_obj_slot(obj, action)
#reset layer settings
baked_layer = obj.Anim_Layers[obj.als.layer_index]
baked_layer = obj.Anim_Layers[obj.als.layer_index]
baked_layer.repeat, baked_layer.speed, baked_layer.offset = 1, 1, 0
strip.use_sync_length = False
if baked_layer.custom_frame_range: