]> git.tdb.fi Git - libs/gl.git/blobdiff - source/slot.h
Add a utility class for switching renderables
[libs/gl.git] / source / slot.h
diff --git a/source/slot.h b/source/slot.h
new file mode 100644 (file)
index 0000000..ad86301
--- /dev/null
@@ -0,0 +1,34 @@
+#ifndef MSP_GL_SLOT_H_
+#define MSP_GL_SLOT_H_
+
+#include "renderable.h"
+
+namespace Msp {
+namespace GL {
+
+/**
+A container for a single renderable.  Can be used if a part of the scene graph
+needs to be switched without affecting the rest.
+*/
+class Slot: public Renderable
+{
+private:
+       Renderable *renderable;
+
+public:
+       Slot();
+
+       void set(Renderable *);
+       Renderable *get() const { return renderable; }
+
+       virtual const Matrix *get_matrix() const;
+       virtual const Geometry::BoundingSphere<float, 3> *get_bounding_sphere() const;
+       virtual void setup_frame(Renderer &);
+       virtual void finish_frame();
+       virtual void render(Renderer &, const Tag &) const;
+};
+
+} // namespace GL
+} // namespace Msp
+
+#endif