Particles: Use utility function to copy particles
This commit is contained in:
parent
aa3f0b0998
commit
95306a4d19
|
@ -874,38 +874,9 @@ SoftBody *copy_softbody(const SoftBody *sb, const int flag)
|
|||
|
||||
ParticleSystem *BKE_object_copy_particlesystem(ParticleSystem *psys, const int flag)
|
||||
{
|
||||
ParticleSystem *psysn;
|
||||
ParticleData *pa;
|
||||
int p;
|
||||
ParticleSystem *psysn = MEM_dupallocN(psys);
|
||||
|
||||
psysn = MEM_dupallocN(psys);
|
||||
psysn->particles = MEM_dupallocN(psys->particles);
|
||||
psysn->child = MEM_dupallocN(psys->child);
|
||||
|
||||
if (psys->part->type == PART_HAIR) {
|
||||
for (p = 0, pa = psysn->particles; p < psysn->totpart; p++, pa++)
|
||||
pa->hair = MEM_dupallocN(pa->hair);
|
||||
}
|
||||
|
||||
if (psysn->particles && (psysn->particles->keys || psysn->particles->boid)) {
|
||||
ParticleKey *key = psysn->particles->keys;
|
||||
BoidParticle *boid = psysn->particles->boid;
|
||||
|
||||
if (key)
|
||||
key = MEM_dupallocN(key);
|
||||
|
||||
if (boid)
|
||||
boid = MEM_dupallocN(boid);
|
||||
|
||||
for (p = 0, pa = psysn->particles; p < psysn->totpart; p++, pa++) {
|
||||
if (boid)
|
||||
pa->boid = boid++;
|
||||
if (key) {
|
||||
pa->keys = key;
|
||||
key += pa->totkey;
|
||||
}
|
||||
}
|
||||
}
|
||||
psys_copy_particles(psysn, psys);
|
||||
|
||||
if (psys->clmd) {
|
||||
psysn->clmd = (ClothModifierData *)modifier_new(eModifierType_Cloth);
|
||||
|
|
Loading…
Reference in New Issue