]> git.mxchange.org Git - flightgear.git/commitdiff
Updates for ssg solarsystem/sky model. Includes changes to Time, Light, and
authorcurt <curt>
Thu, 16 Mar 2000 04:15:22 +0000 (04:15 +0000)
committercurt <curt>
Thu, 16 Mar 2000 04:15:22 +0000 (04:15 +0000)
initialization sequences.

src/Main/bfi.cxx
src/Main/fg_init.cxx
src/Main/keyboard.cxx
src/Main/main.cxx

index 10978d7912eac7f46d57644bdebe3da92aacee56..5d0695118d7ec91bad0633e34645bf2b08674eb2 100644 (file)
@@ -196,8 +196,9 @@ FGBFI::setTimeGMT (time_t time)
                                // and solar system
   current_options.set_time_offset(time);
   current_options.set_time_offset_type(fgOPTIONS::FG_TIME_GMT_ABSOLUTE);
-  FGTime::cur_time_params->init(*cur_fdm_state);
-  FGTime::cur_time_params->update(*cur_fdm_state);
+  FGTime::cur_time_params->init( cur_fdm_state->get_Longitude(),
+                                cur_fdm_state->get_Latitude() );
+  FGTime::cur_time_params->update( cur_fdm_state->get_Longitude() );
   needReinit();
 }
 
index 78dac6cd92ffbc8d6e80e9e8550e01d16d15ec74..a145bcbb91b84dccf99195b3c0abb70f53884092 100644 (file)
@@ -224,8 +224,6 @@ bool fgInitGeneral( void ) {
 // gear, its initialization call should located in this routine.
 // Returns non-zero if a problem encountered.
 bool fgInitSubsystems( void ) {
-    FGTime::cur_time_params = new FGTime();
-
     fgLIGHT *l = &cur_light_params;
     FGTime *t = FGTime::cur_time_params;
 
@@ -374,8 +372,8 @@ bool fgInitSubsystems( void ) {
                            fgEVENT::FG_EVENT_READY, 60000 );
 
     // Initialize the time dependent variables
-    t->init(*cur_fdm_state);
-    t->update(*cur_fdm_state);
+    t->init( cur_fdm_state->get_Longitude(), cur_fdm_state->get_Latitude() );
+    t->update( cur_fdm_state->get_Longitude() );
 
     // Initialize view parameters
     FG_LOG( FG_GENERAL, FG_DEBUG, "Before current_view.init()");
index 90efdb5fd7ce9a743c1a2fafe9e6aa88af82d597..1e45b622df47d2959c24d55dae273f7c2ecfe417 100644 (file)
@@ -46,7 +46,6 @@
 #include <simgear/misc/fgpath.hxx>
 
 #include <Aircraft/aircraft.hxx>
-#include <Astro/solarsystem.hxx>
 #include <Autopilot/autopilot.hxx>
 #include <Cockpit/hud.hxx>
 #include <GUI/gui.h>
@@ -71,8 +70,7 @@ extern void NewHeading( puObject *cb );
 
 // Force an update of the sky and lighting parameters
 static void local_update_sky_and_lighting_params( void ) {
-    // fgSunInit();
-    SolarSystem::theSolarSystem->rebuild();
+    FGTime::cur_time_params->updateLocal();
     cur_light_params.Update();
 }
 
index 6f6217f41a755dec706fb6d9329ccc4d1e1696df..501ad143efa204d7c24e3019f4225b7d9242bd05 100644 (file)
@@ -88,9 +88,7 @@
 #include <Objects/materialmgr.hxx>
 #include <Scenery/scenery.hxx>
 #include <Scenery/tilemgr.hxx>
-#include <Sky/skydome.hxx>
-#include <Sky/skymoon.hxx>
-#include <Sky/skysun.hxx>
+#include <Sky/sky.hxx>
 #include <Time/event.hxx>
 #include <Time/fg_time.hxx>
 #include <Time/fg_timer.hxx>
@@ -158,10 +156,8 @@ ssgTransform *fgd_pos = NULL;
 FGInterface cur_view_fdm;
 
 // Sky structures
-FGEphemeris ephem;
-FGSkyDome current_sky;
-FGSkySun current_sun;
-FGSkyMoon current_moon;
+FGEphemeris *ephem;
+SGSky *thesky;
 
 // hack
 sgMat4 copy_of_ssgOpenGLAxisSwapMatrix =
@@ -354,90 +350,63 @@ void fgRenderFrame( void ) {
        // set the opengl state to known default values
        default_state->force();
 
-       xglDisable( GL_DEPTH_TEST );
-       xglDisable( GL_FOG );
-
        // draw sky dome
        if ( current_options.get_skyblend() ) {
+           sgVec3 view_pos;
+           sgSetVec3( view_pos,
+                      current_view.get_view_pos().x(),
+                      current_view.get_view_pos().y(),
+                      current_view.get_view_pos().z() );
+
            sgVec3 zero_elev;
            sgSetVec3( zero_elev,
                       current_view.get_cur_zero_elev().x(),
                       current_view.get_cur_zero_elev().y(),
                       current_view.get_cur_zero_elev().z() );
 
-           current_sky.repaint( cur_light_params.sky_color,
-                                cur_light_params.fog_color,
-                                cur_light_params.sun_angle );
-
-           current_sky.reposition( zero_elev, 
-                                   cur_fdm_state->get_Longitude(),
-                                   cur_fdm_state->get_Latitude(),
-                                   cur_light_params.sun_rotation );
-
-           current_sky.draw();
+           /* cout << "thesky->repaint() sky_color = "
+                << cur_light_params.sky_color[0] << " "
+                << cur_light_params.sky_color[1] << " "
+                << cur_light_params.sky_color[2] << " "
+                << cur_light_params.sky_color[3] << endl;
+           cout << "    fog = "
+                << cur_light_params.fog_color[0] << " "
+                << cur_light_params.fog_color[1] << " "
+                << cur_light_params.fog_color[2] << " "
+                << cur_light_params.fog_color[3] << endl;
+           cout << "    sun_angle = " << cur_light_params.sun_angle
+                << "    moon_angle = " << cur_light_params.moon_angle
+                 << endl; */
+           thesky->repaint( cur_light_params.sky_color,
+                            cur_light_params.fog_color,
+                            cur_light_params.sun_angle,
+                            cur_light_params.moon_angle,
+                            0, NULL, 0, NULL );
+
+           /* cout << "thesky->reposition( view_pos = " << view_pos[0] << " "
+                << view_pos[1] << " " << view_pos[2] << endl;
+           cout << "    zero_elev = " << zero_elev[0] << " "
+                << zero_elev[1] << " " << zero_elev[2]
+                << " lon = " << cur_fdm_state->get_Longitude()
+                << " lat = " << cur_fdm_state->get_Latitude() << endl;
+           cout << "    sun_rot = " << cur_light_params.sun_rotation
+                << " gst = " << FGTime::cur_time_params->getGst() << endl;
+           cout << "    sun ra = " << ephem->getSunRightAscension()
+                << " sun dec = " << ephem->getSunDeclination() 
+                << " moon ra = " << ephem->getMoonRightAscension()
+                << " moon dec = " << ephem->getMoonDeclination() << endl; */
+
+           thesky->reposition( view_pos, zero_elev, 
+                               cur_fdm_state->get_Longitude(),
+                               cur_fdm_state->get_Latitude(),
+                               cur_light_params.sun_rotation,
+                               FGTime::cur_time_params->getGst(),
+                               ephem->getSunRightAscension(),
+                               ephem->getSunDeclination(), 50000.0,
+                               ephem->getMoonRightAscension(),
+                               ephem->getMoonDeclination(), 50000.0 );
        }
 
-       // draw the sun
-       glBlendFunc ( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ) ;
-       current_sun.repaint( cur_light_params.sun_angle );
-        sgVec3 view_pos;
-       sgSetVec3( view_pos,
-                  current_view.get_view_pos().x(),
-                  current_view.get_view_pos().y(),
-                  current_view.get_view_pos().z() );
-       current_sun.reposition( view_pos,
-                               t->getGst() * 15.041085,
-                               ephem.getSunRightAscension(),
-                               ephem.getSunDeclination() );
-       current_sun.draw();
-
-       // draw the moon
-       glBlendFunc ( GL_SRC_ALPHA, GL_ONE ) ;
-       current_moon.repaint( cur_light_params.moon_angle );
-       sgSetVec3( view_pos,
-                  current_view.get_view_pos().x(),
-                  current_view.get_view_pos().y(),
-                  current_view.get_view_pos().z() );
-       current_moon.reposition( view_pos,
-                                t->getGst() * 15.041085,
-                                ephem.getMoonRightAscension(),
-                                ephem.getMoonDeclination() );
-       current_moon.draw();
-
-       // xglDisable( GL_FOG );
-
-       /* 
-
-       // setup transformation for drawing astronomical objects
-       xglPushMatrix();
-       // Translate to view position
-       Point3D view_pos = current_view.get_view_pos();
-       xglTranslatef( view_pos.x(), view_pos.y(), view_pos.z() );
-       // Rotate based on gst (sidereal time)
-       // note: constant should be 15.041085, Curt thought it was 15
-       angle = t->getGst() * 15.041085;
-       // printf("Rotating astro objects by %.2f degrees\n",angle);
-       xglRotatef( angle, 0.0, 0.0, -1.0 );
-
-       // draw stars and planets
-       fgStarsRender();
-       xglDisable( GL_COLOR_MATERIAL ); // just to make sure ...
-       xglEnable( GL_CULL_FACE ); // for moon
-       xglLightfv( GL_LIGHT0, GL_POSITION, l->sun_vec );
-       //xglEnable(GL_DEPTH_TEST);
-       SolarSystem::theSolarSystem->draw();
-       // reset blending function
-       glBlendFunc ( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ) ;
-
-       xglPopMatrix();
-       */
-
-       // draw scenery
-       /* if ( current_options.get_shading() ) {
-           xglShadeModel( GL_SMOOTH ); 
-       } else {
-           xglShadeModel( GL_FLAT ); 
-       } */
        xglEnable( GL_DEPTH_TEST );
        if ( current_options.get_fog() > 0 ) {
            xglEnable( GL_FOG );
@@ -762,7 +731,7 @@ void fgUpdateTimeDepCalcs(int multi_loop, int remainder) {
     l->UpdateAdjFog();
 
     // Update solar system
-    ephem.update( t );
+    ephem->update( t, cur_fdm_state->get_Latitude() );
 }
 
 
@@ -857,7 +826,7 @@ static void fgMainLoop( void ) {
           cur_fdm_state->get_Altitude() * FEET_TO_METER); */
 
     // update "time"
-    t->update(*cur_fdm_state);
+    t->update( cur_fdm_state->get_Longitude() );
 
     // Get elapsed time (in usec) for this past frame
     elapsed = fgGetTimeInterval();
@@ -1348,6 +1317,14 @@ int main( int argc, char **argv ) {
     // fonts !!!
     guiInit();
 
+    // Initialize time
+    FGTime::cur_time_params = new FGTime();
+    // FGTime::cur_time_params->init( cur_fdm_state->get_Longitude(), 
+    //                                cur_fdm_state->get_Latitude() );
+    // FGTime::cur_time_params->update( cur_fdm_state->get_Longitude() );
+    FGTime::cur_time_params->init( 0.0, 0.0 );
+    FGTime::cur_time_params->update( 0.0 );
+
     // Do some quick general initializations
     if( !fgInitGeneral()) {
        FG_LOG( FG_GENERAL, FG_ALERT, 
@@ -1375,18 +1352,24 @@ int main( int argc, char **argv ) {
     scene = new ssgRoot;
     scene->setName( "Scene" );
 
-    // Terrain branch
-    terrain = new ssgBranch;
-    terrain->setName( "Terrain" );
-    scene->addKid( terrain );
-
     // Initialize the sky
+    ephem = new FGEphemeris;
+    ephem->update( FGTime::cur_time_params, 0.0 );
     FGPath sky_tex_path( current_options.get_fg_root() );
     sky_tex_path.append( "Textures" );
     sky_tex_path.append( "Sky" );
-    current_sky.initialize();
-    current_sun.initialize( sky_tex_path );
-    current_moon.initialize( sky_tex_path );
+    thesky = new SGSky;
+    thesky->texture_path( sky_tex_path.str() );
+    ssgBranch *sky = thesky->build( 550.0, 550.0,
+                                   ephem->getNumPlanets(), 
+                                   ephem->getPlanets(), 60000.0,
+                                   0, NULL, 60000.0 );
+    scene->addKid( sky );
+
+    // Terrain branch
+    terrain = new ssgBranch;
+    terrain->setName( "Terrain" );
+    scene->addKid( terrain );
 
     // temporary visible aircraft "own ship"
     penguin_sel = new ssgSelector;