Move apply logic to common and eliminate selected bool

This commit is contained in:
2024-12-27 02:28:38 -06:00
parent 34aa11e1d9
commit 3dc5cff0a2
4 changed files with 73 additions and 67 deletions

View File

@ -1,5 +1,4 @@
import bpy
import mathutils
import blf
from .common import *
@ -62,9 +61,10 @@ class DSPL_OT_DrawNewPoseMenu(bpy.types.Operator):
pose_library = getPoseLib(context)
dspl_new_pose_menu.prop(
arm_object.dsplvars, "pose_new_name", text="Name")
dspl_new_pose_menu.prop(
arm_object.dsplvars,
"only_selected", icon='GROUP_BONE', text="Selected", toggle=True)
# dspl_new_pose_menu.prop(
# # Might want to add this back in some form to match native copy/paste pose
# arm_object.dsplvars,
# "only_selected", icon='GROUP_BONE', text="Selected", toggle=True)
dspl_new_pose_menu.operator(
"dspl.add_pose", icon='ADD', text="Add New Pose").posename = arm_object.dsplvars.pose_new_name
@ -163,7 +163,7 @@ class DSPL_OT_AddPose(bpy.types.Operator):
pose_markers.new(name=pose_name)
pose_markers[pose_name].frame = new_marker
setKeyframesFromBones(context, new_marker)
setKeyframesFromBones(context, arm_object, new_marker)
action_object.pose_markers.active = pose_markers[pose_name]
bpy.context.area.tag_redraw()
@ -190,7 +190,7 @@ class DSPL_OT_AddPose(bpy.types.Operator):
new_marker = target_frame
setKeyframesFromBones(context, new_marker)
setKeyframesFromBones(context, arm_object, new_marker)
@ -365,59 +365,7 @@ class DSPL_OT_ApplyPose(bpy.types.Operator):
active_frame = active_marker.frame
active_posename = active_marker.name
for bone in arm_object.pose.bones:
if bone.bone.select or arm_object.dsplvars.only_selected == False:
bone_name = bone.name
if bone.rotation_mode == "XYZ":
rot_mode = "rotation_euler"
elif bone.rotation_mode == "YZX":
rot_mode = "rotation_euler"
elif bone.rotation_mode == "ZXY":
rot_mode = "rotation_euler"
elif bone.rotation_mode == "QUATERNION":
rot_mode = "rotation_quaternion"
else:
print("Unsupported bone!")
rot_mode = None
loc_x = findFcurve(context, bone_name, "location", 0) or 0.0
loc_y = findFcurve(context, bone_name, "location", 1) or 0.0
loc_z = findFcurve(context, bone_name, "location", 2) or 0.0
if rot_mode == "rotation_quaternion":
rot_w = findFcurve(context, bone_name, rot_mode, 0) or 1.0
rot_x = findFcurve(context, bone_name, rot_mode, 1) or 0.0
rot_y = findFcurve(context, bone_name, rot_mode, 2) or 0.0
rot_z = findFcurve(context, bone_name, rot_mode, 3) or 0.0
elif rot_mode == "rotation_euler":
rot_x = findFcurve(context, bone_name, rot_mode, 0) or 0.0
rot_y = findFcurve(context, bone_name, rot_mode, 1) or 0.0
rot_z = findFcurve(context, bone_name, rot_mode, 2) or 0.0
scl_x = findFcurve(context, bone_name, "scale", 0) or 1.0
scl_y = findFcurve(context, bone_name, "scale", 1) or 1.0
scl_z = findFcurve(context, bone_name, "scale", 2) or 1.0
bone.location = mathutils.Vector((loc_x, loc_y, loc_z))
if bone.rotation_mode == "XYZ":
bone.rotation_euler = mathutils.Euler(
(rot_x, rot_y, rot_z))
elif bone.rotation_mode == "YZX":
bone.rotation_euler = mathutils.Euler(
(rot_x, rot_y, rot_z))
elif bone.rotation_mode == "ZXY":
bone.rotation_euler = mathutils.Euler(
(rot_z, rot_x, rot_y))
elif bone.rotation_mode == "YXZ":
bone.rotation_euler = mathutils.Euler(
(rot_y, rot_x, rot_z))
elif bone.rotation_mode == "XZY":
bone.rotation_euler = mathutils.Euler(
(rot_x, rot_z, rot_y))
elif rot_mode == "rotation_quaternion":
bone.rotation_quaternion = mathutils.Quaternion(
(rot_w, rot_x, rot_y, rot_z))
bone.scale = mathutils.Vector((scl_x, scl_y, scl_z))
setBonesfromKeyframes(context, arm_object, active_marker)
print("Applied pose - " + active_posename)