#define _ROUTE_MGR_HXX 1
#include <simgear/props/props.hxx>
-#include <simgear/route/waypoint.hxx>
#include <simgear/structure/subsystem_mgr.hxx>
-#include <Navaids/route.hxx>
+#include <Navaids/FlightPlan.hxx>
// forward decls
class SGPath;
class PropertyWatcher;
-class FGAirport;
-class FGRunway;
-
-typedef SGSharedPtr<FGAirport> FGAirportRef;
-
/**
* Top level route manager class
*
void unbind ();
void update (double dt);
- typedef enum {
- ROUTE_HIGH_AIRWAYS, ///< high-level airways routing
- ROUTE_LOW_AIRWAYS, ///< low-level airways routing
- ROUTE_VOR ///< VOR-VOR routing
- } RouteType;
-
- /**
- * Insert waypoints from index-1 to index. In practice this means you can
- * 'fill in the gaps' between defined waypoints. If index=0, the departure
- * airport is used as index-1; if index is -1, the destination airport is
- * used as the final waypoint.
- */
- bool routeToIndex(int index, RouteType aRouteType);
-
bool isRouteActive() const;
int currentIndex() const;
- void setFlightPlan(flightgear::FlightPlan* plan);
- flightgear::FlightPlan* flightPlan() const;
+ void setFlightPlan(const flightgear::FlightPlanRef& plan);
+ flightgear::FlightPlanRef flightPlan() const;
void clearRoute();
* route could not be activated for some reason
*/
bool activate();
-
+
/**
- * Step to the next waypoint on the active route
+ * deactivate the route if active
*/
- void sequence();
-
+ void deactivate();
+
/**
* Set the current waypoint to the specified index.
*/
bool loadRoute(const SGPath& p);
flightgear::WayptRef waypointFromString(const std::string& target);
-
- /**
- * Helper command to setup current airport/runway if necessary
- */
- void initAtPosition();
private:
- flightgear::FlightPlan* _plan;
+ bool commandDefineUserWaypoint(const SGPropertyNode* arg);
+ bool commandDeleteUserWaypoint(const SGPropertyNode* arg);
+
+ flightgear::FlightPlanRef _plan;
time_t _takeoffTime;
time_t _touchdownTime;
SGPropertyNode_ptr _pathNode;
SGPropertyNode_ptr _currentWpt;
- /// integer property corresponding to the RouteType enum
- SGPropertyNode_ptr _routingType;
/**
* Signal property to notify people that the route was edited
*/
SGPropertyNode_ptr _finished;
+ SGPropertyNode_ptr _flightplanChanged;
+
void setETAPropertyFromDistance(SGPropertyNode_ptr aProp, double aDistance);
/**
SGPropertyNode_ptr input;
SGPropertyNode_ptr weightOnWheels;
-
+ SGPropertyNode_ptr groundSpeed;
+
InputListener *listener;
SGPropertyNode_ptr mirror;
- virtual void departureChanged();
- void buildDeparture(flightgear::WayptRef enroute, flightgear::WayptVec& wps);
-
- virtual void arrivalChanged();
- void buildArrival(flightgear::WayptRef enroute, flightgear::WayptVec& wps);
-
/**
* Helper to keep various pieces of state in sync when the route is
* modified (waypoints added, inserted, removed). Notably, this fires the
virtual void currentWaypointChanged();
- /**
- * Check if we've reached the final waypoint.
- * Returns true if we have.
- */
- bool checkFinished();
-
- /**
- * Predicate for helping the UI - test if at least one waypoint was
- * entered by the user (as opposed to being generated by the route-manager)
- */
- bool haveUserWaypoints() const;
-
// tied getters and setters
const char* getDepartureICAO() const;
const char* getDepartureName() const;