/* $Id$
-This file is part of the MSP Märklin suite
+This file is part of R²C²
Copyright © 2010 Mikkosoft Productions, Mikko Rasa
Distributed under the GPL
*/
using namespace std;
using namespace Msp;
-namespace Marklin {
+namespace R2C2 {
Vehicle3D::Vehicle3D(Layout3D &l, Vehicle &v):
layout(l),
{
GL::PushMatrix push_mat2;
GL::translate(axles[i].position, 0, axles[i].wheel_dia/2);
+ GL::rotate(vehicle.get_axle(i).angle*180/M_PI, 0, 1, 0);
obj->render(tag);
}
{
GL::PushMatrix push_mat2;
GL::translate(bogies[i].position, 0, 0);
- float angle = vehicle.get_bogie_direction(i)*180/M_PI;
+ float angle = vehicle.get_bogie(i).direction*180/M_PI;
GL::rotate(angle, 0, 0, 1);
for(unsigned j=0; j<bogies[i].axles.size(); ++j)
{
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(i, j).angle*180/M_PI, 0, 1, 0);
obj->render(tag);
}
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(i).position;
+ float angle = vehicle.get_rod(i).angle;
+ 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);
+ }
}
}
-} // namespace Marklin
+} // namespace R2C2