#include <simgear/misc/commands.hxx>
#include <Environment/environment_mgr.hxx>
-#include <Systems/system_mgr.hxx>
#include "globals.hxx"
#include "viewmgr.hxx"
// Constructor
FGGlobals::FGGlobals() :
+ subsystem_mgr(new FGSubsystemMgr),
sim_time_sec(0.0),
#if defined(FX) && defined(XMESA)
fullscreen( true ),
#endif
warp( 0 ),
warp_delta( 0 ),
- logger(0),
- systemmgr(new FGSystemMgr),
props(new SGPropertyNode),
initial_state(0),
+ locale(NULL),
commands(new SGCommandMgr),
io(new FGIO)
{
// Destructor
FGGlobals::~FGGlobals()
{
+ delete subsystem_mgr;
delete initial_state;
delete props;
delete commands;
void
FGGlobals::restoreInitialState ()
{
- if (initial_state == 0) {
- SG_LOG(SG_GENERAL, SG_ALERT, "No initial state available to restore!!!");
- } else if (!copyProperties(initial_state, props)) {
- SG_LOG(SG_GENERAL, SG_INFO,
- "Some errors restoring initial state (probably just read-only props)");
- } else {
- SG_LOG(SG_GENERAL, SG_INFO, "Initial state restored successfully");
- }
+ if ( initial_state == 0 ) {
+ SG_LOG(SG_GENERAL, SG_ALERT,
+ "No initial state available to restore!!!");
+ return;
+ }
+
+ SGPropertyNode *currentPresets = new SGPropertyNode;
+ SGPropertyNode *targetNode = fgGetNode( "/sim/presets" );
+
+ // stash the /sim/presets tree
+ if ( !copyProperties(targetNode, currentPresets) ) {
+ SG_LOG( SG_GENERAL, SG_ALERT, "Failed to save /sim/presets subtree" );
+ }
+
+ if ( copyProperties(initial_state, props) ) {
+ SG_LOG( SG_GENERAL, SG_INFO, "Initial state restored successfully" );
+ } else {
+ SG_LOG( SG_GENERAL, SG_INFO,
+ "Some errors restoring initial state (read-only props?)" );
+ }
+
+ // recover the /sim/presets tree
+ if ( !copyProperties(currentPresets, targetNode) ) {
+ SG_LOG( SG_GENERAL, SG_ALERT,
+ "Failed to restore /sim/presets subtree" );
+ }
+
+ delete currentPresets;
}
FGViewer *