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