Context parameter for Transform.
For tex space edit, crease (soon) and future use. Manipulator assumes no context.
This commit is contained in:
@@ -49,20 +49,19 @@
|
||||
#define TFM_LAMP_ENERGY 10
|
||||
#define TFM_TRACKBALL 11
|
||||
|
||||
// not sure if adding modes is the right way... context detecting could be done different (ton)
|
||||
#define TFM_TEX 32
|
||||
#define TFM_TEX_TRANSLATION 33
|
||||
#define TFM_TEX_ROTATION 34
|
||||
#define TFM_TEX_RESIZE 35
|
||||
|
||||
/* TRANSFORM CONTEXTS */
|
||||
#define CTX_NONE 0
|
||||
#define CTX_TEXTURE 1
|
||||
#define CTX_EDGE 2
|
||||
|
||||
/* TRANSFORM PROPORTIONAL FALLOFF MODES */
|
||||
#define PROP_SHARP 0
|
||||
#define PROP_SMOOTH 1
|
||||
#define PROP_ROOT 2
|
||||
#define PROP_LIN 3
|
||||
#define PROP_CONST 4
|
||||
|
||||
void Transform(int mode);
|
||||
void Transform(int mode, int context);
|
||||
|
||||
|
||||
struct TransInfo;
|
||||
|
||||
@@ -561,7 +561,7 @@ void extrude_mesh(void)
|
||||
|
||||
/* individual faces? */
|
||||
if(nr==2) {
|
||||
Transform(TFM_SHRINKFATTEN);
|
||||
Transform(TFM_SHRINKFATTEN, CTX_NONE);
|
||||
}
|
||||
else {
|
||||
if(transmode=='n') {
|
||||
@@ -569,7 +569,7 @@ void extrude_mesh(void)
|
||||
VecSubf(nor, nor, G.obedit->obmat[3]);
|
||||
BIF_setSingleAxisConstraint(nor, NULL);
|
||||
}
|
||||
Transform(TFM_TRANSLATION);
|
||||
Transform(TFM_TRANSLATION, CTX_NONE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -6749,7 +6749,7 @@ void std_rmouse_transform(void (*xf_func)(int))
|
||||
getmouseco_areawin(mval);
|
||||
if(abs(mval[0]-xo)+abs(mval[1]-yo) > 10) {
|
||||
if(curarea->spacetype==SPACE_VIEW3D)
|
||||
Transform(TFM_TRANSLATION);
|
||||
Transform(TFM_TRANSLATION, CTX_NONE);
|
||||
else
|
||||
xf_func('g');
|
||||
|
||||
@@ -7615,7 +7615,7 @@ void adduplicate(float *dtrans)
|
||||
clear_id_newpoins();
|
||||
|
||||
countall();
|
||||
if(dtrans==0) Transform(TFM_TRANSLATION);
|
||||
if(dtrans==0) Transform(TFM_TRANSLATION, CTX_NONE);
|
||||
|
||||
set_active_base(BASACT);
|
||||
|
||||
@@ -7963,9 +7963,9 @@ void texspace_edit(void)
|
||||
|
||||
//transmode= TRANS_TEX;
|
||||
|
||||
if(nr==1) Transform(TFM_TEX_TRANSLATION);
|
||||
else if(nr==2) Transform(TFM_TEX_RESIZE);
|
||||
else if(nr==3) Transform(TFM_TEX_ROTATION);
|
||||
if(nr==1) Transform(TFM_TRANSLATION, CTX_TEXTURE);
|
||||
else if(nr==2) Transform(TFM_RESIZE, CTX_TEXTURE);
|
||||
else if(nr==3) Transform(TFM_ROTATION, CTX_TEXTURE);
|
||||
|
||||
//transmode= 0;
|
||||
}
|
||||
|
||||
@@ -1225,7 +1225,7 @@ static void winqreadview3dspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
|
||||
clear_object('g');
|
||||
}
|
||||
} else if((G.qual==0)) {
|
||||
Transform(TFM_TRANSLATION);
|
||||
Transform(TFM_TRANSLATION, CTX_NONE);
|
||||
}
|
||||
break;
|
||||
case HKEY:
|
||||
@@ -1483,28 +1483,28 @@ static void winqreadview3dspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
|
||||
loopoperations(LOOP_CUT);
|
||||
}
|
||||
else if((G.qual==0)) {
|
||||
Transform(TFM_ROTATION);
|
||||
Transform(TFM_ROTATION, CTX_NONE);
|
||||
}
|
||||
}
|
||||
else if((G.qual==0)) {
|
||||
Transform(TFM_ROTATION);
|
||||
Transform(TFM_ROTATION, CTX_NONE);
|
||||
}
|
||||
break;
|
||||
case SKEY:
|
||||
if(G.obedit) {
|
||||
if(G.qual==LR_ALTKEY)
|
||||
Transform(TFM_SHRINKFATTEN);
|
||||
Transform(TFM_SHRINKFATTEN, CTX_NONE);
|
||||
else if(G.qual==LR_CTRLKEY)
|
||||
Transform(TFM_SHEAR);
|
||||
Transform(TFM_SHEAR, CTX_NONE);
|
||||
else if(G.qual==(LR_CTRLKEY|LR_ALTKEY))
|
||||
Transform(TFM_SHEAR);
|
||||
Transform(TFM_SHEAR, CTX_NONE);
|
||||
else if(G.qual==LR_SHIFTKEY)
|
||||
snapmenu();
|
||||
else if(G.qual==0) {
|
||||
Transform(TFM_RESIZE);
|
||||
Transform(TFM_RESIZE, CTX_NONE);
|
||||
}
|
||||
else if(G.qual==(LR_SHIFTKEY|LR_CTRLKEY)){
|
||||
Transform(TFM_TOSPHERE);
|
||||
Transform(TFM_TOSPHERE, CTX_NONE);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1517,12 +1517,12 @@ static void winqreadview3dspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
|
||||
snapmenu();
|
||||
}
|
||||
else if((G.qual==0)) {
|
||||
Transform(TFM_RESIZE);
|
||||
Transform(TFM_RESIZE, CTX_NONE);
|
||||
}
|
||||
else if(G.qual==(LR_SHIFTKEY|LR_CTRLKEY))
|
||||
Transform(TFM_TOSPHERE);
|
||||
Transform(TFM_TOSPHERE, CTX_NONE);
|
||||
else if(G.qual==(LR_CTRLKEY|LR_ALTKEY))
|
||||
Transform(TFM_SHEAR);
|
||||
Transform(TFM_SHEAR, CTX_NONE);
|
||||
break;
|
||||
case TKEY:
|
||||
if(G.obedit){
|
||||
@@ -1537,7 +1537,7 @@ static void winqreadview3dspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
|
||||
clear_tilt();
|
||||
}
|
||||
else if (G.qual==0) {
|
||||
Transform(TFM_TILT);
|
||||
Transform(TFM_TILT, CTX_NONE);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1603,7 +1603,7 @@ static void winqreadview3dspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
|
||||
break;
|
||||
case WKEY:
|
||||
if((G.qual==LR_SHIFTKEY)) {
|
||||
Transform(TFM_WARP);
|
||||
Transform(TFM_WARP, CTX_NONE);
|
||||
}
|
||||
else if(G.qual==LR_ALTKEY) {
|
||||
/* if(G.obedit && G.obedit->type==OB_MESH) write_videoscape(); */
|
||||
|
||||
@@ -1991,13 +1991,13 @@ static void tb_do_transform(void *arg, int event)
|
||||
switch(event)
|
||||
{
|
||||
case 0: /* Grab/move */
|
||||
Transform(TFM_TRANSLATION);
|
||||
Transform(TFM_TRANSLATION, CTX_NONE);
|
||||
break;
|
||||
case 1: /* Rotate */
|
||||
Transform(TFM_ROTATION);
|
||||
Transform(TFM_ROTATION, CTX_NONE);
|
||||
break;
|
||||
case 2: /* Scale */
|
||||
Transform(TFM_RESIZE);
|
||||
Transform(TFM_RESIZE,CTX_NONE);
|
||||
break;
|
||||
case 3: /* transform properties */
|
||||
add_blockhandler(curarea, VIEW3D_HANDLER_OBJECT, UI_PNL_UNSTOW);
|
||||
@@ -2009,7 +2009,7 @@ static void tb_do_transform(void *arg, int event)
|
||||
transform('N');
|
||||
break;
|
||||
case 6: /* Shear */
|
||||
Transform(TFM_SHEAR);
|
||||
Transform(TFM_SHEAR, CTX_NONE);
|
||||
break;
|
||||
case 7: /* Warp */
|
||||
transform('w');
|
||||
|
||||
@@ -1226,10 +1226,9 @@ static void createTransObject(void)
|
||||
|
||||
static void createTransData(TransInfo *t)
|
||||
{
|
||||
if( t->mode & TFM_TEX) {
|
||||
if (t->context == CTX_TEXTURE) {
|
||||
t->flag |= T_TEXTURE;
|
||||
createTransTexspace();
|
||||
t->mode &= ~TFM_TEX; // now becoming normal grab/rot/scale
|
||||
}
|
||||
else if (G.obpose) {
|
||||
t->flag |= T_POSE;
|
||||
@@ -1278,7 +1277,7 @@ static void createTransData(TransInfo *t)
|
||||
|
||||
/* ************************** TRANSFORMATIONS **************************** */
|
||||
|
||||
void Transform(int mode)
|
||||
void Transform(int mode, int context)
|
||||
{
|
||||
int ret_val = 0;
|
||||
short pmval[2] = {0, 0}, mval[2], val;
|
||||
@@ -1306,6 +1305,8 @@ void Transform(int mode)
|
||||
LastMode = mode;
|
||||
}
|
||||
|
||||
Trans.context = context;
|
||||
|
||||
initTransModeFlags(&Trans, mode); // modal settings in struct Trans
|
||||
|
||||
initTrans(&Trans); // internal data, mouse, vectors
|
||||
@@ -1616,6 +1617,8 @@ void ManipulatorTransform(int mode)
|
||||
}
|
||||
/* END */
|
||||
|
||||
Trans.context = CTX_NONE;
|
||||
|
||||
initTransModeFlags(&Trans, mode); // modal settings in struct Trans
|
||||
|
||||
initTrans(&Trans); // internal data, mouse, vectors
|
||||
@@ -2457,7 +2460,6 @@ int Rotation(TransInfo *t, short mval[2])
|
||||
sprintf(str, "Rot: %.2f %s", 180.0*final/M_PI, t->proptext);
|
||||
}
|
||||
|
||||
//printf("Axis %f %f %f\n", axis[0], axis[1], axis[2]);
|
||||
VecRotToMat3(axis, final * td->factor, mat);
|
||||
|
||||
t->val = final; // used in manipulator
|
||||
|
||||
@@ -107,6 +107,7 @@ typedef struct TransData {
|
||||
|
||||
typedef struct TransInfo {
|
||||
int mode; /* current mode */
|
||||
int context; /* current context */
|
||||
int (*transform)(struct TransInfo *, short *);
|
||||
/* transform function pointer */
|
||||
char redraw; /* redraw flag */
|
||||
|
||||
Reference in New Issue
Block a user