Three fixes in 1 commit. :)
- Bug #2530 The MMB Transform constraint 'chooser' used projection code that didnt work when zoomed in extreme. Needed a correction to scale projected coordinate according zoomlevel. - NKEY panel for objects: click on left/right side of scale button now goes with increments of 0.1 (was 1.0) - Moving window edges in Screen: prevented top header from becoming too small due to grid-snapping. Was visible now with using Texture Font.
This commit is contained in:
@@ -1347,9 +1347,9 @@ static void v3d_posearmature_buts(uiBlock *block, Object *ob, float lim)
|
|||||||
uiDefButF(block, NUM, B_ARMATUREPANEL2, "LocY:", 10, 50, 140, 19, bone->loc+1, -lim, lim, 100, 3, "");
|
uiDefButF(block, NUM, B_ARMATUREPANEL2, "LocY:", 10, 50, 140, 19, bone->loc+1, -lim, lim, 100, 3, "");
|
||||||
uiDefButF(block, NUM, B_ARMATUREPANEL2, "locZ:", 10, 30, 140, 19, bone->loc+2, -lim, lim, 100, 3, "");
|
uiDefButF(block, NUM, B_ARMATUREPANEL2, "locZ:", 10, 30, 140, 19, bone->loc+2, -lim, lim, 100, 3, "");
|
||||||
uiBlockBeginAlign(block);
|
uiBlockBeginAlign(block);
|
||||||
uiDefButF(block, NUM, B_ARMATUREPANEL2, "SizeX:", 160, 70, 140, 19, bone->size, -lim, lim, 100, 3, "");
|
uiDefButF(block, NUM, B_ARMATUREPANEL2, "SizeX:", 160, 70, 140, 19, bone->size, -lim, lim, 10, 3, "");
|
||||||
uiDefButF(block, NUM, B_ARMATUREPANEL2, "SizeY:", 160, 50, 140, 19, bone->size+1, -lim, lim, 100, 3, "");
|
uiDefButF(block, NUM, B_ARMATUREPANEL2, "SizeY:", 160, 50, 140, 19, bone->size+1, -lim, lim, 10, 3, "");
|
||||||
uiDefButF(block, NUM, B_ARMATUREPANEL2, "SizeZ:", 160, 30, 140, 19, bone->size+2, -lim, lim, 100, 3, "");
|
uiDefButF(block, NUM, B_ARMATUREPANEL2, "SizeZ:", 160, 30, 140, 19, bone->size+2, -lim, lim, 10, 3, "");
|
||||||
uiBlockEndAlign(block);
|
uiBlockEndAlign(block);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1607,9 +1607,9 @@ static void view3d_panel_object(short cntrl) // VIEW3D_HANDLER_OBJECT
|
|||||||
uiDefButF(block, NUM, B_OBJECTPANELROT, "RotY:", 10, 50, 140, 19, &(ob_eul[1]), -lim, lim, 1000, 3, "");
|
uiDefButF(block, NUM, B_OBJECTPANELROT, "RotY:", 10, 50, 140, 19, &(ob_eul[1]), -lim, lim, 1000, 3, "");
|
||||||
uiDefButF(block, NUM, B_OBJECTPANELROT, "RotZ:", 10, 30, 140, 19, &(ob_eul[2]), -lim, lim, 1000, 3, "");
|
uiDefButF(block, NUM, B_OBJECTPANELROT, "RotZ:", 10, 30, 140, 19, &(ob_eul[2]), -lim, lim, 1000, 3, "");
|
||||||
uiBlockBeginAlign(block);
|
uiBlockBeginAlign(block);
|
||||||
uiDefButF(block, NUM, REDRAWVIEW3D, "SizeX:", 160, 70, 140, 19, &(ob->size[0]), -lim, lim, 100, 3, "");
|
uiDefButF(block, NUM, REDRAWVIEW3D, "SizeX:", 160, 70, 140, 19, &(ob->size[0]), -lim, lim, 10, 3, "");
|
||||||
uiDefButF(block, NUM, REDRAWVIEW3D, "SizeY:", 160, 50, 140, 19, &(ob->size[1]), -lim, lim, 100, 3, "");
|
uiDefButF(block, NUM, REDRAWVIEW3D, "SizeY:", 160, 50, 140, 19, &(ob->size[1]), -lim, lim, 10, 3, "");
|
||||||
uiDefButF(block, NUM, REDRAWVIEW3D, "SizeZ:", 160, 30, 140, 19, &(ob->size[2]), -lim, lim, 100, 3, "");
|
uiDefButF(block, NUM, REDRAWVIEW3D, "SizeZ:", 160, 30, 140, 19, &(ob->size[2]), -lim, lim, 10, 3, "");
|
||||||
uiBlockEndAlign(block);
|
uiBlockEndAlign(block);
|
||||||
}
|
}
|
||||||
uiClearButLock();
|
uiClearButLock();
|
||||||
|
|||||||
@@ -3020,12 +3020,12 @@ static void moveareas(ScrEdge *edge)
|
|||||||
if((dir=='h') && v1->vec.y>0 && v1->vec.y<G.curscreen->sizey-1) {
|
if((dir=='h') && v1->vec.y>0 && v1->vec.y<G.curscreen->sizey-1) {
|
||||||
v1->vec.y+= delta;
|
v1->vec.y+= delta;
|
||||||
|
|
||||||
/* with these lines commented out you can pull the top bar exact to the screen border. */
|
v1->vec.y+= AREAGRID-1;
|
||||||
/* if(delta != bigger && delta != -smaller) { */
|
v1->vec.y-= (v1->vec.y % AREAGRID);
|
||||||
v1->vec.y+= AREAGRID-1;
|
|
||||||
v1->vec.y-= (v1->vec.y % AREAGRID);
|
|
||||||
|
|
||||||
/* } */
|
/* prevent too small top header */
|
||||||
|
if(v1->vec.y > G.curscreen->sizey-HEADERY)
|
||||||
|
v1->vec.y= G.curscreen->sizey-HEADERY;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
v1->flag= 0;
|
v1->flag= 0;
|
||||||
|
|||||||
@@ -824,24 +824,37 @@ void postSelectConstraint(TransInfo *t)
|
|||||||
|
|
||||||
void setNearestAxis(TransInfo *t)
|
void setNearestAxis(TransInfo *t)
|
||||||
{
|
{
|
||||||
short coord[2];
|
float zfac, coord[2];
|
||||||
float mvec[3], axis[3], proj[3];
|
float mvec[3], axis[3], proj[3];
|
||||||
float len[3];
|
float len[3];
|
||||||
|
short mval[2];
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
t->con.mode &= ~CON_AXIS0;
|
t->con.mode &= ~CON_AXIS0;
|
||||||
t->con.mode &= ~CON_AXIS1;
|
t->con.mode &= ~CON_AXIS1;
|
||||||
t->con.mode &= ~CON_AXIS2;
|
t->con.mode &= ~CON_AXIS2;
|
||||||
|
|
||||||
getmouseco_areawin(coord);
|
getmouseco_areawin(mval);
|
||||||
mvec[0] = (float)(coord[0] - t->con.imval[0]);
|
mvec[0] = (float)(mval[0] - t->con.imval[0]);
|
||||||
mvec[1] = (float)(coord[1] - t->con.imval[1]);
|
mvec[1] = (float)(mval[1] - t->con.imval[1]);
|
||||||
mvec[2] = 0.0f;
|
mvec[2] = 0.0f;
|
||||||
|
|
||||||
for (i = 0; i<3; i++) {
|
for (i = 0; i<3; i++) {
|
||||||
VECCOPY(axis, t->con.mtx[i]);
|
VECCOPY(axis, t->con.mtx[i]);
|
||||||
|
|
||||||
|
/* we need to correct axis length for the current zoomlevel of view,
|
||||||
|
this to prevent projected values to be clipped behind the camera.
|
||||||
|
code is actually a copy of initgrabz() in view.c.
|
||||||
|
Vector is made 30 pixels long, which is fine for accurate axis choosing. (ton)
|
||||||
|
*/
|
||||||
|
zfac= G.vd->persmat[0][3]*axis[0]+ G.vd->persmat[1][3]*axis[1]+ G.vd->persmat[2][3]*axis[2]+ G.vd->persmat[3][3];
|
||||||
|
zfac= 30.0*zfac/(float)curarea->winx;
|
||||||
|
VecMulf(axis, zfac);
|
||||||
|
|
||||||
|
/* now we can project to get window coordinate */
|
||||||
VecAddf(axis, axis, t->con.center);
|
VecAddf(axis, axis, t->con.center);
|
||||||
project_short_noclip(axis, coord);
|
project_float(axis, coord);
|
||||||
|
|
||||||
axis[0] = (float)(coord[0] - t->center2d[0]);
|
axis[0] = (float)(coord[0] - t->center2d[0]);
|
||||||
axis[1] = (float)(coord[1] - t->center2d[1]);
|
axis[1] = (float)(coord[1] - t->center2d[1]);
|
||||||
axis[2] = 0.0f;
|
axis[2] = 0.0f;
|
||||||
|
|||||||
Reference in New Issue
Block a user