Revision: 14624
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=14624
Author:   blendix
Date:     2008-04-30 15:29:57 +0200 (Wed, 30 Apr 2008)

Log Message:
-----------

Fix for bug #9867: issues with making particle systems local.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_particle.h
    trunk/blender/source/blender/blenkernel/intern/object.c
    trunk/blender/source/blender/blenkernel/intern/particle.c
    trunk/blender/source/blender/src/editobject.c

Modified: trunk/blender/source/blender/blenkernel/BKE_particle.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_particle.h      2008-04-30 
12:39:53 UTC (rev 14623)
+++ trunk/blender/source/blender/blenkernel/BKE_particle.h      2008-04-30 
13:29:57 UTC (rev 14624)
@@ -231,6 +231,7 @@
 struct ParticleSettings *psys_new_settings(char *name, struct Main *main);
 struct ParticleSettings *psys_copy_settings(struct ParticleSettings *part);
 void psys_flush_settings(struct ParticleSettings *part, int event, int 
hair_recalc);
+void make_local_particlesettings(struct ParticleSettings *part);
 
 struct LinkNode *psys_using_settings(struct ParticleSettings *part, int 
flush_update);
 void psys_changed_type(struct ParticleSystem *psys);

Modified: trunk/blender/source/blender/blenkernel/intern/object.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/object.c     2008-04-30 
12:39:53 UTC (rev 14623)
+++ trunk/blender/source/blender/blenkernel/intern/object.c     2008-04-30 
13:29:57 UTC (rev 14624)
@@ -1215,6 +1215,7 @@
 void expand_local_object(Object *ob)
 {
        bActionStrip *strip;
+       ParticleSystem *psys;
        int a;
        
        id_lib_extern((ID *)ob->action);
@@ -1228,7 +1229,8 @@
        for (strip=ob->nlastrips.first; strip; strip=strip->next) {
                id_lib_extern((ID *)strip->act);
        }
-
+       for(psys=ob->particlesystem.first; psys; psys=psys->next)
+               id_lib_extern((ID *)psys->part);
 }
 
 void make_local_object(Object *ob)

Modified: trunk/blender/source/blender/blenkernel/intern/particle.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/particle.c   2008-04-30 
12:39:53 UTC (rev 14623)
+++ trunk/blender/source/blender/blenkernel/intern/particle.c   2008-04-30 
13:29:57 UTC (rev 14624)
@@ -2988,7 +2988,7 @@
        return partn;
 }
 
-void psys_make_local_settings(ParticleSettings *part)
+void make_local_particlesettings(ParticleSettings *part)
 {
        Object *ob;
        ParticleSettings *par;

Modified: trunk/blender/source/blender/src/editobject.c
===================================================================
--- trunk/blender/source/blender/src/editobject.c       2008-04-30 12:39:53 UTC 
(rev 14623)
+++ trunk/blender/source/blender/src/editobject.c       2008-04-30 13:29:57 UTC 
(rev 14624)
@@ -4783,6 +4783,7 @@
        Base *base;
        Object *ob;
        bActionStrip *strip;
+       ParticleSystem *psys;
        Material *ma, ***matarar;
        Lamp *la;
        Curve *cu;
@@ -4869,6 +4870,9 @@
                                        make_local_armature ((bArmature *)id);
                                        break;
                                }
+
+                               for(psys=ob->particlesystem.first; psys; 
psys=psys->next)
+                                       make_local_particlesettings(psys->part);
                        }
                        id= (ID *)ob->ipo;
                        if(id && id->lib) make_local_ipo(ob->ipo);
@@ -4876,11 +4880,10 @@
                        id= (ID *)ob->action;
                        if(id && id->lib) make_local_action(ob->action);
                        
-                       for (strip=ob->nlastrips.first; strip; 
strip=strip->next) {
+                       for(strip=ob->nlastrips.first; strip; 
strip=strip->next) {
                                if(strip->act && strip->act->id.lib)
                                        make_local_action(strip->act);
                        }
-                       
                }
                base= base->next;               
        }


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

Reply via email to