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)
{
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(Ray(cpos, Vector(cray)));
+ 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);