[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [56433] trunk/blender/source/blender/ editors/transform: use 'normal' orientation rather then 'local' with individual origins to use the per-element axis-matrix.

Campbell Barton ideasman42 at gmail.com
Wed May 1 07:26:11 CEST 2013


Revision: 56433
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=56433
Author:   campbellbarton
Date:     2013-05-01 05:26:10 +0000 (Wed, 01 May 2013)
Log Message:
-----------
use 'normal' orientation rather then 'local' with individual origins to use the per-element axis-matrix.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/transform/transform.c
    trunk/blender/source/blender/editors/transform/transform.h
    trunk/blender/source/blender/editors/transform/transform_constraints.c

Modified: trunk/blender/source/blender/editors/transform/transform.c
===================================================================
--- trunk/blender/source/blender/editors/transform/transform.c	2013-05-01 03:28:14 UTC (rev 56432)
+++ trunk/blender/source/blender/editors/transform/transform.c	2013-05-01 05:26:10 UTC (rev 56433)
@@ -7540,4 +7540,17 @@
 	return ((t->around == V3D_LOCAL) && !ELEM3(t->mode, TFM_TRANSLATION, TFM_TIME_TRANSLATE, TFM_TIME_SLIDE));
 }
 
+bool checkUseAxisMatrix(TransInfo *t)
+{
+	/* currenly only checks for editmode */
+	if (t->flag & T_EDIT) {
+		if ((t->around == V3D_LOCAL) && (ELEM3(t->obedit->type, OB_MESH, OB_MBALL, OB_ARMATURE))) {
+			/* not all editmode supports axis-matrix */
+			return true;
+		}
+	}
+
+	return false;
+}
+
 #undef MAX_INFO_LEN

Modified: trunk/blender/source/blender/editors/transform/transform.h
===================================================================
--- trunk/blender/source/blender/editors/transform/transform.h	2013-05-01 03:28:14 UTC (rev 56432)
+++ trunk/blender/source/blender/editors/transform/transform.h	2013-05-01 05:26:10 UTC (rev 56433)
@@ -622,6 +622,7 @@
 
 void getConstraintMatrix(TransInfo *t);
 void setConstraint(TransInfo *t, float space[3][3], int mode, const char text[]);
+void setAxisMatrixConstraint(TransInfo *t, int mode, const char text[]);
 void setLocalConstraint(TransInfo *t, int mode, const char text[]);
 void setUserConstraint(TransInfo *t, short orientation, int mode, const char text[]);
 
@@ -752,5 +753,6 @@
 
 /* TODO. transform_queries.c */
 bool checkUseLocalCenter_GraphEdit(TransInfo *t);
+bool checkUseAxisMatrix(TransInfo *t);
 
 #endif

Modified: trunk/blender/source/blender/editors/transform/transform_constraints.c
===================================================================
--- trunk/blender/source/blender/editors/transform/transform_constraints.c	2013-05-01 03:28:14 UTC (rev 56432)
+++ trunk/blender/source/blender/editors/transform/transform_constraints.c	2013-05-01 05:26:10 UTC (rev 56433)
@@ -572,36 +572,36 @@
 	t->redraw = 1;
 }
 
+/* applies individual td->axismtx constraints */
+void setAxisMatrixConstraint(TransInfo *t, int mode, const char text[])
+{
+	if (t->total == 1) {
+		setConstraint(t, t->data->axismtx, mode, text);
+	}
+	else {
+		BLI_strncpy(t->con.text + 1, text, sizeof(t->con.text) - 1);
+		copy_m3_m3(t->con.mtx, t->data->axismtx);
+		t->con.mode = mode;
+		getConstraintMatrix(t);
+
+		startConstraint(t);
+
+		t->con.drawExtra = drawObjectConstraint;
+		t->con.applyVec = applyObjectConstraintVec;
+		t->con.applySize = applyObjectConstraintSize;
+		t->con.applyRot = applyObjectConstraintRot;
+		t->redraw = 1;
+	}
+}
+
 void setLocalConstraint(TransInfo *t, int mode, const char text[])
 {
 	/* edit-mode now allows local transforms too */
-#if 1
-	if ((t->flag & T_EDIT) &&
-	    /* not all editmode supports axis-matrix */
-	    ((t->around != V3D_LOCAL) || (!ELEM3(t->obedit->type, OB_MESH, OB_MBALL, OB_ARMATURE))))
-	{
+	if (t->flag & T_EDIT) {
 		setConstraint(t, t->obedit_mat, mode, text);
 	}
-	else
-#endif
-	{
-		if (t->total == 1) {
-			setConstraint(t, t->data->axismtx, mode, text);
-		}
-		else {
-			BLI_strncpy(t->con.text + 1, text, sizeof(t->con.text) - 1);
-			copy_m3_m3(t->con.mtx, t->data->axismtx);
-			t->con.mode = mode;
-			getConstraintMatrix(t);
-
-			startConstraint(t);
-
-			t->con.drawExtra = drawObjectConstraint;
-			t->con.applyVec = applyObjectConstraintVec;
-			t->con.applySize = applyObjectConstraintSize;
-			t->con.applyRot = applyObjectConstraintRot;
-			t->redraw = 1;
-		}
+	else {
+		setAxisMatrixConstraint(t, mode, text);
 	}
 }
 
@@ -629,7 +629,12 @@
 			break;
 		case V3D_MANIP_NORMAL:
 			BLI_snprintf(text, sizeof(text), ftext, IFACE_("normal"));
-			setConstraint(t, t->spacemtx, mode, text);
+			if (checkUseAxisMatrix(t)) {
+				setAxisMatrixConstraint(t, mode, text);
+			}
+			else {
+				setConstraint(t, t->spacemtx, mode, text);
+			}
 			break;
 		case V3D_MANIP_VIEW:
 			BLI_snprintf(text, sizeof(text), ftext, IFACE_("view"));




More information about the Bf-blender-cvs mailing list