]> git.tdb.fi Git - libs/gl.git/blobdiff - source/slot.cpp
Add a utility class for switching renderables
[libs/gl.git] / source / slot.cpp
diff --git a/source/slot.cpp b/source/slot.cpp
new file mode 100644 (file)
index 0000000..07dabf0
--- /dev/null
@@ -0,0 +1,45 @@
+#include <msp/gl/renderer.h>
+#include "slot.h"
+
+namespace Msp {
+namespace GL {
+
+Slot::Slot():
+       renderable(0)
+{ }
+
+void Slot::set(Renderable *r)
+{
+       renderable = r;
+}
+
+const Matrix *Slot::get_matrix() const
+{
+       return renderable ? renderable->get_matrix() : 0;
+}
+
+const Geometry::BoundingSphere<float, 3> *Slot::get_bounding_sphere() const
+{
+       return renderable ? renderable->get_bounding_sphere() : 0;
+}
+
+void Slot::setup_frame(Renderer &renderer)
+{
+       if(renderable)
+               renderable->setup_frame(renderer);
+}
+
+void Slot::finish_frame()
+{
+       if(renderable)
+               renderable->finish_frame();
+}
+
+void Slot::render(Renderer &renderer, const Tag &tag) const
+{
+       if(renderable)
+               renderer.render(*renderable, tag);
+}
+
+} // namespace GL
+} // namespace Msp