#define LIBMARKLIN3D_VEHICLETYPE_H_
#include <msp/gl/mesh.h>
+#include <msp/gl/object.h>
#include "libmarklin/vehicletype.h"
namespace Marklin {
class VehicleType3D
{
private:
- Msp::GL::Mesh body_mesh;
+ const Catalogue3D &catalogue;
+ const VehicleType &type;
+ std::map<std::string, Msp::GL::Object *> objects;
+ Msp::GL::Object *body_object;
+ std::vector<Msp::GL::Object *> bogie_objects;
+ std::vector<std::vector<Msp::GL::Object *> > axle_objects;
public:
- VehicleType3D(Catalogue3D &, const VehicleType &);
+ VehicleType3D(const Catalogue3D &, const VehicleType &);
+ ~VehicleType3D();
- const Msp::GL::Mesh &get_body_mesh() const { return body_mesh; }
+ const Msp::GL::Object *get_body_object() const { return body_object; }
+ const Msp::GL::Object *get_axle_object(unsigned) const;
+ const Msp::GL::Object *get_bogie_object(unsigned) const;
+ const Msp::GL::Object *get_bogie_axle_object(unsigned, unsigned) const;
+private:
+ Msp::GL::Object *get_object(const std::string &);
+ Msp::GL::Technique *create_technique(const std::map<std::string, std::string> &);
+ Msp::GL::Mesh *create_open_wagon(const std::map<std::string, std::string> &);
+ Msp::GL::Mesh *create_covered_wagon(const std::map<std::string, std::string> &);
+ Msp::GL::Mesh *create_flat_wagon(const std::map<std::string, std::string> &);
};
} // namespace Marklin