From: ThorstenB Date: Sun, 13 Feb 2011 18:24:54 +0000 (+0100) Subject: Support scenery reloading (needs simgear update). X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=7bc9749d916ecfe21f9e84b2ed1c7de07adb21e7;p=flightgear.git Support scenery reloading (needs simgear update). TileMgr subsystem reinit: remove all scenery tiles from scenegraph and clear cache (simgear update required). "normal" sim resets: no TileMgr reset is needed (avoid reloading scenery). --- diff --git a/src/Main/fg_init.cxx b/src/Main/fg_init.cxx index 0e83ba131..a615eddee 100644 --- a/src/Main/fg_init.cxx +++ b/src/Main/fg_init.cxx @@ -1557,8 +1557,7 @@ void fgReInitSubsystems() globals->get_viewmgr()->reinit(); globals->get_subsystem("time")->reinit(); - globals->get_subsystem("tile-manager")->reinit(); - + // setup state to end re-init fgSetBool("/sim/signals/reinit", false); if ( !freeze ) { diff --git a/src/Scenery/tilemgr.cxx b/src/Scenery/tilemgr.cxx index adc200b86..6c19ec5c0 100644 --- a/src/Scenery/tilemgr.cxx +++ b/src/Scenery/tilemgr.cxx @@ -117,6 +117,9 @@ void FGTileMgr::init() { void FGTileMgr::reinit() { + // remove all old scenery nodes from scenegraph and clear cache + osg::Group* group = globals->get_scenery()->get_terrain_branch(); + group->removeChildren(0, group->getNumChildren()); tile_cache.init(); state = Inited;