# include <math.h>
#endif
-#ifdef HAVE_WINDOWS_H
-# include <windows.h>
-#endif
-
-#include GLUT_H
-
#include <stdio.h>
#include <stdlib.h>
#include <string.h> // strcmp()
#ifdef FG_USE_CLOUDS_3D
# include <simgear/scene/sky/clouds3d/SkySceneLoader.hpp>
# include <simgear/scene/sky/clouds3d/SkyUtil.hpp>
+# include <simgear/screen/texture.hxx>
#endif
#include <simgear/timing/sg_time.hxx>
#include <simgear/timing/lowleveltime.h>
// find basic airport location info from airport database
bool fgFindAirportID( const string& id, FGAirport *a ) {
+ FGAirport result;
if ( id.length() ) {
- SGPath path( globals->get_fg_root() );
- path.append( "Airports" );
- path.append( "simple.mk4" );
- FGAirports airports( path.c_str() );
-
SG_LOG( SG_GENERAL, SG_INFO, "Searching for airport code = " << id );
- if ( ! airports.search( id, a ) ) {
+ result = globals->get_airports()->search( id );
+
+ if ( result.id.empty() ) {
SG_LOG( SG_GENERAL, SG_ALERT,
- "Failed to find " << id << " in " << path.str() );
+ "Failed to find " << id << " in basic.dat.gz" );
return false;
}
} else {
return false;
}
+ *a = result;
+
SG_LOG( SG_GENERAL, SG_INFO,
"Position for " << id << " is ("
<< a->longitude << ", "
if ( id.length() ) {
// set initial position from runway and heading
- SGPath path( globals->get_fg_root() );
- path.append( "Airports" );
- path.append( "runways.mk4" );
- FGRunways runways( path.c_str() );
-
SG_LOG( SG_GENERAL, SG_INFO,
"Attempting to set starting position from airport code "
<< id << " heading " << tgt_hdg );
- if ( ! runways.search( id, (int)tgt_hdg, &r ) ) {
+ if ( ! globals->get_runways()->search( id, (int)tgt_hdg, &r ) ) {
SG_LOG( SG_GENERAL, SG_ALERT,
"Failed to find a good runway for " << id << '\n' );
return false;
if ( id.length() ) {
// set initial position from airport and runway number
- SGPath path( globals->get_fg_root() );
- path.append( "Airports" );
- path.append( "runways.mk4" );
- FGRunways runways( path.c_str() );
-
SG_LOG( SG_GENERAL, SG_INFO,
"Attempting to set starting position for "
<< id << ":" << rwy );
- if ( ! runways.search( id, rwy, &r ) ) {
+ if ( ! globals->get_runways()->search( id, rwy, &r ) ) {
SG_LOG( SG_GENERAL, SG_ALERT,
"Failed to find runway " << rwy <<
" at airport " << id );
/**
- * Initialize vor/ndb/ils/fix list management and query systems
+ * Initialize vor/ndb/ils/fix list management and query systems (as
+ * well as simple airport db list)
*/
bool
fgInitNav ()
{
+ SG_LOG(SG_GENERAL, SG_INFO, "Loading Simple Airport List");
+ SGPath p_simple( globals->get_fg_root() );
+ p_simple.append( "Airports/basic.dat" );
+ FGAirportList *airports = new FGAirportList( p_simple.str() );
+ globals->set_airports( airports );
+
+ SG_LOG(SG_GENERAL, SG_INFO, "Loading Runway List");
+ SGPath p_runway( globals->get_fg_root() );
+ p_runway.append( "Airports/runways.dat" );
+ FGRunwayList *runways = new FGRunwayList( p_runway.str() );
+ globals->set_runways( runways );
+
SG_LOG(SG_GENERAL, SG_INFO, "Loading Navaids");
SG_LOG(SG_GENERAL, SG_INFO, " VOR/NDB");
= fgGetNode("/sim/presets/altitude-ft");
SGPath cloud_path(globals->get_fg_root());
- cloud_path.append("large.sky");
+#if 0
+ cloud_path.append("Textures/Sky/scattered.rgba");
SG_LOG(SG_GENERAL, SG_INFO, "Loading CLOUDS3d from: " << cloud_path.c_str());
+
+ SGTexture tx;
+ tx.read_rgba_texture(cloud_path.c_str());
+ if ( !sgCloud3d->Load( tx.texture(), tx.width(),
+#else
+ cloud_path.append("large.sky");
if ( !sgCloud3d->Load( cloud_path.str(),
+#endif
latitude->getDoubleValue(),
longitude->getDoubleValue()) )
{