[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [32964] trunk/blender/source/blender/ blenkernel/intern/particle_system.c: Fix for [#24580] and [#24600]
Janne Karhu
jhkarh at gmail.com
Tue Nov 9 12:17:00 CET 2010
Revision: 32964
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=32964
Author: jhk
Date: 2010-11-09 12:17:00 +0100 (Tue, 09 Nov 2010)
Log Message:
-----------
Fix for [#24580] and [#24600]
* Particles didn't want to stay cached, even if there were no actual chages.
* Particle states weren't set properly for times before actual simulation start.
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/intern/particle_system.c
Modified: trunk/blender/source/blender/blenkernel/intern/particle_system.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/particle_system.c 2010-11-09 10:40:03 UTC (rev 32963)
+++ trunk/blender/source/blender/blenkernel/intern/particle_system.c 2010-11-09 11:17:00 UTC (rev 32964)
@@ -136,9 +136,12 @@
if(ELEM(mode, PSYS_RESET_ALL, PSYS_RESET_DEPSGRAPH)) {
if(mode == PSYS_RESET_ALL || !(psys->flag & PSYS_EDITED)) {
- psys_free_particles(psys);
+ /* don't free if not absolutely necessary */
+ if(psys->totpart != psys->part->totpart) {
+ psys_free_particles(psys);
+ psys->totpart= 0;
+ }
- psys->totpart= 0;
psys->totkeyed= 0;
psys->flag &= ~(PSYS_HAIR_DONE|PSYS_KEYED);
@@ -3750,14 +3753,14 @@
/* simulation is only active during a specific period */
if(framenr < startframe) {
- psys_reset(psys, PSYS_RESET_CACHE_MISS);
+ /* set correct particle state and reset particles */
+ cached_step(sim, cfra);
return;
}
else if(framenr > endframe) {
framenr= endframe;
}
-
- if(framenr == startframe) {
+ else if(framenr == startframe) {
BKE_ptcache_id_reset(sim->scene, use_cache, PTCACHE_RESET_OUTDATED);
BKE_ptcache_validate(cache, framenr);
cache->flag &= ~PTCACHE_REDO_NEEDED;
More information about the Bf-blender-cvs
mailing list