From 7bc9749d916ecfe21f9e84b2ed1c7de07adb21e7 Mon Sep 17 00:00:00 2001 From: ThorstenB Date: Sun, 13 Feb 2011 19:24:54 +0100 Subject: [PATCH] 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). --- src/Main/fg_init.cxx | 3 +-- src/Scenery/tilemgr.cxx | 3 +++ 2 files changed, 4 insertions(+), 2 deletions(-) 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; -- 2.39.5