]> git.tdb.fi Git - r2c2.git/blobdiff - source/libr2c2/track.h
Perform check_slope automatically with certain operations
[r2c2.git] / source / libr2c2 / track.h
index b8a9a3d330bc6f472818f24a006266e111c9552b..13409d5e753a75b0b9345f6d072a621e75dc56e5 100644 (file)
@@ -59,8 +59,10 @@ public:
        void set_flex(bool);
        float get_slope() const { return slope; }
        bool get_flex() const { return flex; }
+private:
        void check_slope();
 
+public:
        void set_turnout_id(unsigned);
        void set_sensor_id(unsigned);
        unsigned get_turnout_id() const { return turnout_id; }
@@ -69,12 +71,6 @@ public:
        unsigned get_active_path() const { return active_path; }
        bool is_path_changing() const { return path_changing; }
 
-       int get_endpoint_by_link(Track &) const;
-       bool snap_to(Track &, bool, float = 0);
-       void break_link(Track &);
-       void break_links();
-       const std::vector<Track *> &get_links() const { return links; }
-       Track *get_link(unsigned) const;
        TrackPoint get_point(unsigned, unsigned, float) const;
        TrackPoint get_point(unsigned, float) const;
 
@@ -85,6 +81,14 @@ private:
        virtual SnapType get_default_snap_type_to(const Object &) const;
 
 public:
+       virtual unsigned get_n_link_slots() const;
+       virtual Track *get_link(unsigned) const;
+       const std::vector<Track *> &get_links() const { return links; }
+       virtual int get_link_slot(const Object &) const;
+       virtual bool link_to(Object &);
+       using Object::break_link;
+       virtual bool break_link(unsigned);
+
        virtual bool collide_ray(const Vector &, const Vector &) const;
 
        void save(std::list<Msp::DataFile::Statement> &) const;