]> git.tdb.fi Git - r2c2.git/blob - source/3d/vehicletype.h
Rename the project to R²C²
[r2c2.git] / source / 3d / vehicletype.h
1 /* $Id$
2
3 This file is part of R²C²
4 Copyright © 2010  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         const 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
29 public:
30         VehicleType3D(const Catalogue3D &, const VehicleType &);
31         ~VehicleType3D();
32
33         const Msp::GL::Object *get_body_object() const { return body_object; }
34         const Msp::GL::Object *get_axle_object(unsigned) const;
35         const Msp::GL::Object *get_bogie_object(unsigned) const;
36         const Msp::GL::Object *get_bogie_axle_object(unsigned, unsigned) const;
37 private:
38         Msp::GL::Object *get_object(const std::string &);
39         Msp::GL::Technique *create_technique(const std::map<std::string, std::string> &);
40         Msp::GL::Mesh *create_open_wagon(const std::map<std::string, std::string> &);
41         Msp::GL::Mesh *create_covered_wagon(const std::map<std::string, std::string> &);
42         Msp::GL::Mesh *create_flat_wagon(const std::map<std::string, std::string> &);
43 };
44
45 } // namespace R2C2
46
47 #endif