+ main_view = new View3D(*layout_3d, window.get_width(), window.get_height());
+ GL::Pipeline *pipeline = &main_view->get_pipeline();
+
+ GL::PipelinePass *pass = &pipeline->add_pass("unlit");
+ pass->depth_test = &GL::DepthTest::lequal();
+ pass->blend = &GL::Blend::alpha();
+
+ pass = &pipeline->add_pass("blended");
+ pass->lighting = &layout_3d->get_lighting();
+ pass->depth_test = &GL::DepthTest::lequal();
+ pass->blend = &GL::Blend::alpha();
+
+ pass = &pipeline->add_pass("overlay");
+ pass->blend = &GL::Blend::alpha();
+
+ 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
+ root.signal_key_press.connect(sigc::mem_fun(this, &Designer::key_press));
+ root.signal_button_press.connect(sigc::mem_fun(this, &Designer::button_press));
+ root.signal_pointer_motion.connect(sigc::mem_fun(this, &Designer::pointer_motion));
+ root.signal_tooltip.connect(sigc::mem_fun(this, &Designer::tooltip));
+
+ toolbars.push_back(new Layoutbar(*this));
+ toolbars.push_back(new Trackbar(*this));
+ toolbars.push_back(new Routebar(*this));
+ toolbars.push_back(new Zonebar(*this));
+ 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(this, &Designer::arrange_toolbars)));
+ }
+ arrange_toolbars();
+
+ GLtk::Panel *statusbar = new GLtk::Panel;
+ root.add(*statusbar);
+ statusbar->set_size(window.get_width(), 20);
+ statusbar->set_focusable(false);
+
+ lbl_status = new GLtk::Label;
+ 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");
+ overlay = new Overlay3D(ui_res.get_default_font());
+ pipeline->add_renderable_for_pass(*overlay, "overlay");
+
+ camera_ctl = new CameraController(*main_view, root);
+ 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);