/* $Id$
This file is part of the MSP Märklin suite
-Copyright © 2006-2009 Mikkosoft Productions, Mikko Rasa
+Copyright © 2006-2010 Mikkosoft Productions, Mikko Rasa
Distributed under the GPL
*/
{
filename = argv[1];
DataFile::load(*layout, argv[1]);
- const list<Track3D *> <racks = layout_3d->get_tracks();
- for(list<Track3D *>::const_iterator i=ltracks.begin(); i!=ltracks.end(); ++i)
- update_track_color(**i);
if(!layout->get_base().empty())
{
root->add(*toolbar);
toolbar->set_position(0, window.get_height()-toolbar->get_geometry().h);
toolbar->set_visible(true);
+
+ overlay = new Overlay3D(window, camera, ui_res.get_default_font());
+
+ const list<Track3D *> &tracks = layout_3d->get_tracks();
+ for(list<Track3D *>::const_iterator i=tracks.begin(); i!=tracks.end(); ++i)
+ update_track_icon(**i);
}
Designer::~Designer()
{
+ delete overlay;
delete root;
- delete layout;
+ delete pipeline;
+ delete base_object;
delete layout_3d;
+ delete layout;
delete cat_layout_3d;
}
selection.clear();
for(set<Track *>::iterator i=tracks.begin(); i!=tracks.end(); ++i)
{
+ overlay->clear(layout_3d->get_track(**i));
layout->remove_track(**i);
delete *i;
}
if(*j!=*i)
(*i)->snap_to(**j, true);
- update_track_color(layout_3d->get_track(**i));
+ update_track_icon(layout_3d->get_track(**i));
}
}
else if(key==Msp::Input::KEY_F)
pipeline->render_all();
layout_3d->get_endpoint_scene().render();
GL::enable(GL_CULL_FACE);
+ GL::disable(GL::DEPTH_TEST);
+ overlay->render(0);
+ GL::enable(GL::DEPTH_TEST);
/*if(cur_route)
{
glColor4f(0.5, 0.8, 1.0, 1.0);
return l->pick_track(xx, yy, size);
}
-void Designer::update_track_color(Track3D &track)
+void Designer::update_track_icon(Track3D &track)
{
- if(track.get_track().get_sensor_id())
+ overlay->clear(track);
+
+ if(track.get_track().get_flex())
+ overlay->add_graphic(track, "flex");
+
+ if(unsigned sid = track.get_track().get_sensor_id())
{
- if(track.get_track().get_flex())
- track.set_color(GL::Color(1, 0.6, 1));
- else
- track.set_color(GL::Color(0.7, 0.7, 1));
+ overlay->add_graphic(track, "sensor");
+ overlay->set_label(track, lexical_cast(sid));
+ }
+ else if(unsigned tid = track.get_track().get_turnout_id())
+ {
+ overlay->add_graphic(track, "turnout");
+ overlay->set_label(track, lexical_cast(tid));
}
- else if(track.get_track().get_turnout_id())
- track.set_color(GL::Color(0.8, 1, 0.8));
- else if(track.get_track().get_flex())
- track.set_color(GL::Color(1, 0.8, 0.8));
- else
- track.set_color(GL::Color(1, 1, 1));
}
void Designer::manipulation_status(const string &status)
unsigned id = lexical_cast<unsigned>(input->get_text());
track->set_turnout_id(id);
- update_track_color(layout_3d->get_track(*track));
+ update_track_icon(layout_3d->get_track(*track));
input_dismiss();
}
{
(*i)->set_sensor_id(id);
- update_track_color(layout_3d->get_track(**i));
+ update_track_icon(layout_3d->get_track(**i));
}
input_dismiss();