[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