Revision: 28827 http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=28827 Author: joeedh Date: 2010-05-18 16:30:33 +0200 (Tue, 18 May 2010)
Log Message: ----------- particle system can start in negative frames now. also removed BIF_preview_changed, since it's not being used anymore. Modified Paths: -------------- branches/render25/source/blender/blenkernel/BKE_particle.h branches/render25/source/blender/blenkernel/BKE_pointcache.h branches/render25/source/blender/blenkernel/intern/anim.c branches/render25/source/blender/blenkernel/intern/cloth.c branches/render25/source/blender/blenkernel/intern/collision.c branches/render25/source/blender/blenkernel/intern/depsgraph.c branches/render25/source/blender/blenkernel/intern/effect.c branches/render25/source/blender/blenkernel/intern/object.c branches/render25/source/blender/blenkernel/intern/particle.c branches/render25/source/blender/blenkernel/intern/particle_system.c branches/render25/source/blender/blenkernel/intern/pointcache.c branches/render25/source/blender/editors/object/object_relations.c branches/render25/source/blender/editors/physics/particle_edit.c branches/render25/source/blender/editors/render/render_preview.c branches/render25/source/blender/editors/space_view3d/drawobject.c branches/render25/source/blender/makesdna/DNA_cloth_types.h branches/render25/source/blender/makesdna/DNA_particle_types.h branches/render25/source/blender/makesrna/intern/rna_object_force.c branches/render25/source/blender/modifiers/intern/MOD_collision.c branches/render25/source/blender/modifiers/intern/MOD_explode.c branches/render25/source/blender/modifiers/intern/MOD_particleinstance.c branches/render25/source/blender/render/intern/source/object_particle.c branches/render25/source/blender/render/intern/source/texture_pointdensity.c Modified: branches/render25/source/blender/blenkernel/BKE_particle.h =================================================================== --- branches/render25/source/blender/blenkernel/BKE_particle.h 2010-05-18 14:30:20 UTC (rev 28826) +++ branches/render25/source/blender/blenkernel/BKE_particle.h 2010-05-18 14:30:33 UTC (rev 28827) @@ -244,7 +244,7 @@ float psys_get_child_time(struct ParticleSystem *psys, struct ChildParticle *cpa, float cfra, float *birthtime, float *dietime); float psys_get_child_size(struct ParticleSystem *psys, struct ChildParticle *cpa, float cfra, float *pa_time); void psys_get_particle_on_path(struct ParticleSimulationData *sim, int pa_num, struct ParticleKey *state, int vel); -int psys_get_particle_state(struct ParticleSimulationData *sim, int p, struct ParticleKey *state, int always); +int psys_get_particle_state(struct ParticleSimulationData *sim, int p, struct ParticleKey *state, int always, int use_current_frame); /* for anim.c */ void psys_get_dupli_texture(struct Object *ob, struct ParticleSettings *part, struct ParticleSystemModifierData *psmd, struct ParticleData *pa, struct ChildParticle *cpa, float *uv, float *orco); Modified: branches/render25/source/blender/blenkernel/BKE_pointcache.h =================================================================== --- branches/render25/source/blender/blenkernel/BKE_pointcache.h 2010-05-18 14:30:20 UTC (rev 28826) +++ branches/render25/source/blender/blenkernel/BKE_pointcache.h 2010-05-18 14:30:33 UTC (rev 28827) @@ -227,7 +227,7 @@ } PTCacheEdit; /* Particle functions */ -void BKE_ptcache_make_particle_key(struct ParticleKey *key, int index, void **data, float time); +void BKE_ptcache_make_particle_key(struct ParticleKey *key, int index, void **data, float time, int use_frames); /**************** Creating ID's ****************************/ void BKE_ptcache_id_from_softbody(PTCacheID *pid, struct Object *ob, struct SoftBody *sb); Modified: branches/render25/source/blender/blenkernel/intern/anim.c =================================================================== --- branches/render25/source/blender/blenkernel/intern/anim.c 2010-05-18 14:30:20 UTC (rev 28826) +++ branches/render25/source/blender/blenkernel/intern/anim.c 2010-05-18 14:30:33 UTC (rev 28827) @@ -1078,7 +1078,7 @@ ParticleSettings *part; ParticleData *pa; ChildParticle *cpa=0; - ParticleKey state; + ParticleKey state={0,}; ParticleCacheKey *cache; float ctime, pa_time, scale = 1.0f; float tmat[4][4], mat[4][4], pamat[4][4], vec[3], size=0.0; @@ -1229,7 +1229,9 @@ else { /* first key */ state.time = ctime; - if(psys_get_particle_state(&sim, a, &state, 0) == 0) + state.use_frames = 1; + + if(psys_get_particle_state(&sim, a, &state, 0, 0) == 0) continue; quat_to_mat4( pamat,state.rot); Modified: branches/render25/source/blender/blenkernel/intern/cloth.c =================================================================== --- branches/render25/source/blender/blenkernel/intern/cloth.c 2010-05-18 14:30:20 UTC (rev 28826) +++ branches/render25/source/blender/blenkernel/intern/cloth.c 2010-05-18 14:30:33 UTC (rev 28827) @@ -494,7 +494,7 @@ cache->flag |= PTCACHE_OUTDATED; BKE_ptcache_id_reset(scene, &pid, PTCACHE_RESET_OUTDATED); BKE_ptcache_validate(cache, 0); - cache->last_exact= 0; + cache->last_exact= MIN2(cache->startframe, 0); cache->flag &= ~PTCACHE_REDO_NEEDED; return result; } @@ -577,7 +577,7 @@ } /* if on second frame, write cache for first frame */ - if(cache->simframe == startframe && (cache->flag & PTCACHE_OUTDATED || cache->last_exact==0)) + if(cache->simframe == startframe && (cache->flag & PTCACHE_OUTDATED || cache->last_exact<=cache->startframe)) BKE_ptcache_write_cache(&pid, startframe); clmd->sim_parms->timescale *= framenr - cache->simframe; Modified: branches/render25/source/blender/blenkernel/intern/collision.c =================================================================== --- branches/render25/source/blender/blenkernel/intern/collision.c 2010-05-18 14:30:20 UTC (rev 28826) +++ branches/render25/source/blender/blenkernel/intern/collision.c 2010-05-18 14:30:33 UTC (rev 28827) @@ -1585,17 +1585,11 @@ normalize_v3(vec); } else VECCOPY(vec, no); - mul_v3_fl(no, lambda*2); - mul_v3_fl(vec, lambda*2.0); + mul_v3_fl(no, lambda); + mul_v3_fl(vec, lambda); + //add_v3_v3(cv->txold, vec); add_v3_v3(cv->tx, no); - sub_v3_v3(cv->txold, vec); - - //add_v3_v3(cv->txold, cv->tx); - //mul_v3_fl(cv->txold, 0.5f); - //add_v3_v3(cv->txold, cv->tx); - //mul_v3_fl(cv->txold, 0.5f); - VECCOPY(cv->txold, cv->tx); } MEM_freeN(frefs); Modified: branches/render25/source/blender/blenkernel/intern/depsgraph.c =================================================================== --- branches/render25/source/blender/blenkernel/intern/depsgraph.c 2010-05-18 14:30:20 UTC (rev 28826) +++ branches/render25/source/blender/blenkernel/intern/depsgraph.c 2010-05-18 14:30:33 UTC (rev 28827) @@ -2225,7 +2225,7 @@ ob= base->object; if(base->lay & lay) { - if(ELEM5(ob->type, OB_MESH, OB_CURVE, OB_SURF, OB_FONT, OB_MBALL)) + //if(ELEM5(ob->type, OB_MESH, OB_CURVE, OB_SURF, OB_FONT, OB_MBALL)) ob->recalc |= OB_RECALC_DATA; if(ob->dup_group) ob->dup_group->id.flag |= LIB_DOIT; @@ -2235,7 +2235,7 @@ for(group= G.main->group.first; group; group= group->id.next) { if(group->id.flag & LIB_DOIT) { for(go= group->gobject.first; go; go= go->next) { - if(ELEM5(go->ob->type, OB_MESH, OB_CURVE, OB_SURF, OB_FONT, OB_MBALL)) + //if(ELEM5(go->ob->type, OB_MESH, OB_CURVE, OB_SURF, OB_FONT, OB_MBALL)) go->ob->recalc |= OB_RECALC_DATA; if(go->ob->proxy_from) go->ob->recalc |= OB_RECALC_OB; @@ -2247,6 +2247,9 @@ /* now tag update flags, to ensure deformers get calculated on redraw */ DAG_scene_update_flags(scene, lay); + + scene_update_for_newframe(scene, lay); + //scene_update_for_newframe(scene, lay); } } Modified: branches/render25/source/blender/blenkernel/intern/effect.c =================================================================== --- branches/render25/source/blender/blenkernel/intern/effect.c 2010-05-18 14:30:20 UTC (rev 28826) +++ branches/render25/source/blender/blenkernel/intern/effect.c 2010-05-18 14:30:33 UTC (rev 28827) @@ -631,7 +631,7 @@ else if(eff->psys) { ParticleSimulationData sim = {eff->scene, eff->ob, eff->psys, NULL, NULL}; ParticleData *pa = eff->psys->particles + *efd->index; - ParticleKey state; + ParticleKey state={0,}; /* exclude the particle itself for self effecting particles */ if(eff->psys == point->psys && *efd->index == point->index) @@ -639,8 +639,10 @@ else { /* TODO: time from actual previous calculated frame (step might not be 1) */ state.time = cfra - 1.0; - ret = psys_get_particle_state(&sim, *efd->index, &state, 0); + state.use_frames = 1; + ret = psys_get_particle_state(&sim, *efd->index, &state, 0, 0); + /* TODO */ //if(eff->pd->forcefiled == PFIELD_HARMONIC && ret==0) { // if(pa->dietime < eff->psys->cfra) Modified: branches/render25/source/blender/blenkernel/intern/object.c =================================================================== --- branches/render25/source/blender/blenkernel/intern/object.c 2010-05-18 14:30:20 UTC (rev 28826) +++ branches/render25/source/blender/blenkernel/intern/object.c 2010-05-18 14:30:33 UTC (rev 28827) @@ -2547,6 +2547,7 @@ BKE_animsys_evaluate_animdata(data_id, adt, ctime, ADT_RECALC_DRIVERS); if(ob->id.lib && ob->proxy_from) { + where_is_pose(scene, ob->proxy_from); copy_pose_result(ob->pose, ob->proxy_from->pose); // printf("pose proxy copy, lib ob %s proxy %s\n", ob->id.name, ob->proxy_from->id.name); } Modified: branches/render25/source/blender/blenkernel/intern/particle.c =================================================================== --- branches/render25/source/blender/blenkernel/intern/particle.c 2010-05-18 14:30:20 UTC (rev 28826) +++ branches/render25/source/blender/blenkernel/intern/particle.c 2010-05-18 14:30:33 UTC (rev 28827) @@ -1060,12 +1060,12 @@ while(pm && pm->next && (float)pm->frame < t) pm = pm->next; - BKE_ptcache_make_particle_key(key2, pm->index_array ? pm->index_array[index] - 1 : index, pm->data, (float)pm->frame); - BKE_ptcache_make_particle_key(key1, pm->prev->index_array ? pm->prev->index_array[index] - 1 : index, pm->prev->data, (float)pm->prev->frame); + BKE_ptcache_make_particle_key(key2, pm->index_array ? pm->index_array[index] - 1 : index, pm->data, (float)pm->frame, 1); + BKE_ptcache_make_particle_key(key1, pm->prev->index_array ? pm->prev->index_array[index] - 1 : index, pm->prev->data, (float)pm->prev->frame, 1); } else if(cache->mem_cache.first) { PTCacheMem *pm2 = cache->mem_cache.first; - BKE_ptcache_make_particle_key(key2, pm2->index_array ? pm2->index_array[index] - 1 : index, pm2->data, (float)pm2->frame); + BKE_ptcache_make_particle_key(key2, pm2->index_array ? pm2->index_array[index] - 1 : index, pm2->data, (float)pm2->frame, 1); copy_particle_key(key1, key2, 1); } } @@ -1142,8 +1142,8 @@ /* interpret timing and find keys */ if(point) { - if(result->time < 0.0f) - real_t = -result->time; + if(result->use_frames) + real_t = result->time; else real_t = *(pind->ekey[0]->time) + t * (*(pind->ekey[0][point->totkey-1].time) - *(pind->ekey[0]->time)); @@ -1159,8 +1159,8 @@ return; } - if(result->time < 0.0f) - real_t = -result->time; + if(result->use_frames) + real_t = result->time; else real_t = pind->kkey[0]->time + t * (pind->kkey[0][pa->totkey-1].time - pind->kkey[0]->time); @@ -1190,14 +1190,14 @@ pind->kkey[0] = pind->kkey[1] - 1; } else if(pind->cache) { - if(result->time < 0.0f) /* flag for time in frames */ - real_t = -result->time; + if(result->use_frames) /* flag for time in frames */ + real_t = result->time; else real_t = pa->time + t * (pa->dietime - pa->time); } else { - if(result->time < 0.0f) - real_t = -result->time; + if(result->use_frames) + real_t = result->time; else real_t = pind->hkey[0]->time + t * (pind->hkey[0][pa->totkey-1].time - pind->hkey[0]->time); @@ -1945,7 +1945,7 @@ void precalc_guides(ParticleSimulationData *sim, ListBase *effectors) { EffectedPoint point; - ParticleKey state; @@ Diff output truncated at 10240 characters. @@ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs