]> git.tdb.fi Git - r2c2.git/blob - source/libr2c2/beamgate.h
Basic support for beam gate sensors
[r2c2.git] / source / libr2c2 / beamgate.h
1 #ifndef LIBR2C2_BEAMGATE_H_
2 #define LIBR2C2_BEAMGATE_H_
3
4 #include "beamgatetype.h"
5 #include "sensor.h"
6 #include "trackattachment.h"
7
8 namespace R2C2 {
9
10 class BeamGate: public TrackAttachment, public Sensor
11 {
12 public:
13         class Loader: public Msp::DataFile::ObjectLoader<BeamGate>
14         {
15         public:
16                 Loader(BeamGate &);
17         private:
18                 void address(unsigned);
19                 void position(float, float, float);
20                 void rotation(float);
21         };
22
23 private:
24         using TrackAttachment::layout;
25
26 public:
27         BeamGate(Layout &);
28         virtual ~BeamGate();
29
30         virtual BeamGate *clone(Layout * = 0) const;
31         virtual const BeamGateType &get_type() const;
32
33         void set_address(unsigned);
34         virtual void set_position(const Vector &);
35         virtual void set_rotation(const Angle &);
36         virtual void set_tilt(const Angle &) { }
37 private:
38         void update_attachment();
39
40 public:
41         virtual Block *get_block() const;
42
43         void save(std::list<Msp::DataFile::Statement> &) const;
44 };
45
46 } // namespace R2C2
47
48 #endif