]> git.mxchange.org Git - flightgear.git/blobdiff - src/Autopilot/route_mgr.hxx
Create a "passive" mode for the autopilot. This is analogous to running the
[flightgear.git] / src / Autopilot / route_mgr.hxx
index f38ab732fca3d96f82d1b72757af67451395e240..0c02c2cdc08462019d1619c3612881c6acb59b29 100644 (file)
@@ -58,26 +58,45 @@ 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, const string& target );
+    void update_mirror();
+    bool near_ground();
+
 public:
 
     FGRouteMgr();
@@ -91,19 +110,18 @@ public:
 
     bool build ();
 
-    void add_waypoint( const 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();
     }
+
 };