[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [26105] trunk/blender/source/blender/ makesrna/intern/rna_nla.c: NLA Bugfix for Lee: Changing action extents doesn't update the strip lengths too

Joshua Leung aligorith at gmail.com
Tue Jan 19 12:43:29 CET 2010


Revision: 26105
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=26105
Author:   aligorith
Date:     2010-01-19 12:43:29 +0100 (Tue, 19 Jan 2010)

Log Message:
-----------
NLA Bugfix for Lee: Changing action extents doesn't update the strip lengths too

Modified Paths:
--------------
    trunk/blender/source/blender/makesrna/intern/rna_nla.c

Modified: trunk/blender/source/blender/makesrna/intern/rna_nla.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_nla.c	2010-01-19 11:31:49 UTC (rev 26104)
+++ trunk/blender/source/blender/makesrna/intern/rna_nla.c	2010-01-19 11:43:29 UTC (rev 26105)
@@ -234,15 +234,40 @@
 static void rna_NlaStrip_action_start_frame_set(PointerRNA *ptr, float value)
 {
 	NlaStrip *data= (NlaStrip*)ptr->data;
+	float actlen, mapping;
+	
+	/* prevent start frame from occurring after end of action */
 	CLAMP(value, MINAFRAME, data->actend);
 	data->actstart= value;
+	
+	/* calculate new length factors */
+	actlen= data->actend - data->actstart;
+	if (IS_EQ(actlen, 0.0f)) actlen= 1.0f;
+	mapping= data->scale * data->repeat;
+	
+	/* adjust endpoint of strip in response to this */
+	// FIXME: should we be moving the start backwards instead?
+	if (IS_EQ(mapping, 0.0f) == 0)
+		data->end = (actlen * mapping) + data->start; 
 }
 
 static void rna_NlaStrip_action_end_frame_set(PointerRNA *ptr, float value)
 {
 	NlaStrip *data= (NlaStrip*)ptr->data;
+	float actlen, mapping;
+	
+	/* prevent end frame from starting before start of action */
 	CLAMP(value, data->actstart, MAXFRAME);
 	data->actend= value;
+	
+	/* calculate new length factors */
+	actlen= data->actend - data->actstart;
+	if (IS_EQ(actlen, 0.0f)) actlen= 1.0f;
+	mapping= data->scale * data->repeat;
+	
+	/* adjust endpoint of strip in response to this */
+	if (IS_EQ(mapping, 0.0f) == 0)
+		data->end = (actlen * mapping) + data->start; 
 }
 
 static void rna_NlaStrip_animated_influence_set(PointerRNA *ptr, int value)





More information about the Bf-blender-cvs mailing list