]> git.tdb.fi Git - r2c2.git/blobdiff - source/3d/vehicle.cpp
Make shoppinglist ignore zones
[r2c2.git] / source / 3d / vehicle.cpp
index f14f3c2c238df933943cc938fabffdf6231241f2..50dbcb0d693134d969964ba31249bf71e3acc9c7 100644 (file)
@@ -64,6 +64,7 @@ void Vehicle3D::render(const GL::Tag &tag) const
                        {
                                GL::PushMatrix push_mat2;
                                GL::translate(axles[i].position, 0, axles[i].wheel_dia/2);
+                               GL::rotate(vehicle.get_axle_angle(i)*180/M_PI, 0, 1, 0);
                                obj->render(tag);
                        }
 
@@ -80,6 +81,7 @@ void Vehicle3D::render(const GL::Tag &tag) const
                                {
                                        GL::PushMatrix push_mat3;
                                        GL::translate(bogies[i].axles[j].position, 0, bogies[i].axles[j].wheel_dia/2);
+                                       GL::rotate(vehicle.get_bogie_axle_angle(i, j)*180/M_PI, 0, 1, 0);
                                        obj->render(tag);
                                }
 
@@ -88,6 +90,20 @@ void Vehicle3D::render(const GL::Tag &tag) const
                        if(const GL::Object *obj = type.get_bogie_object(i))
                                obj->render(tag);
                }
+
+               const vector<VehicleType::Rod> &rods = vehicle.get_type().get_rods();
+               for(unsigned i=0; i<rods.size(); ++i)
+                       if(const GL::Object *obj = type.get_rod_object(i))
+                       {
+                               GL::PushMatrix push_mat2;
+                               const Point &rpos = vehicle.get_rod_position(i);
+                               float angle = vehicle.get_rod_angle(i);
+                               GL::translate(rpos.x, rpos.y, rpos.z);
+                               if(rods[i].mirror_object)
+                                       GL::scale(1, -1, 1);
+                               GL::rotate(angle*180/M_PI, 0, -1, 0);
+                               obj->render(tag);
+                       }
        }
 }