diff --git a/src/FDM/JSBSim/JSBSim.cxx b/src/FDM/JSBSim/JSBSim.cxx index 15b575123..d92d265f0 100644 --- a/src/FDM/JSBSim/JSBSim.cxx +++ b/src/FDM/JSBSim/JSBSim.cxx @@ -143,6 +143,8 @@ FGJSBsim::FGJSBsim( double dt ) break; } } + + resetPropertyState(); fdmex = new FGFDMExec( (FGPropertyManager*)globals->get_props() ); @@ -298,13 +300,6 @@ FGJSBsim::FGJSBsim( double dt ) FGJSBsim::~FGJSBsim(void) { delete fdmex; - - SGPropertyNode_ptr jsbsimRoot = fgGetNode("/fdm/jsbsim"); - if (jsbsimRoot) { - SGPropertyNode* fdm = jsbsimRoot->getParent(); - fdm->removeChild("jsbsim", 0, false); - } - // properties are deleted when the sharedPtr above goes away } /******************************************************************************/ @@ -1418,3 +1413,22 @@ void FGJSBsim::update_external_forces(double t_off) fgSetDouble("/fdm/jsbsim/systems/hook/tailhook-pos-deg", fi); } + +void FGJSBsim::resetPropertyState() +{ +// this code works-around bug #222: +// http://code.google.com/p/flightgear-bugs/issues/detail?id=222 +// for whatever reason, having an existing value for the WOW +// property causes the NaNs. Should that be fixed, this code can die + SGPropertyNode* gear = fgGetNode("/fdm/jsbsim/gear", false); + if (!gear) { + return; + } + + int index = 0; + SGPropertyNode* unitNode = NULL; + for (; (unitNode = gear->getChild("unit", index)) != NULL; ++index) { + unitNode->removeChild("WOW", 0, false); + } +} + diff --git a/src/FDM/JSBSim/JSBSim.hxx b/src/FDM/JSBSim/JSBSim.hxx index 6729a141f..1a8037167 100644 --- a/src/FDM/JSBSim/JSBSim.hxx +++ b/src/FDM/JSBSim/JSBSim.hxx @@ -284,6 +284,7 @@ private: void update_external_forces(double t_off); + void resetPropertyState(); };