cur_route(0),
cur_zone(0),
mode(SELECT),
+ sel_wrap(selection),
manipulator(*this, mouse, selection),
measure(*this)
{
layout = new Layout(catalogue);
layout_3d = new Layout3D(*layout);
- layout->signal_track_added.connect(sigc::mem_fun(this, &Designer::track_added));
- layout->signal_track_removed.connect(sigc::mem_fun(this, &Designer::track_removed));
+ 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)
{
statusbar->add(*lbl_status);
lbl_status->set_geometry(GLtk::Geometry(20, 2, 300, 16));
- track_wrap = new TrackWrap(*layout_3d, selection);
- pipeline->add_renderable_for_pass(*track_wrap, "unlit");
+ pipeline->add_renderable_for_pass(sel_wrap, "unlit");
overlay = new Overlay3D(ui_res.get_default_font());
pipeline->add_renderable_for_pass(*overlay, "overlay");
pipeline->add_renderable_for_pass(measure, "unlit");
for(vector<Toolbar *>::iterator i=toolbars.begin(); i!=toolbars.end(); ++i)
delete *i;
delete camera_ctl;
- delete track_wrap;
delete overlay;
delete main_view;
delete base_object;
else if(key==Msp::Input::KEY_F && shift)
{
const set<Track *> &tracks = selection.get_objects<Track>();
- const set<Track *> <racks = layout->get_tracks();
+ const set<Track *> <racks = layout->get_all<Track>();
for(set<Track *>::const_iterator i=tracks.begin(); i!=tracks.end(); ++i)
{
(*i)->set_flex(!(*i)->get_flex());
glColor3f(1.0, 1.0, 1.0);
}
-void Designer::track_added(Track &trk)
+void Designer::object_added(Object &obj)
{
- new_tracks.push_back(&trk);
+ if(Track *trk = dynamic_cast<Track *>(&obj))
+ new_tracks.push_back(trk);
}
-void Designer::track_removed(Track &trk)
+void Designer::object_removed(Object &obj)
{
- list<Track *>::iterator i = find(new_tracks.begin(), new_tracks.end(), &trk);
- if(i!=new_tracks.end())
- new_tracks.erase(i);
+ if(Track *trk = dynamic_cast<Track *>(&obj))
+ {
+ list<Track *>::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)
const GL::Vector3 &cpos = view.get_camera().get_position();
GL::Vector4 cray = view.get_camera().unproject(GL::Vector4(pointer.x, pointer.y, 0, 0));
- return view.get_layout().get_layout().pick_object(Vector(cpos.x, cpos.y, cpos.z), Vector(cray.x, cray.y, cray.z));
+ return view.get_layout().get_layout().pick<Object>(Ray(cpos, Vector(cray)));
}
void Designer::update_track_icon(Track3D &track)
void Designer::clear_paths()
{
- const set<Track *> <racks = layout->get_tracks();
+ const set<Track *> <racks = layout->get_all<Track>();
for(set<Track *>::iterator i=ltracks.begin(); i!=ltracks.end(); ++i)
{
Track3D &t3d = layout_3d->get_track(**i);