diff options
author | Janne Karhu <jhkarh@gmail.com> | 2010-09-02 14:26:19 +0400 |
---|---|---|
committer | Janne Karhu <jhkarh@gmail.com> | 2010-09-02 14:26:19 +0400 |
commit | f611fa80afc7356fee32a190c426a3f3b2e5f4c8 (patch) | |
tree | 7e86e7ba550df46d7265f302c8f8cf722c996671 /source/blender/blenkernel/intern/particle.c | |
parent | 2e61c4be9b7d6ec49ac1cb4d1cf4716581fdc969 (diff) |
Fix for [#23298] Kill particle breaks when baking simulation
* Cached particle die times are now read from cached data
Diffstat (limited to 'source/blender/blenkernel/intern/particle.c')
-rw-r--r-- | source/blender/blenkernel/intern/particle.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/particle.c b/source/blender/blenkernel/intern/particle.c index a27097f836c..a72e44df205 100644 --- a/source/blender/blenkernel/intern/particle.c +++ b/source/blender/blenkernel/intern/particle.c @@ -1121,6 +1121,24 @@ static int get_pointcache_times_for_particle(PointCache *cache, int index, float return ret == 2; } + +float psys_get_dietime_from_cache(PointCache *cache, int index) { + PTCacheMem *pm; + int dietime = 10000000; /* some max value so that we can default to pa->time+lifetime */ + + for(pm=cache->mem_cache.last; pm; pm=pm->prev) { + if(pm->index_array) { + if(pm->index_array[index]) + return (float)pm->frame; + } + else { + return (float)pm->frame; + } + } + + return (float)dietime; +} + static void init_particle_interpolation(Object *ob, ParticleSystem *psys, ParticleData *pa, ParticleInterpolationData *pind) { |