--- /dev/null
+#include <msp/gl/object.h>
+#include <msp/gl/renderer.h>
+#include "beamgate.h"
+#include "layout.h"
+
+using namespace Msp;
+
+namespace R2C2 {
+
+BeamGate3D::BeamGate3D(Layout3D &l, BeamGate &g):
+ Object3D(l, g),
+ GL::ObjectInstance(layout.get_catalogue().get<GL::Object>("beamgate.object"))
+{
+ layout.get_scene().add(*this);
+}
+
+BeamGate3D::~BeamGate3D()
+{
+ layout.get_scene().remove(*this);
+}
+
+Vector BeamGate3D::get_node() const
+{
+ return matrix*Vector(0, 0, 0.04);
+}
+
+void BeamGate3D::setup_render(GL::Renderer &renderer, const GL::Tag &) const
+{
+ renderer.matrix_stack() *= matrix;
+}
+
+} // namespace R2C2