[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [42558] branches/bmesh/blender/source/ blender/editors/transform/transform_conversions.c: fix [#29541] Scale of faces incorrect when using individual origins

Campbell Barton ideasman42 at gmail.com
Sat Dec 10 19:25:56 CET 2011


Revision: 42558
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=42558
Author:   campbellbarton
Date:     2011-12-10 18:25:56 +0000 (Sat, 10 Dec 2011)
Log Message:
-----------
fix [#29541] Scale of faces incorrect when using individual origins

Modified Paths:
--------------
    branches/bmesh/blender/source/blender/editors/transform/transform_conversions.c

Modified: branches/bmesh/blender/source/blender/editors/transform/transform_conversions.c
===================================================================
--- branches/bmesh/blender/source/blender/editors/transform/transform_conversions.c	2011-12-10 18:24:44 UTC (rev 42557)
+++ branches/bmesh/blender/source/blender/editors/transform/transform_conversions.c	2011-12-10 18:25:56 UTC (rev 42558)
@@ -1917,73 +1917,46 @@
 	BMFace *efa;
 	BMIter iter;
 
-	efa = BMIter_New(&iter, bm, BM_FACES_OF_VERT, eve);
-	if (efa) {
-		BM_Compute_Face_CenterMean(bm, efa, cent_r);
+	BM_ITER(efa, &iter, bm, BM_FACES_OF_VERT, eve) {
+		if (BM_Selected(bm, efa)) {
+			BM_Compute_Face_CenterMean(bm, efa, cent_r);
+			break;
+		}
 	}
-	else {
-		zero_v3(cent_r);
-	}
-
-	if (is_zero_v3(cent_r)) cent_r[2] = 1.0f;
 }
 
-#define VertsToTransData(t, td, em, eve, bweight) \
-	td->flag = 0;\
-	td->loc = eve->co;\
-	copy_v3_v3(td->center, td->loc);\
-	if(t->around==V3D_LOCAL && (em->selectmode & SCE_SELECT_FACE))\
-		get_face_center(td->center, em, eve);\
-	copy_v3_v3(td->iloc, td->loc);\
-	copy_v3_v3(td->axismtx[2], eve->no);\
-	td->axismtx[0][0]		=\
-		td->axismtx[0][1]	=\
-		td->axismtx[0][2]	=\
-		td->axismtx[1][0]	=\
-		td->axismtx[1][1]	=\
-		td->axismtx[1][2]	= 0.0f;\
-	td->ext = NULL;\
-	td->val = NULL;\
-	td->extra = NULL;\
-	if (t->mode == TFM_BWEIGHT) {\
-		td->val = bweight;\
-		td->ival = bweight ? *(bweight) : 1.0f;\
-	}
-
-#if 0
-//way to overwrite what data is edited with transform
-//static void VertsToTransData(TransData *td, EditVert *eve, BakeKey *key)
-inline void VertsToTransData(TransInfo *t, TransData *td, BMesh *em, BMVert *eve)
+/* way to overwrite what data is edited with transform
+ * static void VertsToTransData(TransData *td, EditVert *eve, BakeKey *key) */
+static void VertsToTransData(TransInfo *t, TransData *td, BMEditMesh *em, BMVert *eve, float *bweight)
 {
 	td->flag = 0;
 	//if(key)
-	//	td->loc = key->co;
-	//else
+    //	td->loc = key->co;
+    //else
 	td->loc = eve->co;
 
 	copy_v3_v3(td->center, td->loc);
 	if(t->around==V3D_LOCAL && (em->selectmode & SCE_SELECT_FACE))
-		get_face_center(td->center, em, eve);
+		get_face_center(td->center, em->bm, eve);
 	copy_v3_v3(td->iloc, td->loc);
 
 	// Setting normals
 	copy_v3_v3(td->axismtx[2], eve->no);
 	td->axismtx[0][0]		=
-		td->axismtx[0][1]	=
-		td->axismtx[0][2]	=
-		td->axismtx[1][0]	=
-		td->axismtx[1][1]	=
-		td->axismtx[1][2]	= 0.0f;
+	        td->axismtx[0][1]	=
+	        td->axismtx[0][2]	=
+	        td->axismtx[1][0]	=
+	        td->axismtx[1][1]	=
+	        td->axismtx[1][2]	= 0.0f;
 
 	td->ext = NULL;
 	td->val = NULL;
 	td->extra = NULL;
 	if (t->mode == TFM_BWEIGHT) {
-		td->val = &(eve->bweight);
-		td->ival = eve->bweight;
+		td->val = bweight;
+		td->ival = bweight ? *(bweight) : 1.0f;
 	}
-}
-#endif
+ }
 
 /* *********************** CrazySpace correction. Now without doing subsurf optimal ****************** */
 
@@ -2220,7 +2193,7 @@
 			if(propmode || selstate[a]) {
 				float *bweight = CustomData_bmesh_get(&bm->vdata, eve->head.data, CD_BWEIGHT);
 				
-				VertsToTransData(t, tob, bm, eve, bweight);
+				VertsToTransData(t, tob, em, eve, bweight);
 
 				/* selected */
 				if(selstate[a]) tob->flag |= TD_SELECTED;




More information about the Bf-blender-cvs mailing list