]> git.tdb.fi Git - r2c2.git/blob - source/designer/trackwrap.h
070794e48c0b6a7deab175950ab3cc14dc64a9a1
[r2c2.git] / source / designer / trackwrap.h
1 #ifndef TRACKWRAP_H_
2 #define TRACKWRAP_H_
3
4 #include <msp/gl/mesh.h>
5 #include <msp/gl/renderable.h>
6 #include "libr2c2/track.h"
7 #include "3d/layout.h"
8
9 class Designer;
10 class Selection;
11
12 class TrackWrap: public Msp::GL::Renderable
13 {
14 private:
15         struct Wrap
16         {
17                 R2C2::Track *track;
18                 Msp::GL::Mesh *mesh;
19         };
20
21         R2C2::Layout3D &layout;
22         Selection &selection;
23         std::map<const R2C2::TrackType *, Msp::GL::Mesh *> meshes;
24         std::list<Wrap> wraps;
25
26 public:
27         TrackWrap(R2C2::Layout3D &, Selection &);
28         ~TrackWrap();
29
30         virtual void render(Msp::GL::Renderer &, const Msp::GL::Tag &) const;
31
32 private:
33         void selection_changed();
34         Msp::GL::Mesh &get_mesh(const R2C2::TrackType &);
35 };
36
37 #endif