Revision: 43005 http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=43005 Author: campbellbarton Date: 2011-12-30 14:52:03 +0000 (Fri, 30 Dec 2011) Log Message: ----------- patch [#29726] Enable looping with Follow Path constraint and cyclic curves. by Peter Amstutz (tetron)
Modified Paths: -------------- trunk/blender/source/blender/blenkernel/intern/constraint.c Modified: trunk/blender/source/blender/blenkernel/intern/constraint.c =================================================================== --- trunk/blender/source/blender/blenkernel/intern/constraint.c 2011-12-30 14:17:11 UTC (rev 43004) +++ trunk/blender/source/blender/blenkernel/intern/constraint.c 2011-12-30 14:52:03 UTC (rev 43005) @@ -1255,6 +1255,7 @@ float quat[4]; if ((data->followflag & FOLLOWPATH_STATIC) == 0) { /* animated position along curve depending on time */ + Nurb *nu = cu->nurb.first; curvetime= cu->ctime - data->offset; /* ctime is now a proper var setting of Curve which gets set by Animato like any other var that's animated, @@ -1264,7 +1265,18 @@ * factor, which then gets clamped to lie within 0.0 - 1.0 range */ curvetime /= cu->pathlen; - CLAMP(curvetime, 0.0f, 1.0f); + + if (nu && nu->flagu & CU_NURB_CYCLIC) { + /* If the curve is cyclic, enable looping around if the time is + * outside the bounds 0..1 */ + if ((curvetime < 0.0f) || (curvetime > 1.0f)) { + curvetime -= floor(curvetime); + } + } + else { + /* The curve is not cyclic, so clamp to the begin/end points. */ + CLAMP(curvetime, 0.0f, 1.0f); + } } else { /* fixed position along curve */ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs