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