]> git.mxchange.org Git - simgear.git/blobdiff - simgear/route/route.hxx
Modified Files:
[simgear.git] / simgear / route / route.hxx
index 1eb57375a1b0f2bbd0909390844fe2c473a40294..6e6c5805e76ffa2b267370388aa0c29fd2f940e2 100644 (file)
 # error This library requires C++
 #endif
 
-
 #include <simgear/compiler.h>
 
-#include STL_STRING
 #include <vector>
 
-SG_USING_STD(string);
 SG_USING_STD(vector);
 
 #include <simgear/route/waypoint.hxx>
@@ -55,6 +52,8 @@ private:
     route_list route;
     int current_wp;
 
+    void update_distance(int index);
+
 public:
 
     /** Constructor */
@@ -70,21 +69,10 @@ public:
     }
 
     /**
-     * Add a waypoint.
+     * Add waypoint (default), or insert waypoint at position n.
      * @param wp a waypoint
      */
-    inline void add_waypoint( const SGWayPoint &wp ) {
-       route.push_back( wp );
-
-       int size = route.size();
-       if ( size > 1 ) {
-           SGWayPoint next_to_last = route[ size - 2 ];
-           double tmpd, tmpc;
-           wp.CourseAndDistance( next_to_last, &tmpc, &tmpd );
-           route[size - 1].set_distance( tmpd );
-       }
-    }
-
+    void add_waypoint( const SGWayPoint &wp, int n = -1 );
     /**
      * Get the number of waypoints (i.e. route length )
      * @return route length
@@ -149,14 +137,7 @@ public:
     inline void delete_first() { delete_waypoint(0); }
 
     /** Delete waypoint waypoint with index n  (last one if n < 0) */
-    void delete_waypoint( int n = 0 ) {
-        if ( !route.size() )
-            return;
-        if ( n < 0 || n > (int)route.size() - 1 )
-            n = route.size() - 1;
-
-        route.erase( route.begin() + n );
-    }
+    void delete_waypoint( int n = 0 );
 
     /**
      * Calculate perpendicular distance from the current route segment