Reworked the camera dolly/parallel axis constraint code a bit. Works pretty much like the Shrink/Fatten code, meaning pull the mouse toward you pulls the camera, push pushes it away.

Also added a T_CAMERA flag for camera grab, which gets set on TransData conversion.
This commit is contained in:
2005-03-24 21:32:52 +00:00
parent 9e90f1407e
commit 4bcf80bf4f
3 changed files with 33 additions and 29 deletions

View File

@@ -1262,6 +1262,10 @@ static void createTransData(TransInfo *t)
createTransObject();
t->flag |= T_OBJECT;
}
if((t->flag & T_OBJECT) && G.vd->camera==OBACT && G.vd->persp>1) {
t->flag |= T_CAMERA;
}
}
#define TRANS_CANCEL 2
@@ -1376,7 +1380,7 @@ void Transform(int mode)
while( qtest() ) {
event= extern_qread(&val);
if(val) {
if (val) {
switch (event){
/* enforce redraw of transform when modifiers are used */
case LEFTCTRLKEY:
@@ -1388,10 +1392,10 @@ void Transform(int mode)
case MIDDLEMOUSE:
/* exception for switching to dolly, or trackball, in camera view */
if((Trans.flag & T_OBJECT) && G.vd->camera==OBACT && G.vd->persp>1) {
if(Trans.mode==TFM_TRANSLATION)
if (Trans.flag & T_CAMERA) {
if (Trans.mode==TFM_TRANSLATION)
setLocalConstraint(&Trans, (CON_AXIS2), "along local Z");
else if(Trans.mode==TFM_ROTATION) {
else if (Trans.mode==TFM_ROTATION) {
restoreTransObjects(&Trans);
initTransModeFlags(&Trans, TFM_TRACKBALL);
initTrackball(&Trans);
@@ -1424,9 +1428,16 @@ void Transform(int mode)
Trans.redraw = 1;
break;
case RKEY:
restoreTransObjects(&Trans);
initTransModeFlags(&Trans, TFM_ROTATION);
initRotation(&Trans);
if (Trans.mode == TFM_ROTATION) {
restoreTransObjects(&Trans);
initTransModeFlags(&Trans, TFM_TRACKBALL);
initTrackball(&Trans);
}
else {
restoreTransObjects(&Trans);
initTransModeFlags(&Trans, TFM_ROTATION);
initRotation(&Trans);
}
Trans.redraw = 1;
break;
case XKEY: