Fix T62601: parenting to curve (follow path) causes offset
authorPhilipp Oeser <info@graphics-engineer.com>
Fri, 15 Mar 2019 15:15:37 +0000 (16:15 +0100)
committerPhilipp Oeser <info@graphics-engineer.com>
Fri, 15 Mar 2019 17:49:13 +0000 (18:49 +0100)
Similar to T60623 / rB2894e75121d7.
Issue (when parenting with 'Follow Curve') is that the curves
CU_FOLLOW flag is set on the original, but not the
evaluated curve (yet), leading to misbehaviour in 'ob_parcurve()'.
Setting this on both now.

Reviewers: sergey

Maniphest Tasks: T62601

Differential Revision: https://developer.blender.org/D4524

source/blender/editors/object/object_relations.c

index dbd9062..95d1dde 100644 (file)
@@ -628,14 +628,16 @@ bool ED_object_parent_set(ReportList *reports, const bContext *C, Scene *scene,
                        return 0;
                else {
                        Curve *cu = par->data;
-
+                       Curve *cu_eval = parent_eval->data;
                        if ((cu->flag & CU_PATH) == 0) {
                                cu->flag |= CU_PATH | CU_FOLLOW;
+                               cu_eval->flag |= CU_PATH | CU_FOLLOW;
                                /* force creation of path data */
                                BKE_displist_make_curveTypes(depsgraph, scene, par, false, false, NULL);
                        }
                        else {
                                cu->flag |= CU_FOLLOW;
+                               cu_eval->flag |= CU_FOLLOW;
                        }
 
                        /* if follow, add F-Curve for ctime (i.e. "eval_time") so that path-follow works */