+ if(base_object)
+ pipeline->add_renderable(*base_object);
+ pipeline->add_renderable_for_pass(layout_3d->get_path_scene(), "unlit");
+ pipeline->add_renderable_for_pass(layout_3d->get_endpoint_scene(), "unlit");
+
+ // Setup UI
+ keyboard.signal_button_press.connect(sigc::bind_return(sigc::mem_fun(this, &Designer::key_press), false));
+ mouse.signal_button_press.connect(sigc::bind_return(sigc::mem_fun(this, &Designer::button_press), false));
+ mouse.signal_axis_motion.connect(sigc::bind_return(sigc::mem_fun(this, &Designer::axis_motion), false));
+ root.signal_tooltip.connect(sigc::mem_fun(this, &Designer::tooltip));
+ root_layout = new GLtk::Layout;
+ root_layout->set_margin(0);
+ root.set_layout(root_layout);
+
+ toolbars.push_back(new Layoutbar(*this));
+ toolbars.push_back(new Trackbar(*this));
+ toolbars.push_back(new Routebar(*this));
+ toolbars.push_back(new Zonebar(*this));
+ Toolbar *prev = 0;
+ for(vector<Toolbar *>::iterator i=toolbars.begin(); i!=toolbars.end(); ++i)
+ {
+ root.add(**i);
+ if(i!=toolbars.begin())
+ (*i)->expand(false);
+ (*i)->signal_expanded.connect(sigc::hide(sigc::mem_fun(root_layout, &GLtk::Layout::update)));
+ if(prev)
+ {
+ root_layout->add_constraint(**i, GLtk::Layout::RIGHT_OF, *prev, 0);
+ root_layout->add_constraint(**i, GLtk::Layout::COPY_HEIGHT, *prev);
+ }
+ prev = *i;
+ }
+
+ GLtk::Panel *statusbar = new GLtk::Panel;
+ root.add(*statusbar);
+ statusbar->set_focusable(false);
+ root_layout->set_gravity(*statusbar, -1, -1);
+ root_layout->set_expand(*statusbar, true, false);
+
+ lbl_status = new GLtk::Label;
+ statusbar->add(*lbl_status);
+ lbl_status->set_geometry(GLtk::Geometry(20, 2, 300, 16));
+
+ 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");
+
+ camera_ctl = new CameraController(*main_view, keyboard, mouse);
+ cat_view->get_camera().set_look_direction(GL::Vector3(0, 0.13053, -0.99144));
+ 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);