/* $Id$
-This file is part of the MSP Märklin suite
+This file is part of R²C²
Copyright © 2010 Mikkosoft Productions, Mikko Rasa
Distributed under the GPL
*/
-#ifndef MARKLIN3D_TRACKTYPE_H_
-#define MARKLIN3D_TRACKTYPE_H_
+#ifndef R2C2_3D_TRACKTYPE_H_
+#define R2C2_3D_TRACKTYPE_H_
#include <msp/gl/mesh.h>
#include <msp/gl/meshbuilder.h>
-#include "libmarklin/profile.h"
-#include "libmarklin/tracktype.h"
+#include <msp/gl/renderable.h>
+#include "libr2c2/profile.h"
+#include "libr2c2/tracktype.h"
-namespace Marklin {
+namespace R2C2 {
class Catalogue3D;
-class TrackType3D
+class TrackType3D: public Msp::GL::Renderable
{
private:
+ const Catalogue3D &catalogue;
Msp::GL::Mesh ballast_mesh;
Msp::GL::Mesh rail_mesh;
+ std::vector<Msp::GL::Mesh *> path_meshes;
std::vector<Point> border;
float min_z;
float max_z;
public:
TrackType3D(const Catalogue3D &, const TrackType &);
+ ~TrackType3D();
void get_bounds(float, Point &, Point &) const;
+ const Msp::GL::Mesh &get_path_mesh(unsigned) const;
- void render() const;
+ virtual void render(const Msp::GL::Tag &) const;
private:
void build_part(const TrackPart &, const Profile &, const Point &, Msp::GL::MeshBuilder &, unsigned &);
- //void optimize_border();
};
-} // namespace Marklin
+} // namespace R2C2
#endif