]> git.tdb.fi Git - r2c2.git/blobdiff - source/engineer/trainview.cpp
Move user interface code to its own class
[r2c2.git] / source / engineer / trainview.cpp
index 107800926ffbcbe2829f501e7c465916615eaf32..c76e123bce7450e12d4a065f08ed47f2bb93a2aa 100644 (file)
@@ -12,8 +12,8 @@
 using namespace Msp;
 using namespace R2C2;
 
-TrainView::TrainView(Engineer &e, const Train &t):
-       engineer(e),
+TrainView::TrainView(Engineer &engineer, const Train &t):
+       DynamicDialog(engineer.get_user_interface()),
        train(t),
        mode(SIDE),
        forward(true),
@@ -38,13 +38,6 @@ TrainView::TrainView(Engineer &e, const Train &t):
        view.get_camera().set_depth_clip(0.01, 10);
 
        dynamic_cast<GLtk::Image *>(get_item(widgets, "img_view"))->set_image(&tex);
-
-       engineer.add_train_view(*this);
-}
-
-TrainView::~TrainView()
-{
-       engineer.remove_train_view(*this);
 }
 
 void TrainView::set_mode(Mode m)
@@ -63,7 +56,7 @@ void TrainView::set_forward(bool f)
        forward = f;
 }
 
-void TrainView::prepare()
+void TrainView::update()
 {
        const Vehicle &veh = train.get_vehicle(0);
        const Vector &pos = veh.get_position();
@@ -79,10 +72,10 @@ void TrainView::prepare()
        {
        case ROOF:
                camera.set_position(pos-l*fwd_vec+Vector(0, 0, 0.07));
-               camera.set_look_direction(fwd_vec-Vector(0, 0, -0.2));
+               camera.set_look_direction(fwd_vec-Vector(0, 0, 0.2));
                break;
        case SIDE:
-               camera.set_position(pos-0.8f*fwd_vec+0.05f*side_vec+Vector(0, 0, 0.03));
+               camera.set_position(pos-0.08f*fwd_vec+0.05f*side_vec+Vector(0, 0, 0.03));
                camera.set_look_direction(fwd_vec-side_vec*0.2f);
                break;
        case HEAD: