3 This file is part of R²C²
4 Copyright © 2006-2011 Mikkosoft Productions, Mikko Rasa
5 Distributed under the GPL
8 #ifndef R2C2_3D_TRACK_H_
9 #define R2C2_3D_TRACK_H_
12 #include <sigc++/trackable.h>
13 #include <msp/gl/matrix.h>
14 #include <msp/gl/objectinstance.h>
15 #include "libr2c2/track.h"
16 #include "libr2c2/trackpart.h"
26 class Track3D: public Object3D, public Msp::GL::ObjectInstance, public sigc::trackable
31 const TrackType3D &type;
32 std::vector<Endpoint3D *> endpoints;
36 Track3D(Layout3D &, Track &);
39 Layout3D &get_layout() const { return layout; }
40 Track &get_track() const { return track; }
41 const TrackType3D &get_type() const { return type; }
42 void get_bounds(float, Vector &, Vector &) const;
43 Path3D &get_path() { return *path; }
45 virtual Vector get_node() const;
46 virtual bool is_visible() const { return true; }
48 Msp::GL::Matrix get_matrix() const;
49 virtual void setup_render(Msp::GL::Renderer &, const Msp::GL::Tag &) const;
50 virtual void finish_render(Msp::GL::Renderer &, const Msp::GL::Tag &) const;
52 void link_changed(unsigned, Track *);