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

Reply via email to