X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FMain%2Fglobals.hxx;h=97f07307adb119231396c4679f160d5b5d9b4284;hb=44ffdcd7d00a6bf31c6f0526e9021fa2910980e7;hp=674718f7a6fe3dd0d31e83c850d436f79b7da04c;hpb=44fcbbd0aff8566e2e792de071c8ee2e35f52bf1;p=flightgear.git diff --git a/src/Main/globals.hxx b/src/Main/globals.hxx index 674718f7a..97f07307a 100644 --- a/src/Main/globals.hxx +++ b/src/Main/globals.hxx @@ -2,7 +2,7 @@ // // Written by Curtis Olson, started July 2000. // -// Copyright (C) 2000 Curtis L. Olson - curt@flightgear.org +// Copyright (C) 2000 Curtis L. Olson - http://www.flightgear.org/~curt // // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License as @@ -16,7 +16,7 @@ // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software -// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. // // $Id$ @@ -25,15 +25,14 @@ #define _GLOBALS_HXX #include +#include +#include +#include #include -#include STL_STRING - -SG_USING_STD( vector ); -SG_USING_STD( string ); - -typedef vector string_list; +#include +typedef std::vector string_list; // Forward declarations @@ -46,72 +45,61 @@ typedef vector string_list; // anyway. class SGEphemeris; - -class SGMagVar; -class SGRoute; -class SGTime; -class SGPropertyNode; class SGCommandMgr; +class SGMaterialLib; +class SGPropertyNode; +class SGTime; +class SGEventMgr; +class SGSubsystemMgr; +class SGSubsystem; +class SGSoundMgr; -class FGLogger; -class FGEnvironmentMgr; -class FGEnvironment; +class FGATISMgr; class FGControls; -class FGSteam; -class FGSoundMgr; -class FGSystemMgr; -class FGInstrumentMgr; -class FGAutopilot; -class FGFX; +class FGTACANList; +class FGLocale; +class FGRouteMgr; +class FGScenery; +class FGTileMgr; class FGViewMgr; class FGViewer; -class FGATCMgr; -class FGATCDisplay; -class FGAIMgr; -class FGModelLoader; -class FGTextureLoader; -class FGAircraftModel; -class FGModelMgr; -class FGScenery; -class FGIO; +class FGRenderer; +class FGFontCache; + /** * Bucket for subsystem pointers representing the sim's state. */ + class FGGlobals { private: - // Number of milliseconds elapsed since the start of the program. - double sim_time_sec; + // properties, destroy last + SGPropertyNode_ptr props; + SGPropertyNode_ptr initial_state; - // Root of FlightGear data tree - string fg_root; + // localization + FGLocale* locale; - // Root of FlightGear scenery tree - string fg_scenery; + FGRenderer *renderer; + SGSubsystemMgr *subsystem_mgr; + SGEventMgr *event_mgr; -#if 0 - // Freeze sim - bool freeze; -#endif + // Number of milliseconds elapsed since the start of the program. + double sim_time_sec; - // Fullscreen mode for old 3DFX cards. -#if defined(FX) && defined(XMESA) - bool fullscreen; -#endif + // Root of FlightGear data tree + std::string fg_root; - // An offset in seconds from the true time. Allows us to adjust - // the effective time of day. - long int warp; + // Users home directory for data + std::string fg_home; - // How much to change the value of warp each iteration. Allows us - // to make time progress faster than normal (or even run in reverse.) - long int warp_delta; + // Roots of FlightGear scenery tree + string_list fg_scenery; - // Logger - FGLogger *logger; + std::string browser; // Time structure SGTime *time_params; @@ -119,110 +107,120 @@ private: // Sky structures SGEphemeris *ephem; - // Magnetic Variation - SGMagVar *mag; - - // Current autopilot - FGAutopilot *autopilot; + // Material properties library + SGMaterialLib *matlib; // Global autopilot "route" - SGRoute *route; - - // sound manager - FGSoundMgr *soundmgr; - - // sound-effects manager - FGFX *fx; - - // aircraft system manager - FGSystemMgr * systemmgr; - - // aircraft instrument manager - FGInstrumentMgr * instrumentmgr; - - // environment information - FGEnvironmentMgr * environment_mgr; + FGRouteMgr *route_mgr; // ATC manager - FGATCMgr *ATC_mgr; - - // ATC Renderer - FGATCDisplay *ATC_display; - - // AI manager - FGAIMgr *AI_mgr; + FGATISMgr *ATIS_mgr; // control input state FGControls *controls; - // Steam instruments - FGSteam *steam; - // viewer manager FGViewMgr *viewmgr; - // properties - SGPropertyNode *props; - SGPropertyNode *initial_state; - - // localization - SGPropertyNode *locale; - SGCommandMgr *commands; - FGModelLoader * model_loader; - - FGTextureLoader * texture_loader; - - FGAircraftModel *acmodel; - - FGModelMgr * model_mgr; - // list of serial port-like configurations string_list *channel_options_list; + // A list of initial waypoints that are read from the command line + // and or flight-plan file during initialization + string_list *initial_waypoints; + // FlightGear scenery manager FGScenery *scenery; - FGIO* io; + // Tile manager + FGTileMgr *tile_mgr; + + FGFontCache *fontcache; + + // Navigational Aids + FGTACANList *channellist; + + /// roots of Aircraft trees + string_list fg_aircraft_dirs; + bool haveUserSettings; + + SGPropertyNode_ptr positionLon, positionLat, positionAlt; + SGPropertyNode_ptr viewLon, viewLat, viewAlt; + SGPropertyNode_ptr orientHeading, orientPitch, orientRoll; public: FGGlobals(); - ~FGGlobals(); + virtual ~FGGlobals(); + + virtual FGRenderer *get_renderer () const; + + virtual SGSubsystemMgr *get_subsystem_mgr () const; + + virtual SGSubsystem *get_subsystem (const char * name); + + virtual void add_subsystem (const char * name, + SGSubsystem * subsystem, + SGSubsystemMgr::GroupType + type = SGSubsystemMgr::GENERAL, + double min_time_sec = 0); + + virtual SGEventMgr *get_event_mgr () const; + + virtual SGSoundMgr *get_soundmgr () const; inline double get_sim_time_sec () const { return sim_time_sec; } inline void inc_sim_time_sec (double dt) { sim_time_sec += dt; } inline void set_sim_time_sec (double t) { sim_time_sec = t; } - inline const string &get_fg_root () const { return fg_root; } - inline void set_fg_root (const string &root) { fg_root = root; } + inline const std::string &get_fg_root () const { return fg_root; } + void set_fg_root (const std::string &root); - inline const string &get_fg_scenery () const { return fg_scenery; } - inline void set_fg_scenery (const string &scenery) { - fg_scenery = scenery; - } + inline const std::string &get_fg_home () const { return fg_home; } + void set_fg_home (const std::string &home); -#if 0 - inline bool get_freeze() const { return freeze; } - inline void set_freeze( bool f ) { freeze = f; } -#endif + inline const string_list &get_fg_scenery () const { return fg_scenery; } + void append_fg_scenery (const std::string &scenery); -#if defined(FX) && defined(XMESA) - inline bool get_fullscreen() const { return fullscreen; } - inline bool set_fullscreen( bool f ) { fullscreen = f; } -#endif + const string_list& get_aircraft_paths() const { return fg_aircraft_dirs; } + void append_aircraft_path(const std::string& path); + void append_aircraft_paths(const std::string& path); + + /** + * Given a path to an aircraft-related resource file, resolve it + * against the appropriate root. This means looking at the location + * defined by /sim/aircraft-dir, and then aircraft_path in turn, + * finishing with fg_root/Aircraft. + * + * if the path could not be resolved, an empty path is returned. + */ + SGPath resolve_aircraft_path(const std::string& branch) const; + + /** + * Same as above, but test for non 'Aircraft/' branch paths, and + * always resolve them against fg_root. + */ + SGPath resolve_maybe_aircraft_path(const std::string& branch) const; + + /** + * Search in the following directories: + * + * 1. Root directory of current aircraft (defined by /sim/aircraft-dir) + * 2. All aircraft directories if branch starts with Aircraft/ + * 3. fg_data directory + */ + SGPath resolve_resource_path(const std::string& branch) const; - inline long int get_warp() const { return warp; } - inline void set_warp( long int w ) { warp = w; } - inline void inc_warp( long int w ) { warp += w; } + inline const std::string &get_browser () const { return browser; } + void set_browser (const std::string &b) { browser = b; } - inline long int get_warp_delta() const { return warp_delta; } - inline void set_warp_delta( long int d ) { warp_delta = d; } - inline void inc_warp_delta( long int d ) { warp_delta += d; } + long int get_warp() const; + void set_warp( long int w ); - inline FGLogger * get_logger () { return logger; } - inline void set_logger (FGLogger * l) { logger = l; } + long int get_warp_delta() const; + void set_warp_delta( long int d ); inline SGTime *get_time_params() const { return time_params; } inline void set_time_params( SGTime *t ) { time_params = t; } @@ -230,47 +228,15 @@ public: inline SGEphemeris *get_ephem() const { return ephem; } inline void set_ephem( SGEphemeris *e ) { ephem = e; } - inline SGMagVar *get_mag() const { return mag; } - inline void set_mag( SGMagVar *m ) { mag = m; } - - inline FGAutopilot *get_autopilot() const { return autopilot; } - inline void set_autopilot( FGAutopilot *ap) { autopilot = ap; } - - inline SGRoute *get_route() const { return route; } - inline void set_route( SGRoute *r ) { route = r; } - - inline FGEnvironmentMgr * get_environment_mgr() { - return environment_mgr; - } - inline void set_environment_mgr(FGEnvironmentMgr * mgr) { - environment_mgr = mgr; - } - - inline FGATCMgr *get_ATC_mgr() const { return ATC_mgr; } - inline void set_ATC_mgr( FGATCMgr *a ) {ATC_mgr = a; } - - inline FGATCDisplay *get_ATC_display() const { return ATC_display; } - inline void set_ATC_display( FGATCDisplay *d ) {ATC_display = d; } - - inline FGAIMgr *get_AI_mgr() const { return AI_mgr; } - inline void set_AI_mgr( FGAIMgr *a ) {AI_mgr = a; } - - inline FGSoundMgr *get_soundmgr() const { return soundmgr; } - inline void set_soundmgr( FGSoundMgr *sm ) { soundmgr = sm; } - - inline FGSystemMgr *get_systemmgr() const { return systemmgr; } + inline SGMaterialLib *get_matlib() const { return matlib; } + inline void set_matlib( SGMaterialLib *m ) { matlib = m; } - inline FGInstrumentMgr *get_instrumentmgr() const { return instrumentmgr; } - - inline FGFX *get_fx() const { return fx; } - inline void set_fx( FGFX *x ) { fx = x; } + inline FGATISMgr *get_ATIS_mgr() const { return ATIS_mgr; } + inline void set_ATIS_mgr( FGATISMgr *a ) {ATIS_mgr = a; } inline FGControls *get_controls() const { return controls; } inline void set_controls( FGControls *c ) { controls = c; } - inline FGSteam *get_steam() const { return steam; } - inline void set_steam( FGSteam *s ) { steam = s; } - inline FGViewMgr *get_viewmgr() const { return viewmgr; } inline void set_viewmgr( FGViewMgr *vm ) { viewmgr = vm; } FGViewer *get_current_view() const; @@ -278,37 +244,20 @@ public: inline SGPropertyNode *get_props () { return props; } inline void set_props( SGPropertyNode *n ) { props = n; } - inline SGPropertyNode *get_locale () { return locale; } - inline void set_locale( SGPropertyNode *n ) { locale = n; } + inline FGLocale* get_locale () { return locale; } inline SGCommandMgr *get_commands () { return commands; } - inline FGModelLoader * get_model_loader () { return model_loader; } - - inline void set_model_loader (FGModelLoader * loader) { - model_loader = loader; - } - - inline FGTextureLoader * get_texture_loader () { return texture_loader; } + SGGeod get_aircraft_position() const; - inline void set_texture_loader (FGTextureLoader * loader) { - texture_loader = loader; - } - - inline FGAircraftModel *get_aircraft_model () { return acmodel; } - - inline void set_aircraft_model (FGAircraftModel * model) - { - acmodel = model; - } - - inline FGModelMgr *get_model_mgr () { return model_mgr; } - - inline void set_model_mgr (FGModelMgr * mgr) - { - model_mgr = mgr; - } + SGVec3d get_aircraft_position_cart() const; + void get_aircraft_orientation(double& heading, double& pitch, double& roll); + + SGGeod get_view_position() const; + + SGVec3d get_view_position_cart() const; + inline string_list *get_channel_options_list () { return channel_options_list; } @@ -316,12 +265,26 @@ public: channel_options_list = l; } + inline string_list *get_initial_waypoints () { + return initial_waypoints; + } + + inline void set_initial_waypoints (string_list *list) { + initial_waypoints = list; + } + inline FGScenery * get_scenery () const { return scenery; } inline void set_scenery ( FGScenery *s ) { scenery = s; } - FGIO* get_io() const { return io; } + inline FGTileMgr * get_tile_mgr () const { return tile_mgr; } + inline void set_tile_mgr ( FGTileMgr *t ) { tile_mgr = t; } - /** + inline FGFontCache *get_fontcache() const { return fontcache; } + + inline FGTACANList *get_channellist() const { return channellist; } + inline void set_channellist( FGTACANList *c ) { channellist = c; } + + /** * Save the current state as the initial state. */ void saveInitialState (); @@ -332,6 +295,15 @@ public: */ void restoreInitialState (); + /** + * Load user settings from autosave.xml + */ + void loadUserSettings(const SGPath& datapath); + + /** + * Save user settings in autosave.xml + */ + void saveUserSettings(); };