[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