[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [20517] branches/soc-2009-aligorith/source /blender: NLA SoC: Bugfixes for previous commit

Joshua Leung aligorith at gmail.com
Sat May 30 13:05:30 CEST 2009


Revision: 20517
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=20517
Author:   aligorith
Date:     2009-05-30 13:05:29 +0200 (Sat, 30 May 2009)

Log Message:
-----------
NLA SoC: Bugfixes for previous commit 

* Compile fix in nla_draw.c 
* Not totally correct yet, but now NLA-tracks get drawn too after action 'push-down'

Modified Paths:
--------------
    branches/soc-2009-aligorith/source/blender/blenkernel/intern/nla.c
    branches/soc-2009-aligorith/source/blender/editors/animation/anim_filter.c
    branches/soc-2009-aligorith/source/blender/editors/space_nla/nla_draw.c

Modified: branches/soc-2009-aligorith/source/blender/blenkernel/intern/nla.c
===================================================================
--- branches/soc-2009-aligorith/source/blender/blenkernel/intern/nla.c	2009-05-30 10:41:41 UTC (rev 20516)
+++ branches/soc-2009-aligorith/source/blender/blenkernel/intern/nla.c	2009-05-30 11:05:29 UTC (rev 20517)
@@ -427,8 +427,10 @@
 	 * as that will cause us grief down the track
 	 */
 	// TODO: what about modifiers?
-	if (action_has_motion(adt->action) == 0)
+	if (action_has_motion(adt->action) == 0) {
+		printf("BKE_nla_action_pushdown(): action has no data \n");
 		return;
+	}
 		
 	/* add a new NLA track to house this action 
 	 *	- we could investigate trying to fit the action into an appropriately
@@ -436,8 +438,10 @@
 	 *	  changes in blending behaviour...
 	 */
 	nlt= add_nlatrack(adt);
-	if (nlt == NULL)
+	if (nlt == NULL) {
+		printf("BKE_nla_action_pushdown(): no NLA-track added \n");
 		return;
+	}
 	
 	/* add a new NLA strip to the track, which references the active action */
 	strip= add_nlastrip(nlt, adt->action);
@@ -448,6 +452,9 @@
 		adt->action= NULL;
 	}
 	
+	// TEMP DEBUG...
+	printf("BKE_nla_action_pushdown(): NLA strip added.. done \n");
+	
 	// TODO: set any other flags necessary here...
 }
 

Modified: branches/soc-2009-aligorith/source/blender/editors/animation/anim_filter.c
===================================================================
--- branches/soc-2009-aligorith/source/blender/editors/animation/anim_filter.c	2009-05-30 10:41:41 UTC (rev 20516)
+++ branches/soc-2009-aligorith/source/blender/editors/animation/anim_filter.c	2009-05-30 11:05:29 UTC (rev 20517)
@@ -1334,23 +1334,19 @@
 	/* scene-linked animation */
 	// TODO: sequencer, composite nodes - are we to include those here too?
 	{
-		short sceOk, worOk;
+		short sceOk= 0, worOk= 0;
 		
 		/* check filtering-flags if ok */
-		if (ads->filterflag) {
-			if (ads->filterflag & ADS_FILTER_ONLYDRIVERS) {
-				sceOk= (ANIMDATA_HAS_DRIVERS(sce) && !(ads->filterflag & ADS_FILTER_NOSCE));
-				worOk= ((sce->world) && ANIMDATA_HAS_DRIVERS(sce->world) && !(ads->filterflag & ADS_FILTER_NOWOR));
-			}
-			else {
-				sceOk= (ANIMDATA_HAS_KEYS(sce) && !(ads->filterflag & ADS_FILTER_NOSCE));
-				worOk= ((sce->world) && ANIMDATA_HAS_KEYS(sce->world) && !(ads->filterflag & ADS_FILTER_NOWOR));
-			}
+		ANIMDATA_FILTER_CASES(sce, 
+			sceOk= !(ads->filterflag & ADS_FILTER_NOSCE);, 
+			sceOk= !(ads->filterflag & ADS_FILTER_NOSCE);, 
+			sceOk= !(ads->filterflag & ADS_FILTER_NOSCE);)
+		if (sce->world) {
+			ANIMDATA_FILTER_CASES(sce->world, 
+				worOk= !(ads->filterflag & ADS_FILTER_NOWOR);, 
+				worOk= !(ads->filterflag & ADS_FILTER_NOWOR);, 
+				worOk= !(ads->filterflag & ADS_FILTER_NOWOR);)
 		}
-		else {
-			sceOk= (ANIMDATA_HAS_KEYS(sce));
-			worOk= ((sce->world) && ANIMDATA_HAS_KEYS(sce->world));
-		}
 		
 		/* check if not all bad (i.e. so there is something to show) */
 		if ( !(!sceOk && !worOk) ) {
@@ -1391,14 +1387,18 @@
 				}
 				
 				/* check filters for datatypes */
-				if (ads->filterflag & ADS_FILTER_ONLYDRIVERS) {
-					actOk= (ANIMDATA_HAS_DRIVERS(ob));
-					keyOk= ((key) && ANIMDATA_HAS_DRIVERS(key) && !(ads->filterflag & ADS_FILTER_NOSHAPEKEYS));
+					/* object */
+				ANIMDATA_FILTER_CASES(ob, 
+					actOk= 1;, 
+					actOk= 1;, 
+					actOk= 1;)
+				if (key) {
+					/* shapekeys */
+					ANIMDATA_FILTER_CASES(key, 
+						keyOk= 1;, 
+						keyOk= 1;, 
+						keyOk= 1;)
 				}
-				else {
-					actOk= ANIMDATA_HAS_KEYS(ob);
-					keyOk= ((key) && ANIMDATA_HAS_KEYS(key) && !(ads->filterflag & ADS_FILTER_NOSHAPEKEYS));
-				}
 				
 				/* materials - only for geometric types */
 				matOk= 0; /* by default, not ok... */
@@ -1412,18 +1412,13 @@
 						Material *ma= give_current_material(ob, a);
 						
 						/* if material has relevant animation data, break */
-						if (ads->filterflag & ADS_FILTER_ONLYDRIVERS) {
-							if (ANIMDATA_HAS_DRIVERS(ma)) {
-								matOk= 1;
-								break;
-							}
-						}
-						else {
-							if (ANIMDATA_HAS_KEYS(ma)) {
-								matOk= 1;
-								break;
-							}
-						}
+						ANIMDATA_FILTER_CASES(ma, 
+							matOk= 1;, 
+							matOk= 1;, 
+							matOk= 1;)
+							
+						if (matOk) 
+							break;
 					}
 				}
 				
@@ -1432,19 +1427,19 @@
 					case OB_CAMERA: /* ------- Camera ------------ */
 					{
 						Camera *ca= (Camera *)ob->data;
-						if (ads->filterflag & ADS_FILTER_ONLYDRIVERS)
-							dataOk= (ANIMDATA_HAS_DRIVERS(ca) && !(ads->filterflag & ADS_FILTER_NOCAM));
-						else
-							dataOk= (ANIMDATA_HAS_KEYS(ca) && !(ads->filterflag & ADS_FILTER_NOCAM));						
+						ANIMDATA_FILTER_CASES(ca, 
+							dataOk= !(ads->filterflag & ADS_FILTER_NOCAM);, 
+							dataOk= !(ads->filterflag & ADS_FILTER_NOCAM);, 
+							dataOk= !(ads->filterflag & ADS_FILTER_NOCAM);)
 					}
 						break;
 					case OB_LAMP: /* ---------- Lamp ----------- */
 					{
 						Lamp *la= (Lamp *)ob->data;
-						if (ads->filterflag & ADS_FILTER_ONLYDRIVERS)
-							dataOk= (ANIMDATA_HAS_DRIVERS(la) && !(ads->filterflag & ADS_FILTER_NOLAM));
-						else
-							dataOk= (ANIMDATA_HAS_KEYS(la) && !(ads->filterflag & ADS_FILTER_NOLAM));	
+						ANIMDATA_FILTER_CASES(la, 
+							dataOk= !(ads->filterflag & ADS_FILTER_NOLAM);, 
+							dataOk= !(ads->filterflag & ADS_FILTER_NOLAM);, 
+							dataOk= !(ads->filterflag & ADS_FILTER_NOLAM);)
 					}
 						break;
 					default: /* --- other --- */

Modified: branches/soc-2009-aligorith/source/blender/editors/space_nla/nla_draw.c
===================================================================
--- branches/soc-2009-aligorith/source/blender/editors/space_nla/nla_draw.c	2009-05-30 10:41:41 UTC (rev 20516)
+++ branches/soc-2009-aligorith/source/blender/editors/space_nla/nla_draw.c	2009-05-30 11:05:29 UTC (rev 20517)
@@ -618,7 +618,7 @@
 				glBegin(GL_LINES);
 					glVertex2f((float)NLACHANNEL_NAMEWIDTH-offset-1, y-7);
 					glVertex2f((float)NLACHANNEL_NAMEWIDTH-offset-1, y+7);
-					glVertex2f((float)NLACHANNEL_NAMEWIDTH-1, y-7;
+					glVertex2f((float)NLACHANNEL_NAMEWIDTH-1, y-7);
 					glVertex2f((float)NLACHANNEL_NAMEWIDTH-1, y+7);
 				glEnd(); // GL_LINES
 				





More information about the Bf-blender-cvs mailing list