]> git.mxchange.org Git - flightgear.git/commitdiff
Output position & orientation when pausing.
authorcurt <curt>
Thu, 30 Jul 1998 23:48:24 +0000 (23:48 +0000)
committercurt <curt>
Thu, 30 Jul 1998 23:48:24 +0000 (23:48 +0000)
Eliminated libtool use.
Added options to specify initial position and orientation.
Changed default fov to 55 degrees.
Added command line option to start in paused or unpaused state.

Main/GLUTkey.cxx
Main/GLUTmain.cxx
Main/Makefile.am
Main/fg_init.cxx
Main/options.cxx
Main/options.hxx

index 22677956bfa66d1680bba600967908d6660ab835..786ae3b2645f05fa569913255aa1374d9f3e1022 100644 (file)
@@ -58,6 +58,7 @@
 /* Handle keyboard events */
 void GLUTkey(unsigned char k, int x, int y) {
     fgCONTROLS *c;
+    fgFLIGHT *f;
     fgTIME *t;
     fgVIEW *v;
     struct fgWEATHER *w;
@@ -65,6 +66,7 @@ void GLUTkey(unsigned char k, int x, int y) {
     int status;
 
     c = current_aircraft.controls;
+    f = current_aircraft.flight;
     t = &cur_time_params;
     v = &current_view;
     w = &current_weather;
@@ -189,6 +191,17 @@ void GLUTkey(unsigned char k, int x, int y) {
            return;
        case 112: /* p key */
            t->pause = !t->pause;
+           // printf position and attitude information
+           fgPrintf( FG_INPUT, FG_INFO,
+                     "Lon = %.4f  Lat = %.4f  Altitude = %.1f\n", 
+                     FG_Longitude * RAD_TO_DEG,
+                     FG_Latitude * RAD_TO_DEG,
+                     FG_Altitude * FEET_TO_METER);
+           fgPrintf( FG_INPUT, FG_INFO,
+                     "Heading = %.2f  Roll = %.2f  Pitch = %.2f\n", 
+                     FG_Psi * RAD_TO_DEG,
+                     FG_Phi * RAD_TO_DEG,
+                     FG_Theta * RAD_TO_DEG);
            return;
        case 116: /* t key */
            t->warp_delta += 30;
@@ -308,11 +321,18 @@ void GLUTspecialkey(int k, int x, int y) {
 
 
 /* $Log$
-/* Revision 1.17  1998/07/27 18:41:23  curt
-/* Added a pause command "p"
-/* Fixed some initialization order problems between pui and glut.
-/* Added an --enable/disable-sound option.
+/* Revision 1.18  1998/07/30 23:48:24  curt
+/* Output position & orientation when pausing.
+/* Eliminated libtool use.
+/* Added options to specify initial position and orientation.
+/* Changed default fov to 55 degrees.
+/* Added command line option to start in paused or unpaused state.
 /*
+ * Revision 1.17  1998/07/27 18:41:23  curt
+ * Added a pause command "p"
+ * Fixed some initialization order problems between pui and glut.
+ * Added an --enable/disable-sound option.
+ *
  * Revision 1.16  1998/07/16 17:33:34  curt
  * "H" / "h" now control hud brightness as well with off being one of the
  *   states.
index 3e244ea946136c07093c8da6edf89cb1f9f439e6..5a35f6597fa52f9879ae71e31c7fde6ffdd67f89 100644 (file)
@@ -379,6 +379,7 @@ static void fgRenderFrame( void ) {
 
        // render the moon
        xglEnable( GL_LIGHTING );
+       xglEnable( GL_LIGHT0 );
        // set lighting parameters
        xglLightfv(GL_LIGHT0, GL_AMBIENT, white );
        xglLightfv(GL_LIGHT0, GL_DIFFUSE, white );
@@ -466,9 +467,9 @@ void fgUpdateTimeDepCalcs(int multi_loop) {
 
     if ( !t->pause ) {
        // printf("updating flight model x %d\n", multi_loop);
-       fgFlightModelUpdate(FG_LARCSIM, f, multi_loop);
+       fgFlightModelUpdate(current_options.get_flight_model(), f, multi_loop);
     } else {
-       fgFlightModelUpdate(FG_LARCSIM, f, 0);
+       fgFlightModelUpdate(current_options.get_flight_model(), f, 0);
     }
 
     // update the view angle
@@ -559,7 +560,7 @@ static void fgMainLoop( void ) {
                   FG_Altitude * FEET_TO_METER,
                   scenery.cur_elev + 3.758099 * FEET_TO_METER - 3.0,
                   scenery.cur_elev + 3.758099 * FEET_TO_METER);
-           fgFlightModelSetAltitude( FG_LARCSIM, f, 
+           fgFlightModelSetAltitude( current_options.get_flight_model(), f, 
                                      scenery.cur_elev + 
                                      3.758099 * FEET_TO_METER);
 
@@ -933,6 +934,13 @@ int main( int argc, char **argv ) {
 
 
 // $Log$
+// Revision 1.42  1998/07/30 23:48:25  curt
+// Output position & orientation when pausing.
+// Eliminated libtool use.
+// Added options to specify initial position and orientation.
+// Changed default fov to 55 degrees.
+// Added command line option to start in paused or unpaused state.
+//
 // Revision 1.41  1998/07/27 18:41:24  curt
 // Added a pause command "p"
 // Fixed some initialization order problems between pui and glut.
index 4c9b973907c1fe147abe89a8814a4e767d16569f..af29a7f3dd1a47af9ff404db456a6f4b4cab9686 100644 (file)
@@ -1,8 +1,12 @@
 if ENABLE_AUDIO_SUPPORT
 DEFS += -DENABLE_AUDIO_SUPPORT
 AUDIO_LIBS = \
-       $(top_builddir)/Lib/Audio/src/libsl.la \
-       $(top_builddir)/Lib/Audio/src/libsm.la
+       $(top_builddir)/Lib/Audio/src/libsl.a \
+       $(top_builddir)/Lib/Audio/src/libsm.a
+endif
+
+if ENABLE_IRIX_AUDIO
+LIBS += -laudio
 endif
 
 if ENABLE_WIN32_AUDIO
@@ -44,11 +48,11 @@ fg_LDADD = \
        $(top_builddir)/Simulator/Weather/libWeather.a \
         $(top_builddir)/Simulator/Joystick/libJoystick.a \
        $(AUDIO_LIBS) \
-       $(top_builddir)/Lib/Math/libMath.la \
-       $(top_builddir)/Lib/Bucket/libBucket.la \
-       $(top_builddir)/Lib/Debug/libDebug.la \
-       $(top_builddir)/Lib/PUI/libPUI.la \
-       $(top_builddir)/Lib/zlib/libz.la
+       $(top_builddir)/Lib/Math/libMath.a \
+       $(top_builddir)/Lib/Bucket/libBucket.a \
+       $(top_builddir)/Lib/Debug/libDebug.a \
+       $(top_builddir)/Lib/PUI/libPUI.a \
+       $(top_builddir)/Lib/zlib/libz.a
 
 INCLUDES += \
        -I$(top_builddir) \
index bcb4aa9c20b7167baa589b4bbc29ef1df0730972..bf9378bb99674b56dd36ff7b51255f530da64394 100644 (file)
 extern const char *default_root;
 
 
-// Set initial position
+// Set initial position and orientation
 int fgInitPosition( void ) {
     char id[5];
     fgFLIGHT *f;
 
     f = current_aircraft.flight;
 
-    // If nothing else is specified, default initial position is
-    // Globe, AZ (P13)
-    FG_Longitude = ( -110.6642444 ) * DEG_TO_RAD;
-    FG_Latitude  = (  33.3528917 ) * DEG_TO_RAD;
-    FG_Runway_altitude = (3234.5);
-    FG_Altitude = -1000 /* FG_Runway_altitude + 3.758099 */;
-
-    // Initial Position north of the city of Globe
-    // FG_Longitude = ( -398673.28 / 3600.0 ) * DEG_TO_RAD;
-    // FG_Latitude  = (  120625.64 / 3600.0 ) * DEG_TO_RAD;
-    // FG_Longitude = ( -397867.44 / 3600.0 ) * DEG_TO_RAD;
-    // FG_Latitude  = (  119548.21 / 3600.0 ) * DEG_TO_RAD;
-    // FG_Altitude = 0.0 + 3.758099;
-
-    // Initial Position near where I used to live in Globe, AZ
-    // FG_Longitude = ( -398757.6 / 3600.0 ) * DEG_TO_RAD;
-    // FG_Latitude  = (  120160.0 / 3600.0 ) * DEG_TO_RAD;
-    // FG_Runway_altitude = 4000.0;
-    // FG_Altitude = FG_Runway_altitude + 3.758099;
-
-    // Initial Position: 10125 Jewell St. NE
-    // FG_Longitude = ( -93.15 ) * DEG_TO_RAD;
-    // FG_Latitude  = (  45.15 ) * DEG_TO_RAD;
-    // FG_Runway_altitude = 950.0;
-    // FG_Altitude = FG_Runway_altitude + 3.758099;
-
-    // Initial Position near KHSP (Hot Springs, VA)
-    // FG_Longitude = (-79.8338964 + 0.01) * DEG_TO_RAD;
-    // FG_Latitude  = ( 37.9514564 + 0.008) * DEG_TO_RAD;
-    // FG_Runway_altitude = (3792 + 2800);
-    // FG_Altitude = FG_Runway_altitude + 3.758099;
-
-    // Initial Position at (SEZ) SEDONA airport
-    // FG_Longitude = (-111.7884614 + 0.01) * DEG_TO_RAD;
-    // FG_Latitude  = (  34.8486289 - 0.015) * DEG_TO_RAD;
-    // FG_Runway_altitude = (4827 + 450);
-    // FG_Altitude = FG_Runway_altitude + 3.758099;
-
-    // Initial Position: Somewhere near the Grand Canyon
-    // FG_Longitude = ( -112.5 ) * DEG_TO_RAD;
-    // FG_Latitude  = (  36.5 ) * DEG_TO_RAD;
-    // FG_Runway_altitude = 8000.0;
-    // FG_Altitude = FG_Runway_altitude + 3.758099;
-
-    // Initial Position: Jim Brennon's Kingmont Observatory
-    // FG_Longitude = ( -121.1131667 ) * DEG_TO_RAD;
-    // FG_Latitude  = (   38.8293917 ) * DEG_TO_RAD;
-    // FG_Runway_altitude = 920.0;
-    // FG_Altitude = FG_Runway_altitude + 3.758099;
-
-    // Initial Position: Huaras, Peru (S09d 31.871'  W077d 31.498')
-    // FG_Longitude = ( -77.5249667 ) * DEG_TO_RAD;
-    // FG_Latitude  = (  -9.5311833 ) * DEG_TO_RAD;
-    // FG_Runway_altitude = 0.0;
-    // FG_Altitude = FG_Runway_altitude + 3.758099;
-    // Eclipse Watching w73.5 n10 (approx) 18:00 UT
-    // FG_Longitude = ( -73.5 ) * DEG_TO_RAD;
-    // FG_Latitude  = (  10.0 ) * DEG_TO_RAD;
-    // FG_Runway_altitude = 0.0;
-    // FG_Altitude = FG_Runway_altitude + 3.758099;
-
-    // Test Position
-    // FG_Longitude = (  8.5 ) * DEG_TO_RAD;
-    // FG_Latitude  = ( 47.5 ) * DEG_TO_RAD;
-    // FG_Runway_altitude = ( 6000 );
-    // FG_Altitude = FG_Runway_altitude + 3.758099;
-
     current_options.get_airport_id(id);
     if ( strlen(id) ) {
+       // set initial position from airport id
+
        fgAIRPORTS airports;
        fgAIRPORT a;
 
@@ -164,11 +98,19 @@ int fgInitPosition( void ) {
        } else {
            FG_Longitude = ( a.longitude ) * DEG_TO_RAD;
            FG_Latitude  = ( a.latitude ) * DEG_TO_RAD;
-           FG_Runway_altitude = ( -1000 /* a.elevation */ );
-           FG_Altitude = FG_Runway_altitude + 3.758099;
        }
+    } else {
+       // set initial position from default or command line coordinates
+
+       FG_Longitude = current_options.get_lon() * DEG_TO_RAD;
+       FG_Latitude  = current_options.get_lat() * DEG_TO_RAD;
     }
     
+    printf("starting altitude is = %.2f\n", current_options.get_altitude());
+
+    FG_Altitude = current_options.get_altitude() * METER_TO_FEET;
+    FG_Runway_altitude = FG_Altitude - 3.758099;
+
     fgPrintf( FG_GENERAL, FG_INFO, 
              "Initial position is: (%.4f, %.4f, %.2f)\n", 
              FG_Longitude * RAD_TO_DEG, FG_Latitude * RAD_TO_DEG, 
@@ -249,9 +191,9 @@ int fgInitSubsystems( void ) {
     FG_V_down  = 0.0;   // -1.265722E-05
 
     // Initial Orientation
-    FG_Phi   = -2.658474E-06;
-    FG_Theta =  7.401790E-03;
-    FG_Psi   =  270.0 * DEG_TO_RAD;
+    FG_Phi   = current_options.get_roll()    * DEG_TO_RAD;
+    FG_Theta = current_options.get_pitch()   * DEG_TO_RAD;
+    FG_Psi   = current_options.get_heading() * DEG_TO_RAD;
 
     // Initial Angular B rates
     FG_P_body = 7.206685E-05;
@@ -371,7 +313,8 @@ int fgInitSubsystems( void ) {
     // Initialize the flight model subsystem data structures base on
     // above values
 
-    fgFlightModelInit( FG_LARCSIM, f, 1.0 / DEFAULT_MODEL_HZ );
+    fgFlightModelInit( current_options.get_flight_model(), f, 
+                      1.0 / DEFAULT_MODEL_HZ );
 
     // I'm just sticking this here for now, it should probably move
     // eventually
@@ -404,6 +347,13 @@ int fgInitSubsystems( void ) {
 
 
 // $Log$
+// Revision 1.29  1998/07/30 23:48:27  curt
+// Output position & orientation when pausing.
+// Eliminated libtool use.
+// Added options to specify initial position and orientation.
+// Changed default fov to 55 degrees.
+// Added command line option to start in paused or unpaused state.
+//
 // Revision 1.28  1998/07/27 18:41:25  curt
 // Added a pause command "p"
 // Fixed some initialization order problems between pui and glut.
index f15e04b9af85891a6a00b40cbce4faec87992c44..b587badce26c5c9f53de890a1ec1296dfc99a01f 100644 (file)
@@ -33,6 +33,7 @@
 #include <string.h>
 
 #include <Debug/fg_debug.h>
+#include <Flight/flight.h>
 #include <Include/fg_constants.h>
 #include <Include/fg_zlib.h>
 
@@ -64,21 +65,89 @@ fgOPTIONS::fgOPTIONS( void ) {
 #endif
     }
 
-    // default airport id
-    strcpy(airport_id, "");
+    // Starting posistion and orientation
+    strcpy(airport_id, "");  // default airport id
+    lon = 0.0;               // starting longitude in degrees (west = -)
+    lat = 0.0;               // starting latitude in degrees (south = -)
+
+    // If nothing else is specified, default initial position is
+    // Globe, AZ (P13)
+    lon = -110.6642444;
+    lat  =  33.3528917;
+
+    // North of the city of Globe
+    // lon = -110.7;
+    // lat =   33.4;
+
+    // North of the city of Globe
+    // lon = -110.742578;
+    // lat =   33.507122;
+
+    // Near where I used to live in Globe, AZ
+    // lon = -110.766000;
+    // lat =   33.377778;
+
+    // 10125 Jewell St. NE
+    // lon = -93.15;
+    // lat =  45.15;
+
+    // Near KHSP (Hot Springs, VA)
+    // lon = -79.8338964 + 0.01;
+    // lat =  37.9514564 + 0.008;
+
+    // (SEZ) SEDONA airport
+    // lon = -111.7884614 + 0.01;
+    // lat =   34.8486289 - 0.015;
+
+    // Somewhere near the Grand Canyon
+    // lon = -112.5;
+    // lat =   36.5;
+
+    // Jim Brennon's Kingmont Observatory
+    // lon = -121.1131667;
+    // lat =   38.8293917;
+
+    // Huaras, Peru (S09d 31.871'  W077d 31.498')
+    // lon = -77.5249667;
+    // lat =  -9.5311833;
+    // Eclipse Watching w73.5 n10 (approx) 18:00 UT
+    // lon = -73.5;
+    // lat =  10.0;
+
+    // Test Position
+    // lon =  8.5;
+    // lat = 47.5;
+
+    // Timms Hill (WI)
+    // lon = -90.1953055556;
+    // lat =  45.4511388889;
+
+    altitude = -9999.0;      // starting altitude in meters (this will be
+                             // reset to ground level if it is lower
+                             // than the terrain
+
+    // Initial Orientation
+    heading = 270.0;         // heading (yaw) angle in degress (Psi)
+    roll    =   0.0;         // roll angle in degrees (Phi)
+    pitch   =   0.424;       // pitch angle in degrees (Theta)
 
     // Miscellaneous
     splash_screen = 1;
     intro_music = 1;
     mouse_pointer = 0;
+    pause = 0;
 
     // Features
     hud_status = 1;
     panel_status = 0;
 
+    // Flight Model options
+    flight_model = FG_LARCSIM;
+
     // Rendering options
     fog = 2;    // nicest
-    fov = 65.0;
+    fov = 55.0;
     fullscreen = 0;
     shading = 1;
     skyblend = 1;
@@ -129,17 +198,16 @@ static double parse_double(char *arg) {
        arg++;
     }
 
-    printf("parse_double(): arg = %s\n", arg);
+    // printf("parse_double(): arg = %s\n", arg);
 
     result = atof(arg);
 
-    printf("parse_double(): result = %.4f\n", result);
+    // printf("parse_double(): result = %.4f\n", result);
 
     return(result);
 }
 
 
-// parse time string in the form of [+-]hh:mm:ss, returns the value in seconds
 static double parse_time(char *time_str) {
     char num[256];
     double hours, minutes, seconds;
@@ -176,7 +244,7 @@ static double parse_time(char *time_str) {
        hours = atof(num);
        // printf("hours = %.2lf\n", hours);
 
-       result += hours * 3600.0;
+       result += hours;
     }
 
     // get minutes
@@ -194,7 +262,7 @@ static double parse_time(char *time_str) {
        minutes = atof(num);
        // printf("minutes = %.2lf\n", minutes);
 
-       result += minutes * 60.0;
+       result += minutes / 60.0;
     }
 
     // get seconds
@@ -209,28 +277,56 @@ static double parse_time(char *time_str) {
        seconds = atof(num);
        // printf("seconds = %.2lf\n", seconds);
 
-       result += seconds;
+       result += seconds / 3600.0;
     }
 
     return(sign * result);
 }
 
 
+// parse degree in the form of [+/-]hhh:mm:ss
+static double parse_degree(char *degree_str) {
+    double result;
+
+    // advance past the '='
+    while ( (degree_str[0] != '=') && (degree_str[0] != '\0') ) {
+       degree_str++;
+    }
+
+    if ( degree_str[0] == '=' ) {
+       degree_str++;
+    }
+
+    result = parse_time(degree_str);
+
+    // printf("Degree = %.4f\n", result);
+
+    return(result);
+}
+
+
 // parse time offset command line option
 static int parse_time_offset(char *time_str) {
     int result;
 
-    time_str += 14;
+    // advance past the '='
+    while ( (time_str[0] != '=') && (time_str[0] != '\0') ) {
+       time_str++;
+    }
+
+    if ( time_str[0] == '=' ) {
+       time_str++;
+    }
 
     // printf("time offset = %s\n", time_str);
 
 #ifdef HAVE_RINT
-    result = (int)rint(parse_time(time_str));
+    result = (int)rint(parse_time(time_str) * 3600.0);
 #else
-    result = (int)parse_time(time_str);
+    result = (int)(parse_time(time_str) * 3600.0);
 #endif
 
-    printf("parse_time_offset(): %d\n", result);
+    // printf("parse_time_offset(): %d\n", result);
 
     return( result );
 }
@@ -242,7 +338,7 @@ static int parse_time_offset(char *time_str) {
 #define FG_RADIUS_MAX 4
 
 static int parse_tile_radius(char *arg) {
-    int radius, tmp;
+    int radius;
 
     radius = parse_int(arg);
 
@@ -255,6 +351,27 @@ static int parse_tile_radius(char *arg) {
 }
 
 
+// Parse --flightmode=abcdefg type option 
+static int parse_flight_model(char *fm) {
+    fm += 15;
+
+    // printf("flight model = %s\n", fm);
+
+    if ( strcmp(fm, "slew") == 0 ) {
+       return(FG_SLEW);
+    } else if ( strcmp(fm, "larcsim") == 0 ) {
+       return(FG_LARCSIM);
+    } else if ( strcmp(fm, "LaRCsim") == 0 ) {
+       return(FG_LARCSIM);
+    } else {
+       fgPrintf( FG_GENERAL, FG_EXIT, "Unknown flight model = %s\n", fm);
+    }
+
+    // we'll never get here, but it makes the compiler happy.
+    return(-1);
+}
+
+
 // Parse --fov=x.xx type option 
 static double parse_fov(char *arg) {
     double fov;
@@ -264,7 +381,7 @@ static double parse_fov(char *arg) {
     if ( fov < FG_FOV_MIN ) { fov = FG_FOV_MIN; }
     if ( fov > FG_FOV_MAX ) { fov = FG_FOV_MAX; }
 
-    printf("parse_fov(): result = %.4f\n", fov);
+    // printf("parse_fov(): result = %.4f\n", fov);
 
     return(fov);
 }
@@ -289,6 +406,10 @@ int fgOPTIONS::parse_option( char *arg ) {
        mouse_pointer = 1;
     } else if ( strcmp(arg, "--enable-mouse-pointer") == 0 ) {
        mouse_pointer = 2;
+    } else if ( strcmp(arg, "--disable-pause") == 0 ) {
+       pause = 0;      
+    } else if ( strcmp(arg, "--enable-pause") == 0 ) {
+       pause = 1;      
     } else if ( strcmp(arg, "--disable-hud") == 0 ) {
        hud_status = 0; 
     } else if ( strcmp(arg, "--enable-hud") == 0 ) {
@@ -304,9 +425,23 @@ int fgOPTIONS::parse_option( char *arg ) {
     } else if ( strncmp(arg, "--airport-id=", 13) == 0 ) {
        arg += 13;
        strncpy(airport_id, arg, 4);
+    } else if ( strncmp(arg, "--lon=", 6) == 0 ) {
+       lon = parse_degree(arg);
+    } else if ( strncmp(arg, "--lat=", 6) == 0 ) {
+       lat = parse_degree(arg);
+    } else if ( strncmp(arg, "--altitude=", 11) == 0 ) {
+       altitude = parse_double(arg);
+    } else if ( strncmp(arg, "--heading=", 6) == 0 ) {
+       heading = parse_double(arg);
+    } else if ( strncmp(arg, "--roll=", 7) == 0 ) {
+       roll = parse_double(arg);
+    } else if ( strncmp(arg, "--pitch=", 8) == 0 ) {
+       pitch = parse_double(arg);
     } else if ( strncmp(arg, "--fg-root=", 10) == 0 ) {
        arg += 10;
        strcpy(fg_root, arg);
+    } else if ( strncmp(arg, "--flight-model=", 15) == 0 ) {
+       flight_model = parse_flight_model(arg);
     } else if ( strcmp(arg, "--fog-disable") == 0 ) {
        fog = 0;        
     } else if ( strcmp(arg, "--fog-fastest") == 0 ) {
@@ -341,6 +476,7 @@ int fgOPTIONS::parse_option( char *arg ) {
     } else if ( strncmp(arg, "--time-offset=", 14) == 0 ) {
        time_offset = parse_time_offset(arg);
     } else {
+       fgPrintf( FG_GENERAL, FG_EXIT, "Unknown option '%s'\n", arg);
        return(FG_OPTIONS_ERROR);
     }
     
@@ -428,7 +564,9 @@ void fgOPTIONS::usage ( void ) {
     printf("\t--enable-intro-music:  enable introduction music\n");
     printf("\t--disable-mouse-pointer:  disable extra mouse pointer\n");
     printf("\t--enable-mouse-pointer:  enable extra mouse pointer (i.e. for\n");
-    printf("\t\tfull screen voodoo/voodoo-II based cards.\n");
+    printf("\t\tfull screen voodoo/voodoo-II based cards.)\n");
+    printf("\t--disable-pause:  start out in an active state\n");
+    printf("\t--enable-pause:  start out in a paused state\n");
     printf("\n");
 
     printf("Features:\n");
@@ -440,8 +578,14 @@ void fgOPTIONS::usage ( void ) {
     printf("\t--enable-sound:  enable sound effects\n");
     printf("\n");
  
-    printf("Initial Position:\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--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("\n");
 
     printf("Rendering Options:\n");
@@ -473,12 +617,20 @@ void fgOPTIONS::usage ( void ) {
 // Query functions
 void fgOPTIONS::get_fg_root(char *root) { strcpy(root, fg_root); }
 void fgOPTIONS::get_airport_id(char *id) { strcpy(id, airport_id); }
+double fgOPTIONS::get_lon( void ) { return(lon); }
+double fgOPTIONS::get_lat( void ) { return(lat); }
+double fgOPTIONS::get_altitude( void ) { return(altitude); }
+double fgOPTIONS::get_heading( void ) { return(heading); }
+double fgOPTIONS::get_roll( void ) { return(roll); }
+double fgOPTIONS::get_pitch( void ) { return(pitch); }
 int fgOPTIONS::get_splash_screen( void ) { return(splash_screen); }
 int fgOPTIONS::get_intro_music( void ) { return(intro_music); }
 int fgOPTIONS::get_mouse_pointer( void ) { return(mouse_pointer); }
+int fgOPTIONS::get_pause( void ) { return(pause); }
 int fgOPTIONS::get_hud_status( void ) { return(hud_status); }
 int fgOPTIONS::get_panel_status( void ) { return(panel_status); }
 int fgOPTIONS::get_sound( void ) { return(sound); }
+int fgOPTIONS::get_flight_model( void ) { return(flight_model); }
 int fgOPTIONS::get_fog( void ) { return(fog); }
 double fgOPTIONS::get_fov( void ) { return(fov); }
 int fgOPTIONS::get_fullscreen( void ) { return(fullscreen); }
@@ -501,6 +653,13 @@ fgOPTIONS::~fgOPTIONS( void ) {
 
 
 // $Log$
+// Revision 1.20  1998/07/30 23:48:28  curt
+// Output position & orientation when pausing.
+// Eliminated libtool use.
+// Added options to specify initial position and orientation.
+// Changed default fov to 55 degrees.
+// Added command line option to start in paused or unpaused state.
+//
 // Revision 1.19  1998/07/27 18:41:25  curt
 // Added a pause command "p"
 // Fixed some initialization order problems between pui and glut.
index 6982d05890d2d9b6c50ff98bb7aac541dcd32f5e..176f8b51478f6754fdec350174cc22fbbdfd98d1 100644 (file)
@@ -42,19 +42,29 @@ class fgOPTIONS {
     // The flight gear "root" directory
     char fg_root[256];
 
-    // ID of initial starting airport
-    char airport_id[5];
+    // Starting position and orientation
+    char airport_id[5]; // ID of initial starting airport
+    double lon;         // starting longitude in degrees (west = -)
+    double lat;         // starting latitude in degrees (south = -)
+    double altitude;    // starting altitude in meters
+    double heading;     // heading (yaw) angle in degress (Psi)
+    double roll;        // roll angle in degrees (Phi)
+    double pitch;       // pitch angle in degrees (Theta)
 
     // Miscellaneous
     int splash_screen; // show splash screen
     int intro_music;   // play introductory music
     int mouse_pointer; // show mouse pointer
+    int pause;         // pause intially enabled/disabled
 
     // Features
     int hud_status;    // HUD on/off
     int panel_status;  // Panel on/off
     int sound;         // play sound effects
 
+    // Flight Model options
+    int flight_model;  // Flight Model:  FG_SLEW, FG_LARCSIM, etc.
+
     // Rendering options
     int fog;           // Fog enabled/disabled
     double fov;        // Field of View
@@ -95,12 +105,20 @@ public:
     // Query functions
     void get_fg_root(char *root);
     void get_airport_id(char *id);
+    double get_lon( void );
+    double get_lat( void );
+    double get_altitude( void );
+    double get_heading( void );
+    double get_roll( void );
+    double get_pitch( void );
     int get_splash_screen( void );
     int get_intro_music( void );
     int get_mouse_pointer( void );
+    int get_pause( void );
     int get_hud_status( void );
     int get_panel_status( void );
     int get_sound( void );
+    int get_flight_model( void );
     int get_fog( void );
     double get_fov( void );
     int get_fullscreen( void );
@@ -129,6 +147,13 @@ extern fgOPTIONS current_options;
 
 
 // $Log$
+// Revision 1.13  1998/07/30 23:48:29  curt
+// Output position & orientation when pausing.
+// Eliminated libtool use.
+// Added options to specify initial position and orientation.
+// Changed default fov to 55 degrees.
+// Added command line option to start in paused or unpaused state.
+//
 // Revision 1.12  1998/07/27 18:41:26  curt
 // Added a pause command "p"
 // Fixed some initialization order problems between pui and glut.