]> git.mxchange.org Git - flightgear.git/blobdiff - src/Main/main.cxx
Code reorganization.
[flightgear.git] / src / Main / main.cxx
index bb247de9a7eb0456be9f0aae0f8a6e8dc8d4c8cd..eabc9788ddac7cdb5b949b31da5d77e28dcdb877 100644 (file)
@@ -38,7 +38,8 @@
 #endif
 
 #include <GL/glut.h>
-#include <XGL/xgl.h>
+#include <simgear/xgl.h>
+
 #include <stdio.h>
 #include <string.h>
 #include <string>
 #  include <unistd.h>    /* for stat() */
 #endif
 
-#include <pu.h>                        // plib include
-#include <ssg.h>               // plib include
+#include <plib/pu.h>                   // plib include
+#include <plib/ssg.h>          // plib include
 
 #ifdef ENABLE_AUDIO_SUPPORT
-#  include <sl.h>              // plib include
-#  include <sm.h>              // plib include
+#  include <plib/sl.h>         // plib include
+#  include <plib/sm.h>         // plib include
 #endif
 
-#include <Include/fg_constants.h>  // for VERSION
+#include <simgear/constants.h>  // for VERSION
+#include <simgear/logstream.hxx>
+#include <simgear/fg_geodesy.hxx>
+#include <simgear/mat3.h>
+#include <simgear/polar3d.hxx>
+#include <simgear/fg_random.h>
+#include <simgear/fgpath.hxx>
+
 #include <Include/general.hxx>
 
-#include <Debug/logstream.hxx>
 #include <Aircraft/aircraft.hxx>
 #include <Astro/sky.hxx>
 #include <Astro/stars.hxx>
 #include <Cockpit/cockpit.hxx>
 #include <GUI/gui.h>
 #include <Joystick/joystick.hxx>
-#include <Math/fg_geodesy.hxx>
-#include <Math/mat3.h>
-#include <Math/polar3d.hxx>
-#include <Math/fg_random.h>
-#include <Misc/fgpath.hxx>
 #ifdef FG_NETWORK_OLK
-#include <Network/network.h>
+#include <NetworkOLK/network.h>
 #endif
 #include <Objects/materialmgr.hxx>
 #include <Scenery/scenery.hxx>
 #endif
 
 #include "fg_init.hxx"
+#include "fg_io.hxx"
 #include "keyboard.hxx"
 #include "options.hxx"
 #include "splash.hxx"
 #include "views.hxx"
-#include "fg_serial.hxx"
 
 
 // -dw- use custom sioux settings so I can see output window
@@ -144,6 +146,12 @@ ssgBranch *terrain = NULL;
 ssgSelector *penguin_sel = NULL;
 ssgTransform *penguin_pos = NULL;
 
+#ifdef FG_NETWORK_OLK
+ssgSelector *fgd_sel = NULL;
+ssgTransform *fgd_pos = NULL;
+//sgMat4 sgTUX;
+#endif
+
 // current fdm/position used for view
 FGInterface cur_view_fdm;
 
@@ -309,12 +317,21 @@ void fgRenderFrame( void ) {
        xglDisable( GL_DEPTH_TEST );
        xglDisable( GL_LIGHTING );
        xglDisable( GL_CULL_FACE );
+
        xglDisable( GL_FOG );
+       /* if ( current_options.get_fog() > 0 ) {
+           xglEnable( GL_FOG );
+           xglFogi( GL_FOG_MODE, GL_EXP2 );
+           xglFogfv( GL_FOG_COLOR, l->adj_fog_color );
+       } */
+
        xglShadeModel( GL_SMOOTH );
        if ( current_options.get_skyblend() ) {
            fgSkyRender();
        }
 
+       // xglDisable( GL_FOG );
+
        // setup transformation for drawing astronomical objects
        xglPushMatrix();
        // Translate to view position
@@ -352,7 +369,11 @@ void fgRenderFrame( void ) {
        }
 
        // update fog params if visibility has changed
+#ifndef FG_OLD_WEATHER
        double cur_visibility = WeatherDatabase->getWeatherVisibility();
+#else
+       double cur_visibility = current_weather.get_visibility();
+#endif
        double actual_visibility = cur_visibility;
 
        if ( current_options.get_clouds() ) {
@@ -532,6 +553,25 @@ void fgRenderFrame( void ) {
            penguin_pos->setTransform( &tuxpos );
        }
 
+# ifdef FG_NETWORK_OLK
+       sgCoord fgdpos;
+       other = head->next;             /* put listpointer to start  */
+       while ( other != tail) {        /* display all except myself */
+           if ( strcmp( other->ipadr, fgd_mcp_ip) != 0) {
+               other->fgd_sel->select(1);
+               sgSetCoord( &fgdpos, other->sgFGD_COORD );
+               other->fgd_pos->setTransform( &fgdpos );
+           }
+           other = other->next;
+       }
+
+       // fgd_sel->select(1);
+       // sgCopyMat4( sgTUX, current_view.sgVIEW);
+       // sgCoord fgdpos;
+       // sgSetCoord( &fgdpos, sgFGD_VIEW );
+       // fgd_pos->setTransform( &fgdpos);
+# endif
+
        ssgSetCamera( current_view.VIEW );
 
        // position tile nodes and update range selectors
@@ -694,6 +734,14 @@ static void fgMainLoop( void ) {
     FG_LOG( FG_ALL, FG_DEBUG, "Running Main Loop");
     FG_LOG( FG_ALL, FG_DEBUG, "======= ==== ====");
 
+#ifdef FG_NETWORK_OLK
+    if ( net_is_registered == 0 ) {           // We first have to reg. to fgd
+        // printf("FGD: Netupdate\n");
+        fgd_send_com( "A", FGFS_host);   // Send Mat4 data
+        fgd_send_com( "B", FGFS_host);   // Recv Mat4 data
+    }
+#endif
+
 #if defined( ENABLE_PLIB_JOYSTICK )
     // Read joystick and update control settings
     if ( current_options.get_control_mode() == fgOPTIONS::FG_JOYSTICK ) {
@@ -721,7 +769,7 @@ static void fgMainLoop( void ) {
        if ( cur_fdm_state->get_Altitude() * FEET_TO_METER < 
             (scenery.cur_elev + alt_adjust_m - 3.0) ) {
            // now set aircraft altitude above ground
-           printf("Current Altitude = %.2f < %.2f forcing to %.2f\n", 
+           printf("(*) Current Altitude = %.2f < %.2f forcing to %.2f\n", 
                   cur_fdm_state->get_Altitude() * FEET_TO_METER,
                   scenery.cur_elev + alt_adjust_m - 3.0,
                   scenery.cur_elev + alt_adjust_m );
@@ -803,8 +851,8 @@ static void fgMainLoop( void ) {
     }
 
 #if ! defined( MACOS )
-    // Do any serial port work that might need to be done
-    fgSerialProcess();
+    // Do any I/O channel work that might need to be done
+    fgIOProcess();
 #endif
 
     // see if we need to load any new scenery tiles
@@ -981,40 +1029,42 @@ static void fgIdleFunction ( void ) {
        }
 #endif // WIN32
 
-       audio_sched = new slScheduler ( 8000 );
-       audio_mixer = new smMixer;
-       audio_mixer -> setMasterVolume ( 80 ) ;  /* 80% of max volume. */
-       audio_sched -> setSafetyMargin ( 1.0 ) ;
+       if ( current_options.get_sound() ) {
+           audio_sched = new slScheduler ( 8000 );
+           audio_mixer = new smMixer;
+           audio_mixer -> setMasterVolume ( 80 ) ;  /* 80% of max volume. */
+           audio_sched -> setSafetyMargin ( 1.0 ) ;
 
-       FGPath slfile( current_options.get_fg_root() );
-       slfile.append( "Sounds/wasp.wav" );
+           FGPath slfile( current_options.get_fg_root() );
+           slfile.append( "Sounds/wasp.wav" );
 
-       s1 = new slSample ( (char *)slfile.c_str() );
-       FG_LOG( FG_GENERAL, FG_INFO,
-               "Rate = " << s1 -> getRate()
-               << "  Bps = " << s1 -> getBps()
-               << "  Stereo = " << s1 -> getStereo() );
-       audio_sched -> loopSample ( s1 );
+           s1 = new slSample ( (char *)slfile.c_str() );
+           FG_LOG( FG_GENERAL, FG_INFO,
+                   "Rate = " << s1 -> getRate()
+                   << "  Bps = " << s1 -> getBps()
+                   << "  Stereo = " << s1 -> getStereo() );
+           audio_sched -> loopSample ( s1 );
 
-       if ( audio_sched->not_working() ) {
-           // skip
-       } else {
-           pitch_envelope.setStep  ( 0, 0.01, 0.6 );
-           volume_envelope.setStep ( 0, 0.01, 0.6 );
-
-           audio_sched -> addSampleEnvelope( s1, 0, 0, 
-                                             &pitch_envelope,
-                                             SL_PITCH_ENVELOPE );
-           audio_sched -> addSampleEnvelope( s1, 0, 1, 
-                                             &volume_envelope,
-                                             SL_VOLUME_ENVELOPE );
-       }
+           if ( audio_sched->not_working() ) {
+               // skip
+           } else {
+               pitch_envelope.setStep  ( 0, 0.01, 0.6 );
+               volume_envelope.setStep ( 0, 0.01, 0.6 );
+
+               audio_sched -> addSampleEnvelope( s1, 0, 0, 
+                                                 &pitch_envelope,
+                                                 SL_PITCH_ENVELOPE );
+               audio_sched -> addSampleEnvelope( s1, 0, 1, 
+                                                 &volume_envelope,
+                                                 SL_VOLUME_ENVELOPE );
+           }
 
-       // strcpy(slfile, path);
-       // strcat(slfile, "thunder.wav");
-       // s2 -> loadFile ( slfile );
-       // s2 -> adjustVolume(0.5);
-       // audio_sched -> playSample ( s2 );
+           // strcpy(slfile, path);
+           // strcat(slfile, "thunder.wav");
+           // s2 -> loadFile ( slfile );
+           // s2 -> adjustVolume(0.5);
+           // audio_sched -> playSample ( s2 );
+       }
 #endif
 
        // sleep(1);
@@ -1261,15 +1311,15 @@ int main( int argc, char **argv ) {
 
     ssgEntity *tux_obj = ssgLoadAC( "glider.ac" );
     // ssgEntity *tux_obj = ssgLoadAC( "Tower1x.ac" );
-    tux_obj->clrTraversalMaskBits( SSGTRAV_HOT );
     penguin_pos->addKid( tux_obj );
     penguin_sel->addKid( penguin_pos );
     ssgFlatten( tux_obj );
     ssgStripify( penguin_sel );
+    penguin_sel->clrTraversalMaskBits( SSGTRAV_HOT );
 
 #ifdef FG_NETWORK_OLK
     // Do the network intialization
-    printf("Multipilot mode %s\n", fg_net_init() );
+    printf("Multipilot mode %s\n", fg_net_init( scene ) );
 #endif
 
     scene->addKid( terrain );