[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [30941] trunk/blender/source/blender/ blenkernel/intern/smoke.c: Smoke:
Daniel Genrich
daniel.genrich at gmx.net
Sun Aug 1 17:00:54 CEST 2010
Revision: 30941
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=30941
Author: genscher
Date: 2010-08-01 17:00:53 +0200 (Sun, 01 Aug 2010)
Log Message:
-----------
Smoke:
- Bugfix for not cleared smoke sim when doing alt-a and waiting for 2 sim cycles to complete
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/intern/smoke.c
Modified: trunk/blender/source/blender/blenkernel/intern/smoke.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/smoke.c 2010-08-01 14:23:06 UTC (rev 30940)
+++ trunk/blender/source/blender/blenkernel/intern/smoke.c 2010-08-01 15:00:53 UTC (rev 30941)
@@ -296,7 +296,7 @@
return 1;
}
- return 1;
+ return 2;
}
static void fill_scs_points(Object *ob, DerivedMesh *dm, SmokeCollSettings *scs)
@@ -1325,6 +1325,7 @@
int startframe, endframe, framenr;
float timescale;
int cache_result = 0, cache_result_wt = 0;
+ int did_init = 0;
framenr = scene->r.cfra;
@@ -1354,7 +1355,7 @@
// printf("startframe: %d, framenr: %d\n", startframe, framenr);
- if(!smokeModifier_init(smd, ob, scene, dm))
+ if(!(did_init = smokeModifier_init(smd, ob, scene, dm)))
{
printf("bad smokeModifier_init\n");
return;
@@ -1411,8 +1412,18 @@
smoke_dissolve(sds->fluid, sds->diss_speed, sds->flags & MOD_SMOKE_DISSOLVE_LOG);
smoke_step(sds->fluid, smd->time, scene->r.frs_sec / scene->r.frs_sec_base);
}
+ else
+ {
+ /* Smoke did not load cache and was not reset but we're on startframe */
+ /* So now reinit the smoke since it was not done yet */
+ if(did_init == 2)
+ {
+ smokeModifier_reset(smd);
+ smokeModifier_init(smd, ob, scene, dm);
+ }
+ }
- // create shadows before writing cache so we get nice shadows for sstartframe, too
+ // create shadows before writing cache so we get nice shadows for startframe, too
if(get_lamp(scene, light))
smoke_calc_transparency(sds->shadow, smoke_get_density(sds->fluid), sds->p0, sds->p1, sds->res, sds->dx, light, calc_voxel_transp, -7.0*sds->dx);
More information about the Bf-blender-cvs
mailing list