+ // Setup OpenGL
+ cat_view = new View3D(*cat_layout_3d, window.get_width(), window.get_height());
+
+ main_view = new View3D(*layout_3d, window.get_width(), window.get_height());
+ GL::Pipeline *pipeline = &main_view->get_pipeline();
+
+ GL::Pipeline::Pass *pass = &pipeline->add_pass("unlit");
+ pass->set_depth_test(&GL::DepthTest::lequal());
+ pass->set_blend(&GL::Blend::alpha());
+
+ pass = &pipeline->add_pass("blended");
+ pass->set_lighting(&layout_3d->get_lighting());
+ pass->set_depth_test(&GL::DepthTest::lequal());
+ pass->set_blend(&GL::Blend::alpha());
+
+ pass = &pipeline->add_pass("overlay");
+ pass->set_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
+ 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));
+ 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;
+ }