From: andy Date: Wed, 10 Jan 2007 19:03:02 +0000 (+0000) Subject: Patch from Joacim to fix a bug where rotor weights were doubled. X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=5aa142ee5f60796081e73e13089caed1224d83b7;p=flightgear.git Patch from Joacim to fix a bug where rotor weights were doubled. --- diff --git a/src/FDM/YASim/Airplane.cpp b/src/FDM/YASim/Airplane.cpp index bfa7bcdd0..0385bfaf2 100644 --- a/src/FDM/YASim/Airplane.cpp +++ b/src/FDM/YASim/Airplane.cpp @@ -482,9 +482,9 @@ float Airplane::compileWing(Wing* w) return wgt; } -float Airplane::compileRotorgear() +void Airplane::compileRotorgear() { - return getRotorgear()->compile(_model.getBody()); + getRotorgear()->compile(); } float Airplane::compileFuselage(Fuselage* f) @@ -626,8 +626,6 @@ void Airplane::compile() for(i=0; i<_vstabs.size(); i++) aeroWgt += compileWing((Wing*)_vstabs.get(i)); - // The rotor(s) - aeroWgt += compileRotorgear(); // The fuselage(s) for(i=0; i<_fuselages.size(); i++) @@ -681,7 +679,12 @@ void Airplane::compile() solveGear(); if(_wing && _tail) solve(); - else solveHelicopter(); + else + { + // The rotor(s) mass: + compileRotorgear(); + solveHelicopter(); + } // Do this after solveGear, because it creates "gear" objects that // we don't want to affect. diff --git a/src/FDM/YASim/Airplane.hpp b/src/FDM/YASim/Airplane.hpp index 3da232196..7ff4970bc 100644 --- a/src/FDM/YASim/Airplane.hpp +++ b/src/FDM/YASim/Airplane.hpp @@ -108,7 +108,7 @@ private: void solve(); void solveHelicopter(); float compileWing(Wing* w); - float compileRotorgear(); + void compileRotorgear(); float compileFuselage(Fuselage* f); void compileGear(GearRec* gr); void applyDragFactor(float factor); diff --git a/src/FDM/YASim/Rotor.cpp b/src/FDM/YASim/Rotor.cpp index 5581b824e..d338ba5a7 100644 --- a/src/FDM/YASim/Rotor.cpp +++ b/src/FDM/YASim/Rotor.cpp @@ -1362,24 +1362,13 @@ void Rotorgear::addRotor(Rotor* rotor) _in_use = 1; } -float Rotorgear::compile(RigidBody* body) +void Rotorgear::compile() { float wgt = 0; for(int j=0; j<_rotors.size(); j++) { Rotor* r = (Rotor*)_rotors.get(j); r->compile(); - int i; - for(i=0; inumRotorparts(); i++) { - Rotorpart* rp = (Rotorpart*)r->getRotorpart(i); - float mass = rp->getWeight(); - mass = mass * Math::sqrt(mass); - float pos[3]; - rp->getPosition(pos); - body->addMass(mass, pos); - wgt += mass; - } } - return wgt; } void Rotorgear::getDownWash(float *pos, float * v_heli, float *downwash) diff --git a/src/FDM/YASim/Rotor.hpp b/src/FDM/YASim/Rotor.hpp index 0f7953e8b..2f8e1f87e 100644 --- a/src/FDM/YASim/Rotor.hpp +++ b/src/FDM/YASim/Rotor.hpp @@ -223,7 +223,7 @@ public: ~Rotorgear(); int isInUse() {return _in_use;} void setInUse() {_in_use = 1;} - float compile(RigidBody* body); + void compile(); void addRotor(Rotor* rotor); int getNumRotors() {return _rotors.size();} Rotor* getRotor(int i) {return (Rotor*)_rotors.get(i);}