Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Poirier <theeth@yahoo.com>2005-08-23 22:13:30 +0400
committerMartin Poirier <theeth@yahoo.com>2005-08-23 22:13:30 +0400
commite12e2469c8e2e0f0229af5bbc611ea76238d6d34 (patch)
tree9e59a65aa7d77db81d49a2cc66b88ca331b4c9af /source/blender/src/transform_constraints.c
parent207cbbd535743e2505ce5f66d91f3d771800e0c5 (diff)
Bretch's patch for 2D transform. Thanks
Using new transform code to handle UV window. With the ground work done, Transform could more easily be extended to handle IPO window now. Tracker item: http://projects.blender.org/tracker/?func=detail&atid=127&aid=2946&group_id=9
Diffstat (limited to 'source/blender/src/transform_constraints.c')
-rwxr-xr-xsource/blender/src/transform_constraints.c28
1 files changed, 21 insertions, 7 deletions
diff --git a/source/blender/src/transform_constraints.c b/source/blender/src/transform_constraints.c
index 86e10793f06..7efe4a5cd55 100755
--- a/source/blender/src/transform_constraints.c
+++ b/source/blender/src/transform_constraints.c
@@ -62,6 +62,7 @@
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
#include "DNA_screen_types.h"
+#include "DNA_space_types.h"
#include "DNA_view3d_types.h"
#include "BIF_screen.h"
@@ -512,8 +513,9 @@ void setLocalConstraint(TransInfo *t, int mode, const char text[]) {
void setUserConstraint(TransInfo *t, int mode, const char ftext[]) {
float mtx[3][3];
char text[40];
+ short twmode= (t->spacetype==SPACE_VIEW3D)? G.vd->twmode: V3D_MANIP_GLOBAL;
- switch(G.vd->twmode) {
+ switch(twmode) {
case V3D_MANIP_GLOBAL:
sprintf(text, ftext, "global");
Mat3One(mtx);
@@ -630,13 +632,15 @@ void BIF_drawConstraint(void)
TransInfo *t = BIF_GetTransInfo();
TransCon *tc = &(t->con);
+ if (t->spacetype!=SPACE_VIEW3D)
+ return;
if (!(tc->mode & CON_APPLY))
return;
if (t->flag & T_USES_MANIPULATOR)
return;
/* nasty exception for Z constraint in camera view */
- if( (t->flag & T_OBJECT) && G.vd->camera==OBACT && G.vd->persp>1)
+ if((t->flag & T_OBJECT) && G.vd->camera==OBACT && G.vd->persp>1)
return;
if (tc->drawExtra) {
@@ -648,7 +652,7 @@ void BIF_drawConstraint(void)
short mval[2];
char col2[3] = {255,255,255};
getmouseco_areawin(mval);
- window_to_3d(vec, (short)(mval[0] - t->con.imval[0]), (short)(mval[1] - t->con.imval[1]));
+ convertViewVec(t, vec, (short)(mval[0] - t->con.imval[0]), (short)(mval[1] - t->con.imval[1]));
VecAddf(vec, vec, tc->center);
drawLine(tc->center, tc->mtx[0], 'x', 0);
@@ -694,7 +698,7 @@ void BIF_drawPropCircle()
mygetmatrix(tmat);
Mat4Invert(imat, tmat);
-
+
drawcircball(GL_LINE_LOOP, t->center, t->propsize, imat);
/* if editmode we restore */
@@ -702,6 +706,16 @@ void BIF_drawPropCircle()
}
}
+void BIF_getPropCenter(float *center)
+{
+ TransInfo *t = BIF_GetTransInfo();
+
+ if (t && t->flag & T_PROP_EDIT) {
+ VECCOPY(center, t->center);
+ }
+ else
+ center[0] = center[1] = center[2] = 0.0f;
+}
static void drawObjectConstraint(TransInfo *t) {
int i;
@@ -844,8 +858,8 @@ void setNearestAxis(TransInfo *t)
of two 2D points 30 pixels apart (that's the last factor in the formula) after
projecting them with window_to_3d and then get the length of that vector.
*/
- zfac= G.vd->persmat[0][3]*t->center[0]+ G.vd->persmat[1][3]*t->center[1]+ G.vd->persmat[2][3]*t->center[2]+ G.vd->persmat[3][3];
- zfac = VecLength(G.vd->persinv[0]) * 2.0f/curarea->winx * zfac * 30.0f;
+ zfac= t->persmat[0][3]*t->center[0]+ t->persmat[1][3]*t->center[1]+ t->persmat[2][3]*t->center[2]+ t->persmat[3][3];
+ zfac = VecLength(t->persinv[0]) * 2.0f/curarea->winx * zfac * 30.0f;
for (i = 0; i<3; i++) {
VECCOPY(axis, t->con.mtx[i]);
@@ -853,7 +867,7 @@ void setNearestAxis(TransInfo *t)
VecMulf(axis, zfac);
/* now we can project to get window coordinate */
VecAddf(axis, axis, t->con.center);
- project_int(axis, icoord);
+ projectIntView(t, axis, icoord);
axis[0] = (float)(icoord[0] - t->center2d[0]);
axis[1] = (float)(icoord[1] - t->center2d[1]);