X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fdesigner%2Fdesigner.cpp;h=3c3f83c903bb4592a712af1f039c957c63b91e8a;hb=5116fff210cdc3f0fbdae13046cc60450aad5e8f;hp=930df589b7f7726d3b8f9a8af9aa223dbbaf4de4;hpb=7fac28fcb5afb17eff7c459474e4cf884a02719c;p=r2c2.git diff --git a/source/designer/designer.cpp b/source/designer/designer.cpp index 930df58..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]; @@ -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(**i).get_path().set_mask(0); - new_tracks.clear(); - render(); window.swap_buffers(); @@ -525,22 +518,6 @@ void Designer::render() root.render(); } -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) { View3D &view = *(mode==CATALOGUE ? cat_view : main_view); @@ -656,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(**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) @@ -672,14 +646,10 @@ void Designer::show_route(const Route &route) for(set::iterator i=rtracks.begin(); i!=rtracks.end(); ++i) { Track3D &t3d = layout_3d->get(**i); - t3d.get_path().set_color(GL::Color(0.5, 0.8, 1.0)); - int path = -1; + 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)); } } @@ -691,7 +661,7 @@ void Designer::show_zone(const Zone &zone) for(Zone::TrackSet::const_iterator i=ztracks.begin(); i!=ztracks.end(); ++i) { Track3D &t3d = layout_3d->get(**i); - t3d.get_path().set_color(GL::Color(0.8, 1.0, 0.5)); - t3d.get_path().set_mask((*i)->get_type().get_paths()); + Path3D *path = new Path3D(t3d); + path->set_color(GL::Color(0.8, 1.0, 0.5)); } }