Bugfix:
Duplicating or separating objects with a particle system could crash.
This commit is contained in:
@@ -1006,12 +1006,26 @@ SoftBody *copy_softbody(SoftBody *sb)
|
|||||||
ParticleSystem *copy_particlesystem(ParticleSystem *psys)
|
ParticleSystem *copy_particlesystem(ParticleSystem *psys)
|
||||||
{
|
{
|
||||||
ParticleSystem *psysn;
|
ParticleSystem *psysn;
|
||||||
|
ParticleData *pa;
|
||||||
|
int a;
|
||||||
|
|
||||||
psysn= MEM_dupallocN(psys);
|
psysn= MEM_dupallocN(psys);
|
||||||
psysn->particles= MEM_dupallocN(psys->particles);
|
psysn->particles= MEM_dupallocN(psys->particles);
|
||||||
|
|
||||||
psysn->child= MEM_dupallocN(psys->child);
|
psysn->child= MEM_dupallocN(psys->child);
|
||||||
|
|
||||||
|
for(a=0, pa=psysn->particles; a<psysn->totpart; a++, pa++) {
|
||||||
|
if(pa->hair)
|
||||||
|
pa->hair= MEM_dupallocN(pa->hair);
|
||||||
|
if(pa->keys)
|
||||||
|
pa->keys= MEM_dupallocN(pa->keys);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(psys->soft)
|
||||||
|
psysn->soft= copy_softbody(psys->soft);
|
||||||
|
|
||||||
|
psysn->pathcache= NULL;
|
||||||
|
psysn->childcache= NULL;
|
||||||
|
psysn->edit= NULL;
|
||||||
psysn->effectors.first= psysn->effectors.last= 0;
|
psysn->effectors.first= psysn->effectors.last= 0;
|
||||||
|
|
||||||
id_us_plus((ID *)psysn->part);
|
id_us_plus((ID *)psysn->part);
|
||||||
|
|||||||
Reference in New Issue
Block a user