]> git.tdb.fi Git - r2c2.git/blobdiff - source/3d/axle.cpp
Clear the critical flag one track earlier
[r2c2.git] / source / 3d / axle.cpp
index 04c7668d8a97da1dbbb459411ce32b7ad0e96d9f..4344eeacf76a480b52a63fc597c7d4b992318291 100644 (file)
@@ -7,16 +7,13 @@ using namespace Msp;
 namespace R2C2 {
 
 Axle3D::Axle3D(const Vehicle3D &v, unsigned a):
-       VehiclePart3D(v, *v.get_type().get_fixed_axle_object(a)),
+       VehiclePart3D(v, *v.get_type().get_axle_object(a)),
        bogie(0),
-       axle(vehicle.get_vehicle().get_fixed_axle(a))
-{ }
-
-Axle3D::Axle3D(const Vehicle3D &v, unsigned b, unsigned a):
-       VehiclePart3D(v, *v.get_type().get_bogie_axle_object(b, a)),
-       bogie(&vehicle.get_vehicle().get_bogie(b)),
-       axle(bogie->axles[a])
-{ }
+       axle(vehicle.get_vehicle().get_axle(a))
+{
+       if(axle.type->bogie)
+               bogie = &vehicle.get_vehicle().get_bogie(axle.type->bogie->index);
+}
 
 void Axle3D::update_matrix()
 {
@@ -28,7 +25,7 @@ void Axle3D::update_matrix()
                matrix.rotate(bogie->direction, 0, 0, 1);
        }
 
-       matrix.translate(axle.type->position, 0, axle.type->wheel_dia/2);
+       matrix.translate(axle.type->local_position, 0, axle.type->wheel_dia/2);
        matrix.rotate(axle.angle, 0, 1, 0);
 }