X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fengineer%2Fengineer.cpp;h=fb21f9917b0e718b4031e0e8a42937aea3375d67;hb=05b95b6b6b095821f1e79dabed802b853c296c9d;hp=f89fbd174d061aad7b5838a885de09976f8390dc;hpb=5fa009f4af8d0a2e4f52929e1ee29f5c93986ab6;p=r2c2.git diff --git a/source/engineer/engineer.cpp b/source/engineer/engineer.cpp index f89fbd1..fb21f99 100644 --- a/source/engineer/engineer.cpp +++ b/source/engineer/engineer.cpp @@ -42,12 +42,7 @@ Engineer::Engineer(int argc, char **argv): layout(catalogue, (options.driver.empty() ? 0 : Driver::create(options.driver))), layout_3d(layout), server(0), - main_view(layout_3d, window.get_width(), window.get_height()), - picking(false), - picking_track(0), - picking_entry(0), - picking_path(0), - pointer_moved(false) + main_view(layout_3d, window.get_width(), window.get_height()) { // Setup GUI window.set_title("Railroad Engineer"); @@ -81,7 +76,7 @@ Engineer::Engineer(int argc, char **argv): const set &tracks = layout.get_all(); for(set::const_iterator i=tracks.begin(); i!=tracks.end(); ++i) if((*i)->get_type().is_turnout()) - new Path3D(layout_3d.get(**i)); + new Path3D(layout_3d.get_3d(**i)); if(FS::exists(options.state_fn)) DataFile::load(layout, options.state_fn); @@ -93,8 +88,6 @@ Engineer::Engineer(int argc, char **argv): } // Setup 3D view - DataFile::load(arrow_mesh, "arrow.mesh"); - GL::Pipeline &pipeline = main_view.get_pipeline(); GL::Pipeline::Pass *pass = &pipeline.add_pass("unlit"); @@ -151,13 +144,6 @@ void Engineer::remove_train_view(TrainView &tv) train_views.erase(remove(train_views.begin(), train_views.end(), &tv), train_views.end()); } -void Engineer::pick(bool with_ep) -{ - picking = true; - picking_track = 0; - picking_entry = (with_ep ? 0 : -1); -} - int Engineer::main() { window.show(); @@ -189,40 +175,6 @@ void Engineer::tick() main_view.render(); - if(pointer_moved) - { - pointer_moved = false; - - if(picking) - { - Track *track = dynamic_cast(pick_object(pointer)); - if(track && track!=picking_track) - { - picking_track = track; - if(picking_entry>=0) - picking_entry = 0; - - delete picking_path; - picking_path = new Path3D(layout_3d.get(*track)); - picking_path->set_color(GL::Color(0)); - picking_path->set_layer(2); - } - } - } - - if(picking && picking_track && picking_entry>=0) - { - main_view.get_camera().apply(); - GL::MatrixStack::Push push_mat(GL::MatrixStack::modelview()); - - Snap sn = picking_track->get_snap_node(picking_entry); - - GL::MatrixStack::modelview() *= GL::Matrix::translation(sn.position+GL::Vector3(0, 0, 0.03)); - GL::MatrixStack::modelview() *= GL::Matrix::rotation(sn.rotation+Angle::half_turn(), 0, 0, 1); - - arrow_mesh.draw(); - } - root->render(); window.swap_buffers(); @@ -230,21 +182,7 @@ void Engineer::tick() void Engineer::button_press(unsigned btn) { - if(picking) - { - if(btn==1 && picking_track) - { - picking = false; - delete picking_path; - picking_path = 0; - signal_pick_done.emit(picking_track, picking_entry); - } - else if(btn==3 && picking_entry>=0) - { - picking_entry = (picking_entry+1)%picking_track->get_type().get_endpoints().size(); - } - } - else + if(btn==1) { Object *obj = pick_object(pointer); if(Track *track = dynamic_cast(obj)) @@ -291,7 +229,6 @@ void Engineer::axis_motion(unsigned axis, float value, float) pointer.x = value; if(axis==1) pointer.y = value; - pointer_moved = true; } void Engineer::view_all() @@ -355,7 +292,7 @@ Object *Engineer::pick_object(const Vector &p) void Engineer::process_new_train(Train &train) { - Vehicle3D &loco3d = layout_3d.get(train.get_vehicle(0)); + Vehicle3D &loco3d = layout_3d.get_3d(train.get_vehicle(0)); overlay->set_label(loco3d, train.get_name()); train.signal_name_changed.connect(sigc::bind<0>(sigc::mem_fun(overlay, &Overlay3D::set_label), sigc::ref(loco3d))); }