X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fdesigner%2Fdesigner.cpp;h=3c3f83c903bb4592a712af1f039c957c63b91e8a;hb=a5e1363ceac1ab552849640c9021fcda362c4416;hp=61f0d9c00fb495ca08b98ec6654858a2c550d0b4;hpb=107a7f787d406f1f664c4986557f9a896e0845ea;p=r2c2.git diff --git a/source/designer/designer.cpp b/source/designer/designer.cpp index 61f0d9c..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) @@ -658,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) @@ -673,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)); } } @@ -692,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)); } }