Revision: 6794
          http://playerstage.svn.sourceforge.net/playerstage/?rev=6794&view=rev
Author:   jeremy_asher
Date:     2008-07-07 16:15:09 -0700 (Mon, 07 Jul 2008)

Log Message:
-----------
Fixed world position jumping on ctrl+move in some situations

Modified Paths:
--------------
    code/stage/trunk/libstage/canvas.cc

Modified: code/stage/trunk/libstage/canvas.cc
===================================================================
--- code/stage/trunk/libstage/canvas.cc 2008-07-07 22:47:14 UTC (rev 6793)
+++ code/stage/trunk/libstage/canvas.cc 2008-07-07 23:15:09 UTC (rev 6794)
@@ -69,7 +69,7 @@
   current_camera = &camera;
   setDirtyBuffer();
        
-  startx = starty = 0;
+  startx = starty = -1;
   //panx = pany = stheta = sphi = 0.0;
   //scale = 15.0;
   interval = 50; //msec between redraws
@@ -255,35 +255,38 @@
                return 1;
                        
        case FL_MOVE: // moused moved while no button was pressed
-               if( Fl::event_state( FL_CTRL ) )
-               {          
-                       int dx = Fl::event_x() - startx;
-                       int dy = Fl::event_y() - starty;
+               if ( startx >=0 ) {
+                       // mouse pointing to valid value
+                       
+                       if( Fl::event_state( FL_CTRL ) )
+                       {
+                               int dx = Fl::event_x() - startx;
+                               int dy = Fl::event_y() - starty;
 
-                       if( perspectiveCam == true ) {
-                               perspective_camera.addYaw( -dx );
-                               perspective_camera.addPitch( -dy );
-                       } 
-                       else {
-                               camera.setPitch( 0.5 * static_cast<double>( dy 
) );
-                               camera.setYaw( 0.5 * static_cast<double>( dx ) 
);
+                               if( perspectiveCam == true ) {
+                                       perspective_camera.addYaw( -dx );
+                                       perspective_camera.addPitch( -dy );
+                               } 
+                               else {
+                                       camera.setPitch( 0.5 * 
static_cast<double>( dy ) );
+                                       camera.setYaw( 0.5 * 
static_cast<double>( dx ) );
+                               }
+                               invalidate();
+                               redraw();
                        }
-                       invalidate();
-                       redraw();
-               }
-               else if( Fl::event_state( FL_ALT ) )
-               {   
-                       int dx = Fl::event_x() - startx;
-                       int dy = Fl::event_y() - starty;
+                       else if( Fl::event_state( FL_ALT ) )
+                       {   
+                               int dx = Fl::event_x() - startx;
+                               int dy = Fl::event_y() - starty;
 
-                       if( perspectiveCam == true ) {
-                               perspective_camera.move( -dx, dy, 0.0 );
-                       } 
-                       else {
-                               camera.move( -dx, dy );
+                               if( perspectiveCam == true ) {
+                                       perspective_camera.move( -dx, dy, 0.0 );
+                               } 
+                               else {
+                                       camera.move( -dx, dy );
+                               }
+                               invalidate();
                        }
-                       invalidate();
-
                }
                startx = Fl::event_x();
                starty = Fl::event_y();


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

-------------------------------------------------------------------------
Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW!
Studies have shown that voting for your favorite open source project,
along with a healthy diet, reduces your potential for chronic lameness
and boredom. Vote Now at http://www.sourceforge.net/community/cca08
_______________________________________________
Playerstage-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/playerstage-commit

Reply via email to