merge with/from trunk at r35190
[blender.git] / source / blender / editors / transform / transform_constraints.c
index 5f097c5d12e9de84d1f9e53560b9cc9840e02463..4427e4724129e02872f8534e573e2415a83c5eff 100644 (file)
@@ -1,4 +1,4 @@
-/**
+/*
  * $Id$
  *
  * ***** BEGIN GPL LICENSE BLOCK *****
 #include "BIF_glutil.h"
 
 #include "BKE_context.h"
-#include "BKE_utildefines.h"
+
 
 #include "ED_image.h"
 #include "ED_view3d.h"
 
 #include "BLI_math.h"
+#include "BLI_utildefines.h"
 
 //#include "blendef.h"
 //
@@ -68,7 +69,7 @@
 static void drawObjectConstraint(TransInfo *t);
 
 /* ************************** CONSTRAINTS ************************* */
-void constraintAutoValues(TransInfo *t, float vec[3])
+static void constraintAutoValues(TransInfo *t, float vec[3])
 {
        int mode = t->con.mode;
        if (mode & CON_APPLY)
@@ -154,14 +155,16 @@ static void postConstraintChecks(TransInfo *t, float vec[3], float pvec[3]) {
 
        if (hasNumInput(&t->num)) {
                applyNumInput(&t->num, vec);
+               removeAspectRatio(t, vec);
                constraintNumInput(t, vec);
        }
 
        /* autovalues is operator param, use that directly but not if snapping is forced */
        if (t->flag & T_AUTOVALUES && (t->tsnap.status & SNAP_FORCED) == 0)
        {
-               VECCOPY(vec, t->auto_values);
+               mul_v3_m3v3(vec, t->con.imtx, t->auto_values);
                constraintAutoValues(t, vec);
+               /* inverse transformation at the end */
        }
 
        if (t->con.mode & CON_AXIS0) {
@@ -558,9 +561,8 @@ void setUserConstraint(TransInfo *t, short orientation, int mode, const char fte
        switch(orientation) {
        case V3D_MANIP_GLOBAL:
                {
-                       float mtx[3][3];
+                       float mtx[3][3]= MAT3_UNITY;
                        sprintf(text, ftext, "global");
-                       unit_m3(mtx);
                        setConstraint(t, mtx, mode, text);
                }
                break;
@@ -593,7 +595,7 @@ void setUserConstraint(TransInfo *t, short orientation, int mode, const char fte
 
 /*----------------- DRAWING CONSTRAINTS -------------------*/
 
-void drawConstraint(const struct bContext *C, TransInfo *t)
+void drawConstraint(TransInfo *t)
 {
        TransCon *tc = &(t->con);
 
@@ -623,9 +625,9 @@ void drawConstraint(const struct bContext *C, TransInfo *t)
                        convertViewVec(t, vec, (short)(t->mval[0] - t->con.imval[0]), (short)(t->mval[1] - t->con.imval[1]));
                        add_v3_v3(vec, tc->center);
 
-                       drawLine(t, tc->center, tc->mtx[0], 'x', 0);
-                       drawLine(t, tc->center, tc->mtx[1], 'y', 0);
-                       drawLine(t, tc->center, tc->mtx[2], 'z', 0);
+                       drawLine(t, tc->center, tc->mtx[0], 'X', 0);
+                       drawLine(t, tc->center, tc->mtx[1], 'Y', 0);
+                       drawLine(t, tc->center, tc->mtx[2], 'Z', 0);
 
                        glColor3ubv((GLubyte *)col2);
 
@@ -645,13 +647,13 @@ void drawConstraint(const struct bContext *C, TransInfo *t)
                }
 
                if (tc->mode & CON_AXIS0) {
-                       drawLine(t, tc->center, tc->mtx[0], 'x', DRAWLIGHT);
+                       drawLine(t, tc->center, tc->mtx[0], 'X', DRAWLIGHT);
                }
                if (tc->mode & CON_AXIS1) {
-                       drawLine(t, tc->center, tc->mtx[1], 'y', DRAWLIGHT);
+                       drawLine(t, tc->center, tc->mtx[1], 'Y', DRAWLIGHT);
                }
                if (tc->mode & CON_AXIS2) {
-                       drawLine(t, tc->center, tc->mtx[2], 'z', DRAWLIGHT);
+                       drawLine(t, tc->center, tc->mtx[2], 'Z', DRAWLIGHT);
                }
        }
 }
@@ -712,26 +714,26 @@ static void drawObjectConstraint(TransInfo *t) {
           Without drawing the first light, users have little clue what they are doing.
         */
        if (t->con.mode & CON_AXIS0) {
-               drawLine(t, td->ob->obmat[3], td->axismtx[0], 'x', DRAWLIGHT);
+               drawLine(t, td->ob->obmat[3], td->axismtx[0], 'X', DRAWLIGHT);
        }
        if (t->con.mode & CON_AXIS1) {
-               drawLine(t, td->ob->obmat[3], td->axismtx[1], 'y', DRAWLIGHT);
+               drawLine(t, td->ob->obmat[3], td->axismtx[1], 'Y', DRAWLIGHT);
        }
        if (t->con.mode & CON_AXIS2) {
-               drawLine(t, td->ob->obmat[3], td->axismtx[2], 'z', DRAWLIGHT);
+               drawLine(t, td->ob->obmat[3], td->axismtx[2], 'Z', DRAWLIGHT);
        }
 
        td++;
 
        for(i=1;i<t->total;i++,td++) {
                if (t->con.mode & CON_AXIS0) {
-                       drawLine(t, td->ob->obmat[3], td->axismtx[0], 'x', 0);
+                       drawLine(t, td->ob->obmat[3], td->axismtx[0], 'X', 0);
                }
                if (t->con.mode & CON_AXIS1) {
-                       drawLine(t, td->ob->obmat[3], td->axismtx[1], 'y', 0);
+                       drawLine(t, td->ob->obmat[3], td->axismtx[1], 'Y', 0);
                }
                if (t->con.mode & CON_AXIS2) {
-                       drawLine(t, td->ob->obmat[3], td->axismtx[2], 'z', 0);
+                       drawLine(t, td->ob->obmat[3], td->axismtx[2], 'Z', 0);
                }
        }
 }