#include "viewmgr.hxx"
#include "fg_props.hxx"
-
+#include "fg_io.hxx"
\f
////////////////////////////////////////////////////////////////////////
// Constructor
FGGlobals::FGGlobals() :
- sim_time_ms(0.0),
+ subsystem_mgr(new FGSubsystemMgr),
+ sim_time_sec(0.0),
#if defined(FX) && defined(XMESA)
fullscreen( true ),
#endif
warp( 0 ),
warp_delta( 0 ),
- logger(0),
props(new SGPropertyNode),
initial_state(0),
- commands(new SGCommandMgr)
+ locale(NULL),
+ commands(new SGCommandMgr),
+ io(new FGIO)
{
}
// Destructor
FGGlobals::~FGGlobals()
{
+ delete subsystem_mgr;
delete initial_state;
delete props;
delete commands;
+ delete io;
}
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");
- }
-}
-
-const FGEnvironment *
-FGGlobals::get_environment () const
-{
- return environment_mgr->getEnvironment();
-}
-
-const FGEnvironment *
-FGGlobals::get_environment (double lat, double lon, double alt) const
-{
- return environment_mgr->getEnvironment(lat, lon, alt);
+ 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 *