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