[#18021] Rotating gets locked to axis after trackball rotate mode is entered

Reset transform restriction flags when switching to other transformations while running.

Also don't draw constraint if no constraint flag is on (old annoyance).
This commit is contained in:
Martin Poirier 2008-11-23 15:27:53 +00:00
parent 1dca0e1c46
commit 1a28bf797e
4 changed files with 13 additions and 1 deletions

@ -468,6 +468,7 @@ int validSnappingNormal(TransInfo *t);
void initTrans(TransInfo *t);
void postTrans (TransInfo *t);
void resetTransRestrictions(TransInfo *t);
void drawLine(float *center, float *dir, char axis, short options);

@ -737,6 +737,7 @@ static void transformEvent(unsigned short event, short val) {
case GKEY:
/* only switch when... */
if( ELEM3(Trans.mode, TFM_ROTATION, TFM_RESIZE, TFM_TRACKBALL) ) {
resetTransRestrictions(&Trans);
restoreTransObjects(&Trans);
initTranslation(&Trans);
Trans.redraw = 1;
@ -745,6 +746,7 @@ static void transformEvent(unsigned short event, short val) {
case SKEY:
/* only switch when... */
if( ELEM3(Trans.mode, TFM_ROTATION, TFM_TRANSLATION, TFM_TRACKBALL) ) {
resetTransRestrictions(&Trans);
restoreTransObjects(&Trans);
initResize(&Trans);
Trans.redraw = 1;
@ -752,7 +754,9 @@ static void transformEvent(unsigned short event, short val) {
break;
case RKEY:
/* only switch when... */
if( ELEM4(Trans.mode, TFM_ROTATION, TFM_RESIZE, TFM_TRACKBALL, TFM_TRANSLATION) ) {
if( ELEM4(Trans.mode, TFM_ROTATION, TFM_RESIZE, TFM_TRACKBALL, TFM_TRANSLATION) ) {
resetTransRestrictions(&Trans);
if (Trans.mode == TFM_ROTATION) {
restoreTransObjects(&Trans);

@ -685,6 +685,8 @@ void BIF_drawConstraint(void)
return;
if (t->flag & T_USES_MANIPULATOR)
return;
if (t->flag & T_NO_CONSTRAINT)
return;
/* nasty exception for Z constraint in camera view */
if((t->flag & T_OBJECT) && G.vd->camera==OBACT && G.vd->persp==V3D_CAMOB)

@ -649,6 +649,11 @@ void drawLine(float *center, float *dir, char axis, short options)
myloadmatrix(G.vd->viewmat);
}
void resetTransRestrictions(TransInfo *t)
{
t->flag &= ~T_ALL_RESTRICTIONS;
}
void initTrans (TransInfo *t)
{