Revision: 16816
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=16816
Author: aligorith
Date: 2008-09-29 10:11:26 +0200 (Mon, 29 Sep 2008)
Log Message:
-----------
Bugfix:
Recoded pidhash's recent Pad0 (Lastview) commits (r.16802 and r.16810). It was
causing major issues with Ortho perspective + rotating the view with the MMB.
Setting G.vd->view to -1 was not such a valid way to do so (and also, this
didn't play nicely with smoothview).
This feature should now work correctly, though there are still one or two
places where it doesn't always seem totally correct yet.
The basic idea of this feature, is that after going into camera mode (Pad0),
pressing Pad0 again lets you go back to the view as you had it before entering
camera mode.
Modified Paths:
--------------
trunk/blender/source/blender/makesdna/DNA_view3d_types.h
trunk/blender/source/blender/src/space.c
trunk/blender/source/blender/src/toets.c
trunk/blender/source/blender/src/view.c
Modified: trunk/blender/source/blender/makesdna/DNA_view3d_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_view3d_types.h 2008-09-29
08:00:38 UTC (rev 16815)
+++ trunk/blender/source/blender/makesdna/DNA_view3d_types.h 2008-09-29
08:11:26 UTC (rev 16816)
@@ -147,8 +147,9 @@
/* last view */
float lviewquat[4];
- short lpersp, pad4;
- int pad5;
+ short lpersp, lview;
+ short lastview_set;
+ short pad5;
} View3D;
Modified: trunk/blender/source/blender/src/space.c
===================================================================
--- trunk/blender/source/blender/src/space.c 2008-09-29 08:00:38 UTC (rev
16815)
+++ trunk/blender/source/blender/src/space.c 2008-09-29 08:11:26 UTC (rev
16816)
@@ -1709,7 +1709,6 @@
break;
case MIDDLEMOUSE:
handle_view_middlemouse();
- G.vd->view = -1;
break;
case RIGHTMOUSE:
if((G.obedit) && (G.qual & LR_CTRLKEY)==0) {
Modified: trunk/blender/source/blender/src/toets.c
===================================================================
--- trunk/blender/source/blender/src/toets.c 2008-09-29 08:00:38 UTC (rev
16815)
+++ trunk/blender/source/blender/src/toets.c 2008-09-29 08:11:26 UTC (rev
16816)
@@ -289,9 +289,22 @@
if(G.vd->persp==V3D_PERSP)
G.vd->persp=V3D_ORTHO;
else G.vd->persp=V3D_PERSP;
}
- G.vd->lpersp = G.vd->persp;
}
else if(event==PAD0) {
+ /* lastview - */
+ if(G.vd->lastview_set==0) {
+ /* store settings of current view before
allowing overwriting with camera view */
+ QUATCOPY(G.vd->lviewquat, G.vd->viewquat);
+ G.vd->lview= G.vd->view;
+ G.vd->lpersp= G.vd->persp;
+ G.vd->lastview_set= 1;
+ }
+ else if(G.vd->lastview_set) {
+ /* return to settings of last view */
+ axis_set_view(G.vd->lviewquat[0],
G.vd->lviewquat[1], G.vd->lviewquat[2], G.vd->lviewquat[3], G.vd->lview,
G.vd->lpersp);
+ G.vd->lastview_set= 0;
+ }
+
if(G.qual==LR_ALTKEY) {
if(oldcamera && is_an_active_object(oldcamera))
{
G.vd->camera= oldcamera;
@@ -314,18 +327,12 @@
handle_view3d_lock();
}
}
+
if(G.vd->camera==0) {
G.vd->camera= scene_find_camera(G.scene);
handle_view3d_lock();
}
- if(!G.vd->view) {
- QUATCOPY(G.vd->viewquat, G.vd->lviewquat);
- G.vd->persp = G.vd->lpersp;
- }
- else {
- QUATCOPY(G.vd->lviewquat, G.vd->viewquat);
- G.vd->lpersp = G.vd->persp;
- }
+
if(G.vd->camera && (G.vd->camera != act_cam_orig)) {
G.vd->persp= V3D_CAMOB;
G.vd->view= 0;
@@ -350,8 +357,6 @@
VECCOPY(G.vd->ofs, orig_ofs);
G.vd->lens = orig_lens;
}
-
-
}
}
else if(event==PAD9) {
@@ -370,11 +375,6 @@
q1[1]= q1[2]= 0.0;
q1[3]= si;
QuatMul(G.vd->viewquat, G.vd->viewquat, q1);
-
- QUATCOPY(G.vd->lviewquat, G.vd->viewquat);
- G.vd->lpersp = G.vd->persp;
-
- G.vd->view= 0;
}
if(event==PAD2 || event==PAD8) {
/* horizontal axis */
@@ -389,11 +389,6 @@
q1[2]*= si;
q1[3]*= si;
QuatMul(G.vd->viewquat, G.vd->viewquat, q1);
-
- QUATCOPY(G.vd->lviewquat, G.vd->viewquat);
- G.vd->lpersp = G.vd->persp;
-
- G.vd->view= 0;
}
}
Modified: trunk/blender/source/blender/src/view.c
===================================================================
--- trunk/blender/source/blender/src/view.c 2008-09-29 08:00:38 UTC (rev
16815)
+++ trunk/blender/source/blender/src/view.c 2008-09-29 08:11:26 UTC (rev
16816)
@@ -894,6 +894,11 @@
return;
}
+ /* clear lastview flag (used to return to previous view when
+ * pressing Pad0 again after entering Camera view)
+ */
+ if (G.vd->lastview_set) G.vd->lastview_set= 0;
+
// dist correction from other movement devices
if((dz_flag)||G.vd->dist==0) {
dz_flag = 0;
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs