diff options
author | Sebastián Barschkis <sebbas@sebbas.org> | 2020-03-31 13:18:03 +0300 |
---|---|---|
committer | Sebastián Barschkis <sebbas@sebbas.org> | 2020-03-31 13:18:15 +0300 |
commit | b74e38861714be4aa36e2e10fbce8b3b21bb8adc (patch) | |
tree | 10ba027760a739a0285b44c4fc144cc1d92f5fd5 /source/blender | |
parent | 155f917403b32725a9f9c04ec098964fcbcf0204 (diff) |
Fix T75210: Frame range does not go down to 0 in the physics tab for mantaflow when clicking the left arrow
Added nore flexibility to cache frame range and ensured validity of frame range.
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/blenkernel/BKE_fluid.h | 3 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/fluid.c | 10 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_fluid.c | 17 |
3 files changed, 28 insertions, 2 deletions
diff --git a/source/blender/blenkernel/BKE_fluid.h b/source/blender/blenkernel/BKE_fluid.h index 2c5742d3dc7..e8b4c819c62 100644 --- a/source/blender/blenkernel/BKE_fluid.h +++ b/source/blender/blenkernel/BKE_fluid.h @@ -75,6 +75,9 @@ void BKE_fluid_particle_system_create(struct Main *bmain, const int psys_type); void BKE_fluid_particle_system_destroy(struct Object *ob, const int particle_type); +void BKE_fluid_cache_startframe_set(struct FluidDomainSettings *settings, int value); +void BKE_fluid_cache_endframe_set(struct FluidDomainSettings *settings, int value); + void BKE_fluid_cachetype_mesh_set(struct FluidDomainSettings *settings, int cache_mesh_format); void BKE_fluid_cachetype_data_set(struct FluidDomainSettings *settings, int cache_data_format); void BKE_fluid_cachetype_particle_set(struct FluidDomainSettings *settings, diff --git a/source/blender/blenkernel/intern/fluid.c b/source/blender/blenkernel/intern/fluid.c index b095e6dbeec..8ced4a06c02 100644 --- a/source/blender/blenkernel/intern/fluid.c +++ b/source/blender/blenkernel/intern/fluid.c @@ -4471,6 +4471,16 @@ void BKE_fluid_particle_system_destroy(struct Object *ob, const int particle_typ * Use for versioning, even when fluids are disabled. * \{ */ +void BKE_fluid_cache_startframe_set(FluidDomainSettings *settings, int value) +{ + settings->cache_frame_start = (value > settings->cache_frame_end) ? settings->cache_frame_end : value; +} + +void BKE_fluid_cache_endframe_set(FluidDomainSettings *settings, int value) +{ + settings->cache_frame_end = (value < settings->cache_frame_start) ? settings->cache_frame_start : value; +} + void BKE_fluid_cachetype_mesh_set(FluidDomainSettings *settings, int cache_mesh_format) { if (cache_mesh_format == settings->cache_mesh_format) { diff --git a/source/blender/makesrna/intern/rna_fluid.c b/source/blender/makesrna/intern/rna_fluid.c index 9410906595d..e087056e850 100644 --- a/source/blender/makesrna/intern/rna_fluid.c +++ b/source/blender/makesrna/intern/rna_fluid.c @@ -391,6 +391,18 @@ static void rna_Fluid_combined_export_update(Main *bmain, Scene *scene, PointerR } } +static void rna_Fluid_cache_startframe_set(struct PointerRNA *ptr, int value) +{ + FluidDomainSettings *settings = (FluidDomainSettings *)ptr->data; + BKE_fluid_cache_startframe_set(settings, value); +} + +static void rna_Fluid_cache_endframe_set(struct PointerRNA *ptr, int value) +{ + FluidDomainSettings *settings = (FluidDomainSettings *)ptr->data; + BKE_fluid_cache_endframe_set(settings, value); +} + static void rna_Fluid_cachetype_mesh_set(struct PointerRNA *ptr, int value) { FluidDomainSettings *settings = (FluidDomainSettings *)ptr->data; @@ -1925,12 +1937,13 @@ static void rna_def_fluid_domain_settings(BlenderRNA *brna) prop = RNA_def_property(srna, "cache_frame_start", PROP_INT, PROP_TIME); RNA_def_property_int_sdna(prop, NULL, "cache_frame_start"); RNA_def_property_range(prop, -MAXFRAME, MAXFRAME); - RNA_def_property_ui_range(prop, 1, MAXFRAME, 1, 1); + RNA_def_property_int_funcs(prop, NULL, "rna_Fluid_cache_startframe_set", NULL); RNA_def_property_ui_text(prop, "Start", "Frame on which the simulation starts"); prop = RNA_def_property(srna, "cache_frame_end", PROP_INT, PROP_TIME); RNA_def_property_int_sdna(prop, NULL, "cache_frame_end"); - RNA_def_property_range(prop, 1, MAXFRAME); + RNA_def_property_range(prop, -MAXFRAME, MAXFRAME); + RNA_def_property_int_funcs(prop, NULL, "rna_Fluid_cache_endframe_set", NULL); RNA_def_property_ui_text(prop, "End", "Frame on which the simulation stops"); prop = RNA_def_property(srna, "cache_frame_pause_data", PROP_INT, PROP_TIME); |