diff options
author | Campbell Barton <ideasman42@gmail.com> | 2021-03-26 05:12:56 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2021-03-26 05:37:40 +0300 |
commit | e18091650b92ee88339d1c8032572dabce21362a (patch) | |
tree | 5d1afc2c9e2bdebd638bfeb17a6d4bfd94f21624 /source/blender/makesrna | |
parent | ff017df318d5e2dce8c918735e363c0e43458a7c (diff) |
Animation: action mirror RNA API using pose contents
This adds a new RNA method `Action.flip_with_pose(ob)` to flip the
action channels that control a pose.
The rest-pose is used to properly flip the bones transformation.
This is useful as a way to flip actions used in pose libraries,
so the same action need not be included for each side.
Reviewed By: sybren
Ref D10781
Diffstat (limited to 'source/blender/makesrna')
-rw-r--r-- | source/blender/makesrna/intern/rna_action_api.c | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/source/blender/makesrna/intern/rna_action_api.c b/source/blender/makesrna/intern/rna_action_api.c index 48da32afba5..308a34f9cf1 100644 --- a/source/blender/makesrna/intern/rna_action_api.c +++ b/source/blender/makesrna/intern/rna_action_api.c @@ -41,10 +41,32 @@ # include "DNA_anim_types.h" # include "DNA_curve_types.h" +static void rna_Action_flip_with_pose(bAction *act, ReportList *reports, Object *ob) +{ + if (ob->type != OB_ARMATURE) { + BKE_report(reports, RPT_ERROR, "Only armature objects are supported"); + return; + } + BKE_action_flip_with_pose(act, ob); + + /* Only for redraw. */ + WM_main_add_notifier(NC_ANIMATION | ND_KEYFRAME | NA_EDITED, NULL); +} + #else -void RNA_api_action(StructRNA *UNUSED(srna)) +void RNA_api_action(StructRNA *srna) { + FunctionRNA *func; + PropertyRNA *parm; + + func = RNA_def_function(srna, "flip_with_pose", "rna_Action_flip_with_pose"); + RNA_def_function_ui_description(func, "Flip the action around the X axis using a pose"); + RNA_def_function_flag(func, FUNC_USE_REPORTS); + + parm = RNA_def_pointer( + func, "object", "Object", "", "The reference armature object to use when flipping"); + RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED); } #endif |