]> git.tdb.fi Git - r2c2.git/blobdiff - source/designer/manipulator.cpp
Allow rotating the body object of a vehicle
[r2c2.git] / source / designer / manipulator.cpp
index d1e458baed645445fd11f1853b2fb377e0632bc6..2e16311501ee112e6271ce0d9aa7bd3381d1a64c 100644 (file)
@@ -17,8 +17,8 @@ Manipulator::Manipulator(Designer &d, Input::Mouse &m, Selection &s):
        mode(NONE),
        angle(0)
 {
-       mouse.signal_button_press.connect(sigc::mem_fun(this, &Manipulator::button_press));
-       mouse.signal_axis_motion.connect(sigc::mem_fun(this, &Manipulator::axis_motion));
+       mouse.signal_button_press.connect(sigc::bind_return(sigc::mem_fun(this, &Manipulator::button_press), false));
+       mouse.signal_axis_motion.connect(sigc::bind_return(sigc::mem_fun(this, &Manipulator::axis_motion), false));
        selection.signal_changed.connect(sigc::mem_fun(this, &Manipulator::selection_changed));
 }
 
@@ -48,6 +48,8 @@ void Manipulator::start_elevate()
                cancel();
 
        mode = ELEVATE;
+
+       elev_origin = pointer.y;
 }
 
 bool Manipulator::start_extend()
@@ -361,7 +363,7 @@ void Manipulator::button_press(unsigned btn)
        }
 }
 
-void Manipulator::axis_motion(unsigned axis, float value, float change)
+void Manipulator::axis_motion(unsigned axis, float value, float)
 {
        if(axis==0)
                pointer.x = value;
@@ -428,7 +430,7 @@ void Manipulator::axis_motion(unsigned axis, float value, float change)
        }
        else if(mode==ELEVATE && axis==1)
        {
-               float dz = -change;
+               float dz = pointer.y-elev_origin;
 
                signal_status.emit(format("Elevation: %+.0fmm (%.0fmm)", dz*1000, (center.z+dz)*1000));