]> git.tdb.fi Git - r2c2.git/blobdiff - source/libr2c2/trackattachment.h
Don't crash if a train has no router
[r2c2.git] / source / libr2c2 / trackattachment.h
index 8551250ae7507dc2db2d65ab09a7239a1dd71ed4..bd8712b83981ecb7a3634e78ee334865d0a65835 100644 (file)
@@ -2,31 +2,35 @@
 #define LIBR2C2_TRACKATTACHMENT_H_
 
 #include "object.h"
-#include "trackiter.h"
+#include "track.h"
+#include "trackoffsetiter.h"
 
 namespace R2C2 {
 
-class TrackAttachment: public Object
+class TrackAttachment: public Object, public sigc::trackable
 {
 protected:
-       TrackIter track;
-       float offset;
+       TrackOffsetIter track;
 
        TrackAttachment(Layout &);
 public:
        virtual ~TrackAttachment();
 
-       const TrackIter &get_track_iter() const { return track; }
+       const TrackOffsetIter &get_track_iter() const { return track; }
        Track *get_track() const { return track.track(); }
        unsigned get_entry() const { return track.entry(); }
-       float get_offset() const { return offset; }
+       float get_offset() const { return track.offset(); }
+       float get_offset_from_endpoint(unsigned) const;
 protected:
-       void attach_to(const TrackIter &, float);
+       void attach_to(const TrackOffsetIter &);
        void attach_to_closest(float);
        float find_offset(const TrackIter &, const Vector &);
 
 public:
        virtual Track *get_parent() const { return track.track(); }
+
+private:
+       void object_removed(Object &);
 };
 
 } // namespace R2C2