[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [16816] trunk/blender/source/blender: Bugfix:

Joshua Leung aligorith at gmail.com
Mon Sep 29 10:11:38 CEST 2008


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;





More information about the Bf-blender-cvs mailing list