diff options
author | Campbell Barton <ideasman42@gmail.com> | 2010-02-04 19:54:25 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2010-02-04 19:54:25 +0300 |
commit | eedf5cbe89826faa728cf90d935cc696dd79b045 (patch) | |
tree | 9b99b27c44ecd63bfdd32804c58224d22794e3eb /source | |
parent | eaca7fa8b573c08fb724082a923775ac2004651e (diff) |
reading in hair with dynamics wasnt working but mostly crashed when duplicating the object.
from reading all places dynamic hair is used I think these changes are correct (cloth seems to share pointcache with the psys) but its not obvious.
jahka: please check this is ok.
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/blenkernel/intern/object.c | 6 | ||||
-rw-r--r-- | source/blender/blenloader/intern/readfile.c | 7 |
2 files changed, 13 insertions, 0 deletions
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 */ |