#include <vector>
#include STL_STRING
+#include "fgfs.hxx"
+
+
SG_USING_STD( vector );
SG_USING_STD( string );
class SGEphemeris;
+class SGCommandMgr;
class SGMagVar;
+class SGPropertyNode;
class SGRoute;
class SGTime;
-class SGPropertyNode;
-class SGCommandMgr;
-class FGSubsystemMgr;
-class FGEnvironmentMgr;
-class FGEnvironment;
-class FGControls;
-class FGSteam;
-class FGSoundMgr;
-class FGAutopilot;
-class FGViewMgr;
-class FGViewer;
+class FGAIMgr;
class FGATCMgr;
class FGATCDisplay;
-class FGAIMgr;
-class FGModelLoader;
-class FGTextureLoader;
class FGAircraftModel;
+class FGAutopilot;
+class FGControls;
+class FGEnvironment;
+class FGEnvironmentMgr;
+class FGIO;
+class FGModelLoader;
class FGModelMgr;
class FGScenery;
-class FGIO;
+#ifdef FG_MPLAYER_AS
+class FGMultiplayRxMgr;
+class FGMultiplayTxMgr;
+#endif
+class FGPanel;
+class FGSoundMgr;
+class FGTextureLoader;
+class FGTileMgr;
+class FGViewMgr;
+class FGViewer;
+
/**
* Bucket for subsystem pointers representing the sim's state.
// Global autopilot "route"
SGRoute *route;
+ // 2D panel
+ FGPanel *current_panel;
+
// sound manager
FGSoundMgr *soundmgr;
// control input state
FGControls *controls;
- // Steam instruments
- FGSteam *steam;
-
// viewer manager
FGViewMgr *viewmgr;
// FlightGear scenery manager
FGScenery *scenery;
+ // Tile manager
+ FGTileMgr *tile_mgr;
+
FGIO* io;
+#ifdef FG_MPLAYER_AS
+ //Mulitplayer managers
+ FGMultiplayTxMgr *multiplayer_tx_mgr;
+
+ FGMultiplayRxMgr *multiplayer_rx_mgr;
+#endif
+
public:
FGGlobals();
- ~FGGlobals();
+ virtual ~FGGlobals();
- inline FGSubsystemMgr * get_subsystem_mgr () const {
- return subsystem_mgr;
- }
+ virtual FGSubsystemMgr * get_subsystem_mgr () const;
+
+ virtual FGSubsystem * get_subsystem (const char * name);
+
+ virtual void add_subsystem (const char * name,
+ FGSubsystem * subsystem,
+ FGSubsystemMgr::GroupType
+ type = FGSubsystemMgr::GENERAL,
+ double min_time_sec = 0);
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_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 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 FGPanel *get_current_panel() const { return current_panel; }
+ inline void set_current_panel( FGPanel *cp ) { current_panel = cp; }
+
inline FGSoundMgr *get_soundmgr() const { return soundmgr; }
inline void set_soundmgr( FGSoundMgr *sm ) { soundmgr = sm; }
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;
model_mgr = mgr;
}
+#ifdef FG_MPLAYER_AS
+ inline FGMultiplayTxMgr *get_multiplayer_tx_mgr () { return multiplayer_tx_mgr; }
+
+ inline void set_multiplayer_tx_mgr (FGMultiplayTxMgr * mgr)
+ {
+ multiplayer_tx_mgr = mgr;
+ }
+
+ inline FGMultiplayRxMgr *get_multiplayer_rx_mgr () { return multiplayer_rx_mgr; }
+
+ inline void set_multiplayer_rx_mgr (FGMultiplayRxMgr * mgr)
+ {
+ multiplayer_rx_mgr = mgr;
+ }
+#endif
+
inline string_list *get_channel_options_list () {
return channel_options_list;
}
inline FGScenery * get_scenery () const { return scenery; }
inline void set_scenery ( FGScenery *s ) { scenery = s; }
+ inline FGTileMgr * get_tile_mgr () const { return tile_mgr; }
+ inline void set_tile_mgr ( FGTileMgr *t ) { tile_mgr = t; }
+
FGIO* get_io() const { return io; }
+
/**
* Save the current state as the initial state.
*/