X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibr2c2%2Fsignal.h;h=801a0b1d6fce596732ddf26309422f7aaab64e34;hb=b36f3dc43853c76b4710cb1a7b932a758e1693a1;hp=b6049516c45b6ffa18db0c664cdfccbfdf984a6b;hpb=b88d3630a0e3fdd763db018bbe5dbfe3180a95f2;p=r2c2.git diff --git a/source/libr2c2/signal.h b/source/libr2c2/signal.h index b604951..801a0b1 100644 --- a/source/libr2c2/signal.h +++ b/source/libr2c2/signal.h @@ -3,18 +3,17 @@ #include #include +#include "blockiter.h" #include "geometry.h" -#include "object.h" #include "signaltype.h" -#include "track.h" +#include "trackattachment.h" namespace R2C2 { -class Block; class Layout; class Train; -class Signal: public Object +class Signal: public TrackAttachment { public: class Loader: public Msp::DataFile::ObjectLoader @@ -31,9 +30,8 @@ public: private: const SignalType &type; unsigned address; - Track *track; - Block *block; - unsigned entry; + unsigned id; + BlockIter block; Train *train; sigc::connection train_conn; bool check_allocated_blocks; @@ -47,12 +45,13 @@ public: virtual const SignalType &get_type() const { return type; } void set_address(unsigned); + unsigned get_address() const { return address; } virtual void set_position(const Vector &); - virtual void set_rotation(float); + virtual void set_rotation(const Angle &); + virtual void set_tilt(const Angle &) { } private: - void normalize_location(); + void update_attachment(); public: - virtual Track *get_parent() const { return track; } virtual unsigned get_n_snap_nodes() const; virtual Snap get_snap_node(unsigned) const; @@ -60,8 +59,6 @@ private: virtual SnapType get_default_snap_type_to(const Object &) const; public: - virtual bool collide_ray(const Vector &, const Vector &) const; - void tick(const Msp::Time::TimeDelta &); private: