Fix T89771: Cloth disk cache is not read on library overrides in some cases.

Issue would happen when the original, linked data already had 'Disk Cache'
setting enabled. Override would then see no difference with linked data,
and not create any rule for it (as expected).

Root of the issue was that in Cloth modifier copy code, those disk cache
settings were not copied at all, so every time local overrides were
re-generated by copying linked data, those flags would be reset to their
default values.

NOTE: this might exist in other PointCache usages as well, but this code is
in such a bad state that I'd rather do minimal strictly needed changes
there, on a case-by-case basis. Proper recode of that whole system is
wayyyyy out of scope here.
This commit is contained in:
Bastien Montagne 2021-07-14 12:14:51 +02:00
parent f0ddbcb31d
commit c9e9a42215
Notes: blender-bot 2023-12-08 16:39:08 +01:00
Referenced by issue #89771, Cloth disk cache is not read on library overrides when original linked data is already set to use 'Disk Cache'
2 changed files with 2 additions and 0 deletions

View File

@ -157,6 +157,7 @@ enum {
PTCACHE_FLAG_INFO_DIRTY = 1 << 14,
PTCACHE_REDO_NEEDED = PTCACHE_OUTDATED | PTCACHE_FRAMES_SKIPPED,
PTCACHE_FLAGS_COPY = PTCACHE_DISK_CACHE | PTCACHE_EXTERNAL | PTCACHE_IGNORE_LIBPATH,
};
#define PTCACHE_COMPRESS_NO 0

View File

@ -206,6 +206,7 @@ static void copyData(const ModifierData *md, ModifierData *target, const int fla
tclmd->point_cache->step = clmd->point_cache->step;
tclmd->point_cache->startframe = clmd->point_cache->startframe;
tclmd->point_cache->endframe = clmd->point_cache->endframe;
tclmd->point_cache->flag |= (clmd->point_cache->flag & PTCACHE_FLAGS_COPY);
}
}