diff --git a/Thanks b/Thanks index cfb2ff651..c3290a35a 100644 --- a/Thanks +++ b/Thanks @@ -190,6 +190,8 @@ David Megginson Updates to README.running. Working on getting fgfs and ssg to work without textures. Also added the new 2D panel and the save/load support. + Property manager + Joystick support Eric Mitchell diff --git a/src/Main/fg_init.cxx b/src/Main/fg_init.cxx index 3cb462ec2..6235493ff 100644 --- a/src/Main/fg_init.cxx +++ b/src/Main/fg_init.cxx @@ -1,4 +1,3 @@ -// // fg_init.cxx -- Flight Gear top level initialization routines // // Written by Curtis Olson, started August 1997. diff --git a/src/Main/options.cxx b/src/Main/options.cxx index d4d9c06ed..6046cef48 100644 --- a/src/Main/options.cxx +++ b/src/Main/options.cxx @@ -208,7 +208,7 @@ fgOPTIONS::fgOPTIONS() : // variable $FG_ROOT if it is set. fg_root = envp; } else { - // Otherwise, default to a random compiled in location if + // Otherwise, default to a random compiled-in location if // $FG_ROOT is not set. This can still be overridden from the // command line or a config file. @@ -221,6 +221,20 @@ fgOPTIONS::fgOPTIONS() : #endif } + // set a possibly independent location for scenery data + envp = ::getenv( "FG_SCENERY" ); + + if ( envp != NULL ) { + // fg_root could be anywhere, so default to environmental + // variable $FG_ROOT if it is set. + fg_scenery = envp; + } else { + // Otherwise, default to Scenery being in $FG_ROOT/Scenery + FGPath tmp( fg_root ); + tmp.append( "Scenery" ); + fg_scenery = tmp.str(); + } + airport_id = ""; // default airport id net_id = "Johnney"; // default pilot's name @@ -675,6 +689,8 @@ int fgOPTIONS::parse_option( const string& arg ) { pitch = atof( arg.substr(8) ); } else if ( arg.find( "--fg-root=" ) != string::npos ) { fg_root = arg.substr( 10 ); + } else if ( arg.find( "--fg-scenery=" ) != string::npos ) { + fg_scenery = arg.substr( 13 ); } else if ( arg.find( "--fdm=" ) != string::npos ) { flight_model = parse_fdm( arg.substr(6) ); if((flight_model == FGInterface::FG_JSBSIM) && (get_trim_mode() == 0)) { @@ -908,6 +924,9 @@ void fgOPTIONS::usage ( void ) { cout << "\t--help -h: print usage" << endl; cout << "\t--fg-root=path: specify the root path for all the data files" << endl; + cout << "\t--fg-scenery=path: specify the base path for all the scenery" + << " data." << endl + << "\t\tdefaults to $FG_ROOT/Scenery" << endl; cout << "\t--disable-game-mode: disable full-screen game mode" << endl; cout << "\t--enable-game-mode: enable full-screen game mode" << endl; cout << "\t--disable-splash-screen: disable splash screen" << endl; diff --git a/src/Main/options.hxx b/src/Main/options.hxx index 09e2d87b5..3f931baf6 100644 --- a/src/Main/options.hxx +++ b/src/Main/options.hxx @@ -128,6 +128,9 @@ private: // The flight gear "root" directory string fg_root; + // The scenery "root" directory + string fg_scenery; + // Starting position and orientation string airport_id; // ID of initial starting airport double lon; // starting longitude in degrees (west = -) @@ -224,6 +227,7 @@ public: // Query functions inline string get_fg_root() const { return fg_root; } + inline string get_fg_scenery() const { return fg_scenery; } inline string get_airport_id() const { return airport_id; } inline double get_lon() const { return lon; } inline double get_lat() const { return lat; } @@ -294,6 +298,7 @@ public: // Update functions inline void set_fg_root (const string value) { fg_root = value; } + inline void set_fg_scenery (const string value) { fg_scenery = value; } inline void set_airport_id( const string id ) { airport_id = id; } inline void set_lon (double value) { lon = value; } inline void set_lat (double value) { lat = value; } diff --git a/src/Scenery/tilecache.cxx b/src/Scenery/tilecache.cxx index ba07fa29d..c6c742058 100644 --- a/src/Scenery/tilecache.cxx +++ b/src/Scenery/tilecache.cxx @@ -169,8 +169,7 @@ FGTileCache::fill_in( int index, const FGBucket& p ) tile_cache[index].range_ptr = new ssgRangeSelector; tile_cache[index].tile_bucket = p; - FGPath tile_path( current_options.get_fg_root() ); - tile_path.append( "Scenery" ); + FGPath tile_path( current_options.get_fg_scenery() ); tile_path.append( p.gen_base_path() ); // Load the appropriate data file