forked from bartvdbraak/blender
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:
parent
cd615f6fcc
commit
acf8a9c6ec
@ -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 */
|
/* Smoke uses only one cache from now on, so store pointer convert */
|
||||||
if(smd->domain->ptcaches[1].first || smd->domain->point_cache[1]) {
|
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].first = NULL;
|
||||||
smd->domain->ptcaches[1].last = NULL;
|
smd->domain->ptcaches[1].last = NULL;
|
||||||
smd->domain->point_cache[1] = NULL;
|
smd->domain->point_cache[1] = NULL;
|
||||||
|
@ -1220,7 +1220,7 @@ static void write_modifiers(WriteData *wd, ListBase *modbase)
|
|||||||
|
|
||||||
/* create fake pointcache so that old blender versions can read it */
|
/* 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] = 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;
|
smd->domain->point_cache[1]->step = 1;
|
||||||
|
|
||||||
write_pointcaches(wd, &(smd->domain->ptcaches[1]));
|
write_pointcaches(wd, &(smd->domain->ptcaches[1]));
|
||||||
|
@ -397,6 +397,8 @@ typedef struct SoftBody {
|
|||||||
#define PTCACHE_READ_INFO 1024
|
#define PTCACHE_READ_INFO 1024
|
||||||
/* dont use the filename of the blendfile the data is linked from (write a local cache) */
|
/* dont use the filename of the blendfile the data is linked from (write a local cache) */
|
||||||
#define PTCACHE_IGNORE_LIBPATH 2048
|
#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 */
|
/* PTCACHE_OUTDATED + PTCACHE_FRAMES_SKIPPED */
|
||||||
#define PTCACHE_REDO_NEEDED 258
|
#define PTCACHE_REDO_NEEDED 258
|
||||||
|
Loading…
Reference in New Issue
Block a user