Fix T77263: Mantaflow: Cache gets deleted at changing upres factor under Particles section.
Moved fluid simulation reset to separate functions based on type.
This commit is contained in:
parent
0b100e21fb
commit
dbcc74f801
Notes:
blender-bot
2023-02-13 23:16:02 +01:00
Referenced by issue #77263, Mantaflow: Cache gets deleted at changing upres factor under Particles section.
|
@ -161,7 +161,7 @@ static void rna_Fluid_flow_reset(Main *bmain, Scene *scene, PointerRNA *ptr)
|
|||
rna_Fluid_update(bmain, scene, ptr);
|
||||
}
|
||||
|
||||
static void rna_Fluid_domain_reset(Main *bmain, Scene *scene, PointerRNA *ptr)
|
||||
static void rna_Fluid_domain_data_reset(Main *bmain, Scene *scene, PointerRNA *ptr)
|
||||
{
|
||||
# ifdef WITH_FLUID
|
||||
FluidDomainSettings *settings = (FluidDomainSettings *)ptr->data;
|
||||
|
@ -172,6 +172,39 @@ static void rna_Fluid_domain_reset(Main *bmain, Scene *scene, PointerRNA *ptr)
|
|||
rna_Fluid_update(bmain, scene, ptr);
|
||||
}
|
||||
|
||||
static void rna_Fluid_domain_noise_reset(Main *bmain, Scene *scene, PointerRNA *ptr)
|
||||
{
|
||||
# ifdef WITH_FLUID
|
||||
FluidDomainSettings *settings = (FluidDomainSettings *)ptr->data;
|
||||
BKE_fluid_modifier_reset(settings->fmd);
|
||||
# endif
|
||||
|
||||
rna_Fluid_noisecache_reset(bmain, scene, ptr);
|
||||
rna_Fluid_update(bmain, scene, ptr);
|
||||
}
|
||||
|
||||
static void rna_Fluid_domain_mesh_reset(Main *bmain, Scene *scene, PointerRNA *ptr)
|
||||
{
|
||||
# ifdef WITH_FLUID
|
||||
FluidDomainSettings *settings = (FluidDomainSettings *)ptr->data;
|
||||
BKE_fluid_modifier_reset(settings->fmd);
|
||||
# endif
|
||||
|
||||
rna_Fluid_meshcache_reset(bmain, scene, ptr);
|
||||
rna_Fluid_update(bmain, scene, ptr);
|
||||
}
|
||||
|
||||
static void rna_Fluid_domain_particles_reset(Main *bmain, Scene *scene, PointerRNA *ptr)
|
||||
{
|
||||
# ifdef WITH_FLUID
|
||||
FluidDomainSettings *settings = (FluidDomainSettings *)ptr->data;
|
||||
BKE_fluid_modifier_reset(settings->fmd);
|
||||
# endif
|
||||
|
||||
rna_Fluid_particlescache_reset(bmain, scene, ptr);
|
||||
rna_Fluid_update(bmain, scene, ptr);
|
||||
}
|
||||
|
||||
static void rna_Fluid_reset_dependency(Main *bmain, Scene *scene, PointerRNA *ptr)
|
||||
{
|
||||
# ifdef WITH_FLUID
|
||||
|
@ -232,7 +265,7 @@ static void rna_Fluid_flip_parts_update(Main *bmain, Scene *scene, PointerRNA *p
|
|||
if (fmd->domain->type != FLUID_DOMAIN_TYPE_LIQUID) {
|
||||
rna_Fluid_parts_delete(ptr, PART_FLUID_FLIP);
|
||||
fmd->domain->particle_type &= ~FLUID_DOMAIN_PARTICLE_FLIP;
|
||||
rna_Fluid_domain_reset(bmain, scene, ptr);
|
||||
rna_Fluid_domain_data_reset(bmain, scene, ptr);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -1350,7 +1383,7 @@ static void rna_def_fluid_domain_settings(BlenderRNA *brna)
|
|||
RNA_def_property_ui_text(
|
||||
prop, "Adaptive Domain", "Adapt simulation resolution and size to fluid");
|
||||
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
|
||||
RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_Fluid_domain_reset");
|
||||
RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_Fluid_domain_data_reset");
|
||||
|
||||
/* fluid domain options */
|
||||
|
||||
|
@ -1364,7 +1397,7 @@ static void rna_def_fluid_domain_settings(BlenderRNA *brna)
|
|||
"Resolution used for the fluid domain. Value corresponds to the longest domain side "
|
||||
"(resolution for other domain sides is calculated automatically)");
|
||||
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
|
||||
RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_Fluid_domain_reset");
|
||||
RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_Fluid_domain_data_reset");
|
||||
|
||||
prop = RNA_def_property(srna, "use_collision_border_front", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "border_collisions", FLUID_DOMAIN_BORDER_FRONT);
|
||||
|
@ -1547,7 +1580,7 @@ static void rna_def_fluid_domain_settings(BlenderRNA *brna)
|
|||
"The noise simulation is scaled up by this factor (compared to the "
|
||||
"base resolution of the domain)");
|
||||
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
|
||||
RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_Fluid_domain_reset");
|
||||
RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_Fluid_domain_noise_reset");
|
||||
|
||||
prop = RNA_def_property(srna, "noise_type", PROP_ENUM, PROP_NONE);
|
||||
RNA_def_property_enum_sdna(prop, NULL, "noise_type");
|
||||
|
@ -1555,7 +1588,7 @@ static void rna_def_fluid_domain_settings(BlenderRNA *brna)
|
|||
RNA_def_property_ui_text(
|
||||
prop, "Noise Method", "Noise method which is used during the high-res simulation");
|
||||
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
|
||||
RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_Fluid_domain_reset");
|
||||
RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_Fluid_domain_noise_reset");
|
||||
|
||||
prop = RNA_def_property(srna, "use_noise", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "flags", FLUID_DOMAIN_USE_NOISE);
|
||||
|
@ -1569,7 +1602,7 @@ static void rna_def_fluid_domain_settings(BlenderRNA *brna)
|
|||
RNA_def_property_enum_sdna(prop, NULL, "simulation_method");
|
||||
RNA_def_property_enum_items(prop, simulation_methods);
|
||||
RNA_def_property_ui_text(prop, "Simulation Method", "Change the underlying simulation method");
|
||||
RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_Fluid_domain_reset");
|
||||
RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_Fluid_domain_data_reset");
|
||||
|
||||
prop = RNA_def_property(srna, "flip_ratio", PROP_FLOAT, PROP_NONE);
|
||||
RNA_def_property_range(prop, 0.0, 1.0);
|
||||
|
@ -1657,7 +1690,7 @@ static void rna_def_fluid_domain_settings(BlenderRNA *brna)
|
|||
RNA_def_property_ui_text(
|
||||
prop, "Use Diffusion", "Enable fluid diffusion settings (e.g. viscosity, surface tension)");
|
||||
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
|
||||
RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_Fluid_domain_reset");
|
||||
RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_Fluid_datacache_reset");
|
||||
|
||||
prop = RNA_def_property(srna, "surface_tension", PROP_FLOAT, PROP_NONE);
|
||||
RNA_def_property_range(prop, 0.0, 100.0);
|
||||
|
@ -1724,7 +1757,7 @@ static void rna_def_fluid_domain_settings(BlenderRNA *brna)
|
|||
"resolution of the domain). For best meshing, it is recommended to "
|
||||
"adjust the mesh particle radius alongside this value");
|
||||
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
|
||||
RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_Fluid_meshcache_reset");
|
||||
RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_Fluid_domain_mesh_reset");
|
||||
|
||||
prop = RNA_def_property(srna, "mesh_generator", PROP_ENUM, PROP_NONE);
|
||||
RNA_def_property_enum_sdna(prop, NULL, "mesh_generator");
|
||||
|
@ -1924,7 +1957,7 @@ static void rna_def_fluid_domain_settings(BlenderRNA *brna)
|
|||
"The particle simulation is scaled up by this factor (compared to the "
|
||||
"base resolution of the domain)");
|
||||
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
|
||||
RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_Fluid_domain_reset");
|
||||
RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_Fluid_domain_particles_reset");
|
||||
|
||||
prop = RNA_def_property(srna, "use_spray_particles", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "particle_type", FLUID_DOMAIN_PARTICLE_SPRAY);
|
||||
|
@ -2081,7 +2114,7 @@ static void rna_def_fluid_domain_settings(BlenderRNA *brna)
|
|||
RNA_def_property_enum_items(prop, cache_types);
|
||||
RNA_def_property_enum_funcs(prop, NULL, "rna_Fluid_cachetype_set", NULL);
|
||||
RNA_def_property_ui_text(prop, "Type", "Change the cache type of the simulation");
|
||||
RNA_def_property_update(prop, NC_OBJECT | ND_DRAW, "rna_Fluid_domain_reset");
|
||||
RNA_def_property_update(prop, NC_OBJECT | ND_DRAW, "rna_Fluid_domain_data_reset");
|
||||
|
||||
prop = RNA_def_property(srna, "cache_resumable", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "flags", FLUID_DOMAIN_USE_RESUMABLE_CACHE);
|
||||
|
@ -2158,7 +2191,7 @@ static void rna_def_fluid_domain_settings(BlenderRNA *brna)
|
|||
"only needed if you plan to analyze the cache (e.g. view grids, velocity vectors, "
|
||||
"particles) in Mantaflow directly (outside of Blender) after baking the simulation");
|
||||
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
|
||||
RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_Fluid_domain_reset");
|
||||
RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_Fluid_domain_data_reset");
|
||||
|
||||
/* time options */
|
||||
|
||||
|
@ -2655,7 +2688,7 @@ static void rna_def_fluid_effector_settings(BlenderRNA *brna)
|
|||
prop = RNA_def_property(srna, "use_plane_init", PROP_BOOLEAN, PROP_NONE);
|
||||
RNA_def_property_boolean_sdna(prop, NULL, "flags", FLUID_EFFECTOR_USE_PLANE_INIT);
|
||||
RNA_def_property_ui_text(prop, "Is Planar", "Treat this object as a planar, unclosed mesh");
|
||||
RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_Fluid_domain_reset");
|
||||
RNA_def_property_update(prop, NC_OBJECT | ND_MODIFIER, "rna_Fluid_domain_data_reset");
|
||||
|
||||
prop = RNA_def_property(srna, "velocity_factor", PROP_FLOAT, PROP_NONE);
|
||||
RNA_def_property_float_sdna(prop, NULL, "vel_multi");
|
||||
|
|
Loading…
Reference in New Issue