[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