#endif
#include <GL/glut.h>
-#include <XGL/xgl.h>
+#include <simgear/xgl/xgl.h>
#if defined(FX) && defined(XMESA)
#include <GL/xmesa.h>
#include <stdio.h>
#include <stdlib.h>
-#include <pu.h> // plib include
+#include <plib/pu.h> // plib include
+
+#include <simgear/constants.h>
+#include <simgear/debug/logstream.hxx>
+#include <simgear/misc/fgpath.hxx>
-#include <Debug/logstream.hxx>
#include <Aircraft/aircraft.hxx>
#include <Astro/solarsystem.hxx>
#include <Astro/sky.hxx>
#include <Autopilot/autopilot.hxx>
#include <Cockpit/hud.hxx>
#include <GUI/gui.h>
-#include <Include/fg_constants.h>
#include <Scenery/tilemgr.hxx>
#include <Objects/materialmgr.hxx>
#include <Time/fg_time.hxx>
#include <Time/light.hxx>
-#ifdef FG_NEW_WEATHER
+#ifndef FG_OLD_WEATHER
# include <WeatherCM/FGLocalWeatherDatabase.h>
#else
# include <Weather/weather.hxx>
#include "keyboard.hxx"
#include "options.hxx"
+#include "save.hxx"
#include "views.hxx"
extern void NewAltitude( puObject *cb );
case 20: // Ctrl-T key
fgAPToggleTerrainFollow();
return;
+ case 21: // Ctrl-U key
+ // add 1000' of emergency altitude. Possibly good for
+ // unflipping yourself :-)
+ {
+ double alt = cur_fdm_state->get_Altitude() + 1000;
+ fgFDMForceAltitude( current_options.get_flight_model(),
+ alt * FEET_TO_METER );
+ }
+ return;
case 49: // numeric keypad 1
v->set_goal_view_offset( FG_PI * 0.75 );
return;
v->force_update_fov_math();
return;
case 90: // Z key
-#ifdef FG_NEW_WEATHER
+#ifndef FG_OLD_WEATHER
tmp = WeatherDatabase->getWeatherVisibility();
tmp /= 1.10;
WeatherDatabase->setWeatherVisibility( tmp );
controls.move_throttle( FGControls::ALL_ENGINES, -0.01 );
}
return;
+ case 91: // [ key
+ controls.move_flaps(-0.34);
+ FG_LOG( FG_INPUT, FG_INFO,
+ "Set flaps to " << controls.get_flaps() );
+ return;
+ case 93: // ] key
+ controls.move_flaps(0.34);
+ FG_LOG( FG_INPUT, FG_INFO,
+ "Set flaps to " << controls.get_flaps() );
+ return;
case 97: // a key
speed = current_options.get_speed_up();
speed++;
return;
case 112: // p key
t->togglePauseMode();
- // printf position and attitude information
- FG_LOG( FG_INPUT, FG_INFO,
- "Lon = " << f->get_Longitude() * RAD_TO_DEG
- << " Lat = " << f->get_Latitude() * RAD_TO_DEG
- << " Altitude = " << f->get_Altitude() * FEET_TO_METER );
- FG_LOG( FG_INPUT, FG_INFO,
- "Heading = " << f->get_Psi() * RAD_TO_DEG
- << " Roll = " << f->get_Phi() * RAD_TO_DEG
- << " Pitch = " << f->get_Theta() * RAD_TO_DEG );
+
+ {
+ FGBucket p( f->get_Longitude() * RAD_TO_DEG,
+ f->get_Latitude() * RAD_TO_DEG );
+ FGPath tile_path( current_options.get_fg_root() );
+ tile_path.append( "Scenery" );
+ tile_path.append( p.gen_base_path() );
+ tile_path.append( p.gen_index_str() );
+
+ // printf position and attitude information
+ FG_LOG( FG_INPUT, FG_INFO,
+ "Lon = " << f->get_Longitude() * RAD_TO_DEG
+ << " Lat = " << f->get_Latitude() * RAD_TO_DEG
+ << " Altitude = " << f->get_Altitude() * FEET_TO_METER
+ );
+ FG_LOG( FG_INPUT, FG_INFO,
+ "Heading = " << f->get_Psi() * RAD_TO_DEG
+ << " Roll = " << f->get_Phi() * RAD_TO_DEG
+ << " Pitch = " << f->get_Theta() * RAD_TO_DEG );
+ FG_LOG( FG_INPUT, FG_INFO, tile_path.c_str());
+ }
return;
case 116: // t key
t->adjust_warp_delta (+30);
v->force_update_fov_math();
return;
case 122: // z key
-#ifdef FG_NEW_WEATHER
+#ifndef FG_OLD_WEATHER
tmp = WeatherDatabase->getWeatherVisibility();
tmp *= 1.10;
WeatherDatabase->setWeatherVisibility( tmp );
if ( GLUT_ACTIVE_SHIFT && glutGetModifiers() ) {
FG_LOG( FG_INPUT, FG_DEBUG, " SHIFTED" );
switch (k) {
+ case GLUT_KEY_F1: {
+ ifstream input("fgfs.sav");
+ if (input.good() && fgLoadFlight(input)) {
+ input.close();
+ FG_LOG(FG_INPUT, FG_INFO, "Restored flight from fgfs.sav");
+ } else {
+ FG_LOG(FG_INPUT, FG_ALERT, "Cannot load flight from fgfs.sav");
+ }
+ return;
+ }
+ case GLUT_KEY_F2: {
+ FG_LOG(FG_INPUT, FG_INFO, "Saving flight");
+ ofstream output("fgfs.sav");
+ if (output.good() && fgSaveFlight(output)) {
+ output.close();
+ FG_LOG(FG_INPUT, FG_INFO, "Saved flight to fgfs.sav");
+ } else {
+ FG_LOG(FG_INPUT, FG_ALERT, "Cannot save flight to fgfs.sav");
+ }
+ return;
+ }
case GLUT_KEY_END: // numeric keypad 1
v->set_goal_view_offset( FG_PI * 0.75 );
return;
t->togglePauseMode();
return;
}
+ case GLUT_KEY_F3: // F3 Take a screen shot
+ fgDumpSnapShot();
+ return;
case GLUT_KEY_F6: // F6 toggles Autopilot target location
- fgAPToggleWayPoint();
- return;
+ fgAPToggleWayPoint();
+ return;
case GLUT_KEY_F8: // F8 toggles fog ... off fastest nicest...
current_options.cycle_fog();
if ( material_mgr.loaded() ) {
if (current_options.get_textures()) {
current_options.set_textures(false);
- glDisable(GL_TEXTURE_2D);
- ssgOverrideTexture(true);
+ material_mgr.set_step(1);
} else {
current_options.set_textures(true);
- glEnable(GL_TEXTURE_2D);
- ssgOverrideTexture(false);
+ material_mgr.set_step(0);
}
FG_LOG( FG_INPUT, FG_INFO, "Toggling texture" );
} else {