diff options
Diffstat (limited to 'source/blender/blenkernel/intern/fluid.c')
-rw-r--r-- | source/blender/blenkernel/intern/fluid.c | 65 |
1 files changed, 39 insertions, 26 deletions
diff --git a/source/blender/blenkernel/intern/fluid.c b/source/blender/blenkernel/intern/fluid.c index b9f201d8ada..30bf84ae6e1 100644 --- a/source/blender/blenkernel/intern/fluid.c +++ b/source/blender/blenkernel/intern/fluid.c @@ -80,7 +80,7 @@ # include "DEG_depsgraph.h" # include "DEG_depsgraph_query.h" -# include "RE_shader_ext.h" +# include "RE_texture.h" # include "CLG_log.h" @@ -343,32 +343,37 @@ void BKE_fluid_cache_free(FluidDomainSettings *fds, Object *ob, int cache_map) flags &= ~(FLUID_DOMAIN_BAKING_DATA | FLUID_DOMAIN_BAKED_DATA | FLUID_DOMAIN_OUTDATED_DATA); BLI_path_join(temp_dir, sizeof(temp_dir), fds->cache_directory, FLUID_DOMAIN_DIR_CONFIG, NULL); BLI_path_abs(temp_dir, relbase); - BLI_delete(temp_dir, true, true); /* BLI_exists(filepath) is implicit */ - + if (BLI_exists(temp_dir)) { + BLI_delete(temp_dir, true, true); + } BLI_path_join(temp_dir, sizeof(temp_dir), fds->cache_directory, FLUID_DOMAIN_DIR_DATA, NULL); BLI_path_abs(temp_dir, relbase); - BLI_delete(temp_dir, true, true); /* BLI_exists(filepath) is implicit */ - + if (BLI_exists(temp_dir)) { + BLI_delete(temp_dir, true, true); + } BLI_path_join(temp_dir, sizeof(temp_dir), fds->cache_directory, FLUID_DOMAIN_DIR_SCRIPT, NULL); BLI_path_abs(temp_dir, relbase); - BLI_delete(temp_dir, true, true); /* BLI_exists(filepath) is implicit */ - + if (BLI_exists(temp_dir)) { + BLI_delete(temp_dir, true, true); + } fds->cache_frame_pause_data = 0; } if (cache_map & FLUID_DOMAIN_OUTDATED_NOISE) { flags &= ~(FLUID_DOMAIN_BAKING_NOISE | FLUID_DOMAIN_BAKED_NOISE | FLUID_DOMAIN_OUTDATED_NOISE); BLI_path_join(temp_dir, sizeof(temp_dir), fds->cache_directory, FLUID_DOMAIN_DIR_NOISE, NULL); BLI_path_abs(temp_dir, relbase); - BLI_delete(temp_dir, true, true); /* BLI_exists(filepath) is implicit */ - + if (BLI_exists(temp_dir)) { + BLI_delete(temp_dir, true, true); + } fds->cache_frame_pause_noise = 0; } if (cache_map & FLUID_DOMAIN_OUTDATED_MESH) { flags &= ~(FLUID_DOMAIN_BAKING_MESH | FLUID_DOMAIN_BAKED_MESH | FLUID_DOMAIN_OUTDATED_MESH); BLI_path_join(temp_dir, sizeof(temp_dir), fds->cache_directory, FLUID_DOMAIN_DIR_MESH, NULL); BLI_path_abs(temp_dir, relbase); - BLI_delete(temp_dir, true, true); /* BLI_exists(filepath) is implicit */ - + if (BLI_exists(temp_dir)) { + BLI_delete(temp_dir, true, true); + } fds->cache_frame_pause_mesh = 0; } if (cache_map & FLUID_DOMAIN_OUTDATED_PARTICLES) { @@ -377,17 +382,18 @@ void BKE_fluid_cache_free(FluidDomainSettings *fds, Object *ob, int cache_map) BLI_path_join( temp_dir, sizeof(temp_dir), fds->cache_directory, FLUID_DOMAIN_DIR_PARTICLES, NULL); BLI_path_abs(temp_dir, relbase); - BLI_delete(temp_dir, true, true); /* BLI_exists(filepath) is implicit */ - + if (BLI_exists(temp_dir)) { + BLI_delete(temp_dir, true, true); + } fds->cache_frame_pause_particles = 0; } - if (cache_map & FLUID_DOMAIN_OUTDATED_GUIDE) { flags &= ~(FLUID_DOMAIN_BAKING_GUIDE | FLUID_DOMAIN_BAKED_GUIDE | FLUID_DOMAIN_OUTDATED_GUIDE); BLI_path_join(temp_dir, sizeof(temp_dir), fds->cache_directory, FLUID_DOMAIN_DIR_GUIDE, NULL); BLI_path_abs(temp_dir, relbase); - BLI_delete(temp_dir, true, true); /* BLI_exists(filepath) is implicit */ - + if (BLI_exists(temp_dir)) { + BLI_delete(temp_dir, true, true); + } fds->cache_frame_pause_guide = 0; } fds->cache_flag = flags; @@ -1987,7 +1993,7 @@ static void sample_mesh(FluidFlowSettings *ffs, /* Convert xyz velocities flow settings from world to grid space. */ float convert_vel[3]; copy_v3_v3(convert_vel, ffs->vel_coord); - float time_mult = 1.0 / (25.f * DT_DEFAULT); + float time_mult = 1.0 / (25.0f * DT_DEFAULT); float size_mult = MAX3(base_res[0], base_res[1], base_res[2]) / MAX3(global_size[0], global_size[1], global_size[2]); mul_v3_v3fl(convert_vel, ffs->vel_coord, size_mult * time_mult); @@ -3295,7 +3301,7 @@ static Mesh *create_liquid_geometry(FluidDomainSettings *fds, Mesh *orgmesh, Obj /* If needed, vertex velocities will be read too. */ bool use_speedvectors = fds->flags & FLUID_DOMAIN_USE_SPEED_VECTORS; FluidDomainVertexVelocity *velarray = NULL; - float time_mult = 25.f * DT_DEFAULT; + float time_mult = 25.0f * DT_DEFAULT; if (use_speedvectors) { if (fds->mesh_velocities) { @@ -4432,7 +4438,7 @@ float BKE_fluid_get_velocity_at(struct Object *ob, float position[3], float velo if (fmd && (fmd->type & MOD_FLUID_TYPE_DOMAIN) && fmd->domain && fmd->domain->fluid) { FluidDomainSettings *fds = fmd->domain; - float time_mult = 25.f * DT_DEFAULT; + float time_mult = 25.0f * DT_DEFAULT; float size_mult = MAX3(fds->global_size[0], fds->global_size[1], fds->global_size[2]) / MAX3(fds->base_res[0], fds->base_res[1], fds->base_res[2]); float vel_mag; @@ -4699,9 +4705,11 @@ void BKE_fluid_fields_sanitize(FluidDomainSettings *settings) const char data_depth = settings->openvdb_data_depth; if (settings->type == FLUID_DOMAIN_TYPE_GAS) { - if (coba_field == FLUID_DOMAIN_FIELD_PHI || coba_field == FLUID_DOMAIN_FIELD_PHI_IN || - coba_field == FLUID_DOMAIN_FIELD_PHI_OUT || - coba_field == FLUID_DOMAIN_FIELD_PHI_OBSTACLE) { + if (ELEM(coba_field, + FLUID_DOMAIN_FIELD_PHI, + FLUID_DOMAIN_FIELD_PHI_IN, + FLUID_DOMAIN_FIELD_PHI_OUT, + FLUID_DOMAIN_FIELD_PHI_OBSTACLE)) { /* Defaulted to density for gas domain. */ settings->coba_field = FLUID_DOMAIN_FIELD_DENSITY; } @@ -4712,10 +4720,14 @@ void BKE_fluid_fields_sanitize(FluidDomainSettings *settings) } } else if (settings->type == FLUID_DOMAIN_TYPE_LIQUID) { - if (coba_field == FLUID_DOMAIN_FIELD_COLOR_R || coba_field == FLUID_DOMAIN_FIELD_COLOR_G || - coba_field == FLUID_DOMAIN_FIELD_COLOR_B || coba_field == FLUID_DOMAIN_FIELD_DENSITY || - coba_field == FLUID_DOMAIN_FIELD_FLAME || coba_field == FLUID_DOMAIN_FIELD_FUEL || - coba_field == FLUID_DOMAIN_FIELD_HEAT) { + if (ELEM(coba_field, + FLUID_DOMAIN_FIELD_COLOR_R, + FLUID_DOMAIN_FIELD_COLOR_G, + FLUID_DOMAIN_FIELD_COLOR_B, + FLUID_DOMAIN_FIELD_DENSITY, + FLUID_DOMAIN_FIELD_FLAME, + FLUID_DOMAIN_FIELD_FUEL, + FLUID_DOMAIN_FIELD_HEAT)) { /* Defaulted to phi for liquid domain. */ settings->coba_field = FLUID_DOMAIN_FIELD_PHI; } @@ -4995,6 +5007,7 @@ void BKE_fluid_modifier_copy(const struct FluidModifierData *fmd, tfds->fractions_threshold = fds->fractions_threshold; tfds->fractions_distance = fds->fractions_distance; tfds->sys_particle_maximum = fds->sys_particle_maximum; + tfds->simulation_method = fds->simulation_method; /* diffusion options*/ tfds->surface_tension = fds->surface_tension; |