]> git.mxchange.org Git - flightgear.git/commitdiff
From Vivian: add a tunable launchbar acceleration, to better support some
authorandy <andy>
Fri, 1 May 2009 16:11:23 +0000 (16:11 +0000)
committerTim Moore <timoore@redhat.com>
Fri, 1 May 2009 22:44:22 +0000 (00:44 +0200)
of the Jets on the catapult.

src/FDM/YASim/ControlMap.cpp
src/FDM/YASim/ControlMap.hpp
src/FDM/YASim/FGFDM.cpp
src/FDM/YASim/Launchbar.cpp
src/FDM/YASim/Launchbar.hpp

index def15410cb556d831a828d016739d1292c5b7096..cb143f02d31489a1873b4e7e3324c2dcac3861c3 100644 (file)
@@ -190,7 +190,8 @@ void ControlMap::applyControls(float dt)
        switch(o->type) {
        case THROTTLE: ((Thruster*)obj)->setThrottle(lval);        break;
        case MIXTURE:  ((Thruster*)obj)->setMixture(lval);         break;
-        case CONDLEVER: ((TurbineEngine*)((PropEngine*)obj)->getEngine())->setCondLever(lval); break;
+    case CONDLEVER: ((TurbineEngine*)((PropEngine*)
+                        obj)->getEngine())->setCondLever(lval); break;
        case STARTER:  ((Thruster*)obj)->setStarter(lval != 0.0);  break;
        case MAGNETOS: ((PropEngine*)obj)->setMagnetos((int)lval); break;
        case ADVANCE:  ((PropEngine*)obj)->setAdvance(lval);       break;
@@ -203,6 +204,7 @@ void ControlMap::applyControls(float dt)
        case EXTEND:   ((Gear*)obj)->setExtension(lval);           break;
        case HEXTEND:  ((Hook*)obj)->setExtension(lval);           break;
        case LEXTEND:  ((Launchbar*)obj)->setExtension(lval);      break;
+    case LACCEL:   ((Launchbar*)obj)->setAcceleration(lval);   break;
        case CASTERING:((Gear*)obj)->setCastering(lval != 0);      break;
        case SLAT:     ((Wing*)obj)->setSlat(lval);                break;
        case FLAP0:    ((Wing*)obj)->setFlap0(lval, rval);         break;
index 8c8e9639eadb3259e5bebabb57feebca069f369e..839ae2c4f385fe125a33ac59899cd9dd40c3f925 100644 (file)
@@ -11,7 +11,7 @@ public:
 
     enum OutputType { THROTTLE, MIXTURE, CONDLEVER, STARTER, MAGNETOS,
                      ADVANCE, REHEAT, PROP,
-                     BRAKE, STEER, EXTEND, HEXTEND, LEXTEND,
+        BRAKE, STEER, EXTEND, HEXTEND, LEXTEND, LACCEL,
                      INCIDENCE, FLAP0, FLAP1, SLAT, SPOILER, VECTOR,
               FLAP0EFFECTIVENESS, FLAP1EFFECTIVENESS,
                       BOOST, CASTERING, PROPPITCH, PROPFEATHER,
index 9b675ece4e24a869765b3aa37c7298bdfb7feae7..b727d3c594424fd4e7e008b64caba13844f8c46b 100644 (file)
@@ -949,6 +949,7 @@ int FGFDM::parseOutput(const char* name)
     if(eq(name, "EXTEND"))    return ControlMap::EXTEND;
     if(eq(name, "HEXTEND"))   return ControlMap::HEXTEND;
     if(eq(name, "LEXTEND"))   return ControlMap::LEXTEND;
+        if(eq(name, "LACCEL"))    return ControlMap::LACCEL;
     if(eq(name, "INCIDENCE")) return ControlMap::INCIDENCE;
     if(eq(name, "FLAP0"))     return ControlMap::FLAP0;
     if(eq(name, "FLAP0EFFECTIVENESS"))   return ControlMap::FLAP0EFFECTIVENESS;
index 697fa5a1b72fb91c1deba5951b352ce8a4b1c1a2..756e9a0345f02364712c5e720a278f3f8cd4e831 100644 (file)
@@ -2,7 +2,6 @@
 #include "BodyEnvironment.hpp"
 #include "Ground.hpp"
 #include "RigidBody.hpp"
-
 #include "Launchbar.hpp"
 
 namespace yasim {
@@ -32,6 +31,7 @@ Launchbar::Launchbar()
     _pos_on_cat = 0.0;
     _state = Unmounted;
     _strop = false;
+    _acceleration = 0.25;
 }
 
 void Launchbar::setLaunchbarMount(float* position)
@@ -76,6 +76,11 @@ void Launchbar::setLaunchCmd(bool cmd)
     _launch_cmd = cmd;
 }
 
+void Launchbar::setAcceleration(float acceleration)
+{
+    _acceleration = acceleration;
+}
+
 void Launchbar::setGlobalGround(double *global_ground)
 {
     int i;
@@ -473,7 +478,9 @@ void Launchbar::calcForce(Ground *g_cb, RigidBody* body, State* s, float* lv, fl
 
     if (_state == Launch) {
         // Now apply a constant tension from the catapult over the launchbar.
-      Math::mul3(25.0, llbdir, _launchbar_force);
+        // We modify the max accleration 100 m/s^2 by the normalised input
+        //SG_LOG(SG_FLIGHT, SG_ALERT, "acceleration " << 100 * _acceleration );
+        Math::mul3(100 * _acceleration, llbdir, _launchbar_force);
 
       if (1.0 < dist) {
         _state = Completed;
index 86733d882ed246c20636b6d4b26842b6e603f84f..2773029c62020dc11335089746218afa5747b065 100644 (file)
@@ -28,6 +28,7 @@ public:
     void setExtension(float extension);
     void setLaunchCmd(bool cmd);
     void setGlobalGround(double *global_ground);
+    void setAcceleration(float acceleration);
 
     void getLaunchbarMount(float* out);
     void getHoldbackMount(float* out);
@@ -85,6 +86,7 @@ private:
     bool _strop;
     double _global_ground[4];
     LBState _state;
+    float _acceleration;
 };
 
 }; // namespace yasim