diff options
-rw-r--r-- | source/blender/collada/AnimationImporter.cpp | 20 | ||||
-rw-r--r-- | source/blender/editors/animation/anim_channels_defines.c | 4 | ||||
-rw-r--r-- | source/blender/editors/animation/keyframing.c | 56 | ||||
-rw-r--r-- | source/blender/editors/animation/keyingsets.c | 3 | ||||
-rw-r--r-- | source/blender/editors/gpencil/gpencil_convert.c | 4 | ||||
-rw-r--r-- | source/blender/editors/include/ED_keyframing.h | 20 | ||||
-rw-r--r-- | source/blender/editors/object/object_constraint.c | 8 | ||||
-rw-r--r-- | source/blender/editors/object/object_relations.c | 4 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_action.c | 6 | ||||
-rw-r--r-- | source/blender/python/intern/bpy_rna_anim.c | 2 |
10 files changed, 70 insertions, 57 deletions
diff --git a/source/blender/collada/AnimationImporter.cpp b/source/blender/collada/AnimationImporter.cpp index 18ca6ae7a0f..715cd9e1a12 100644 --- a/source/blender/collada/AnimationImporter.cpp +++ b/source/blender/collada/AnimationImporter.cpp @@ -197,7 +197,7 @@ void AnimationImporter::add_fcurves_to_object(Main *bmain, bAction *act; if (!ob->adt || !ob->adt->action) { - act = verify_adt_action(bmain, (ID *)&ob->id, 1); + act = ED_id_action_ensure(bmain, (ID *)&ob->id); } else { act = ob->adt->action; @@ -941,7 +941,7 @@ void AnimationImporter::apply_matrix_curves(Object *ob, } } Main *bmain = CTX_data_main(mContext); - verify_adt_action(bmain, (ID *)&ob->id, 1); + ED_id_action_ensure(bmain, (ID *)&ob->id); ListBase *curves = &ob->adt->action->curves; @@ -1006,7 +1006,7 @@ static ListBase &get_animation_curves(Main *bmain, Material *ma) { bAction *act; if (!ma->adt || !ma->adt->action) { - act = verify_adt_action(bmain, (ID *)&ma->id, 1); + act = ED_id_action_ensure(bmain, (ID *)&ma->id); } else { act = ma->adt->action; @@ -1052,7 +1052,7 @@ void AnimationImporter::translate_Animations( } if (!ob->adt || !ob->adt->action) { - act = verify_adt_action(bmain, (ID *)&ob->id, 1); + act = ED_id_action_ensure(bmain, (ID *)&ob->id); } else { act = ob->adt->action; @@ -1115,7 +1115,7 @@ void AnimationImporter::translate_Animations( if ((animType->light) != 0) { Light *lamp = (Light *)ob->data; if (!lamp->adt || !lamp->adt->action) { - act = verify_adt_action(bmain, (ID *)&lamp->id, 1); + act = ED_id_action_ensure(bmain, (ID *)&lamp->id); } else { act = lamp->adt->action; @@ -1153,7 +1153,7 @@ void AnimationImporter::translate_Animations( Camera *cam = (Camera *)ob->data; if (!cam->adt || !cam->adt->action) { - act = verify_adt_action(bmain, (ID *)&cam->id, 1); + act = ED_id_action_ensure(bmain, (ID *)&cam->id); } else { act = cam->adt->action; @@ -1209,7 +1209,7 @@ void AnimationImporter::translate_Animations( Material *ma = BKE_object_material_get(ob, 1); if (!ma->adt || !ma->adt->action) { - act = verify_adt_action(bmain, (ID *)&ma->id, 1); + act = ED_id_action_ensure(bmain, (ID *)&ma->id); } else { act = ma->adt->action; @@ -1390,7 +1390,7 @@ void AnimationImporter::add_bone_animation_sampled(Object *ob, } } Main *bmain = CTX_data_main(mContext); - verify_adt_action(bmain, (ID *)&ob->id, 1); + ED_id_action_ensure(bmain, (ID *)&ob->id); /* add curves */ for (int i = 0; i < totcu; i++) { @@ -1823,7 +1823,7 @@ Object *AnimationImporter::translate_animation_OLD( #endif } Main *bmain = CTX_data_main(mContext); - verify_adt_action(bmain, (ID *)&ob->id, 1); + ED_id_action_ensure(bmain, (ID *)&ob->id); ListBase *curves = &ob->adt->action->curves; @@ -2129,7 +2129,7 @@ Object *AnimationImporter::get_joint_object(COLLADAFW::Node *root, mul_v3_fl(job->scale, 0.5f); DEG_id_tag_update(&job->id, ID_RECALC_TRANSFORM); - verify_adt_action((ID *)&job->id, 1); + ED_id_action_ensure((ID *)&job->id); job->rotmode = ROT_MODE_QUAT; diff --git a/source/blender/editors/animation/anim_channels_defines.c b/source/blender/editors/animation/anim_channels_defines.c index 055c64290db..1af5721bffd 100644 --- a/source/blender/editors/animation/anim_channels_defines.c +++ b/source/blender/editors/animation/anim_channels_defines.c @@ -4432,8 +4432,8 @@ static void achannel_setting_slider_shapekey_cb(bContext *C, void *key_poin, voi if (RNA_path_resolve_property(&id_ptr, rna_path, &ptr, &prop)) { /* find or create new F-Curve */ // XXX is the group name for this ok? - bAction *act = verify_adt_action(bmain, (ID *)key, 1); - FCurve *fcu = verify_fcurve(bmain, act, NULL, &ptr, rna_path, 0, 1); + bAction *act = ED_id_action_ensure(bmain, (ID *)key); + FCurve *fcu = ED_action_fcurve_ensure(bmain, act, NULL, &ptr, rna_path, 0); /* set the special 'replace' flag if on a keyframe */ if (fcurve_frame_has_keyframe(fcu, cfra, 0)) { diff --git a/source/blender/editors/animation/keyframing.c b/source/blender/editors/animation/keyframing.c index 315761e9893..b48b96830d2 100644 --- a/source/blender/editors/animation/keyframing.c +++ b/source/blender/editors/animation/keyframing.c @@ -131,13 +131,13 @@ short ANIM_get_keyframing_flags(Scene *scene, short incl_mode) /* Get (or add relevant data to be able to do so) the Active Action for the given * Animation Data block, given an ID block where the Animation Data should reside. */ -bAction *verify_adt_action(Main *bmain, ID *id, short add) +bAction *ED_id_action_ensure(Main *bmain, ID *id) { AnimData *adt; /* init animdata if none available yet */ adt = BKE_animdata_from_id(id); - if ((adt == NULL) && (add)) { + if (adt == NULL) { adt = BKE_animdata_add_id(id); } if (adt == NULL) { @@ -148,7 +148,7 @@ bAction *verify_adt_action(Main *bmain, ID *id, short add) /* init action if none available yet */ /* TODO: need some wizardry to handle NLA stuff correct */ - if ((adt->action == NULL) && (add)) { + if (adt->action == NULL) { /* init action name from name of ID block */ char actname[sizeof(id->name) - 2]; BLI_snprintf(actname, sizeof(actname), "%sAction", id->name + 2); @@ -172,21 +172,34 @@ bAction *verify_adt_action(Main *bmain, ID *id, short add) return adt->action; } -/* Get (or add relevant data to be able to do so) F-Curve from the Active Action, +/** + * Find the F-Curve from the Active Action, * for the given Animation Data block. This assumes that all the destinations are valid. */ -FCurve *verify_fcurve(Main *bmain, - bAction *act, - const char group[], - PointerRNA *ptr, - const char rna_path[], - const int array_index, - short add) +FCurve *ED_action_fcurve_find(struct bAction *act, const char rna_path[], const int array_index) +{ + /* Sanity checks. */ + if (ELEM(NULL, act, rna_path)) { + return NULL; + } + return list_find_fcurve(&act->curves, rna_path, array_index); +} + +/** + * Get (or add relevant data to be able to do so) F-Curve from the Active Action, + * for the given Animation Data block. This assumes that all the destinations are valid. + */ +FCurve *ED_action_fcurve_ensure(struct Main *bmain, + struct bAction *act, + const char group[], + struct PointerRNA *ptr, + const char rna_path[], + const int array_index) { bActionGroup *agrp; FCurve *fcu; - /* sanity checks */ + /* Sanity checks. */ if (ELEM(NULL, act, rna_path)) { return NULL; } @@ -197,7 +210,7 @@ FCurve *verify_fcurve(Main *bmain, */ fcu = list_find_fcurve(&act->curves, rna_path, array_index); - if ((fcu == NULL) && (add)) { + if (fcu == NULL) { /* use default settings to make a F-Curve */ fcu = MEM_callocN(sizeof(FCurve), "FCurve"); @@ -1284,7 +1297,9 @@ static bool insert_keyframe_fcurve_value(Main *bmain, * but still try to get the F-Curve if it exists... */ bool can_create_curve = (flag & (INSERTKEY_REPLACE | INSERTKEY_AVAILABLE)) == 0; - FCurve *fcu = verify_fcurve(bmain, act, group, ptr, rna_path, array_index, can_create_curve); + FCurve *fcu = can_create_curve ? + ED_action_fcurve_ensure(bmain, act, group, ptr, rna_path, array_index) : + ED_action_fcurve_find(act, rna_path, array_index); /* we may not have a F-Curve when we're replacing only... */ if (fcu) { @@ -1361,7 +1376,7 @@ short insert_keyframe(Main *bmain, /* if no action is provided, keyframe to the default one attached to this ID-block */ if (act == NULL) { /* get action to add F-Curve+keyframe to */ - act = verify_adt_action(bmain, id, 1); + act = ED_id_action_ensure(bmain, id); if (act == NULL) { BKE_reportf(reports, @@ -1559,7 +1574,6 @@ short delete_keyframe(Main *bmain, ReportList *reports, ID *id, bAction *act, - const char group[], const char rna_path[], int array_index, float cfra, @@ -1625,7 +1639,7 @@ short delete_keyframe(Main *bmain, /* will only loop once unless the array index was -1 */ for (; array_index < array_index_max; array_index++) { - FCurve *fcu = verify_fcurve(bmain, act, group, &ptr, rna_path, array_index, 0); + FCurve *fcu = ED_action_fcurve_find(act, rna_path, array_index); /* check if F-Curve exists and/or whether it can be edited */ if (fcu == NULL) { @@ -1665,7 +1679,6 @@ static short clear_keyframe(Main *bmain, ReportList *reports, ID *id, bAction *act, - const char group[], const char rna_path[], int array_index, eInsertKeyFlags UNUSED(flag)) @@ -1727,7 +1740,7 @@ static short clear_keyframe(Main *bmain, /* will only loop once unless the array index was -1 */ for (; array_index < array_index_max; array_index++) { - FCurve *fcu = verify_fcurve(bmain, act, group, &ptr, rna_path, array_index, 0); + FCurve *fcu = ED_action_fcurve_find(act, rna_path, array_index); /* check if F-Curve exists and/or whether it can be edited */ if (fcu == NULL) { @@ -2576,8 +2589,7 @@ static int delete_key_button_exec(bContext *C, wmOperator *op) index = -1; } - success = delete_keyframe( - bmain, op->reports, ptr.owner_id, NULL, NULL, path, index, cfra, 0); + success = delete_keyframe(bmain, op->reports, ptr.owner_id, NULL, path, index, cfra, 0); MEM_freeN(path); } else if (G.debug & G_DEBUG) { @@ -2645,7 +2657,7 @@ static int clear_key_button_exec(bContext *C, wmOperator *op) index = -1; } - success += clear_keyframe(bmain, op->reports, ptr.owner_id, NULL, NULL, path, index, 0); + success += clear_keyframe(bmain, op->reports, ptr.owner_id, NULL, path, index, 0); MEM_freeN(path); } else if (G.debug & G_DEBUG) { diff --git a/source/blender/editors/animation/keyingsets.c b/source/blender/editors/animation/keyingsets.c index 258c0e4f1f6..d30828f824d 100644 --- a/source/blender/editors/animation/keyingsets.c +++ b/source/blender/editors/animation/keyingsets.c @@ -1136,8 +1136,7 @@ int ANIM_apply_keyingset( kflag2); } else if (mode == MODIFYKEY_MODE_DELETE) { - success += delete_keyframe( - bmain, reports, ksp->id, act, groupname, ksp->rna_path, i, cfra, kflag2); + success += delete_keyframe(bmain, reports, ksp->id, act, ksp->rna_path, i, cfra, kflag2); } } diff --git a/source/blender/editors/gpencil/gpencil_convert.c b/source/blender/editors/gpencil/gpencil_convert.c index e1b13747ee0..296b4707c4b 100644 --- a/source/blender/editors/gpencil/gpencil_convert.c +++ b/source/blender/editors/gpencil/gpencil_convert.c @@ -513,8 +513,8 @@ static void gp_stroke_path_animation(bContext *C, prop = RNA_struct_find_property(&ptr, "eval_time"); /* Ensure we have an F-Curve to add keyframes to */ - act = verify_adt_action(bmain, (ID *)cu, true); - fcu = verify_fcurve(bmain, act, NULL, &ptr, "eval_time", 0, true); + act = ED_id_action_ensure(bmain, (ID *)cu); + fcu = ED_action_fcurve_ensure(bmain, act, NULL, &ptr, "eval_time", 0); if (G.debug & G_DEBUG) { printf("%s: tot len: %f\t\ttot time: %f\n", __func__, gtd->tot_dist, gtd->tot_time); diff --git a/source/blender/editors/include/ED_keyframing.h b/source/blender/editors/include/ED_keyframing.h index ac3007afe5d..e4d86a026e3 100644 --- a/source/blender/editors/include/ED_keyframing.h +++ b/source/blender/editors/include/ED_keyframing.h @@ -65,18 +65,21 @@ short ANIM_get_keyframing_flags(struct Scene *scene, short incl_mode); /* Get (or add relevant data to be able to do so) the Active Action for the given * Animation Data block, given an ID block where the Animation Data should reside. */ -struct bAction *verify_adt_action(struct Main *bmain, struct ID *id, short add); +struct bAction *ED_id_action_ensure(struct Main *bmain, struct ID *id); /* Get (or add relevant data to be able to do so) F-Curve from the given Action. * This assumes that all the destinations are valid. */ -struct FCurve *verify_fcurve(struct Main *bmain, - struct bAction *act, - const char group[], - struct PointerRNA *ptr, - const char rna_path[], - const int array_index, - short add); +struct FCurve *ED_action_fcurve_ensure(struct Main *bmain, + struct bAction *act, + const char group[], + struct PointerRNA *ptr, + const char rna_path[], + const int array_index); + +struct FCurve *ED_action_fcurve_find(struct bAction *act, + const char rna_path[], + const int array_index); /* -------- */ @@ -145,7 +148,6 @@ short delete_keyframe(struct Main *bmain, struct ReportList *reports, struct ID *id, struct bAction *act, - const char group[], const char rna_path[], int array_index, float cfra, diff --git a/source/blender/editors/object/object_constraint.c b/source/blender/editors/object/object_constraint.c index bfff36bb83a..4db7ee9594e 100644 --- a/source/blender/editors/object/object_constraint.c +++ b/source/blender/editors/object/object_constraint.c @@ -1024,8 +1024,8 @@ static int followpath_path_animate_exec(bContext *C, wmOperator *op) if (ELEM(NULL, cu->adt, cu->adt->action) || (list_find_fcurve(&cu->adt->action->curves, "eval_time", 0) == NULL)) { /* create F-Curve for path animation */ - act = verify_adt_action(bmain, &cu->id, 1); - fcu = verify_fcurve(bmain, act, NULL, NULL, "eval_time", 0, 1); + act = ED_id_action_ensure(bmain, &cu->id); + fcu = ED_action_fcurve_ensure(bmain, act, NULL, NULL, "eval_time", 0); /* standard vertical range - 1:1 = 100 frames */ standardRange = 100.0f; @@ -1049,8 +1049,8 @@ static int followpath_path_animate_exec(bContext *C, wmOperator *op) path = RNA_path_from_ID_to_property(&ptr, prop); /* create F-Curve for constraint */ - act = verify_adt_action(bmain, &ob->id, 1); - fcu = verify_fcurve(bmain, act, NULL, NULL, path, 0, 1); + act = ED_id_action_ensure(bmain, &ob->id); + fcu = ED_action_fcurve_ensure(bmain, act, NULL, NULL, path, 0); /* standard vertical range - 0.0 to 1.0 */ standardRange = 1.0f; diff --git a/source/blender/editors/object/object_relations.c b/source/blender/editors/object/object_relations.c index 006e1ebc6be..c7bba43758f 100644 --- a/source/blender/editors/object/object_relations.c +++ b/source/blender/editors/object/object_relations.c @@ -707,8 +707,8 @@ bool ED_object_parent_set(ReportList *reports, /* if follow, add F-Curve for ctime (i.e. "eval_time") so that path-follow works */ if (partype == PAR_FOLLOW) { /* get or create F-Curve */ - bAction *act = verify_adt_action(bmain, &cu->id, 1); - FCurve *fcu = verify_fcurve(bmain, act, NULL, NULL, "eval_time", 0, 1); + bAction *act = ED_id_action_ensure(bmain, &cu->id); + FCurve *fcu = ED_action_fcurve_ensure(bmain, act, NULL, NULL, "eval_time", 0); /* setup dummy 'generator' modifier here to get 1-1 correspondence still working */ if (!fcu->bezt && !fcu->fpt && !fcu->modifiers.first) { diff --git a/source/blender/makesrna/intern/rna_action.c b/source/blender/makesrna/intern/rna_action.c index 6eaf303ce2d..436e847b044 100644 --- a/source/blender/makesrna/intern/rna_action.c +++ b/source/blender/makesrna/intern/rna_action.c @@ -123,8 +123,8 @@ static FCurve *rna_Action_fcurve_new(bAction *act, return NULL; } - /* annoying, check if this exists */ - if (verify_fcurve(bmain, act, group, NULL, data_path, index, 0)) { + /* Annoying, check if this exists. */ + if (ED_action_fcurve_find(act, data_path, index)) { BKE_reportf(reports, RPT_ERROR, "F-Curve '%s[%d]' already exists in action '%s'", @@ -133,7 +133,7 @@ static FCurve *rna_Action_fcurve_new(bAction *act, act->id.name + 2); return NULL; } - return verify_fcurve(bmain, act, group, NULL, data_path, index, 1); + return ED_action_fcurve_ensure(bmain, act, group, NULL, data_path, index); } static FCurve *rna_Action_fcurve_find(bAction *act, diff --git a/source/blender/python/intern/bpy_rna_anim.c b/source/blender/python/intern/bpy_rna_anim.c index 2fe67b02000..b9cdcc94260 100644 --- a/source/blender/python/intern/bpy_rna_anim.c +++ b/source/blender/python/intern/bpy_rna_anim.c @@ -502,7 +502,7 @@ PyObject *pyrna_struct_keyframe_delete(BPy_StructRNA *self, PyObject *args, PyOb BKE_reports_init(&reports, RPT_STORE); result = delete_keyframe( - G.main, &reports, (ID *)self->ptr.owner_id, NULL, group_name, path_full, index, cfra, 0); + G.main, &reports, (ID *)self->ptr.owner_id, NULL, path_full, index, cfra, 0); MEM_freeN((void *)path_full); if (BPy_reports_to_error(&reports, PyExc_RuntimeError, true) == -1) { |