]> git.tdb.fi Git - r2c2.git/blobdiff - source/3d/track.h
Use GL::Renderables and a Pipeline for rendering
[r2c2.git] / source / 3d / track.h
index fe24b9a9e1a9e0fd3740d90c531841a44785d3d5..cf994dd4526fb38a7b902040b130b1567712051a 100644 (file)
@@ -10,6 +10,7 @@ Distributed under the GPL
 
 #include <list>
 #include <msp/gl/color.h>
+#include <msp/gl/renderable.h>
 #include <msp/gl/vertexarray.h>
 #include <msp/gl/vertexarraybuilder.h>
 #include "libmarklin/track.h"
@@ -17,28 +18,29 @@ Distributed under the GPL
 
 namespace Marklin {
 
+class Endpoint3D;
 class Layout3D;
 class TrackType3D;
 
-class Track3D
+class Track3D: public Msp::GL::Renderable
 {
 private:
        Layout3D &layout;
        Track &track;
        const TrackType3D &type;
+       std::vector<Endpoint3D *> endpoints;
        Msp::GL::Color color;
 
 public:
        Track3D(Layout3D &, Track &);
+       ~Track3D();
 
+       Layout3D &get_layout() const { return layout; }
        Track &get_track() const { return track; }
        void set_color(const Msp::GL::Color &);
        void get_bounds(float, Point &, Point &) const;
-       void render() const;
-       void render_endpoints() const;
-       void render_path(int) const;
-private:
-       void prepare_render(bool) const;
+
+       virtual void render(const Msp::GL::Tag &) const;
 };
 
 } // namespace Marklin