Fix for [#26197] High resolution smoke cache not available due to pointcache update. Please reset the simulation.

* Backwards compatibility code wasn't forwards compatible :)
This commit is contained in:
Janne Karhu 2011-02-24 13:37:53 +00:00
parent cd615f6fcc
commit acf8a9c6ec
3 changed files with 11 additions and 2 deletions

View File

@ -3963,7 +3963,14 @@ static void direct_link_modifiers(FileData *fd, ListBase *lb)
/* Smoke uses only one cache from now on, so store pointer convert */
if(smd->domain->ptcaches[1].first || smd->domain->point_cache[1]) {
printf("High resolution smoke cache not available due to pointcache update. Please reset the simulation.\n");
if(smd->domain->point_cache[1]) {
PointCache *cache = newdataadr(fd, smd->domain->point_cache[1]);
if(cache->flag & PTCACHE_FAKE_SMOKE)
; /* Smoke was already saved in "new format" and this cache is a fake one. */
else
printf("High resolution smoke cache not available due to pointcache update. Please reset the simulation.\n");
BKE_ptcache_free(cache);
}
smd->domain->ptcaches[1].first = NULL;
smd->domain->ptcaches[1].last = NULL;
smd->domain->point_cache[1] = NULL;

View File

@ -1220,7 +1220,7 @@ static void write_modifiers(WriteData *wd, ListBase *modbase)
/* create fake pointcache so that old blender versions can read it */
smd->domain->point_cache[1] = BKE_ptcache_add(&smd->domain->ptcaches[1]);
smd->domain->point_cache[1]->flag |= PTCACHE_DISK_CACHE;
smd->domain->point_cache[1]->flag |= PTCACHE_DISK_CACHE|PTCACHE_FAKE_SMOKE;
smd->domain->point_cache[1]->step = 1;
write_pointcaches(wd, &(smd->domain->ptcaches[1]));

View File

@ -397,6 +397,8 @@ typedef struct SoftBody {
#define PTCACHE_READ_INFO 1024
/* dont use the filename of the blendfile the data is linked from (write a local cache) */
#define PTCACHE_IGNORE_LIBPATH 2048
/* high resolution cache is saved for smoke for backwards compatibility, so set this flag to know it's a "fake" cache */
#define PTCACHE_FAKE_SMOKE (1<<12)
/* PTCACHE_OUTDATED + PTCACHE_FRAMES_SKIPPED */
#define PTCACHE_REDO_NEEDED 258