cur_route(0),
cur_zone(0),
mode(SELECT),
+ sel_wrap(selection),
manipulator(*this, mouse, selection),
measure(*this)
{
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");
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;
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()
{
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)
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();
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)
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);
}