]> git.mxchange.org Git - flightgear.git/blobdiff - src/Main/main.cxx
- /sim/model/h-rotation renamed to /sim/model/heading-offset-deg
[flightgear.git] / src / Main / main.cxx
index cfb2a382b8ee87951004f1eec5a9192f3df702d8..64a4f8f75301ee85f871d7f6c7b523dac232ed7b 100644 (file)
@@ -311,6 +311,79 @@ void fgInitVisuals( void ) {
 }
 
 
+// For HiRes screen Dumps using Brian Pauls TR Library
+void trRenderFrame( void ) {
+
+    if ( fgPanelVisible() ) {
+        GLfloat height = fgGetInt("/sim/startup/ysize");
+        GLfloat view_h =
+            (current_panel->getViewHeight() - current_panel->getYOffset())
+            * (height / 768.0) + 1;
+        glTranslatef( 0.0, view_h, 0.0 );
+    }
+
+    static double m_log01      = -log( 0.01 );
+    static double sqrt_m_log01 = sqrt( m_log01 );
+
+    static GLfloat black[4] = { 0.0, 0.0, 0.0, 1.0 };
+    static GLfloat white[4] = { 1.0, 1.0, 1.0, 1.0 };
+
+    fgLIGHT *l = &cur_light_params;
+
+    glClearColor(l->adj_fog_color[0], l->adj_fog_color[1], 
+                 l->adj_fog_color[2], l->adj_fog_color[3]);
+
+    glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
+
+    // set the opengl state to known default values
+    default_state->force();
+
+    // update fog params
+    double actual_visibility       = thesky->get_visibility();
+    // GLfloat fog_exp_density        = m_log01 / actual_visibility;
+    GLfloat fog_exp2_density       = sqrt_m_log01 / actual_visibility;
+    GLfloat fog_exp2_punch_through = sqrt_m_log01 / ( actual_visibility * 1.5 );
+
+    glEnable( GL_FOG );
+    glFogf  ( GL_FOG_DENSITY, fog_exp2_density);
+    glFogi  ( GL_FOG_MODE,    GL_EXP2 );
+    glFogfv ( GL_FOG_COLOR,   l->adj_fog_color );
+
+    // GL_LIGHT_MODEL_AMBIENT has a default non-zero value so if
+    // we only update GL_AMBIENT for our lights we will never get
+    // a completely dark scene.  So, we set GL_LIGHT_MODEL_AMBIENT
+    // explicitely to black.
+    glLightModelfv( GL_LIGHT_MODEL_AMBIENT, black );
+
+    ssgGetLight( 0 ) -> setColour( GL_AMBIENT, l->scene_ambient );
+
+    // texture parameters
+    glTexEnvi( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE ) ;
+    glHint( GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST ) ;
+
+    // we need a white diffuse light for the phase of the moon
+    ssgGetLight( 0 ) -> setColour( GL_DIFFUSE, white );
+    thesky->preDraw();
+
+    // draw the ssg scene
+    // return to the desired diffuse color
+    ssgGetLight( 0 ) -> setColour( GL_DIFFUSE, l->scene_diffuse );
+    glEnable( GL_DEPTH_TEST );
+    ssgCullAndDraw( scene );
+
+    // draw the lights
+    glFogf (GL_FOG_DENSITY, fog_exp2_punch_through);
+    ssgCullAndDraw( lighting );
+
+    thesky->postDraw( cur_fdm_state->get_Altitude() * SG_FEET_TO_METER );
+
+    // need to do this here as hud_and_panel state is static to
+    // main.cxx  and HUD and Panel routines have to be called with
+    // knowledge of the the TR struct < see gui.cxx::HighResDump()
+    hud_and_panel->apply();
+}
+
+
 // Update all Visuals (redraws anything graphics related)
 void fgRenderFrame( void ) {
     // Update the default (kludged) properties.
@@ -645,7 +718,7 @@ void fgRenderFrame( void ) {
 
            if (prop_selector != NULL) {
              int propsel_mask = 0;
-             double rpm = fgGetDouble("/engines/engine0/rpm");
+             double rpm = fgGetDouble("/engines/engine[0]/rpm");
              for (int i = 0; i < acmodel_npropsettings; i++) {
                if (rpm >= acmodel_proprpms[i][0] &&
                    rpm <= acmodel_proprpms[i][1]) {
@@ -951,6 +1024,8 @@ static void fgMainLoop( void ) {
           cur_fdm_state->get_Runway_altitude() * SG_FEET_TO_METER,
           cur_fdm_state->get_Altitude() * SG_FEET_TO_METER); */
 
+    // cout << "Warp = " << globals->get_warp() << endl;
+
     // update "time"
     if ( globals->get_warp_delta() != 0 ) {
        globals->inc_warp( globals->get_warp_delta() );
@@ -1478,14 +1553,14 @@ int main( int argc, char **argv ) {
     if ( fgGetString("/sim/startup/airport-id").length() ) {
        // fgSetPosFromAirportID( fgGetString("/sim/startup/airport-id") );
        fgSetPosFromAirportIDandHdg( fgGetString("/sim/startup/airport-id"),
-                                    fgGetDouble("/orientation/heading") );
+                                    fgGetDouble("/orientation/heading-deg") );
     }
 
     // Initialize time
     SGPath zone( globals->get_fg_root() );
     zone.append( "Timezone" );
-    SGTime *t = new SGTime( fgGetDouble("/position/longitude") * SGD_DEGREES_TO_RADIANS,
-                           fgGetDouble("/position/latitude") * SGD_DEGREES_TO_RADIANS,
+    SGTime *t = new SGTime( fgGetDouble("/position/longitude-deg") * SGD_DEGREES_TO_RADIANS,
+                           fgGetDouble("/position/latitude-deg") * SGD_DEGREES_TO_RADIANS,
                            zone.str() );
 
     // Handle potential user specified time offsets
@@ -1651,12 +1726,12 @@ int main( int argc, char **argv ) {
     sgMat4 rot_matrix;
     sgMat4 off_matrix;
     sgMat4 res_matrix;
-    float h_rot = fgGetFloat("/sim/model/h-rotation", 0.0);
-    float p_rot = fgGetFloat("/sim/model/p-rotation", 0.0);
-    float r_rot = fgGetFloat("/sim/model/r-rotation", 0.0);
-    float x_off = fgGetFloat("/sim/model/x-offset", 0.0);
-    float y_off = fgGetFloat("/sim/model/y-offset", 0.0);
-    float z_off = fgGetFloat("/sim/model/z-offset", 0.0);
+    float h_rot = fgGetFloat("/sim/model/heading-offset-deg", 0.0);
+    float p_rot = fgGetFloat("/sim/model/roll-offset-deg", 0.0);
+    float r_rot = fgGetFloat("/sim/model/pitch-offset-deg", 0.0);
+    float x_off = fgGetFloat("/sim/model/x-offset-m", 0.0);
+    float y_off = fgGetFloat("/sim/model/y-offset-m", 0.0);
+    float z_off = fgGetFloat("/sim/model/z-offset-m", 0.0);
     sgMakeRotMat4(rot_matrix, h_rot, p_rot, r_rot);
     sgMakeTransMat4(off_matrix, x_off, y_off, z_off);
     sgMultMat4(res_matrix, off_matrix, rot_matrix);