X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FMain%2Fglobals.cxx;h=9de7fdb4382d6f8c8b878aa3d1032273eddc3e67;hb=4141c6f8bb42b3491502f5e6b82595367da9fb69;hp=e1536925a344dab7cea2b9d4a4c88b945c2780fb;hpb=6654ae5f491ae65668b0dc7e2330c02d08d8df04;p=flightgear.git diff --git a/src/Main/globals.cxx b/src/Main/globals.cxx index e1536925a..9de7fdb43 100644 --- a/src/Main/globals.cxx +++ b/src/Main/globals.cxx @@ -22,8 +22,14 @@ #include "globals.hxx" +#include "fg_props.hxx" + +//////////////////////////////////////////////////////////////////////// +// Implementation of FGGlobals. +//////////////////////////////////////////////////////////////////////// + // global global :-) FGGlobals *globals; @@ -32,12 +38,47 @@ FGGlobals *globals; FGGlobals::FGGlobals() : freeze( false ), warp( 0 ), - warp_delta( 0 ) + warp_delta( 0 ), + props(new SGPropertyNode), + initial_state(0), + commands(new SGCommandMgr) { } // Destructor -FGGlobals::~FGGlobals() { +FGGlobals::~FGGlobals() +{ + delete initial_state; + delete props; + delete commands; +} + + +// Save the current state as the initial state. +void +FGGlobals::saveInitialState () +{ + delete initial_state; + initial_state = new SGPropertyNode(); + if (!copyProperties(props, initial_state)) + SG_LOG(SG_GENERAL, SG_ALERT, "Error saving initial state"); } + +// Restore the saved initial state, if any +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"); + } +} + + +// end of globals.cxx