[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [14575] trunk/blender/source/blender: * Group unlinking wasnt removing groups from particle systems, or render layers light overrid.

Campbell Barton ideasman42 at gmail.com
Sun Apr 27 22:43:26 CEST 2008


Revision: 14575
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=14575
Author:   campbellbarton
Date:     2008-04-27 22:43:25 +0200 (Sun, 27 Apr 2008)

Log Message:
-----------
* Group unlinking wasnt removing groups from particle systems, or render layers light overrid.
* BPath sequencer strip looper was only operating on the active scene, now look through all scenes.
* The active sequence strip wasnt being reset when scenes switched, so you could see the previous scenes strip when switching to a new scene.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/group.c
    trunk/blender/source/blender/blenkernel/intern/scene.c
    trunk/blender/source/blender/blenlib/BLI_bpath.h
    trunk/blender/source/blender/blenlib/intern/bpath.c
    trunk/blender/source/blender/src/drawscene.c

Modified: trunk/blender/source/blender/blenkernel/intern/group.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/group.c	2008-04-27 20:17:14 UTC (rev 14574)
+++ trunk/blender/source/blender/blenkernel/intern/group.c	2008-04-27 20:43:25 UTC (rev 14575)
@@ -41,6 +41,7 @@
 #include "DNA_object_types.h"
 #include "DNA_nla_types.h"
 #include "DNA_scene_types.h"
+#include "DNA_particle_types.h"
 
 #include "BLI_blenlib.h"
 
@@ -77,11 +78,25 @@
 {
 	Material *ma;
 	Object *ob;
+	Scene *sce;
+	SceneRenderLayer *srl;
+	ParticleSystem *psys;
 	
 	for(ma= G.main->mat.first; ma; ma= ma->id.next) {
 		if(ma->group==group)
 			ma->group= NULL;
 	}
+	for(ma= G.main->mat.first; ma; ma= ma->id.next) {
+		if(ma->group==group)
+			ma->group= NULL;
+	}
+	for (sce= G.main->scene.first; sce; sce= sce->id.next) {
+		for(srl= sce->r.layers.first; srl; srl= srl->next) {
+			if (srl->light_override==group)
+				srl->light_override= NULL;
+		}
+	}
+	
 	for(ob= G.main->object.first; ob; ob= ob->id.next) {
 		bActionStrip *strip;
 		
@@ -94,9 +109,13 @@
 					strip->object= NULL;
 			}
 		}
-		/* TODO - psys groups */
-		/* TODO - lamp groups */
-		/* TODO - render groups */
+		
+		for(psys=ob->particlesystem.first; psys; psys=psys->next){
+			if(psys->part->dup_group==group)
+				psys->part->dup_group= NULL;
+			if(psys->part->eff_group==group)
+				psys->part->eff_group= NULL;
+		}
 	}
 	group->id.us= 0;
 }

Modified: trunk/blender/source/blender/blenkernel/intern/scene.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/scene.c	2008-04-27 20:17:14 UTC (rev 14574)
+++ trunk/blender/source/blender/blenkernel/intern/scene.c	2008-04-27 20:43:25 UTC (rev 14575)
@@ -295,6 +295,8 @@
 	GroupObject *go;
 	int flag;
 	
+	set_last_seq(NULL);
+	
 	G.scene= sce;
 	
 	/* check for cyclic sets, for reading old files but also for definite security (py?) */

Modified: trunk/blender/source/blender/blenlib/BLI_bpath.h
===================================================================
--- trunk/blender/source/blender/blenlib/BLI_bpath.h	2008-04-27 20:17:14 UTC (rev 14574)
+++ trunk/blender/source/blender/blenlib/BLI_bpath.h	2008-04-27 20:43:25 UTC (rev 14575)
@@ -33,6 +33,7 @@
 	int totseq;
 	int seq;
 	struct Sequence **seqar; /* Sequence */
+	struct Scene *scene;			/* Current scene */
 };
 
 struct BPathIterator {

Modified: trunk/blender/source/blender/blenlib/intern/bpath.c
===================================================================
--- trunk/blender/source/blender/blenlib/intern/bpath.c	2008-04-27 20:17:14 UTC (rev 14574)
+++ trunk/blender/source/blender/blenlib/intern/bpath.c	2008-04-27 20:43:25 UTC (rev 14575)
@@ -95,6 +95,7 @@
 	bpi->seqdata.totseq = 0;
 	bpi->seqdata.seq = 0;
 	bpi->seqdata.seqar = NULL;
+	bpi->seqdata.scene = NULL;
 	
 	BLI_bpathIterator_step(bpi);
 }
@@ -103,6 +104,7 @@
 	if (bpi->seqdata.seqar)
 		MEM_freeN((void *)bpi->seqdata.seqar);
 	bpi->seqdata.seqar = NULL;
+	bpi->seqdata.scene = NULL;
 }
 
 void BLI_bpathIterator_getPath( struct BPathIterator *bpi, char *path) {
@@ -202,34 +204,52 @@
 static struct Sequence *seq_stepdata__internal(struct BPathIterator *bpi, int step_next) {
 	Sequence *seq;
 	
-	if (G.scene->ed==NULL) {
-		return NULL;
+	/* Initializing */
+	if (bpi->seqdata.scene==NULL) {
+		bpi->seqdata.scene= G.main->scene.first;
 	}
 	
-	if (bpi->seqdata.seqar == NULL) {
-		/* allocate the sequencer array */
-		build_seqar( &(((Editing *)G.scene->ed)->seqbase), &bpi->seqdata.seqar, &bpi->seqdata.totseq);		
-		bpi->seqdata.seq = 0;
-	}
-	
 	if (step_next) {
 		bpi->seqdata.seq++;
 	}
 	
-	if (bpi->seqdata.seq >= bpi->seqdata.totseq) {
-		seq = NULL;
-	} else {
-		seq = bpi->seqdata.seqar[bpi->seqdata.seq];
-		while (!SEQ_HAS_PATH(seq)) {
-			bpi->seqdata.seq++;
+	while (bpi->seqdata.scene) {
+		
+		if (bpi->seqdata.scene->ed) {
+			if (bpi->seqdata.seqar == NULL) {
+				/* allocate the sequencer array */
+				build_seqar( &(((Editing *)bpi->seqdata.scene->ed)->seqbase), &bpi->seqdata.seqar, &bpi->seqdata.totseq);		
+				bpi->seqdata.seq = 0;
+			}
+			
 			if (bpi->seqdata.seq >= bpi->seqdata.totseq) {
 				seq = NULL;
-				break;
+			} else {
+				seq = bpi->seqdata.seqar[bpi->seqdata.seq];
+				while (!SEQ_HAS_PATH(seq)) {
+					bpi->seqdata.seq++;
+					if (bpi->seqdata.seq >= bpi->seqdata.totseq) {
+						seq = NULL;
+						break;
+					}
+					seq = bpi->seqdata.seqar[bpi->seqdata.seq];
+				}
 			}
-			seq = bpi->seqdata.seqar[bpi->seqdata.seq];
+			if (seq) {
+				return seq;
+			} else {
+				/* keep looking through the next scene, reallocate seq array */
+				MEM_freeN((void *)bpi->seqdata.seqar);
+				bpi->seqdata.seqar = NULL;
+				bpi->seqdata.scene = bpi->seqdata.scene->id.next;
+			}
+		} else {
+			/* no seq data in this scene, next */
+			bpi->seqdata.scene = bpi->seqdata.scene->id.next;
 		}
 	}
-	return seq ;
+	
+	return NULL;
 }
 
 void seq_getpath(struct BPathIterator *bpi, char *path) {
@@ -638,7 +658,7 @@
 	char filepath[FILE_MAX], *libpath;
 	int filesize, recur_depth;
 	
-	char dirname[FILE_MAX], filename[FILE_MAX], filename_new[FILE_MAX], dummyname[FILE_MAX];
+	char dirname[FILE_MAX], filename[FILE_MAX], filename_new[FILE_MAX];
 	
 	waitcursor( 1 );
 	

Modified: trunk/blender/source/blender/src/drawscene.c
===================================================================
--- trunk/blender/source/blender/src/drawscene.c	2008-04-27 20:17:14 UTC (rev 14574)
+++ trunk/blender/source/blender/src/drawscene.c	2008-04-27 20:43:25 UTC (rev 14575)
@@ -73,6 +73,8 @@
 	
 	exit_paint_modes();
 	
+	set_last_seq(NULL);
+	
 	G.scene= sce;
 
 	sc= G.main->screen.first;





More information about the Bf-blender-cvs mailing list