]> git.tdb.fi Git - r2c2.git/blobdiff - source/designer/designer.cpp
Handle sensors in a separate class
[r2c2.git] / source / designer / designer.cpp
index edbec387d12cc6c7a0a161a5ba2814b862cb1a79..6d4d49d10b1c349138f027988cc1fa0af302afcd 100644 (file)
@@ -47,6 +47,7 @@ Designer::Designer(int argc, char **argv):
        cur_route(0),
        cur_zone(0),
        mode(SELECT),
+       sel_wrap(selection),
        manipulator(*this, mouse, selection),
        measure(*this)
 {
@@ -133,8 +134,7 @@ Designer::Designer(int argc, char **argv):
        statusbar->add(*lbl_status);
        lbl_status->set_geometry(GLtk::Geometry(20, 2, 300, 16));
 
-       track_wrap = new TrackWrap(*layout_3d, selection);
-       pipeline->add_renderable_for_pass(*track_wrap, "unlit");
+       pipeline->add_renderable_for_pass(sel_wrap, "unlit");
        overlay = new Overlay3D(ui_res.get_default_font());
        pipeline->add_renderable_for_pass(*overlay, "overlay");
        pipeline->add_renderable_for_pass(measure, "unlit");
@@ -154,7 +154,6 @@ Designer::~Designer()
        for(vector<Toolbar *>::iterator i=toolbars.begin(); i!=toolbars.end(); ++i)
                delete *i;
        delete camera_ctl;
-       delete track_wrap;
        delete overlay;
        delete main_view;
        delete base_object;
@@ -332,7 +331,7 @@ Vector Designer::map_pointer_to_ground(const Vector &p)
        GL::Vector4 vec = main_view->get_camera().unproject(GL::Vector4(p.x, p.y, 0, 0));
        const GL::Vector3 &pos = main_view->get_camera().get_position();
 
-       return Vector(pos.x-vec.x*pos.z/vec.z, pos.y-vec.y*pos.z/vec.z);
+       return pos-GL::Vector3(vec.x, vec.y, vec.z)*(pos.z/vec.z);
 }
 
 void Designer::tick()
@@ -450,7 +449,7 @@ void Designer::button_press(unsigned btn)
 {
        bool shift = keyboard.get_button_state(Input::KEY_SHIFT_L) || keyboard.get_button_state(Input::KEY_SHIFT_R);
 
-       Vector pointer(mouse.get_axis_value(0), mouse.get_axis_value(1));
+       Vector pointer(mouse.get_axis_value(0), mouse.get_axis_value(1), 0);
        Vector ground = map_pointer_to_ground(pointer);
 
        if(mode==CATALOGUE)
@@ -491,7 +490,7 @@ void Designer::button_press(unsigned btn)
 
 void Designer::axis_motion(unsigned, float, float)
 {
-       Vector pointer(mouse.get_axis_value(0), mouse.get_axis_value(1));
+       Vector pointer(mouse.get_axis_value(0), mouse.get_axis_value(1), 0);
        float wx = pointer.x*window.get_width();
        float wy = pointer.y*window.get_height();
 
@@ -532,7 +531,7 @@ Object *Designer::pick_object(const Vector &pointer)
        const GL::Vector3 &cpos = view.get_camera().get_position();
        GL::Vector4 cray = view.get_camera().unproject(GL::Vector4(pointer.x, pointer.y, 0, 0));
 
-       return view.get_layout().get_layout().pick_object(Vector(cpos.x, cpos.y, cpos.z), Vector(cray.x, cray.y, cray.z));
+       return view.get_layout().get_layout().pick_object(Ray(cpos, Vector(cray)));
 }
 
 void Designer::update_track_icon(Track3D &track)
@@ -587,8 +586,8 @@ void Designer::measure_changed()
        float pard = measure.get_parallel_distance()*1000;
        float perpd = measure.get_perpendicular_distance()*1000;
        float d = sqrt(pard*pard+perpd*perpd);
-       float adiff = measure.get_angle_difference()*180/M_PI;
-       string info = format("Par %.1fmm - Perp %.1fmm - Total %.1fmm - Angle %.1f°", pard, perpd, d, adiff);
+       const Angle &adiff = measure.get_angle_difference();
+       string info = format("Par %.1fmm - Perp %.1fmm - Total %.1fmm - Angle %.1f°", pard, perpd, d, adiff.degrees());
        lbl_status->set_text(info);
 }