[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [13286] trunk/blender/source/blender:
Brecht Van Lommel
brechtvanlommel at pandora.be
Fri Jan 18 15:30:26 CET 2008
Revision: 13286
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=13286
Author: blendix
Date: 2008-01-18 15:30:26 +0100 (Fri, 18 Jan 2008)
Log Message:
-----------
Bugfix: particle settings didn't automatically link in associated
objects or groups.
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/intern/object.c
trunk/blender/source/blender/blenloader/intern/readfile.c
trunk/blender/source/blender/render/intern/source/convertblender.c
Modified: trunk/blender/source/blender/blenkernel/intern/object.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/object.c 2008-01-18 12:20:28 UTC (rev 13285)
+++ trunk/blender/source/blender/blenkernel/intern/object.c 2008-01-18 14:30:26 UTC (rev 13286)
@@ -2223,6 +2223,9 @@
* since object_duplilist does dupliparticles before that */
dm = mesh_create_derived_render(ob, CD_MASK_BAREMESH|CD_MASK_MTFACE|CD_MASK_MCOL);
dm->release(dm);
+
+ for(psys=ob->particlesystem.first; psys; psys=psys->next)
+ psys_get_modifier(ob, psys)->flag &= ~eParticleSystemFlag_psys_updated;
}
}
}
Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c 2008-01-18 12:20:28 UTC (rev 13285)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c 2008-01-18 14:30:26 UTC (rev 13286)
@@ -7529,6 +7529,14 @@
}
}
+static void expand_particlesettings(FileData *fd, Main *mainvar, ParticleSettings *part)
+{
+ expand_doit(fd, mainvar, part->dup_ob);
+ expand_doit(fd, mainvar, part->dup_group);
+ expand_doit(fd, mainvar, part->eff_group);
+ expand_doit(fd, mainvar, part->bb_ob);
+}
+
static void expand_ipo(FileData *fd, Main *mainvar, Ipo *ipo)
{
IpoCurve *icu;
@@ -8121,6 +8129,8 @@
case ID_IP:
expand_ipo(fd, mainvar, (Ipo *)id);
break;
+ case ID_PA:
+ expand_particlesettings(fd, mainvar, (ParticleSettings *)id);
}
doit= 1;
Modified: trunk/blender/source/blender/render/intern/source/convertblender.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/convertblender.c 2008-01-18 12:20:28 UTC (rev 13285)
+++ trunk/blender/source/blender/render/intern/source/convertblender.c 2008-01-18 14:30:26 UTC (rev 13286)
@@ -4147,16 +4147,31 @@
Group *group;
GroupObject *go;
ParticleSystem *psys;
+ DerivedMesh *dm;
if(level >= MAX_DUPLI_RECUR)
return;
if(ob->transflag & OB_DUPLIPARTS) {
- for(psys=ob->particlesystem.first; psys; psys=psys->next)
- if(enable)
- psys_render_set(ob, psys, re->viewmat, re->winmat, re->winx, re->winy);
- else
- psys_render_restore(ob, psys);
+ for(psys=ob->particlesystem.first; psys; psys=psys->next) {
+ if(ELEM(psys->part->draw_as, PART_DRAW_OB, PART_DRAW_GR)) {
+ if(enable)
+ psys_render_set(ob, psys, re->viewmat, re->winmat, re->winx, re->winy);
+ else
+ psys_render_restore(ob, psys);
+ }
+ }
+
+ if(level == 0 && enable) {
+ /* this is to make sure we get render level duplis in groups:
+ * the derivedmesh must be created before init_render_mesh,
+ * since object_duplilist does dupliparticles before that */
+ dm = mesh_create_derived_render(ob, CD_MASK_BAREMESH|CD_MASK_MTFACE|CD_MASK_MCOL);
+ dm->release(dm);
+
+ for(psys=ob->particlesystem.first; psys; psys=psys->next)
+ psys_get_modifier(ob, psys)->flag &= ~eParticleSystemFlag_psys_updated;
+ }
}
if(ob->dup_group==NULL) return;
@@ -4186,7 +4201,7 @@
for(SETLOOPER(re->scene, base)) {
ob= base->object;
-
+
/* if the object has been restricted from rendering in the outliner, ignore it */
if(ob->restrictflag & OB_RESTRICT_RENDER) continue;
@@ -4216,7 +4231,7 @@
if(obd->restrictflag & OB_RESTRICT_RENDER)
continue;
-
+
if(obd->type==OB_MBALL)
continue;
More information about the Bf-blender-cvs
mailing list