PyAPI: Add object argument to bake_action

Avoids having to set the scene's active object first.
This commit is contained in:
Campbell Barton 2017-09-10 14:30:03 +10:00
parent 11a9434c2d
commit a4a59d578c
2 changed files with 31 additions and 27 deletions

View File

@ -26,23 +26,27 @@ import bpy
# XXX visual keying is actually always considered as True in this code...
def bake_action(frame_start,
frame_end,
frame_step=1,
only_selected=False,
do_pose=True,
do_object=True,
do_visual_keying=True,
do_constraint_clear=False,
do_parents_clear=False,
do_clean=False,
action=None,
):
def bake_action(
obj,
frame_start,
frame_end,
frame_step=1,
only_selected=False,
do_pose=True,
do_object=True,
do_visual_keying=True,
do_constraint_clear=False,
do_parents_clear=False,
do_clean=False,
action=None,
):
"""
Return an image from the file path with options to search multiple paths
and return a placeholder if its not found.
:arg obj: Object to bake.
:type obj: :class:`bpy.types.Object`
:arg frame_start: First frame to bake.
:type frame_start: int
:arg frame_end: Last frame to bake.
@ -114,7 +118,6 @@ def bake_action(frame_start,
# TODO, pass data rather then grabbing from the context!
scene = bpy.context.scene
obj = bpy.context.object
frame_back = scene.frame_current
if obj.pose is None:

View File

@ -258,27 +258,28 @@ class BakeAction(Operator):
)
def execute(self, context):
from bpy_extras import anim_utils
obj = context.object
action = None
if self.use_current_action:
obj = context.object
if obj.animation_data:
action = obj.animation_data.action
action = anim_utils.bake_action(self.frame_start,
self.frame_end,
frame_step=self.step,
only_selected=self.only_selected,
do_pose='POSE' in self.bake_types,
do_object='OBJECT' in self.bake_types,
do_visual_keying=self.visual_keying,
do_constraint_clear=self.clear_constraints,
do_parents_clear=self.clear_parents,
do_clean=True,
action=action,
)
action = anim_utils.bake_action(
obj,
self.frame_start,
self.frame_end,
frame_step=self.step,
only_selected=self.only_selected,
do_pose='POSE' in self.bake_types,
do_object='OBJECT' in self.bake_types,
do_visual_keying=self.visual_keying,
do_constraint_clear=self.clear_constraints,
do_parents_clear=self.clear_parents,
do_clean=True,
action=action,
)
if action is None:
self.report({'INFO'}, "Nothing to bake")