]> git.mxchange.org Git - flightgear.git/blobdiff - Main/options.cxx
Modifications to incorporate Jon S. Berndts flight model code.
[flightgear.git] / Main / options.cxx
index 4067acf2791dd0dc8b60b44a9d2360a8eb1b27ec..e63c13a958874dd312d2834fc9597f5f7677241c 100644 (file)
@@ -1,4 +1,3 @@
-//
 // options.cxx -- class to handle command line options
 //
 // Written by Curtis Olson, started April 1998.
@@ -34,7 +33,7 @@
 #include <string>
 
 #include <Debug/logstream.hxx>
-#include <Flight/flight.hxx>
+#include <FDM/flight.hxx>
 #include <Include/fg_constants.h>
 #include <Main/options.hxx>
 #include <Misc/fgstream.hxx>
@@ -129,7 +128,7 @@ fgOPTIONS::fgOPTIONS() :
     sound(1),
 
     // Flight Model options
-    flight_model(fgFLIGHT::FG_LARCSIM),
+    flight_model(FGInterface::FG_LARCSIM),
 
     // Rendering options
     fog(FG_FOG_NICEST),  // nicest
@@ -304,19 +303,21 @@ fgOPTIONS::parse_tile_radius( const string& arg ) {
 }
 
 
-// Parse --flightmode=abcdefg type option 
+// Parse --fdm=abcdefg type option 
 int
-fgOPTIONS::parse_flight_model( const string& fm ) {
-    // printf("flight model = %s\n", fm);
+fgOPTIONS::parse_fdm( const string& fm ) {
+    // printf("fdm = %s\n", fm);
 
     if ( fm == "slew" ) {
-       return fgFLIGHT::FG_SLEW;
+       return FGInterface::FG_SLEW;
+    } else if ( fm == "jsb" ) {
+       return FGInterface::FG_JSBSIM;
     } else if ( (fm == "larcsim") || (fm == "LaRCsim") ) {
-       return fgFLIGHT::FG_LARCSIM;
+       return FGInterface::FG_LARCSIM;
     } else if ( fm == "external" ) {
-       return fgFLIGHT::FG_EXTERNAL;
+       return FGInterface::FG_EXTERNAL;
     } else {
-       FG_LOG( FG_GENERAL, FG_ALERT, "Unknown flight model = " << fm );
+       FG_LOG( FG_GENERAL, FG_ALERT, "Unknown fdm = " << fm );
        exit(-1);
     }
 
@@ -414,7 +415,11 @@ int fgOPTIONS::parse_option( const string& arg ) {
     } else if ( arg.find( "--lat=" ) != string::npos ) {
        lat = parse_degree( arg.substr(6) );
     } else if ( arg.find( "--altitude=" ) != string::npos ) {
-       altitude = atof( arg.substr(11) );
+       if ( units == FG_UNITS_FEET ) {
+           altitude = atof( arg.substr(11) ) * FEET_TO_METER;
+       } else {
+           altitude = atof( arg.substr(11) );
+       }
     } else if ( arg.find( "--heading=" ) != string::npos ) {
        heading = atof( arg.substr(10) );
     } else if ( arg.find( "--roll=" ) != string::npos ) {
@@ -423,8 +428,8 @@ int fgOPTIONS::parse_option( const string& arg ) {
        pitch = atof( arg.substr(8) );
     } else if ( arg.find( "--fg-root=" ) != string::npos ) {
        fg_root = arg.substr( 10 );
-    } else if ( arg.find( "--flight-model=" ) != string::npos ) {
-       flight_model = parse_flight_model( arg.substr(15) );
+    } else if ( arg.find( "--fdm=" ) != string::npos ) {
+       flight_model = parse_fdm( arg.substr(6) );
     } else if ( arg == "--fog-disable" ) {
        fog = FG_FOG_DISABLED;  
     } else if ( arg == "--fog-fastest" ) {
@@ -572,14 +577,15 @@ void fgOPTIONS::usage ( void ) {
     printf("\n");
  
     printf("Flight Model:\n");
-    printf("\t--flight-mode=abcd:  one of slew, larcsim, or external\n");
+    printf("\t--fdm=abcd:  one of slew, jsb, larcsim, or external\n");
     printf("\n");
 
     printf("Initial Position and Orientation:\n");
     printf("\t--airport-id=ABCD:  specify starting postion by airport id\n");
     printf("\t--lon=degrees:  starting longitude in degrees (west = -)\n");
     printf("\t--lat=degrees:  starting latitude in degrees (south = -)\n");
-    printf("\t--altitude=meters:  starting altitude in meters\n");
+    printf("\t--altitude=feet:  starting altitude in feet\n");
+    printf("\t\t(unless --units-meters specified\n");
     printf("\t--heading=degrees:  heading (yaw) angle in degress (Psi)\n");
     printf("\t--roll=degrees:  roll angle in degrees (Phi)\n");
     printf("\t--pitch=degrees:  pitch angle in degrees (Theta)\n");
@@ -612,6 +618,7 @@ void fgOPTIONS::usage ( void ) {
     printf("\t--units-meters:  Hud displays units in meters\n");
     printf("\t--hud-tris:  Hud displays number of triangles rendered\n");
     printf("\t--hud-culled:  Hud displays percentage of triangles culled\n");
+    printf("\n");
        
     printf("Time Options:\n");
     printf("\t--time-offset=[+-]hh:mm:ss:  offset local time by this amount\n");
@@ -624,6 +631,30 @@ fgOPTIONS::~fgOPTIONS( void ) {
 
 
 // $Log$
+// Revision 1.39  1999/02/05 21:29:12  curt
+// Modifications to incorporate Jon S. Berndts flight model code.
+//
+// Revision 1.38  1999/02/01 21:33:35  curt
+// Renamed FlightGear/Simulator/Flight to FlightGear/Simulator/FDM since
+// Jon accepted my offer to do this and thought it was a good idea.
+//
+// Revision 1.37  1999/01/19 20:57:05  curt
+// MacOS portability changes contributed by "Robert Puyol" <puyol@abvent.fr>
+//
+// Revision 1.36  1999/01/07 20:25:10  curt
+// Updated struct fgGENERAL to class FGGeneral.
+//
+// Revision 1.35  1998/12/06 14:52:57  curt
+// Fixed a problem with the initial starting altitude.  "v->abs_view_pos" wasn't
+// being calculated correctly at the beginning causing the first terrain
+// intersection to fail, returning a ground altitude of zero, causing the plane
+// to free fall for one frame, until the ground altitude was corrected, but now
+// being under the ground we got a big bounce and the plane always ended up
+// upside down.
+//
+// Revision 1.34  1998/12/05 15:54:22  curt
+// Renamed class fgFLIGHT to class FGState as per request by JSB.
+//
 // Revision 1.33  1998/12/04 01:30:44  curt
 // Added support for the External flight model.
 //