]> git.mxchange.org Git - flightgear.git/blobdiff - src/Autopilot/route_mgr.hxx
only lock AP automatically if above /autopilot/route-manager/min-lock-altitude-agl-ft
[flightgear.git] / src / Autopilot / route_mgr.hxx
index 914bfd92b6bcbfc8f585d07a1085be1cdbd3fff2..22d373a3dfddb8cba63ee78c528c273072d47ee1 100644 (file)
@@ -2,7 +2,7 @@
 //
 // Written by Curtis Olson, started January 2004.
 //
-// Copyright (C) 2004  Curtis L. Olson  - curt@flightgear.org
+// Copyright (C) 2004  Curtis L. Olson  - http://www.flightgear.org/~curt
 //
 // This program is free software; you can redistribute it and/or
 // modify it under the terms of the GNU General Public License as
@@ -16,7 +16,7 @@
 //
 // You should have received a copy of the GNU General Public License
 // along with this program; if not, write to the Free Software
-// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 //
 // $Id$
 
@@ -58,51 +58,70 @@ private:
     SGRoute *route;
 
     // automatic inputs
-    SGPropertyNode *lon;
-    SGPropertyNode *lat;
-    SGPropertyNode *alt;
+    SGPropertyNode_ptr lon;
+    SGPropertyNode_ptr lat;
+    SGPropertyNode_ptr alt;
 
     // automatic outputs
-    SGPropertyNode *true_hdg_deg;
+    SGPropertyNode_ptr true_hdg_deg;
+    SGPropertyNode_ptr target_altitude_ft;
+    SGPropertyNode_ptr altitude_lock;
 
-    SGPropertyNode *wp0_id;
-    SGPropertyNode *wp0_dist;
-    SGPropertyNode *wp0_eta;
+    SGPropertyNode_ptr wp0_id;
+    SGPropertyNode_ptr wp0_dist;
+    SGPropertyNode_ptr wp0_eta;
 
-    SGPropertyNode *wp1_id;
-    SGPropertyNode *wp1_dist;
-    SGPropertyNode *wp1_eta;
+    SGPropertyNode_ptr wp1_id;
+    SGPropertyNode_ptr wp1_dist;
+    SGPropertyNode_ptr wp1_eta;
 
-    SGPropertyNode *wpn_id;
-    SGPropertyNode *wpn_dist;
-    SGPropertyNode *wpn_eta;
+    SGPropertyNode_ptr wpn_id;
+    SGPropertyNode_ptr wpn_dist;
+    SGPropertyNode_ptr wpn_eta;
 
 
+    class Listener : public SGPropertyChangeListener {
+    public:
+        Listener(FGRouteMgr *m) : mgr(m) {}
+        virtual void valueChanged (SGPropertyNode * prop);
+    private:
+        FGRouteMgr *mgr;
+    };
+
+    SGPropertyNode_ptr input;
+    Listener *listener;
+    SGPropertyNode_ptr mirror;
+    bool altitude_set;
+
+    int make_waypoint( SGWayPoint **wp, string& target );
+    void update_mirror();
+    bool near_ground();
+
 public:
 
     FGRouteMgr();
     ~FGRouteMgr();
 
     void init ();
+    void postinit ();
     void bind ();
     void unbind ();
     void update (double dt);
 
     bool build ();
 
-    void add_waypoint( SGWayPoint wp ) {
-        route->add_waypoint( wp );
-    }
+    int new_waypoint( const string& tgt_alt, int n = -1 );
+    void add_waypoint( const SGWayPoint& wp, int n = -1 );
+    SGWayPoint pop_waypoint( int i = 0 );
 
     SGWayPoint get_waypoint( int i ) const {
         return route->get_waypoint(i);
     }
 
-    SGWayPoint pop_waypoint();
-
     int size() const {
         return route->size();
     }
+
 };