Default cache file paths for ocean and fluidsim modifiers are now "<temp folder>/ocean_cache/" and "<temp_folder>/fluid_cache/" when the file is not saved yet at the time the modifiers are created.

If it has been saved, the file paths are relative to the .blend: "//ocean_cache/" and "//fluid_cache/".

This should at least partially fix bug #29273. Particle external point caches are not changed.

http://projects.blender.org/tracker/?func=detail&atid=498&aid=29273&group_id=9
This commit is contained in:
Lukas Toenne 2011-11-16 12:43:12 +00:00
parent eff7e18dc5
commit 391f40e8c9
2 changed files with 36 additions and 2 deletions

@ -69,6 +69,7 @@ void fluidsim_init(FluidsimModifierData *fluidmd)
if(fluidmd)
{
FluidsimSettings *fss = MEM_callocN(sizeof(FluidsimSettings), "fluidsimsettings");
int surfdataPathMax = FILE_MAX;
fluidmd->fss = fss;
@ -104,7 +105,22 @@ void fluidsim_init(FluidsimModifierData *fluidmd)
/* elubie: changed this to default to the same dir as the render output
to prevent saving to C:\ on Windows */
BLI_strncpy(fss->surfdataPath, BLI_temporary_dir(), FILE_MAX);
if (G.relbase_valid) { /* is the .blend saved? */
/* subfolder next to saved file */
BLI_strncpy(fss->surfdataPath, "//fluid_cache", surfdataPathMax);
BLI_add_slash(fss->surfdataPath);
}
else {
/* subfolder in temp. directory */
BLI_strncpy(fss->surfdataPath, BLI_temporary_dir(), surfdataPathMax);
surfdataPathMax -= strlen(fss->surfdataPath);
if (surfdataPathMax > 1) {
BLI_strncpy(fss->surfdataPath+strlen(fss->surfdataPath), "fluid_cache", surfdataPathMax);
surfdataPathMax -= strlen("fluid_cache");
if (surfdataPathMax > 1)
BLI_add_slash(fss->surfdataPath);
}
}
// first init of bounding box
// no bounding box needed

@ -34,10 +34,12 @@
#include "DNA_scene_types.h"
#include "BKE_cdderivedmesh.h"
#include "BKE_global.h"
#include "BKE_modifier.h"
#include "BKE_ocean.h"
#include "BKE_utildefines.h"
#include "BLI_blenlib.h"
#include "BLI_math.h"
#include "BLI_math_inline.h"
#include "BLI_utildefines.h"
@ -95,6 +97,7 @@ static void initData(ModifierData *md)
{
#ifdef WITH_OCEANSIM
OceanModifierData *omd = (OceanModifierData*) md;
int cachepathmax = sizeof(omd->cachepath);
omd->resolution = 7;
omd->spatial_size = 50;
@ -122,7 +125,22 @@ static void initData(ModifierData *md)
omd->repeat_x = 1;
omd->repeat_y = 1;
BLI_strncpy(omd->cachepath, "//ocean_cache", sizeof(omd->cachepath));
if (G.relbase_valid) { /* is the .blend saved? */
/* subfolder next to saved file */
BLI_strncpy(omd->cachepath, "//ocean_cache", cachepathmax);
BLI_add_slash(omd->cachepath);
}
else {
/* subfolder in temp. directory */
BLI_strncpy(omd->cachepath, BLI_temporary_dir(), cachepathmax);
cachepathmax -= strlen(omd->cachepath);
if (cachepathmax > 1) {
BLI_strncpy(omd->cachepath+strlen(omd->cachepath), "ocean_cache", cachepathmax);
cachepathmax -= strlen("ocean_cache");
if (cachepathmax > 1)
BLI_add_slash(omd->cachepath);
}
}
omd->cached = 0;
omd->bakestart = 1;