- const Catalogue &cat = cat3d.get_catalogue();
- const vector<TrackPart> &parts = tt.get_parts();
-
- const Profile &ballast_profile = cat.get_ballast_profile();
- const Point &ballast_min = ballast_profile.get_min_coords();
- const Point &ballast_max = ballast_profile.get_max_coords();
-
- const Profile &rail_profile = cat.get_rail_profile();
- const Point &rail_min = rail_profile.get_min_coords();
- const Point &rail_max = rail_profile.get_max_coords();
-
- float gauge = cat.get_gauge();
-
- {
- unsigned index = 0;
- GL::MeshBuilder bld(ballast_mesh);
- bld.color(0.25f, 0.25f, 0.25f);
- for(vector<TrackPart>::const_iterator i=parts.begin(); i!=parts.end(); ++i)
- build_part(*i, ballast_profile, Point(0, -ballast_min.y), bld, index);
- }
-
- {
- unsigned index = 0;
- GL::MeshBuilder bld(rail_mesh);
- bld.color(0.85f, 0.85f, 0.85f);
- float y = ballast_max.y-ballast_min.y-rail_min.y;
- for(vector<TrackPart>::const_iterator i=parts.begin(); i!=parts.end(); ++i)
- build_part(*i, rail_profile, Point(-gauge/2-rail_max.x, y), bld, index);
- for(vector<TrackPart>::const_iterator i=parts.begin(); i!=parts.end(); ++i)
- build_part(*i, rail_profile, Point(gauge/2-rail_min.x, y), bld, index);
- }
-
- min_z = max_z = border.front().z;
- for(vector<Point>::iterator i=border.begin(); i!=border.end(); ++i)