]> git.tdb.fi Git - r2c2.git/blob - trackwrap.h
8a72892e66c5a0467402b63098a56b3559a61641
[r2c2.git] / trackwrap.h
1 /* $Id$
2
3 This file is part of R²C²
4 Copyright © 2010  Mikkosoft Productions, Mikko Rasa
5 Distributed under the GPL
6 */
7
8 #ifndef TRACKWRAP_H_
9 #define TRACKWRAP_H_
10
11 #include <msp/gl/mesh.h>
12 #include <msp/gl/renderable.h>
13 #include "libr2c2/track.h"
14 #include "3d/layout.h"
15
16 class Designer;
17 class Selection;
18
19 class TrackWrap: public Msp::GL::Renderable
20 {
21 private:
22         struct Wrap
23         {
24                 R2C2::Track *track;
25                 Msp::GL::Mesh *mesh;
26         };
27
28         R2C2::Layout3D &layout;
29         Selection &selection;
30         std::map<const R2C2::TrackType *, Msp::GL::Mesh *> meshes;
31         std::list<Wrap> wraps;
32
33 public:
34         TrackWrap(R2C2::Layout3D &, Selection &);
35         ~TrackWrap();
36
37         virtual void render(const Msp::GL::Tag &) const;
38
39 private:
40         void selection_changed();
41         Msp::GL::Mesh &get_mesh(const R2C2::TrackType &);
42 };
43
44 #endif