diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index 0baf9b00ecf..3be01e38368 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -1164,6 +1164,12 @@ ParticleSystem *copy_particlesystem(ParticleSystem *psys) psysn->pointcache= BKE_ptcache_copy_list(&psysn->ptcaches, &psys->ptcaches); + /* XXX - from reading existing code this seems correct but intended usage of + * pointcache should /w cloth should be added in 'ParticleSystem' - campbell */ + if(psysn->clmd) { + psysn->clmd->point_cache= psysn->pointcache; + } + id_us_plus((ID *)psysn->part); return psysn; diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 051bc1851b8..e9cbbb95b02 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -3187,6 +3187,13 @@ static void lib_link_particlesystems(FileData *fd, Object *ob, ID *id, ListBase pt->ob=newlibadr(fd, id->lib, pt->ob); psys->target_ob = newlibadr(fd, id->lib, psys->target_ob); + + if(psys->clmd) { + /* XXX - from reading existing code this seems correct but intended usage of + * pointcache should /w cloth should be added in 'ParticleSystem' - campbell */ + psys->clmd->point_cache= psys->pointcache; + psys->clmd->ptcaches.first= psys->clmd->ptcaches.last= NULL; + } } else { /* particle modifier must be removed before particle system */