diff --git a/src/FDM/JSBSim/JSBSim.cxx b/src/FDM/JSBSim/JSBSim.cxx index e8a96c018..18863dbb6 100644 --- a/src/FDM/JSBSim/JSBSim.cxx +++ b/src/FDM/JSBSim/JSBSim.cxx @@ -144,6 +144,8 @@ FGJSBsim::FGJSBsim( double dt ) } } + resetPropertyState(); + fdmex = new FGFDMExec( (FGPropertyManager*)globals->get_props() ); // Register ground callback. @@ -1411,3 +1413,21 @@ 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(); };