Revision: 21396
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=21396
Author:   aligorith
Date:     2009-07-07 08:16:06 +0200 (Tue, 07 Jul 2009)

Log Message:
-----------
NLA SoC: Fixes for bugs in transform code from previous commit 

* The code to move strips between tracks now works (though it can still be a 
bit too eager to change tracks half-way through some transforms). 
Strips are moved up/down one strip at a time, depending on whether there is any 
space in the next-track in the direction you direct it to move in. 

* Auto-snapping works again. Also enabled snap-to-marker option for Graph 
Editor here. 

Modified Paths:
--------------
    
branches/soc-2009-aligorith/source/blender/editors/transform/transform_conversions.c
    
branches/soc-2009-aligorith/source/blender/editors/transform/transform_generics.c

Modified: 
branches/soc-2009-aligorith/source/blender/editors/transform/transform_conversions.c
===================================================================
--- 
branches/soc-2009-aligorith/source/blender/editors/transform/transform_conversions.c
        2009-07-07 05:41:59 UTC (rev 21395)
+++ 
branches/soc-2009-aligorith/source/blender/editors/transform/transform_conversions.c
        2009-07-07 06:16:06 UTC (rev 21396)
@@ -2677,7 +2677,7 @@
                                                tdn->strip= strip;
                                                tdn->trackIndex= 
BLI_findindex(&nlt->strips, strip);
                                                
-                                               yval= (float)(tdn->trackIndex * 
NLACHANNEL_SKIP);
+                                               yval= (float)(tdn->trackIndex * 
NLACHANNEL_STEP);
                                                
                                                tdn->h1[0]= strip->start;
                                                tdn->h1[1]= yval;
@@ -3688,7 +3688,7 @@
                                        break;
                                        
                                case SACTSNAP_MARKER: /* snap to nearest marker 
*/
-                                       //td2d->loc[0]= 
(float)find_nearest_marker_time(td2d->loc[0]);
+                                       td2d->loc[0]= 
(float)ED_markers_find_nearest_marker_time(&t->scene->markers, td2d->loc[0]);
                                        break;
                        }
                }

Modified: 
branches/soc-2009-aligorith/source/blender/editors/transform/transform_generics.c
===================================================================
--- 
branches/soc-2009-aligorith/source/blender/editors/transform/transform_generics.c
   2009-07-07 05:41:59 UTC (rev 21395)
+++ 
branches/soc-2009-aligorith/source/blender/editors/transform/transform_generics.c
   2009-07-07 06:16:06 UTC (rev 21396)
@@ -59,9 +59,7 @@
 //#include "BIF_screen.h"
 //#include "BIF_mywindow.h"
 #include "BIF_gl.h"
-//#include "BIF_editaction.h"
 //#include "BIF_editmesh.h"
-//#include "BIF_editnla.h"
 //#include "BIF_editsima.h"
 //#include "BIF_editparticle.h"
 //#include "BIF_meshtools.h"
@@ -91,6 +89,7 @@
 #include "ED_armature.h"
 #include "ED_image.h"
 #include "ED_keyframing.h"
+#include "ED_markers.h"
 #include "ED_mesh.h"
 #include "ED_space_api.h"
 #include "ED_uvedit.h"
@@ -341,6 +340,7 @@
        }
        else if (t->spacetype == SPACE_NLA) {
                TransDataNla *tdn= (TransDataNla *)t->customData;
+               SpaceNla *snla= (SpaceNla *)t->sa->spacedata.first;
                int i;
                
                /* for each strip we've got, perform some additional validation 
of the values that got set before 
@@ -375,6 +375,9 @@
                                if ((strip->next) && (strip->next->type == 
NLASTRIP_TYPE_TRANSITION))
                                        strip->next->start= tdn->h2[0];
                                        
+                               /* flush transforms to child strips (since this 
should be a meta) */
+                               BKE_nlameta_flush_transforms(strip);
+                                       
                                /* restore to original track (if needed) */
                                if (tdn->oldTrack != tdn->nlt) {
                                        /* just append to end of list for now, 
since strips get sorted in special_aftertrans_update() */
@@ -426,6 +429,19 @@
                                        break;
                        }
                        
+                       /* handle auto-snapping */
+                       switch (snla->autosnap) {
+                               case SACTSNAP_FRAME: /* snap to nearest frame */
+                                       tdn->h1[0]= (float)( 
floor(tdn->h1[0]+0.5f) );
+                                       tdn->h2[0]= (float)( 
floor(tdn->h2[0]+0.5f) );
+                                       break;
+                                       
+                               case SACTSNAP_MARKER: /* snap to nearest marker 
*/
+                                       tdn->h1[0]= 
(float)ED_markers_find_nearest_marker_time(&t->scene->markers, tdn->h1[0]);
+                                       tdn->h2[0]= 
(float)ED_markers_find_nearest_marker_time(&t->scene->markers, tdn->h2[0]);
+                                       break;
+                       }
+                       
                        /* use RNA to write the values... */
                        // TODO: do we need to write in 2 passes to make sure 
that no truncation goes on?
                        RNA_pointer_create(NULL, &RNA_NlaStrip, strip, 
&strip_ptr);
@@ -440,9 +456,8 @@
                        /* now, check if we need to try and move track 
                         *      - we need to calculate both, as only one may 
have been altered by transform if only 1 handle moved
                         */
-                       // FIXME: the conversion from vertical distance to 
track index needs work!
-                       delta_y1= ((int)tdn->h1[0] / NLACHANNEL_SKIP - 
tdn->trackIndex);
-                       delta_y2= ((int)tdn->h2[0] / NLACHANNEL_SKIP - 
tdn->trackIndex);
+                       delta_y1= ((int)tdn->h1[1] / NLACHANNEL_STEP - 
tdn->trackIndex);
+                       delta_y2= ((int)tdn->h2[1] / NLACHANNEL_STEP - 
tdn->trackIndex);
                        
                        if (delta_y1 || delta_y2) {
                                NlaTrack *track;


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to