]> git.mxchange.org Git - flightgear.git/commitdiff
Patch from Joacim to fix a bug where rotor weights were doubled.
authorandy <andy>
Wed, 10 Jan 2007 19:03:02 +0000 (19:03 +0000)
committerandy <andy>
Wed, 10 Jan 2007 19:03:02 +0000 (19:03 +0000)
src/FDM/YASim/Airplane.cpp
src/FDM/YASim/Airplane.hpp
src/FDM/YASim/Rotor.cpp
src/FDM/YASim/Rotor.hpp

index bfa7bcdd00e9335f1b33716792b9f093121c4e6b..0385bfaf24f186592d28ed0156bddce5e75af2df 100644 (file)
@@ -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.
index 3da23219696556e21e559e1e195df0924545d110..7ff4970bc013530e751e02e400c47374469257d6 100644 (file)
@@ -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);
index 5581b824ef4119c2105ed87189d3ca6ca1a933f6..d338ba5a71bb9cd057de8dbe9329ad2b1b6ec706 100644 (file)
@@ -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; i<r->numRotorparts(); 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)
index 0f7953e8b1bc60c5bcd47257447c7028304a03a4..2f8e1f87e8f026bb0fb0becce473f3ce8ad8302a 100644 (file)
@@ -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);}