]> git.tdb.fi Git - r2c2.git/blob - source/3d/vehicletype.h
f65a1d6f66ad8395efd7e8a0caaf47e017a1d956
[r2c2.git] / source / 3d / vehicletype.h
1 /* $Id$
2
3 This file is part of R²C²
4 Copyright © 2010-2011  Mikkosoft Productions, Mikko Rasa
5 Distributed under the GPL
6 */
7
8 #ifndef LIBR2C23D_VEHICLETYPE_H_
9 #define LIBR2C23D_VEHICLETYPE_H_
10
11 #include <msp/gl/mesh.h>
12 #include <msp/gl/object.h>
13 #include "libr2c2/vehicletype.h"
14
15 namespace R2C2 {
16
17 class Catalogue3D;
18
19 class VehicleType3D
20 {
21 private:
22         Catalogue3D &catalogue;
23         const VehicleType &type;
24         std::map<std::string, Msp::GL::Object *> objects;
25         Msp::GL::Object *body_object;
26         std::vector<Msp::GL::Object *> bogie_objects;
27         std::vector<std::vector<Msp::GL::Object *> > axle_objects;
28         std::vector<Msp::GL::Object *> rod_objects;
29
30 public:
31         VehicleType3D(Catalogue3D &, const VehicleType &);
32         ~VehicleType3D();
33
34         const Msp::GL::Object *get_body_object() const { return body_object; }
35         const Msp::GL::Object *get_fixed_axle_object(unsigned) const;
36         const Msp::GL::Object *get_bogie_object(unsigned) const;
37         const Msp::GL::Object *get_bogie_axle_object(unsigned, unsigned) const;
38         const Msp::GL::Object *get_rod_object(unsigned) const;
39 private:
40         Msp::GL::Object *get_object(const std::string &);
41         Msp::GL::Technique *create_technique(const std::map<std::string, std::string> &);
42         Msp::GL::Mesh *create_open_wagon(const std::map<std::string, std::string> &);
43         Msp::GL::Mesh *create_covered_wagon(const std::map<std::string, std::string> &);
44         Msp::GL::Mesh *create_flat_wagon(const std::map<std::string, std::string> &);
45 };
46
47 } // namespace R2C2
48
49 #endif