]> git.tdb.fi Git - r2c2.git/blob - source/3d/track.h
fe24b9a9e1a9e0fd3740d90c531841a44785d3d5
[r2c2.git] / source / 3d / track.h
1 /* $Id$
2
3 This file is part of the MSP Märklin suite
4 Copyright © 2006-2010 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 Layout3D;
21 class TrackType3D;
22
23 class Track3D
24 {
25 private:
26         Layout3D &layout;
27         Track &track;
28         const TrackType3D &type;
29         Msp::GL::Color color;
30
31 public:
32         Track3D(Layout3D &, Track &);
33
34         Track &get_track() const { return track; }
35         void set_color(const Msp::GL::Color &);
36         void get_bounds(float, Point &, Point &) const;
37         void render() const;
38         void render_endpoints() const;
39         void render_path(int) const;
40 private:
41         void prepare_render(bool) const;
42 };
43
44 } // namespace Marklin
45
46 #endif