X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FMain%2Fglobals.cxx;h=9de7fdb4382d6f8c8b878aa3d1032273eddc3e67;hb=4141c6f8bb42b3491502f5e6b82595367da9fb69;hp=ab752033b401603ef4dd8dcf6389a18ba22bda48;hpb=bc99033c96b7f8c3c30904cf94248d924450348e;p=flightgear.git diff --git a/src/Main/globals.cxx b/src/Main/globals.cxx index ab752033b..9de7fdb43 100644 --- a/src/Main/globals.cxx +++ b/src/Main/globals.cxx @@ -25,6 +25,11 @@ #include "fg_props.hxx" + +//////////////////////////////////////////////////////////////////////// +// Implementation of FGGlobals. +//////////////////////////////////////////////////////////////////////// + // global global :-) FGGlobals *globals; @@ -33,21 +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) { - // TODO: move to a proper bind method -// fgTie("/sim/freeze", &freeze); -// fgTie("/sim/warp", &warp); -// fgTie("/sim/warp-delta", &warp_delta); } // Destructor FGGlobals::~FGGlobals() { - // TODO: move to a proper unbind method -// fgUntie("/sim/freeze"); -// fgUntie("/sim/warp"); -// fgUntie("/sim/warp-delta"); + 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