X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fdesigner%2Fdesigner.cpp;h=3c3f83c903bb4592a712af1f039c957c63b91e8a;hb=62a0fdcdf9064f3b1748ffedc3e8de271cd4acbc;hp=04e15d34c5e5a023d0b3cc514c70f8faff95f800;hpb=d32eab21ebacb78500dc46af5b5a6354a9a37fe2;p=r2c2.git diff --git a/source/designer/designer.cpp b/source/designer/designer.cpp index 04e15d3..3c3f83c 100644 --- a/source/designer/designer.cpp +++ b/source/designer/designer.cpp @@ -68,9 +68,6 @@ Designer::Designer(int argc, char **argv): layout = new Layout(catalogue); layout_3d = new Layout3D(*layout); - layout->signal_object_added.connect(sigc::mem_fun(this, &Designer::object_added)); - layout->signal_object_removed.connect(sigc::mem_fun(this, &Designer::object_removed)); - if(argc>1) { filename = argv[1]; @@ -154,9 +151,9 @@ Designer::Designer(int argc, char **argv): cat_view->view_all(true); main_view->view_all(); - const Layout3D::TrackMap &tracks = layout_3d->get_tracks(); - for(Layout3D::TrackMap::const_iterator i=tracks.begin(); i!=tracks.end(); ++i) - update_track_icon(*i->second); + const set &tracks = layout->get_all(); + for(set::const_iterator i=tracks.begin(); i!=tracks.end(); ++i) + update_track_icon(layout_3d->get(**i)); } Designer::~Designer() @@ -213,7 +210,7 @@ void Designer::erase_tracks() selection.clear(); for(set::iterator i=tracks.begin(); i!=tracks.end(); ++i) { - overlay->clear(layout_3d->get_track(**i)); + overlay->clear(layout_3d->get(**i)); delete *i; } } @@ -361,10 +358,6 @@ void Designer::tick() root.tick(); camera_ctl->tick(dt); - for(list::iterator i=new_tracks.begin(); i!=new_tracks.end(); ++i) - layout_3d->get_track(**i).get_path().set_mask(0); - new_tracks.clear(); - render(); window.swap_buffers(); @@ -435,7 +428,7 @@ void Designer::key_press(unsigned key) if(*j!=*i) (*i)->snap_to(**j, true); - update_track_icon(layout_3d->get_track(**i)); + update_track_icon(layout_3d->get(**i)); } } else if(key==Msp::Input::KEY_F) @@ -523,24 +516,6 @@ void Designer::render() view->render(); root.render(); - // XXX Should fix GLtk so this would not be needed - glColor3f(1.0, 1.0, 1.0); -} - -void Designer::object_added(Object &obj) -{ - if(Track *trk = dynamic_cast(&obj)) - new_tracks.push_back(trk); -} - -void Designer::object_removed(Object &obj) -{ - if(Track *trk = dynamic_cast(&obj)) - { - list::iterator i = find(new_tracks.begin(), new_tracks.end(), trk); - if(i!=new_tracks.end()) - new_tracks.erase(i); - } } Object *Designer::pick_object(const Vector &pointer) @@ -619,7 +594,7 @@ void Designer::track_properties_response(int) { const set &tracks = selection.get_objects(); for(set::const_iterator i=tracks.begin(); i!=tracks.end(); ++i) - update_track_icon(layout_3d->get_track(**i)); + update_track_icon(layout_3d->get(**i)); } void Designer::route_name_accept(const string &text) @@ -643,9 +618,8 @@ string Designer::tooltip(int x, int y) string info = format("%d %s", otype.get_article_number(), otype.get_description()); if(Track *track = dynamic_cast(obj)) { - const TrackType &ttype = track->get_type(); - if(mode!=CATALOGUE && abs(track->get_slope())>1e-4) - info += format(" (slope %.1f%%)", abs(track->get_slope()/ttype.get_total_length()*100)); + if(mode!=CATALOGUE && abs(track->get_tilt()).radians()>1e-4) + info += format(" (slope %.1f%%)", abs(tan(track->get_tilt())*100)); if(track->get_turnout_id()) info += format(" (turnout %d)", track->get_turnout_id()); else if(track->get_sensor_id()) @@ -659,12 +633,9 @@ string Designer::tooltip(int x, int y) void Designer::clear_paths() { - const set <racks = layout->get_all(); - for(set::iterator i=ltracks.begin(); i!=ltracks.end(); ++i) - { - Track3D &t3d = layout_3d->get_track(**i); - t3d.get_path().set_mask(0); - } + for(list::iterator i=highlight_paths.begin(); i!=highlight_paths.end(); ++i) + delete *i; + highlight_paths.clear(); } void Designer::show_route(const Route &route) @@ -674,15 +645,11 @@ void Designer::show_route(const Route &route) const set &rtracks = route.get_tracks(); for(set::iterator i=rtracks.begin(); i!=rtracks.end(); ++i) { - Track3D &t3d = layout_3d->get_track(**i); - t3d.get_path().set_color(GL::Color(0.5, 0.8, 1.0)); - int path = -1; + Track3D &t3d = layout_3d->get(**i); + Path3D *path = new Path3D(t3d); + path->set_color(GL::Color(0.5, 0.8, 1.0)); if(unsigned tid = (*i)->get_turnout_id()) - path = route.get_turnout(tid); - if(path>=0) - t3d.get_path().set_path(path); - else - t3d.get_path().set_mask((*i)->get_type().get_paths()); + path->set_path(route.get_turnout(tid)); } } @@ -693,8 +660,8 @@ void Designer::show_zone(const Zone &zone) const Zone::TrackSet &ztracks = zone.get_tracks(); for(Zone::TrackSet::const_iterator i=ztracks.begin(); i!=ztracks.end(); ++i) { - Track3D &t3d = layout_3d->get_track(**i); - t3d.get_path().set_color(GL::Color(0.8, 1.0, 0.5)); - t3d.get_path().set_mask((*i)->get_type().get_paths()); + Track3D &t3d = layout_3d->get(**i); + Path3D *path = new Path3D(t3d); + path->set_color(GL::Color(0.8, 1.0, 0.5)); } }