]> git.mxchange.org Git - flightgear.git/blobdiff - Main/GLUTmain.cxx
Attempting to iron out seg faults and crashes.
[flightgear.git] / Main / GLUTmain.cxx
index 3e244ea946136c07093c8da6edf89cb1f9f439e6..a3a1761244715e52fe1d08fae3a6af29a585b4ea 100644 (file)
@@ -174,75 +174,6 @@ static void fgInitVisuals( void ) {
 }
 
 
-// Update the view volume, position, and orientation
-static void fgUpdateViewParams( void ) {
-    fgFLIGHT *f;
-    fgLIGHT *l;
-    fgVIEW *v;
-
-    f = current_aircraft.flight;
-    l = &cur_light_params;
-    v = &current_view;
-
-    v->Update(f);
-    v->UpdateWorldToEye(f);
-
-    // if (!o->panel_status) {
-    // xglViewport( 0, (GLint)((v->winHeight) / 2 ) , 
-    // (GLint)(v->winWidth), (GLint)(v->winHeight) / 2 );
-    // Tell GL we are about to modify the projection parameters
-    // xglMatrixMode(GL_PROJECTION);
-    // xglLoadIdentity();
-    // gluPerspective(o->fov, v->win_ratio / 2.0, 1.0, 100000.0);
-    // } else {
-    xglViewport(0, 0 , (GLint)(v->winWidth), (GLint)(v->winHeight) );
-    // Tell GL we are about to modify the projection parameters
-    xglMatrixMode(GL_PROJECTION);
-    xglLoadIdentity();
-    if ( FG_Altitude * FEET_TO_METER - scenery.cur_elev > 10.0 ) {
-       gluPerspective(current_options.get_fov(), v->win_ratio, 10.0, 100000.0);
-    } else {
-       gluPerspective(current_options.get_fov(), v->win_ratio, 0.5, 100000.0);
-       // printf("Near ground, minimizing near clip plane\n");
-    }
-    // }
-
-    xglMatrixMode(GL_MODELVIEW);
-    xglLoadIdentity();
-    
-    // set up our view volume (default)
-    fg_gluLookAt(v->view_pos.x, v->view_pos.y, v->view_pos.z,
-              v->view_pos.x + v->view_forward[0], 
-              v->view_pos.y + v->view_forward[1], 
-              v->view_pos.z + v->view_forward[2],
-              v->view_up[0], v->view_up[1], v->view_up[2]);
-
-    // look almost straight up (testing and eclipse watching)
-    /* fg_gluLookAt(v->view_pos.x, v->view_pos.y, v->view_pos.z,
-              v->view_pos.x + v->view_up[0] + .001, 
-              v->view_pos.y + v->view_up[1] + .001, 
-              v->view_pos.z + v->view_up[2] + .001,
-              v->view_up[0], v->view_up[1], v->view_up[2]); */
-
-    // lock view horizontally towards sun (testing)
-    /* fg_gluLookAt(v->view_pos.x, v->view_pos.y, v->view_pos.z,
-              v->view_pos.x + v->surface_to_sun[0], 
-              v->view_pos.y + v->surface_to_sun[1], 
-              v->view_pos.z + v->surface_to_sun[2],
-              v->view_up[0], v->view_up[1], v->view_up[2]); */
-
-    // lock view horizontally towards south (testing)
-    /* fg_gluLookAt(v->view_pos.x, v->view_pos.y, v->view_pos.z,
-              v->view_pos.x + v->surface_south[0], 
-              v->view_pos.y + v->surface_south[1], 
-              v->view_pos.z + v->surface_south[2],
-              v->view_up[0], v->view_up[1], v->view_up[2]); */
-
-    // set the sun position
-    xglLightfv( GL_LIGHT0, GL_POSITION, l->sun_vec );
-}
-
-
 #ifdef IS_THIS_BETTER_THAN_A_ZERO_CHARLIE
 // Draw a basic instrument panel
 static void fgUpdateInstrViewParams( void ) {
@@ -322,11 +253,11 @@ static void fgRenderFrame( void ) {
        //        FG_Altitude * FEET_TO_METER);
     
        // this is just a temporary hack, to make me understand Pui
-       timerText -> setLabel (ctime (&t->cur_time));
+       // timerText -> setLabel (ctime (&t->cur_time));
        // end of hack
 
        // update view volume parameters
-       fgUpdateViewParams();
+       v->UpdateViewParams();
 
        clear_mask = GL_DEPTH_BUFFER_BIT;
        if ( current_options.get_wireframe() ) {
@@ -379,6 +310,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 +398,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 +491,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);
 
@@ -755,7 +687,7 @@ static void fgIdleFunction ( void ) {
 
        audio_sched = new slScheduler ( 8000 );
        audio_mixer = new smMixer;
-       audio_mixer -> setMasterVolume ( 30 ) ;  /* 50% of max volume. */
+       audio_mixer -> setMasterVolume ( 80 ) ;  /* 80% of max volume. */
        audio_sched -> setSafetyMargin ( 1.0 ) ;
        current_options.get_fg_root(path);
        strcat(path, "/Sounds/");
@@ -812,7 +744,7 @@ static void fgReshape( int width, int height ) {
        // yes we've finished all our initializations and are running
        // the main loop, so this will now work without seg faulting
        // the system.
-       fgUpdateViewParams();
+       v->UpdateViewParams();
     }
     
     // xglClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
@@ -832,7 +764,14 @@ int fgGlutInit( int *argc, char **argv ) {
     xglutInitWindowSize(640, 480);
 
     // Initialize windows
-    xglutCreateWindow("Flight Gear");
+    if ( current_options.get_game_mode() == 0 ) {
+       // Open the regular window
+       xglutCreateWindow("Flight Gear");
+    } else {
+       // Open the cool new 'game mode' window
+       glutGameModeString("width=640 height=480 bpp=16");
+       glutEnterGameMode();
+    }
 
     return(1);
 }
@@ -880,17 +819,6 @@ int main( int argc, char **argv ) {
 
     fgPrintf(FG_GENERAL, FG_INFO, "Flight Gear:  Version %s\n\n", VERSION);
 
-    // Initialize the Window/Graphics environment.
-    if( !fgGlutInit(&argc, argv) ) {
-       fgPrintf( FG_GENERAL, FG_EXIT, "GLUT initialization failed ...\n" );
-    }
-
-    // Initialize the various GLUT Event Handlers.
-    if( !fgGlutInitEvents() ) {
-       fgPrintf( FG_GENERAL, FG_EXIT, 
-                 "GLUT event handler initialization failed ...\n" );
-    }
-
     // Attempt to locate and parse a config file
     // First check fg_root
     current_options.get_fg_root(config);
@@ -914,6 +842,17 @@ int main( int argc, char **argv ) {
        fgPrintf( FG_GENERAL, FG_EXIT, "\nExiting ...\n");
     }
     
+    // Initialize the Window/Graphics environment.
+    if( !fgGlutInit(&argc, argv) ) {
+       fgPrintf( FG_GENERAL, FG_EXIT, "GLUT initialization failed ...\n" );
+    }
+
+    // Initialize the various GLUT Event Handlers.
+    if( !fgGlutInitEvents() ) {
+       fgPrintf( FG_GENERAL, FG_EXIT, 
+                 "GLUT event handler initialization failed ...\n" );
+    }
+
     // First do some quick general initializations
     if( !fgInitGeneral()) {
        fgPrintf( FG_GENERAL, FG_EXIT, 
@@ -933,6 +872,27 @@ int main( int argc, char **argv ) {
 
 
 // $Log$
+// Revision 1.46  1998/08/22 14:49:56  curt
+// Attempting to iron out seg faults and crashes.
+// Did some shuffling to fix a initialization order problem between view
+// position, scenery elevation.
+//
+// Revision 1.45  1998/08/20 20:32:31  curt
+// Reshuffled some of the code in and around views.[ch]xx
+//
+// Revision 1.44  1998/08/20 15:10:33  curt
+// Added GameGLUT support.
+//
+// Revision 1.43  1998/08/12 21:01:47  curt
+// Master volume from 30% -> 80%
+//
+// 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.