]> git.mxchange.org Git - flightgear.git/commitdiff
Remove view/tile/scenery members from globals
authorJames Turner <zakalawe@mac.com>
Thu, 10 Dec 2015 22:48:02 +0000 (16:48 -0600)
committerJames Turner <zakalawe@mac.com>
Fri, 11 Dec 2015 18:11:59 +0000 (12:11 -0600)
- also fix sound manager creation

src/Main/fg_init.cxx
src/Main/globals.cxx
src/Main/globals.hxx
src/Main/main.cxx
src/Sound/soundmanager.hxx
src/Viewer/fgviewer.cxx
src/Viewer/viewmgr.cxx
src/Viewer/viewmgr.hxx

index 785b2fa5c55cd20b864c24f7ea507c67be72e1fa..d7532557471f4ee79c3fbf310ec410d820162dfd 100644 (file)
@@ -691,7 +691,7 @@ void fgCreateSubsystems(bool duringReset) {
     // to be updated in every loop.
     // Sound manager is updated last so it can use the CPU while the GPU
     // is processing the scenery (doubled the frame-rate for me) -EMH-
-    globals->add_subsystem("sound", new FGSoundManager, SGSubsystemMgr::SOUND);
+    globals->add_new_subsystem<FGSoundManager>(SGSubsystemMgr::SOUND);
 
     ////////////////////////////////////////////////////////////////////
     // Initialize the event manager subsystem.
@@ -716,7 +716,7 @@ void fgCreateSubsystems(bool duringReset) {
     ////////////////////////////////////////////////////////////////////
     // Add the FlightGear property utilities.
     ////////////////////////////////////////////////////////////////////
-    globals->add_subsystem("airport-dynamics", new flightgear::AirportDynamicsManager);
+    globals->add_new_subsystem<flightgear::AirportDynamicsManager>();
 
     ////////////////////////////////////////////////////////////////////
     // Add the performance monitoring system.
@@ -897,10 +897,7 @@ void fgCreateSubsystems(bool duringReset) {
     globals->add_subsystem("aircraft-model", new FGAircraftModel, SGSubsystemMgr::DISPLAY);
     globals->add_subsystem("model-manager", new FGModelMgr, SGSubsystemMgr::DISPLAY);
 
-    globals->add_subsystem("view-manager", new FGViewMgr, SGSubsystemMgr::DISPLAY);
-
-    globals->add_subsystem("tile-manager", globals->get_tile_mgr(), 
-      SGSubsystemMgr::DISPLAY);
+    globals->add_new_subsystem<FGViewMgr>(SGSubsystemMgr::DISPLAY);
 }
 
 void fgPostInitSubsystems()
@@ -1050,8 +1047,9 @@ void fgStartNewReset()
     
     // order is important here since tile-manager shutdown needs to
     // access the scenery object
-    globals->set_tile_mgr(NULL);
-    globals->set_scenery(NULL);
+    subsystemManger->remove(FGTileMgr::subsystemName());
+    subsystemManger->remove(FGScenery::subsystemName());
+
     FGScenery::getPagerSingleton()->clearRequests();
     flightgear::CameraGroup::setDefault(NULL);
     
index eedfd21bcb8e7587f244d8c97f2565d472452603..f2c57e15d2ece5345a1b7002f1a80d9a4786bf38 100644 (file)
@@ -158,7 +158,6 @@ FGGlobals::FGGlobals() :
     fg_home( "" ),
     time_params( NULL ),
     ephem( NULL ),
-    viewmgr( NULL ),
     commands( SGCommandMgr::instance() ),
     channel_options_list( NULL ),
     initial_waypoints( NULL ),
@@ -217,9 +216,9 @@ FGGlobals::~FGGlobals()
     subsystem_mgr->unbind();
 
     subsystem_mgr->remove("aircraft-model");
-    subsystem_mgr->remove("tile-manager");
     subsystem_mgr->remove("model-manager");
-    _tile_mgr.clear();
+
+    subsystem_mgr->remove(FGTileMgr::subsystemName());
 
     osg::ref_ptr<osgViewer::Viewer> vw(renderer->getViewer());
     if (vw) {
@@ -238,10 +237,10 @@ FGGlobals::~FGGlobals()
     }
 
     osgDB::Registry::instance()->clearObjectCache();
+    subsystem_mgr->remove(FGScenery::subsystemName());
 
     // renderer touches subsystems during its destruction
     set_renderer(NULL);
-    _scenery.clear();
     _chatter_queue.clear();
 
     delete subsystem_mgr;
@@ -694,12 +693,6 @@ FGGlobals::saveUserSettings()
     }
 }
 
-FGViewer *
-FGGlobals::get_current_view () const
-{
-  return viewmgr->get_current_view();
-}
-
 long int FGGlobals::get_warp() const
 {
   return fgGetInt("/sim/time/warp");
@@ -722,22 +715,23 @@ void FGGlobals::set_warp_delta( long int d )
 
 FGScenery* FGGlobals::get_scenery () const
 {
-    return _scenery.get();
+    return get_subsystem<FGScenery>();
 }
 
-void FGGlobals::set_scenery ( FGScenery *s )
+FGTileMgr* FGGlobals::get_tile_mgr () const
 {
-    _scenery = s;
+    return get_subsystem<FGTileMgr>();
 }
 
-FGTileMgr* FGGlobals::get_tile_mgr () const
+FGViewMgr *FGGlobals::get_viewmgr() const
 {
-    return _tile_mgr.get();
+    return get_subsystem<FGViewMgr>();
 }
 
-void FGGlobals::set_tile_mgr ( FGTileMgr *t )
+FGViewer* FGGlobals::get_current_view () const
 {
-    _tile_mgr = t;
+    FGViewMgr* vm = get_viewmgr();
+    return vm ? vm->get_current_view() : 0;
 }
 
 void FGGlobals::set_matlib( SGMaterialLib *m )
index db882aee2833b841b244e62842efc99cb6f2ac00..82dd12681ff03050be786207911c88bb46907b40 100644 (file)
@@ -120,9 +120,6 @@ private:
     // Material properties library
     SGSharedPtr<SGMaterialLib> matlib;
 
-    // viewer manager
-    FGViewMgr *viewmgr;
-
     SGCommandMgr *commands;
 
     // list of serial port-like configurations
@@ -132,12 +129,6 @@ private:
     // and or flight-plan file during initialization
     string_list *initial_waypoints;
 
-    // FlightGear scenery manager
-    SGSharedPtr<FGScenery> _scenery;
-
-    // Tile manager
-    SGSharedPtr<FGTileMgr> _tile_mgr;
-
     FGFontCache *fontcache;
 
     // Navigational Aids
@@ -304,10 +295,6 @@ public:
     inline SGMaterialLib *get_matlib() const { return matlib; }
     void set_matlib( SGMaterialLib *m );
 
-    inline FGViewMgr *get_viewmgr() const { return viewmgr; }
-    inline void set_viewmgr( FGViewMgr *vm ) { viewmgr = vm; }
-    FGViewer *get_current_view() const;
-
     inline SGPropertyNode *get_props () { return props; }
 
     /**
@@ -345,13 +332,14 @@ public:
         initial_waypoints = list;
     }
 
+    FGViewMgr *get_viewmgr() const;
+    FGViewer *get_current_view() const;
+
     FGControls *get_controls() const;
 
     FGScenery * get_scenery () const;
-    void set_scenery ( FGScenery *s );
 
     FGTileMgr * get_tile_mgr () const;
-    void set_tile_mgr ( FGTileMgr *t );
 
     inline FGFontCache *get_fontcache() const { return fontcache; }
   
index 2434d2058adcd3c46d4c18aeea3e09395ef427d1..996c05fa9205da94d999dce4a4ba20912af96aa8 100644 (file)
@@ -260,10 +260,10 @@ static void fgIdleFunction ( void ) {
         // Initialize the TG scenery subsystem.
         ////////////////////////////////////////////////////////////////////
         
-        globals->set_scenery( new FGScenery );
+        globals->add_new_subsystem<FGScenery>(SGSubsystemMgr::DISPLAY);
         globals->get_scenery()->init();
         globals->get_scenery()->bind();
-        globals->set_tile_mgr( new FGTileMgr );
+        globals->add_new_subsystem<FGTileMgr>(SGSubsystemMgr::DISPLAY);
         
         fgSplashProgress("creating-subsystems");
     } else if (( idle_state == 7 ) || (idle_state == 2007)) {
index f76be4b80d46887a2e716e31ae12d0c6ea83bcb6..a22b738845157685ff01746380b21a28c6cceb9e 100644 (file)
@@ -74,6 +74,8 @@ public:
     ~FGSoundManager() {}
 
     void update(double dt) {}
+
+    static const char* subsystemName() { return "sound"; }
 };
 
 #endif // ENABLE_AUDIO_SUPPORT
index be10d7a640adaa32ba58e9d704f40b8246b9cc0f..aa0fbf9a14b5e9e9b7ce337f5217c4ce5a71283a 100644 (file)
@@ -199,9 +199,9 @@ fgviewerMain(int argc, char** argv)
         throw sg_io_exception("Error loading materials file", mpath);
     }
 
-    globals->set_scenery( new FGScenery );
-    globals->get_scenery()->init();
-    globals->get_scenery()->bind();
+    FGScenery* scenery = globals->add_new_subsystem<FGScenery>();
+    scenery->init();
+    scenery->bind();
 
     // The file path list must be set in the registry.
     osgDB::Registry::instance()->getDataFilePathList() = filePathList;
index 6d7035777efd3b9ba9b7ab18db3b6d138e2d4dba..5e7339b7779fb047090eac7778cecb1a79542ca7 100644 (file)
@@ -45,13 +45,11 @@ FGViewMgr::FGViewMgr( void ) :
   current_view_orientation(SGQuatd::zeros()),
   current_view_or_offset(SGQuatd::zeros())
 {
-  globals->set_viewmgr(this);
 }
 
 // Destructor
 FGViewMgr::~FGViewMgr( void )
 {
-  globals->set_viewmgr(NULL);
 }
 
 void
index b8711be8c73046aa5edf5ca4519e03865a37b257..4043c6b08e8744713d8e983b1634ab1c1a2fc727 100644 (file)
@@ -73,6 +73,7 @@ public:
 
     void add_view( FGViewer * v );
     
+    static const char* subsystemName() { return "view-mgr"; }
 private:
     void do_bind();