From df9069a2244cbde73466d7730135df9d57b66e63 Mon Sep 17 00:00:00 2001 From: andy Date: Wed, 27 Feb 2002 00:41:57 +0000 Subject: [PATCH] Added a post-solver "initEngines()" call to return the engines to a sane initial state. No more starting up at cruise RPM. --- src/FDM/YASim/Airplane.cpp | 8 ++++++++ src/FDM/YASim/Airplane.hpp | 1 + src/FDM/YASim/PropEngine.cpp | 7 +++++++ src/FDM/YASim/PropEngine.hpp | 1 + src/FDM/YASim/Thruster.hpp | 1 + src/FDM/YASim/YASim.cxx | 2 +- 6 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/FDM/YASim/Airplane.cpp b/src/FDM/YASim/Airplane.cpp index 7515dc639..7132772aa 100644 --- a/src/FDM/YASim/Airplane.cpp +++ b/src/FDM/YASim/Airplane.cpp @@ -650,6 +650,14 @@ void Airplane::solveGear() } } +void Airplane::initEngines() +{ + for(int i=0; i<_thrusters.size(); i++) { + ThrustRec* tr = (ThrustRec*)_thrusters.get(i); + tr->thruster->init(); + } +} + void Airplane::stabilizeThrust() { int i; diff --git a/src/FDM/YASim/Airplane.hpp b/src/FDM/YASim/Airplane.hpp index e1901af76..cf088f1b9 100644 --- a/src/FDM/YASim/Airplane.hpp +++ b/src/FDM/YASim/Airplane.hpp @@ -59,6 +59,7 @@ public: float getFuelDensity(int tank); // kg/m^3 void compile(); // generate point masses & such, then solve + void initEngines(); void stabilizeThrust(); // Solution output values diff --git a/src/FDM/YASim/PropEngine.cpp b/src/FDM/YASim/PropEngine.cpp index 0c5c5e34f..32812f5f6 100644 --- a/src/FDM/YASim/PropEngine.cpp +++ b/src/FDM/YASim/PropEngine.cpp @@ -123,6 +123,13 @@ void PropEngine::stabilize() _eng->setRunning(false); } +void PropEngine::init() +{ + _omega = 0.01; + _eng->setStarter(false); + _eng->setMagnetos(0); +} + void PropEngine::integrate(float dt) { float speed = -Math::dot3(_wind, _dir); diff --git a/src/FDM/YASim/PropEngine.hpp b/src/FDM/YASim/PropEngine.hpp index 11cdb914d..3e4cced64 100644 --- a/src/FDM/YASim/PropEngine.hpp +++ b/src/FDM/YASim/PropEngine.hpp @@ -30,6 +30,7 @@ public: virtual float getFuelFlow(); // Runtime instructions + virtual void init(); virtual void integrate(float dt); virtual void stabilize(); diff --git a/src/FDM/YASim/Thruster.hpp b/src/FDM/YASim/Thruster.hpp index 953c2eb01..b461ad1d5 100644 --- a/src/FDM/YASim/Thruster.hpp +++ b/src/FDM/YASim/Thruster.hpp @@ -43,6 +43,7 @@ public: // Runtime instructions void setWind(float* wind); void setAir(float pressure, float temp); + virtual void init() {} virtual void integrate(float dt)=0; virtual void stabilize()=0; diff --git a/src/FDM/YASim/YASim.cxx b/src/FDM/YASim/YASim.cxx index 9b7fdf16e..e2b6d1e09 100644 --- a/src/FDM/YASim/YASim.cxx +++ b/src/FDM/YASim/YASim.cxx @@ -189,7 +189,7 @@ void YASim::init() copyToYASim(true); _fdm->getExternalInput(); - _fdm->getAirplane()->stabilizeThrust(); + _fdm->getAirplane()->initEngines(); set_inited(true); } -- 2.39.5