]> git.tdb.fi Git - r2c2.git/blob - source/3d/vehicletype.h
Strip Id tags and copyright notices from files
[r2c2.git] / source / 3d / vehicletype.h
1 #ifndef LIBR2C23D_VEHICLETYPE_H_
2 #define LIBR2C23D_VEHICLETYPE_H_
3
4 #include <msp/gl/mesh.h>
5 #include <msp/gl/object.h>
6 #include "libr2c2/vehicletype.h"
7
8 namespace R2C2 {
9
10 class Catalogue3D;
11
12 class VehicleType3D
13 {
14 private:
15         Catalogue3D &catalogue;
16         const VehicleType &type;
17         std::map<std::string, Msp::GL::Object *> objects;
18         Msp::GL::Object *body_object;
19         std::vector<Msp::GL::Object *> bogie_objects;
20         std::vector<std::vector<Msp::GL::Object *> > axle_objects;
21         std::vector<Msp::GL::Object *> rod_objects;
22
23 public:
24         VehicleType3D(Catalogue3D &, const VehicleType &);
25         ~VehicleType3D();
26
27         const Msp::GL::Object *get_body_object() const { return body_object; }
28         const Msp::GL::Object *get_fixed_axle_object(unsigned) const;
29         const Msp::GL::Object *get_bogie_object(unsigned) const;
30         const Msp::GL::Object *get_bogie_axle_object(unsigned, unsigned) const;
31         const Msp::GL::Object *get_rod_object(unsigned) const;
32 private:
33         Msp::GL::Object *get_object(const std::string &);
34         Msp::GL::Technique *create_technique(const std::map<std::string, std::string> &);
35         Msp::GL::Mesh *create_open_wagon(const std::map<std::string, std::string> &);
36         Msp::GL::Mesh *create_covered_wagon(const std::map<std::string, std::string> &);
37         Msp::GL::Mesh *create_flat_wagon(const std::map<std::string, std::string> &);
38 };
39
40 } // namespace R2C2
41
42 #endif