]> git.tdb.fi Git - r2c2.git/blobdiff - source/engineer/engineer.cpp
Do not render unplaced vehicles
[r2c2.git] / source / engineer / engineer.cpp
index 897c7ca1ea8121f21d205a26d007b4ec35e26f8a..c8092872c4dc0e0b3314115329fabd8562d6b017 100644 (file)
@@ -50,7 +50,10 @@ Engineer::Engineer(int argc, char **argv):
        picking(false),
        picking_track(0),
        picking_entry(0),
-       picking_path(0)
+       picking_path(0),
+       pointer_x(0),
+       pointer_y(0),
+       pointer_moved(false)
 {
        // Setup GUI
        window.set_title("Railroad Engineer");
@@ -173,6 +176,31 @@ void Engineer::tick()
                overlay->render(0);
        }
 
+       if(pointer_moved)
+       {
+               pointer_moved = false;
+
+               if(picking)
+               {
+                       Track3D *track = pick_track(pointer_x, window.get_height()-pointer_y-1);
+                       if(track && &track->get_track()!=picking_track)
+                       {
+                               picking_track = &track->get_track();
+                               if(picking_entry>=0)
+                                       picking_entry = 0;
+
+                               delete picking_path;
+                               picking_path = new Path3D(*track);
+                               if(picking_entry>=0)
+                                       picking_path->set_mask(picking_track->get_type().get_endpoints()[picking_entry].paths);
+                               else
+                                       picking_path->set_mask(picking_track->get_type().get_paths());
+                               picking_path->set_color(GL::Color(0));
+                               picking_path->set_layer(1);
+                       }
+               }
+       }
+
        if(picking && picking_track && picking_entry>=0)
        {
                GL::PushMatrix push_mat;
@@ -255,25 +283,9 @@ void Engineer::button_press(int x, int y, unsigned btn, unsigned)
 
 void Engineer::pointer_motion(int x, int y)
 {
-       if(picking)
-       {
-               Track3D *track = pick_track(x, window.get_height()-y-1);
-               if(track && &track->get_track()!=picking_track)
-               {
-                       picking_track = &track->get_track();
-                       if(picking_entry>=0)
-                               picking_entry = 0;
-
-                       delete picking_path;
-                       picking_path = new Path3D(*track);
-                       if(picking_entry>=0)
-                               picking_path->set_mask(picking_track->get_type().get_endpoints()[picking_entry].paths);
-                       else
-                               picking_path->set_mask(picking_track->get_type().get_paths());
-                       picking_path->set_color(GL::Color(0));
-                       picking_path->set_layer(1);
-               }
-       }
+       pointer_x = x;
+       pointer_y = y;
+       pointer_moved = true;
 }
 
 void Engineer::view_all()