X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FFDM%2FJSBSim%2FFGFDMExec.cpp;h=ade4209cdf5a26fa07a7673964c13b66bcb8006f;hb=717ffe584f9e83ebfd5daebe226b5fac7832c64a;hp=bc81cd6f8ae4b2f9043dbc161ddec34dc87dc3a6;hpb=ae5c29e68588064dfa0dbddbd196191f14fdea91;p=flightgear.git diff --git a/src/FDM/JSBSim/FGFDMExec.cpp b/src/FDM/JSBSim/FGFDMExec.cpp index bc81cd6f8..ade4209cd 100644 --- a/src/FDM/JSBSim/FGFDMExec.cpp +++ b/src/FDM/JSBSim/FGFDMExec.cpp @@ -71,45 +71,19 @@ using namespace std; namespace JSBSim { -static const char *IdSrc = "$Id: FGFDMExec.cpp,v 1.82 2010/10/07 03:17:29 jberndt Exp $"; +static const char *IdSrc = "$Id: FGFDMExec.cpp,v 1.84 2011/01/16 16:26:14 bcoconni Exp $"; static const char *IdHdr = ID_FDMEXEC; /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% CLASS IMPLEMENTATION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ -void checkTied ( FGPropertyManager *node ) -{ - int N = node->nChildren(); - string name; - - for (int i=0; igetChild(i)->nChildren() ) { - checkTied( (FGPropertyManager*)node->getChild(i) ); - } - if ( node->getChild(i)->isTied() ) { - name = ((FGPropertyManager*)node->getChild(i))->GetFullyQualifiedName(); - node->Untie(name); - } - } -} - //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -// Constructors -FGFDMExec::FGFDMExec(FGPropertyManager* root) : Root(root) -{ - FDMctr = new unsigned int; - *FDMctr = 0; - Initialize(); -} +// Constructor FGFDMExec::FGFDMExec(FGPropertyManager* root, unsigned int* fdmctr) : Root(root), FDMctr(fdmctr) { - Initialize(); -} -void FGFDMExec::Initialize() -{ Frame = 0; Error = 0; GroundCallback = 0; @@ -136,6 +110,7 @@ void FGFDMExec::Initialize() IsChild = false; holding = false; Terminate = false; + StandAlone = false; sim_time = 0.0; dT = 1.0/120.0; // a default timestep size. This is needed for when JSBSim is @@ -150,7 +125,10 @@ void FGFDMExec::Initialize() if (Root == 0) { // Then this is the root FDM Root = new FGPropertyManager; // Create the property manager - + StandAlone = true; + } + + if (FDMctr == 0) { FDMctr = new unsigned int; // Create and initialize the child FDM counter (*FDMctr) = 0; } @@ -191,12 +169,13 @@ void FGFDMExec::Initialize() FGFDMExec::~FGFDMExec() { try { - checkTied( instance ); + Unbind(); DeAllocate(); if (IdFDM == 0) { // Meaning this is no child FDM if(Root != 0) { - delete Root; + if(StandAlone) + delete Root; Root = 0; } if(FDMctr != 0) { @@ -705,7 +684,7 @@ bool FGFDMExec::LoadModel(const string& model, bool addModelToPath) FCS->LateBind(); } catch (string prop) { cerr << endl << fgred << " Could not late bind property " << prop - << ". Aborting." << endl; + << ". Aborting." << reset << endl; result = false; }