[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