X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fengineer%2Fengineer.cpp;h=fc93cf66b6076555a76129c745b1900f6dd78eff;hb=b3cc0d29a0fda2d48443d66881214c81a04b1729;hp=aa82dcb66b0b50475dfa16b87dbf3c23ee34969f;hpb=dabab2f3bfb5c8548b9c36f3fe40065563653990;p=r2c2.git diff --git a/source/engineer/engineer.cpp b/source/engineer/engineer.cpp index aa82dcb..fc93cf6 100644 --- a/source/engineer/engineer.cpp +++ b/source/engineer/engineer.cpp @@ -40,7 +40,7 @@ Engineer::Engineer(int argc, char **argv): window(options.screen_w, options.screen_h, options.fullscreen), keyboard(window), mouse(window), - ui_res("r2c2.res"), + ui_res("data/r2c2.res"), import_active(false), layout(catalogue, (options.driver.empty() ? 0 : Driver::create(options.driver))), layout_3d(layout), @@ -69,10 +69,7 @@ Engineer::Engineer(int argc, char **argv): overlay = new Overlay3D(ui_res.get_default_font()); // Setup railroad control - DataFile::load(catalogue, "tracks.dat"); - DataFile::load(catalogue, "locos.dat"); - DataFile::load(catalogue, "wagons.dat"); - DataFile::load(catalogue, "terrain.dat"); + catalogue.add_source("data/Märklin/H0"); DataFile::load(layout, options.layout_fn); if(layout.has_driver()) @@ -174,6 +171,7 @@ void Engineer::tick() new_trains.clear(); layout.tick(); + layout_3d.tick(); event_disp.tick(Time::zero); for(list::iterator i=train_views.begin(); i!=train_views.end(); ++i) @@ -308,9 +306,9 @@ Object *Engineer::pick_object(const Vector &p) GL::Vector4 ray = main_view.get_camera().unproject(GL::Vector4(p.x, p.y, 0, 0)); // XXX Do this better; make this function a template? - if(Vehicle *veh = layout.pick(Ray(start, Vector(ray)))) + if(Vehicle *veh = layout.pick(Ray(start, ray.slice<3>(0)))) return veh; - return layout.pick(Ray(start, Vector(ray))); + return layout.pick(Ray(start, ray.slice<3>(0))); } void Engineer::emergency(Block *block, const string &msg) @@ -318,6 +316,7 @@ void Engineer::emergency(Block *block, const string &msg) set_status(msg); TrackChain3D *tch3d = new TrackChain3D(layout_3d, *block); tch3d->set_color(GL::Color(1.0f, 0.0f, 0.0f)); + tch3d->set_layer(2); emergencies.push_back(tch3d); }