namespace R2C2 {
VehicleType3D::VehicleType3D(Catalogue3D &c, const VehicleType &t):
- catalogue(c),
+ ObjectType3D(c),
type(t),
- body_object(0),
- axle_objects(1)
+ body_object(0)
{
body_object = get_object(type.get_object());
- const vector<VehicleType::Axle> &axles = type.get_fixed_axles();
+ const vector<VehicleType::Axle> &axles = type.get_axles();
for(vector<VehicleType::Axle>::const_iterator i=axles.begin(); i!=axles.end(); ++i)
- axle_objects[0].push_back(get_object(i->object));
+ axle_objects.push_back(get_object(i->object));
const vector<VehicleType::Bogie> &bogies = type.get_bogies();
for(vector<VehicleType::Bogie>::const_iterator i=bogies.begin(); i!=bogies.end(); ++i)
- {
bogie_objects.push_back(get_object(i->object));
- axle_objects.push_back(vector<GL::Object *>());
- for(vector<VehicleType::Axle>::const_iterator j=i->axles.begin(); j!=i->axles.end(); ++j)
- axle_objects.back().push_back(get_object(j->object));
- }
const vector<VehicleType::Rod> &rods = type.get_rods();
for(vector<VehicleType::Rod>::const_iterator i=rods.begin(); i!=rods.end(); ++i)
delete i->second;
}
-const GL::Object *VehicleType3D::get_fixed_axle_object(unsigned i) const
+const GL::Object *VehicleType3D::get_axle_object(unsigned i) const
{
- if(i>=axle_objects[0].size())
+ if(i>=axle_objects.size())
throw out_of_range("VehicleType3D::get_fixed_axle_object");
- return axle_objects[0][i];
+ return axle_objects[i];
}
const GL::Object *VehicleType3D::get_bogie_object(unsigned i) const
return bogie_objects[i];
}
-const GL::Object *VehicleType3D::get_bogie_axle_object(unsigned i, unsigned j) const
-{
- if(i>=bogie_objects.size())
- throw out_of_range("VehicleType3D::get_bogie_axle_object");
- if(j>=axle_objects[i+1].size())
- throw out_of_range("VehicleType3D::get_bogie_axle_object");
- return axle_objects[i+1][j];
-}
-
const GL::Object *VehicleType3D::get_rod_object(unsigned i) const
{
if(i>=rod_objects.size())
tex->storage(GL::RGB, 2, 1);
tex->set_min_filter(GL::NEAREST);
tex->set_mag_filter(GL::NEAREST);
- unsigned char data[6] = { color>>16, color>>8, color, color2>>16, color2>>8, color2 };
+ unsigned char data[6];
+ data[0] = color>>16; data[1] = color>>8; data[2] = color;
+ data[3] = color2>>16; data[4] = color2>>8; data[5] = color2;
tex->image(0, GL::RGB, GL::UNSIGNED_BYTE, data);
pass.set_texture(0, tex);