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

Reply via email to