+ R2C2::View3D main_view;
+ Msp::GL::Mesh arrow_mesh;
+
+ MainWindow *main_wnd;
+ std::list<R2C2::Train *> new_trains;
+ std::list<TrainView *> train_views;
+ Msp::Time::TimeStamp status_timeout;
+ bool picking;
+ R2C2::Track *picking_track;
+ int picking_entry;
+ R2C2::Path3D *picking_path;
+ R2C2::Vector pointer;
+ bool pointer_moved;
+
+public:
+ Engineer(int argc, char **argv);
+ ~Engineer();
+
+ const Msp::GLtk::Resources &get_ui_resources() const { return ui_res; }
+ Msp::GLtk::Root &get_root() const { return *root; }
+ const R2C2::Catalogue &get_catalogue() const { return catalogue; }
+ R2C2::Layout &get_layout() { return layout; }
+ R2C2::Layout3D &get_layout_3d() { return layout_3d; }
+ R2C2::View3D &get_main_view() { return main_view; }
+ void set_status(const std::string &);
+ void add_train_view(TrainView &);
+ void remove_train_view(TrainView &);
+ void pick(bool);
+ int main();
+ void quit() { exit(0); }
+private: