]> git.tdb.fi Git - r2c2.git/blob - source/3d/track.h
Initial revision
[r2c2.git] / source / 3d / track.h
1 #ifndef MARKLIN3D_TRACK_H_
2 #define MARKLIN3D_TRACK_H_
3
4 #include <list>
5 #include <msp/gl/vertexarray.h>
6 #include "libmarklin/track.h"
7 #include "misc.h"
8
9 namespace Marklin {
10
11 class Track3D
12 {
13 public:
14         Track3D(Track &, unsigned);
15         void set_color(const Color &c)  { color=c; }
16         void set_quality(unsigned);
17         void get_bounds(float, Point &, Point &) const;
18         Track &get_track() const { return track; }
19         void render();
20         void render_endpoints();
21         void render_route(int);
22 private:
23         Track        &track;
24         Color        color;
25         std::vector<Point> border;
26         Msp::GL::VertexArray varray;
27         std::vector<unsigned> base_seq;
28         std::vector<unsigned> rail_seq;
29         std::vector<std::vector<unsigned> > route_seq;
30         unsigned quality;
31
32         void prepare_render();
33         void build_object();
34         void build_part(const Track::Part &, Msp::GL::VertexArrayBuilder &, unsigned &);
35 };
36 typedef std::list<Track3D *> Track3DSeq;
37
38 } // namespace Marklin
39
40 #endif