[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [32944] trunk/blender/source/blender: Fix for [#24597] Option External in Smoke cache affects settings of start and end frame of simulation

Janne Karhu jhkarh at gmail.com
Mon Nov 8 12:19:54 CET 2010


Revision: 32944
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=32944
Author:   jhk
Date:     2010-11-08 12:19:53 +0100 (Mon, 08 Nov 2010)

Log Message:
-----------
Fix for [#24597] Option External in Smoke cache affects settings of start and end frame of simulation
* Don't change anything in the pointcache unless a valid external cache is found.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/pointcache.c
    trunk/blender/source/blender/makesrna/intern/rna_object_force.c

Modified: trunk/blender/source/blender/blenkernel/intern/pointcache.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/pointcache.c	2010-11-08 11:13:46 UTC (rev 32943)
+++ trunk/blender/source/blender/blenkernel/intern/pointcache.c	2010-11-08 11:19:53 UTC (rev 32944)
@@ -2847,6 +2847,8 @@
 	PointCache *cache = pid->cache;
 	int len; /* store the length of the string */
 	int info = 0;
+	int start = MAXFRAME;
+	int end = -1;
 
 	/* mode is same as fopen's modes */
 	DIR *dir; 
@@ -2858,10 +2860,6 @@
 	if(!cache)
 		return;
 
-	cache->startframe = MAXFRAME;
-	cache->endframe = -1;
-	cache->totpoint = 0;
-
 	ptcache_path(pid, path);
 	
 	len = BKE_ptcache_id_filename(pid, filename, 1, 0, 0); /* no path */
@@ -2887,8 +2885,8 @@
 					frame = atoi(num);
 
 					if(frame) {
-						cache->startframe = MIN2(cache->startframe, frame);
-						cache->endframe = MAX2(cache->endframe, frame);
+						start = MIN2(start, frame);
+						end = MAX2(end, frame);
 					}
 					else
 						info = 1;
@@ -2898,9 +2896,13 @@
 	}
 	closedir(dir);
 
-	if(cache->startframe != MAXFRAME) {
+	if(start != MAXFRAME) {
 		PTCacheFile *pf;
 
+		cache->startframe = start;
+		cache->endframe = end;
+		cache->totpoint = 0;
+
 		/* read totpoint from info file (frame 0) */
 		if(info) {
 			pf= ptcache_file_open(pid, PTCACHE_FILE_READ, 0);
@@ -2931,10 +2933,10 @@
 				ptcache_file_close(pf);
 			}
 		}
+		cache->flag |= (PTCACHE_BAKED|PTCACHE_DISK_CACHE|PTCACHE_SIMULATION_VALID);
+		cache->flag &= ~(PTCACHE_OUTDATED|PTCACHE_FRAMES_SKIPPED);
 	}
 
-	cache->flag &= ~(PTCACHE_OUTDATED|PTCACHE_FRAMES_SKIPPED);
-
 	BKE_ptcache_update_info(pid);
 }
 

Modified: trunk/blender/source/blender/makesrna/intern/rna_object_force.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_object_force.c	2010-11-08 11:13:46 UTC (rev 32943)
+++ trunk/blender/source/blender/makesrna/intern/rna_object_force.c	2010-11-08 11:19:53 UTC (rev 32944)
@@ -171,10 +171,8 @@
 		if(!pid)
 			return;
 
-		cache->flag |= (PTCACHE_BAKED|PTCACHE_DISK_CACHE|PTCACHE_SIMULATION_VALID);
-		cache->flag &= ~(PTCACHE_OUTDATED|PTCACHE_FRAMES_SKIPPED);
-
 		BKE_ptcache_load_external(pid);
+
 		DAG_id_flush_update(&ob->id, OB_RECALC_DATA);
 	}
 	else {





More information about the Bf-blender-cvs mailing list