]> git.tdb.fi Git - r2c2.git/blob - source/3d/track.h
Add Id tags and copyright notices to files
[r2c2.git] / source / 3d / track.h
1 /* $Id$
2
3 This file is part of the MSP Märklin suite
4 Copyright © 2006-2008 Mikkosoft Productions, Mikko Rasa
5 Distributed under the GPL
6 */
7
8 #ifndef MARKLIN3D_TRACK_H_
9 #define MARKLIN3D_TRACK_H_
10
11 #include <list>
12 #include <msp/gl/color.h>
13 #include <msp/gl/vertexarray.h>
14 #include <msp/gl/vertexarraybuilder.h>
15 #include "libmarklin/track.h"
16 #include "libmarklin/trackpart.h"
17
18 namespace Marklin {
19
20 class Track3D
21 {
22 private:
23         Track        &track;
24         Msp::GL::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 public:
33         Track3D(Track &, unsigned);
34
35         void set_color(const Msp::GL::Color &c)  { color=c; }
36         void set_quality(unsigned);
37         void get_bounds(float, Point &, Point &) const;
38         Track &get_track() const { return track; }
39         void render() const;
40         void render_endpoints() const;
41         void render_route(int) const;
42 private:
43         void prepare_render() const;
44         void build_object();
45         void build_part(const TrackPart &, Msp::GL::VertexArrayBuilder &, unsigned &);
46 };
47
48 } // namespace Marklin
49
50 #endif