[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [18403] branches/blender2.5/blender/source /blender: 2.5

Ton Roosendaal ton at blender.org
Wed Jan 7 17:05:57 CET 2009


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)





More information about the Bf-blender-cvs mailing list