Revision: 18403
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=18403
Author:   ton
Date:     2009-01-07 17:05:55 +0100 (Wed, 07 Jan 2009)

Log Message:
-----------
2.5

More globals discovered; lattice deform stored static
deform array and a matrix. Tsk! 

Modified Paths:
--------------
    branches/blender2.5/blender/source/blender/blenkernel/BKE_lattice.h
    branches/blender2.5/blender/source/blender/blenkernel/intern/anim.c
    branches/blender2.5/blender/source/blender/blenkernel/intern/lattice.c
    branches/blender2.5/blender/source/blender/blenkernel/intern/modifier.c
    branches/blender2.5/blender/source/blender/blenkernel/intern/particle.c
    
branches/blender2.5/blender/source/blender/blenkernel/intern/particle_system.c
    branches/blender2.5/blender/source/blender/editors/space_view3d/drawobject.c
    branches/blender2.5/blender/source/blender/makesdna/DNA_lattice_types.h
    
branches/blender2.5/blender/source/blender/render/intern/source/convertblender.c

Modified: branches/blender2.5/blender/source/blender/blenkernel/BKE_lattice.h
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/BKE_lattice.h 
2009-01-07 15:17:58 UTC (rev 18402)
+++ branches/blender2.5/blender/source/blender/blenkernel/BKE_lattice.h 
2009-01-07 16:05:55 UTC (rev 18403)
@@ -47,9 +47,11 @@
 void free_lattice(struct Lattice *lt);
 void make_local_lattice(struct Lattice *lt);
 void calc_lat_fudu(int flag, int res, float *fu, float *du);
+
 void init_latt_deform(struct Object *oblatt, struct Object *ob);
-void calc_latt_deform(float *co, float weight);
-void end_latt_deform(void);
+void calc_latt_deform(struct Object *, float *co, float weight);
+void end_latt_deform(struct Object *);
+
 int object_deform_mball(struct Object *ob);
 void outside_lattice(struct Lattice *lt);
 

Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/anim.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/anim.c 
2009-01-07 15:17:58 UTC (rev 18402)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/anim.c 
2009-01-07 16:05:55 UTC (rev 18403)
@@ -946,8 +946,8 @@
                MEM_freeN(obcopylist);
 
        if(psys->lattice) {
-               end_latt_deform();
-               psys->lattice = 0;
+               end_latt_deform(psys->lattice);
+               psys->lattice = NULL;
        }
 }
 

Modified: branches/blender2.5/blender/source/blender/blenkernel/intern/lattice.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/lattice.c      
2009-01-07 15:17:58 UTC (rev 18402)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/lattice.c      
2009-01-07 16:05:55 UTC (rev 18403)
@@ -74,7 +74,6 @@
 //XXX #include "BIF_editdeform.h"
 
 Lattice *editLatt=0;
-static float *latticedata=0, latmat[4][4];
 
 void calc_lat_fudu(int flag, int res, float *fu, float *du)
 {
@@ -303,23 +302,23 @@
        if(lt->editlatt) lt= lt->editlatt;
        bp = lt->def;
        
-       fp= latticedata= 
MEM_mallocN(sizeof(float)*3*lt->pntsu*lt->pntsv*lt->pntsw, "latticedata");
+       fp= lt->latticedata= 
MEM_mallocN(sizeof(float)*3*lt->pntsu*lt->pntsv*lt->pntsw, "latticedata");
        
                /* for example with a particle system: ob==0 */
-       if(ob==0) {
+       if(ob==NULL) {
                /* in deformspace, calc matrix  */
-               Mat4Invert(latmat, oblatt->obmat);
+               Mat4Invert(lt->latmat, oblatt->obmat);
        
                /* back: put in deform array */
-               Mat4Invert(imat, latmat);
+               Mat4Invert(imat, lt->latmat);
        }
        else {
                /* in deformspace, calc matrix */
                Mat4Invert(imat, oblatt->obmat);
-               Mat4MulMat4(latmat, ob->obmat, imat);
+               Mat4MulMat4(lt->latmat, ob->obmat, imat);
        
                /* back: put in deform array */
-               Mat4Invert(imat, latmat);
+               Mat4Invert(imat, lt->latmat);
        }
        
        for(w=0,fw=lt->fw; w<lt->pntsw; w++,fw+=lt->dw) {
@@ -341,19 +340,20 @@
        }
 }
 
-void calc_latt_deform(float *co, float weight)
+void calc_latt_deform(Object *ob, float *co, float weight)
 {
-       Lattice *lt;
+       Lattice *lt= ob->data;
        float u, v, w, tu[4], tv[4], tw[4];
        float *fpw, *fpv, *fpu, vec[3];
        int ui, vi, wi, uu, vv, ww;
        
-       if(latticedata==0) return;
+       if(lt->editlatt) lt= lt->editlatt;
+       if(lt->latticedata==NULL) return;
        
        /* co is in local coords, treat with latmat */
        
        VECCOPY(vec, co);
-       Mat4MulVecfl(latmat, vec);
+       Mat4MulVecfl(lt->latmat, vec);
        
        /* u v w coords */
        
@@ -395,10 +395,10 @@
                
                if(w!=0.0) {
                        if(ww>0) {
-                               if(ww<lt->pntsw) fpw= latticedata + 
3*ww*lt->pntsu*lt->pntsv;
-                               else fpw= latticedata + 
3*(lt->pntsw-1)*lt->pntsu*lt->pntsv;
+                               if(ww<lt->pntsw) fpw= lt->latticedata + 
3*ww*lt->pntsu*lt->pntsv;
+                               else fpw= lt->latticedata + 
3*(lt->pntsw-1)*lt->pntsu*lt->pntsv;
                        }
-                       else fpw= latticedata;
+                       else fpw= lt->latticedata;
                        
                        for(vv= vi-1; vv<=vi+2; vv++) {
                                v= w*tv[vv-vi+1];
@@ -431,11 +431,15 @@
        }
 }
 
-void end_latt_deform()
+void end_latt_deform(Object *ob)
 {
-
-       MEM_freeN(latticedata);
-       latticedata= 0;
+       Lattice *lt= ob->data;
+       
+       if(lt->editlatt) lt= lt->editlatt;
+       
+       if(lt->latticedata)
+               MEM_freeN(lt->latticedata);
+       lt->latticedata= NULL;
 }
 
        /* calculations is in local space of deformed object
@@ -767,17 +771,17 @@
                                if(dm) dvert = dm->getVertData(dm, a, 
CD_MDEFORMVERT);
                                for(j = 0; j < dvert->totweight; j++) {
                                        if (dvert->dw[j].def_nr == index) {
-                                               calc_latt_deform(vertexCos[a], 
dvert->dw[j].weight);
+                                               calc_latt_deform(laOb, 
vertexCos[a], dvert->dw[j].weight);
                                        }
                                }
                        }
                }
        } else {
                for(a = 0; a < numVerts; a++) {
-                       calc_latt_deform(vertexCos[a], 1.0f);
+                       calc_latt_deform(laOb, vertexCos[a], 1.0f);
                }
        }
-       end_latt_deform();
+       end_latt_deform(laOb);
 }
 
 int object_deform_mball(Object *ob)

Modified: 
branches/blender2.5/blender/source/blender/blenkernel/intern/modifier.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/modifier.c     
2009-01-07 15:17:58 UTC (rev 18402)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/modifier.c     
2009-01-07 16:05:55 UTC (rev 18403)
@@ -6491,8 +6491,8 @@
        CDDM_calc_normals(result);
 
        if(psys->lattice){
-               end_latt_deform();
-               psys->lattice=0;
+               end_latt_deform(psys->lattice);
+               psys->lattice= NULL;
        }
 
        return result;
@@ -7267,8 +7267,8 @@
        CDDM_calc_normals(explode);
 
        if(psmd->psys->lattice){
-               end_latt_deform();
-               psmd->psys->lattice=0;
+               end_latt_deform(psmd->psys->lattice);
+               psmd->psys->lattice= NULL;
        }
 
        return explode;

Modified: 
branches/blender2.5/blender/source/blender/blenkernel/intern/particle.c
===================================================================
--- branches/blender2.5/blender/source/blender/blenkernel/intern/particle.c     
2009-01-07 15:17:58 UTC (rev 18402)
+++ branches/blender2.5/blender/source/blender/blenkernel/intern/particle.c     
2009-01-07 16:05:55 UTC (rev 18403)
@@ -2584,7 +2584,7 @@
 
                        /* apply lattice */
                        if(psys->lattice && edit==0)
-                               calc_latt_deform(ca->co, 1.0f);
+                               calc_latt_deform(psys->lattice, ca->co, 1.0f);
 
                        /* figure out rotation */
                        
@@ -2664,8 +2664,8 @@
        psys->totcached = totpart;
 
        if(psys && psys->lattice){
-               end_latt_deform();
-               psys->lattice=0;
+               end_latt_deform(psys->lattice);
+               psys->lattice= NULL;
        }
 
        if(vg_effector)
@@ -3473,7 +3473,7 @@
                                }
 
                                if(psys->lattice && edit==0)
-                                       calc_latt_deform(state->co,1.0f);
+                                       calc_latt_deform(psys->lattice, 
state->co,1.0f);
                        }
                }
        }
@@ -3696,7 +3696,7 @@
                        
do_clump(state,key1,t,part->clumpfac,part->clumppow,1.0);
 
                        if(psys->lattice)
-                               calc_latt_deform(state->co,1.0f);
+                               calc_latt_deform(psys->lattice, state->co,1.0f);
                }
                else{
                        if (pa) { /* TODO PARTICLE - should this ever be NULL? 
- Campbell */
@@ -3748,7 +3748,7 @@
                                }
 
                                if(psys->lattice)
-                                       calc_latt_deform(state->co,1.0f);
+                                       calc_latt_deform(psys->lattice, 
state->co,1.0f);
                        }
                }
                

Modified: 
branches/blender2.5/blender/source/blender/blenkernel/intern/particle_system.c
===================================================================
--- 
branches/blender2.5/blender/source/blender/blenkernel/intern/particle_system.c  
    2009-01-07 15:17:58 UTC (rev 18402)
+++ 
branches/blender2.5/blender/source/blender/blenkernel/intern/particle_system.c  
    2009-01-07 16:05:55 UTC (rev 18403)
@@ -1495,8 +1495,8 @@
                MEM_freeN(ctx->vg_roughe);
 
        if(ctx->psys->lattice){
-               end_latt_deform();
-               ctx->psys->lattice=0;
+               end_latt_deform(ctx->psys->lattice);
+               ctx->psys->lattice= NULL;
        }
 
        /* distribution */
@@ -2629,8 +2629,8 @@
                                }
 
                                if(epsys->lattice){
-                                       end_latt_deform();
-                                       epsys->lattice=0;
+                                       end_latt_deform(epsys->lattice);
+                                       epsys->lattice= NULL;
                                }
                        }
                }
@@ -4254,8 +4254,8 @@
                }
 
                if(psys->lattice){
-                       end_latt_deform();
-                       psys->lattice=0;
+                       end_latt_deform(psys->lattice);
+                       psys->lattice= NULL;
                }
 
                if(pa->r_rot[0] > disp)
@@ -4630,8 +4630,8 @@
        if(vg_size) MEM_freeN(vg_size);
 
        if(psys->lattice){
-               end_latt_deform();
-               psys->lattice=0;
+               end_latt_deform(psys->lattice);
+               psys->lattice= NULL;
        }
 }
 

Modified: 
branches/blender2.5/blender/source/blender/editors/space_view3d/drawobject.c
===================================================================
--- 
branches/blender2.5/blender/source/blender/editors/space_view3d/drawobject.c    
    2009-01-07 15:17:58 UTC (rev 18402)
+++ 
branches/blender2.5/blender/source/blender/editors/space_view3d/drawobject.c    
    2009-01-07 16:05:55 UTC (rev 18403)
@@ -3480,8 +3480,8 @@
        psys->flag &= ~PSYS_DRAWING;
 
        if(psys->lattice){
-               end_latt_deform();
-               psys->lattice=0;
+               end_latt_deform(psys->lattice);
+               psys->lattice= NULL;
        }
 
        wmLoadMatrix(v3d->viewmat);

Modified: 
branches/blender2.5/blender/source/blender/makesdna/DNA_lattice_types.h
===================================================================
--- branches/blender2.5/blender/source/blender/makesdna/DNA_lattice_types.h     
2009-01-07 15:17:58 UTC (rev 18402)
+++ branches/blender2.5/blender/source/blender/makesdna/DNA_lattice_types.h     
2009-01-07 16:05:55 UTC (rev 18403)
@@ -53,6 +53,10 @@
        
        struct MDeformVert *dvert;
        
+       /* used while deforming, always free and NULL after use */
+       float *latticedata;
+       float latmat[4][4];
+       
        struct Lattice *editlatt;
 } Lattice;
 

Modified: 
branches/blender2.5/blender/source/blender/render/intern/source/convertblender.c
===================================================================
--- 
branches/blender2.5/blender/source/blender/render/intern/source/convertblender.c
    2009-01-07 15:17:58 UTC (rev 18402)
+++ 
branches/blender2.5/blender/source/blender/render/intern/source/convertblender.c
    2009-01-07 16:05:55 UTC (rev 18403)
@@ -2043,8 +2043,8 @@
        psys->flag &= ~PSYS_DRAWING;
 
        if(psys->lattice){
-               end_latt_deform();
-               psys->lattice=0;
+               end_latt_deform(psys->lattice);
+               psys->lattice= NULL;
        }
 
        if(path && (ma->mode_l & MA_TANGENT_STR)==0)


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to