Default cache file paths for ocean and fluidsim modifiers are now "<temp folder>...
authorLukas Toenne <lukas.toenne@googlemail.com>
Wed, 16 Nov 2011 12:43:12 +0000 (12:43 +0000)
committerLukas Toenne <lukas.toenne@googlemail.com>
Wed, 16 Nov 2011 12:43:12 +0000 (12:43 +0000)
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

source/blender/modifiers/intern/MOD_fluidsim_util.c
source/blender/modifiers/intern/MOD_ocean.c

index 1baa03d..15e1cdf 100644 (file)
@@ -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
index a61cc85..55d1217 100644 (file)
 #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;