]> git.mxchange.org Git - flightgear.git/blobdiff - src/Main/options.cxx
Mac portability changes.
[flightgear.git] / src / Main / options.cxx
index 89abbfc4f8c59dbca3025a47c52428f08e470036..ce1559939e2a266e95bb3cec29911746984ea024 100644 (file)
@@ -138,6 +138,9 @@ fgOPTIONS::fgOPTIONS() :
     // if it is lower than the terrain
     altitude(-9999.0),
 
+    // Initialize current options velocities to 0.0
+    uBody(0.0), vBody(0.0), wBody(0.0),
+
     // Initial Orientation
     heading(270.0),      // heading (yaw) angle in degress (Psi)
     roll(0.0),           // roll angle in degrees (Phi)
@@ -592,6 +595,24 @@ int fgOPTIONS::parse_option( const string& arg ) {
        } else {
            altitude = atof( arg.substr(11) );
        }
+    } else if ( arg.find( "--uBody=" ) != string::npos ) {
+       if ( units == FG_UNITS_FEET ) {
+           uBody = atof( arg.substr(8) ) * FEET_TO_METER;
+       } else {
+           uBody = atof( arg.substr(8) );
+       }
+    } else if ( arg.find( "--vBody=" ) != string::npos ) {
+       if ( units == FG_UNITS_FEET ) {
+           vBody = atof( arg.substr(8) ) * FEET_TO_METER;
+       } else {
+           vBody = atof( arg.substr(8) );
+       }
+    } else if ( arg.find( "--wBody=" ) != string::npos ) {
+       if ( units == FG_UNITS_FEET ) {
+           wBody = atof( arg.substr(8) ) * FEET_TO_METER;
+       } else {
+           wBody = atof( arg.substr(8) );
+       }
     } else if ( arg.find( "--heading=" ) != string::npos ) {
        heading = atof( arg.substr(10) );
     } else if ( arg.find( "--roll=" ) != string::npos ) {
@@ -704,13 +725,19 @@ int fgOPTIONS::parse_command_line( int argc, char **argv ) {
 // Parse config file options
 int fgOPTIONS::parse_config_file( const string& path ) {
     fg_gzifstream in( path );
-    if ( !in )
+    if ( !in.is_open() )
        return(FG_OPTIONS_ERROR);
 
     FG_LOG( FG_GENERAL, FG_INFO, "Processing config file: " << path );
 
     in >> skipcomment;
-    while ( !in.eof() ) {
+#ifndef __MWERKS__
+    while ( ! in.eof() ) {
+#else
+    char c = '\0';
+    while ( in.get(c) && c != '\0' ) {
+       in.putback(c);
+#endif
        string line;
 
 #ifdef GETLINE_NEEDS_TERMINATOR
@@ -775,6 +802,10 @@ void fgOPTIONS::usage ( void ) {
     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");
+    printf("\t--uBody=feet per second:  velocity along the body X axis\n");
+    printf("\t--vBody=feet per second:  velocity along the body Y axis\n");
+    printf("\t--wBody=feet per second:  velocity along the body Z axis\n");
+    printf("\t\t(unless --units-meters specified\n");
     printf("\n");
 
     printf("Rendering Options:\n");