X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FFDM%2FJSBSim%2Fmodels%2FFGModel.cpp;h=71f6cb3ed3d468e5cadb0bd3b7035ff751e161a6;hb=4f364af6d178d947eae1a5a751e3a9542b270069;hp=53f2500fcbcb5546e2f7fdfe788b9b7c7fa5fc14;hpb=932b38a87e2870d23f9be9461b551f1e1fe556ba;p=flightgear.git diff --git a/src/FDM/JSBSim/models/FGModel.cpp b/src/FDM/JSBSim/models/FGModel.cpp index 53f2500fc..71f6cb3ed 100644 --- a/src/FDM/JSBSim/models/FGModel.cpp +++ b/src/FDM/JSBSim/models/FGModel.cpp @@ -6,23 +6,23 @@ Purpose: Base class for all models Called by: FGSimExec, et. al. - ------------- Copyright (C) 1999 Jon S. Berndt (jsb@hal-pc.org) ------------- + ------------- Copyright (C) 1999 Jon S. Berndt (jon@jsbsim.org) ------------- This program is free software; you can redistribute it and/or modify it under - the terms of the GNU General Public License as published by the Free Software + the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. - You should have received a copy of the GNU General Public License along with + You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - Further information about the GNU General Public License can also be found on + Further information about the GNU Lesser General Public License can also be found on the world wide web at http://www.gnu.org. FUNCTIONAL DESCRIPTION @@ -39,7 +39,6 @@ INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ #include "FGModel.h" -#include "FGState.h" #include "FGFDMExec.h" #include "FGAtmosphere.h" #include "FGFCS.h" @@ -48,13 +47,17 @@ INCLUDES #include "FGAerodynamics.h" #include "FGInertial.h" #include "FGGroundReactions.h" +#include "FGExternalReactions.h" #include "FGAircraft.h" #include "FGPropagate.h" #include "FGAuxiliary.h" +#include + +using namespace std; namespace JSBSim { -static const char *IdSrc = "$Id$"; +static const char *IdSrc = "$Id: FGModel.cpp,v 1.16 2010/11/18 12:38:06 jberndt Exp $"; static const char *IdHdr = ID_MODEL; /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -68,19 +71,6 @@ CLASS IMPLEMENTATION FGModel::FGModel(FGFDMExec* fdmex) { FDMExec = fdmex; - NextModel = 0L; - - State = 0; - Atmosphere = 0; - FCS = 0; - Propulsion = 0; - MassBalance = 0; - Aerodynamics = 0; - Inertial = 0; - GroundReactions = 0; - Aircraft = 0; - Propagate = 0; - Auxiliary = 0; //in order for FGModel derived classes to self-bind (that is, call //their bind function in the constructor, the PropertyManager pointer @@ -104,30 +94,7 @@ FGModel::~FGModel() bool FGModel::InitModel(void) { - State = FDMExec->GetState(); - Atmosphere = FDMExec->GetAtmosphere(); - FCS = FDMExec->GetFCS(); - Propulsion = FDMExec->GetPropulsion(); - MassBalance = FDMExec->GetMassBalance(); - Aerodynamics = FDMExec->GetAerodynamics(); - Inertial = FDMExec->GetInertial(); - GroundReactions = FDMExec->GetGroundReactions(); - Aircraft = FDMExec->GetAircraft(); - Propagate = FDMExec->GetPropagate(); - Auxiliary = FDMExec->GetAuxiliary(); - - if (!State || - !Atmosphere || - !FCS || - !Propulsion || - !MassBalance || - !Aerodynamics || - !Inertial || - !GroundReactions || - !Aircraft || - !Propagate || - !Auxiliary) return(false); - else return(true); + return true; } //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -136,13 +103,12 @@ bool FGModel::Run() { if (debug_lvl & 4) cout << "Entering Run() for model " << Name << endl; - if (exe_ctr == 1) { - if (exe_ctr++ >= rate) exe_ctr = 1; - return false; - } else { - if (exe_ctr++ >= rate) exe_ctr = 1; - return true; - } + if (rate == 1) return false; // Fast exit if nothing to do + + if (exe_ctr >= rate) exe_ctr = 1; + + if (exe_ctr++ == 1) return false; + else return true; } //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%