Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
Diffstat (limited to 'source')
-rw-r--r--source/blender/blenkernel/intern/anim_sys.c17
-rw-r--r--source/blender/editors/curve/editcurve.c1
-rw-r--r--source/blender/editors/object/object_relations.c13
3 files changed, 14 insertions, 17 deletions
diff --git a/source/blender/blenkernel/intern/anim_sys.c b/source/blender/blenkernel/intern/anim_sys.c
index 22f5ac181f1..e03799ff938 100644
--- a/source/blender/blenkernel/intern/anim_sys.c
+++ b/source/blender/blenkernel/intern/anim_sys.c
@@ -1872,22 +1872,7 @@ void BKE_animsys_evaluate_all_animation (Main *main, float ctime)
EVAL_ANIM_IDS(main->mball.first, ADT_RECALC_ANIM);
/* curves */
- /* we need to perform a special hack here to ensure that the ctime
- * value of the curve gets set in case there's no animation for that
- * - it needs to be set before animation is evaluated just so that
- * animation can successfully override...
- * - it shouldn't get set when calculating drivers...
- */
- for (id= main->curve.first; id; id= id->next) {
- AnimData *adt= BKE_animdata_from_id(id);
- Curve *cu= (Curve *)id;
-
- /* set ctime variable for curve */
- cu->ctime= ctime;
-
- /* now execute animation data on top of this as per normal */
- BKE_animsys_evaluate_animdata(id, adt, ctime, ADT_RECALC_ANIM);
- }
+ EVAL_ANIM_IDS(main->curve.first, ADT_RECALC_ANIM);
/* armatures */
EVAL_ANIM_IDS(main->armature.first, ADT_RECALC_ANIM);
diff --git a/source/blender/editors/curve/editcurve.c b/source/blender/editors/curve/editcurve.c
index a116cc10be7..9dfca2d61bf 100644
--- a/source/blender/editors/curve/editcurve.c
+++ b/source/blender/editors/curve/editcurve.c
@@ -6018,7 +6018,6 @@ static int curvesurf_prim_add(bContext *C, wmOperator *op, int type, int isSurf)
cu= (Curve*)obedit->data;
cu->flag |= CU_DEFORM_FILL;
- cu->ctime= CFRA;
if(type & CU_PRIM_PATH)
cu->flag |= CU_PATH|CU_3D;
} else DAG_id_flush_update(&obedit->id, OB_RECALC_DATA);
diff --git a/source/blender/editors/object/object_relations.c b/source/blender/editors/object/object_relations.c
index d92aeb13547..b1c027a2f24 100644
--- a/source/blender/editors/object/object_relations.c
+++ b/source/blender/editors/object/object_relations.c
@@ -57,6 +57,7 @@
#include "BKE_depsgraph.h"
#include "BKE_displist.h"
#include "BKE_global.h"
+#include "BKE_fcurve.h"
#include "BKE_lattice.h"
#include "BKE_library.h"
#include "BKE_main.h"
@@ -82,6 +83,7 @@
#include "ED_armature.h"
#include "ED_curve.h"
+#include "ED_keyframing.h"
#include "ED_object.h"
#include "ED_screen.h"
#include "ED_view3d.h"
@@ -546,6 +548,17 @@ static int parent_set_exec(bContext *C, wmOperator *op)
}
else cu->flag |= CU_FOLLOW;
+ /* 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(&cu->id, 1);
+ FCurve *fcu = verify_fcurve(act, NULL, "eval_time", 0, 1);
+
+ /* setup dummy 'generator' modifier here to get 1-1 correspondance still working */
+ if (!fcu->bezt && !fcu->fpt && !fcu->modifiers.first)
+ add_fmodifier(&fcu->modifiers, FMODIFIER_TYPE_GENERATOR);
+ }
+
/* fall back on regular parenting now (for follow only) */
if(partype == PAR_FOLLOW)
partype= PAR_OBJECT;