work: save startup because I'm sick of the arnoldesque materials
This commit is contained in:
@@ -399,7 +399,7 @@ def get_fcu_layer_keyframes(obj, context, track):
|
||||
keyframes = []
|
||||
# fcurves = get_fcurves(track.strips[0].action)
|
||||
# fcurves = track.strips[0].action.fcurves
|
||||
fcurves = get_fcurves(obj, track.strips[0].action)
|
||||
fcurves = get_fcurves(obj, track.strips[0].action, obj.als.data_type)
|
||||
#store all the keyframe locations from the fcurves of the layer
|
||||
for fcu in fcurves:
|
||||
if fcu.group is not None:
|
||||
@@ -1546,6 +1546,8 @@ def strip_action_recalc(self, strip):
|
||||
|
||||
###################################################### HELPER FUNCTIONS ################################################
|
||||
def redraw_areas(areas):
|
||||
if not len(bpy.context.window_manager.windows):
|
||||
return
|
||||
for area in bpy.context.window_manager.windows[0].screen.areas:
|
||||
if area.type in areas:
|
||||
area.tag_redraw()
|
||||
@@ -1621,7 +1623,7 @@ def select_layer_bones(self, context):
|
||||
|
||||
###################################################### CLASSES ###########################################################
|
||||
class SelectBonesInLayer(bpy.types.Operator):
|
||||
"""Select bones with keyframes in the current layer"""
|
||||
"""Select bones with keyframes in the current layer, use shift to add to the current selection"""
|
||||
bl_idname = "anim.bones_in_layer"
|
||||
bl_label = "Select layer bones"
|
||||
bl_icon = "BONE_DATA"
|
||||
@@ -1864,18 +1866,9 @@ class AutoCustomFrameRange(bpy.types.Operator):
|
||||
# return {'CANCELLED'}
|
||||
|
||||
def restore(self, context):
|
||||
if hasattr(subscriptions, 'frame_range'):
|
||||
frame_start, frame_end = subscriptions.frame_range
|
||||
|
||||
else:
|
||||
frame_start, frame_end = subscriptions.get_frame_range(context.scene)
|
||||
print('restore')
|
||||
subscriptions.frameend_update_callback()
|
||||
|
||||
self.strip.repeat = 1 #change strip repeat but keep self.repeat value stored
|
||||
self.strip.use_reverse = False
|
||||
self.strip.frame_start = frame_start
|
||||
self.strip.scale = self.layer.speed
|
||||
self.strip.frame_end = frame_end
|
||||
# update_action_frame_range(frame_start, frame_end, layer, strip)
|
||||
subscriptions.subscriptions_add(context.scene)
|
||||
|
||||
def update_action_list(scene):
|
||||
@@ -2596,9 +2589,7 @@ class RemoveFcurves(bpy.types.Operator):
|
||||
if mod.type == 'CYCLES':
|
||||
fcu.modifiers.remove(mod)
|
||||
fcu.update()
|
||||
for area in context.window_manager.windows[0].screen.areas:
|
||||
if area.type == 'GRAPH_EDITOR' or area.type == 'VIEW_3D':
|
||||
area.tag_redraw()
|
||||
redraw_areas(['GRAPH_EDITOR', 'VIEW_3D'])
|
||||
break
|
||||
return {'FINISHED'}
|
||||
|
||||
@@ -3301,25 +3292,36 @@ def copy_action(action):
|
||||
|
||||
return new_action
|
||||
|
||||
def get_obj_slot(obj, action, data_type = 'OBJECT'):
|
||||
def get_obj_slot(obj, action, data_type = None):
|
||||
'''Get the slot in the action that this object is using either it's object, or shapekeys'''
|
||||
|
||||
if data_type is None:
|
||||
data_type = obj.als.data_type
|
||||
|
||||
if not hasattr(action, 'slots'):
|
||||
return None
|
||||
|
||||
if not len(action.slots):
|
||||
# If no slots exist, create one for the object and return it
|
||||
slot = add_action_slot(obj, action)
|
||||
return slot
|
||||
|
||||
# data_type = obj.als.data_type
|
||||
for slot in action.slots:
|
||||
if slot.target_id_type != data_type:
|
||||
continue
|
||||
# if obj.als.data_type == 'OBJECT' and obj in slot.users():
|
||||
# return slot
|
||||
|
||||
if data_type == 'KEY' and obj.data.shape_keys in slot.users():
|
||||
return slot
|
||||
elif obj in slot.users():
|
||||
return slot
|
||||
|
||||
return None
|
||||
|
||||
return add_action_slot(obj, action)
|
||||
|
||||
def get_fcurves(obj: bpy.types.Object, action: bpy.types.Action, data_type = 'OBJECT'):
|
||||
def get_fcurves(obj: bpy.types.Object, action: bpy.types.Action, data_type = None):
|
||||
|
||||
if data_type is None:
|
||||
data_type = obj.als.data_type
|
||||
|
||||
if hasattr(action, 'layers'):
|
||||
slot = get_obj_slot(obj, action, data_type)
|
||||
@@ -3335,10 +3337,13 @@ def get_fcurves(obj: bpy.types.Object, action: bpy.types.Action, data_type = 'OB
|
||||
return action.fcurves
|
||||
return []
|
||||
|
||||
def get_channelbag(obj: bpy.types.Object, action: bpy.types.Action, data_type = 'OBJECT'):
|
||||
def get_channelbag(obj: bpy.types.Object, action: bpy.types.Action, data_type = None):
|
||||
'''Getting the container of the fcurves, either the action or channelbag
|
||||
Using this when adding a new group to the action'''
|
||||
|
||||
if data_type is None:
|
||||
data_type = obj.als.data_type
|
||||
|
||||
if hasattr(action, 'layers'):
|
||||
slot = get_obj_slot(obj, action, data_type)
|
||||
channelbag = None
|
||||
|
||||
Reference in New Issue
Block a user