From 5af1e589de3f5ad3d7baacc4fc0ac2c211580f01 Mon Sep 17 00:00:00 2001 From: andy Date: Sat, 24 Jan 2004 23:09:41 +0000 Subject: [PATCH] Wire up a "gear-ratio" attribute for geared propeller aircraft --- src/FDM/YASim/FGFDM.cpp | 2 ++ src/FDM/YASim/PropEngine.cpp | 3 ++- src/FDM/YASim/PropEngine.hpp | 2 ++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/FDM/YASim/FGFDM.cpp b/src/FDM/YASim/FGFDM.cpp index 01e707772..ed0bd1504 100644 --- a/src/FDM/YASim/FGFDM.cpp +++ b/src/FDM/YASim/FGFDM.cpp @@ -623,6 +623,8 @@ void FGFDM::parsePropeller(XMLAttributes* a) prop->setManualPitch(); } + thruster->setGearRatio(attrf(a, "gear-ratio", 1)); + char buf[64]; sprintf(buf, "/engines/engine[%d]", _nextEngine++); EngRec* er = new EngRec(); diff --git a/src/FDM/YASim/PropEngine.cpp b/src/FDM/YASim/PropEngine.cpp index 429ded72e..4c06a4d8a 100644 --- a/src/FDM/YASim/PropEngine.cpp +++ b/src/FDM/YASim/PropEngine.cpp @@ -11,6 +11,7 @@ PropEngine::PropEngine(Propeller* prop, PistonEngine* eng, float moment) _dir[0] = 1; _dir[1] = 0; _dir[2] = 0; _variable = false; + _gearRatio = 1; _prop = prop; _eng = eng; @@ -154,7 +155,7 @@ void PropEngine::integrate(float dt) _eng->setMixture(_mixture); _eng->setFuelState(_fuel); - _prop->calc(_rho, speed, _omega, &thrust, &propTorque); + _prop->calc(_rho, speed, _omega * _gearRatio, &thrust, &propTorque); _eng->calc(_pressure, _temp, _omega); engTorque = _eng->getTorque(); _fuelFlow = _eng->getFuelFlow(); diff --git a/src/FDM/YASim/PropEngine.hpp b/src/FDM/YASim/PropEngine.hpp index 7b8eac128..603dee162 100644 --- a/src/FDM/YASim/PropEngine.hpp +++ b/src/FDM/YASim/PropEngine.hpp @@ -17,6 +17,7 @@ public: void setAdvance(float advance); void setPropPitch(float proppitch); void setVariableProp(float min, float max); + void setGearRatio(float ratio) { _gearRatio = ratio; } virtual PropEngine* getPropEngine() { return this; } virtual PistonEngine* getPistonEngine() { return _eng; } @@ -45,6 +46,7 @@ private: bool _variable; int _magnetos; // 0=off, 1=right, 2=left, 3=both + float _gearRatio; float _advance; // control input, 0-1 float _maxOmega; float _minOmega; -- 2.39.5