Bugfix [#27090] Available keying set fails in armature pose mode
A change in the poll callback that Available KeyingSet used to use restricted its use to Object-mode only, while this could also be useful in Pose Mode (though it would only affect all channels there). Made this use a custom poll callback now that tests for whether the active object has an action. This does mean that if you select a bunch of objects with animation data, but the active object doesn't have it, then the keyingset will fail to fire, but that's been marked as a todo in the code.
This commit is contained in:
@@ -215,10 +215,14 @@ class BUILTIN_KSI_VisualLocRot(bpy.types.KeyingSetInfo):
|
||||
class BUILTIN_KSI_Available(bpy.types.KeyingSetInfo):
|
||||
bl_label = "Available"
|
||||
|
||||
# poll - use predefined callback for selected objects
|
||||
# TODO: this should really check whether the selected object (or datablock)
|
||||
# has any animation data defined yet
|
||||
poll = keyingsets_utils.RKS_POLL_selected_objects
|
||||
# poll - selected objects or selected object with animation data
|
||||
def poll(ksi, context):
|
||||
ob = context.active_object
|
||||
if ob:
|
||||
# TODO: this fails if one animation-less object is active, but many others are selected
|
||||
return ob.animation_data and ob.animation_data.action
|
||||
else:
|
||||
return bool(context.selected_objects)
|
||||
|
||||
# iterator - use callback for selected bones/objects
|
||||
iterator = keyingsets_utils.RKS_ITER_selected_item
|
||||
|
||||
@@ -1226,10 +1226,10 @@ void pchan_apply_mat4(bPoseChannel *pchan, float mat[][4], short use_compat)
|
||||
*/
|
||||
void armature_mat_pose_to_delta(float delta_mat[][4], float pose_mat[][4], float arm_mat[][4])
|
||||
{
|
||||
float imat[4][4];
|
||||
|
||||
invert_m4_m4(imat, arm_mat);
|
||||
mul_m4_m4m4(delta_mat, pose_mat, imat);
|
||||
float imat[4][4];
|
||||
|
||||
invert_m4_m4(imat, arm_mat);
|
||||
mul_m4_m4m4(delta_mat, pose_mat, imat);
|
||||
}
|
||||
|
||||
/* **************** Rotation Mode Conversions ****************************** */
|
||||
|
||||
Reference in New Issue
Block a user