diff --git a/intern/mantaflow/intern/MANTA_main.cpp b/intern/mantaflow/intern/MANTA_main.cpp index 2833f6946e4..b9552c82335 100644 --- a/intern/mantaflow/intern/MANTA_main.cpp +++ b/intern/mantaflow/intern/MANTA_main.cpp @@ -60,6 +60,7 @@ MANTA::MANTA(int *res, FluidModifierData *fmd) mUsingDiffusion = (fds->flags & FLUID_DOMAIN_USE_DIFFUSION) && mUsingLiquid; mUsingViscosity = (fds->flags & FLUID_DOMAIN_USE_VISCOSITY) && mUsingLiquid; mUsingMVel = (fds->flags & FLUID_DOMAIN_USE_SPEED_VECTORS) && mUsingLiquid; + mUsingGuiding = (fds->flags & FLUID_DOMAIN_USE_GUIDE); mUsingDrops = (fds->particle_type & FLUID_DOMAIN_PARTICLE_SPRAY) && mUsingLiquid; mUsingBubbles = (fds->particle_type & FLUID_DOMAIN_PARTICLE_BUBBLE) && mUsingLiquid; mUsingFloats = (fds->particle_type & FLUID_DOMAIN_PARTICLE_FOAM) && mUsingLiquid; @@ -69,7 +70,6 @@ MANTA::MANTA(int *res, FluidModifierData *fmd) mUsingFire = (fds->active_fields & FLUID_DOMAIN_ACTIVE_FIRE) && mUsingSmoke; mUsingColors = (fds->active_fields & FLUID_DOMAIN_ACTIVE_COLORS) && mUsingSmoke; mUsingObstacle = (fds->active_fields & FLUID_DOMAIN_ACTIVE_OBSTACLE); - mUsingGuiding = (fds->active_fields & FLUID_DOMAIN_ACTIVE_GUIDE); mUsingInvel = (fds->active_fields & FLUID_DOMAIN_ACTIVE_INVEL); mUsingOutflow = (fds->active_fields & FLUID_DOMAIN_ACTIVE_OUTFLOW); diff --git a/source/blender/blenkernel/intern/fluid.cc b/source/blender/blenkernel/intern/fluid.cc index 0811de98e5d..4620dcb7f4d 100644 --- a/source/blender/blenkernel/intern/fluid.cc +++ b/source/blender/blenkernel/intern/fluid.cc @@ -3721,6 +3721,17 @@ static void fluid_modifier_processDomain(FluidModifierData *fmd, const char *relbase = BKE_modifier_path_relbase_from_global(ob); BLI_path_abs(fds->cache_directory, relbase); + /* If 'outdated', reset the cache here. */ + if (is_startframe && mode == FLUID_DOMAIN_CACHE_REPLAY) { + PTCacheID pid; + BKE_ptcache_id_from_smoke(&pid, ob, fmd); + if (pid.cache->flag & PTCACHE_OUTDATED) { + BKE_ptcache_id_reset(scene, &pid, PTCACHE_RESET_OUTDATED); + BKE_fluid_cache_free_all(fds, ob); + fluid_modifier_reset_ex(fmd, false); + } + } + /* Ensure that all flags are up to date before doing any baking and/or cache reading. */ objs = BKE_collision_objects_create( depsgraph, ob, fds->fluid_group, &numobj, eModifierType_Fluid); @@ -3735,17 +3746,6 @@ static void fluid_modifier_processDomain(FluidModifierData *fmd, MEM_freeN(objs); } - /* If 'outdated', reset the cache here. */ - if (is_startframe && mode == FLUID_DOMAIN_CACHE_REPLAY) { - PTCacheID pid; - BKE_ptcache_id_from_smoke(&pid, ob, fmd); - if (pid.cache->flag & PTCACHE_OUTDATED) { - BKE_ptcache_id_reset(scene, &pid, PTCACHE_RESET_OUTDATED); - BKE_fluid_cache_free_all(fds, ob); - fluid_modifier_reset_ex(fmd, false); - } - } - /* Fluid domain init must not fail in order to continue modifier evaluation. */ if (!fds->fluid && !fluid_modifier_init(fmd, depsgraph, ob, scene, mesh)) { CLOG_ERROR(&LOG, "Fluid initialization failed. Should not happen!");