]> git.mxchange.org Git - flightgear.git/blobdiff - src/FDM/YASim/ControlMap.cpp
Fix for bug 1304 - crash loading XML route
[flightgear.git] / src / FDM / YASim / ControlMap.cpp
index 9bc74b5ecf48ed9bc73b202255ddae9557380280..c300c4c754b90b58476f5b7a813472b503cdeb0b 100644 (file)
@@ -1,10 +1,20 @@
+#ifdef HAVE_CONFIG_H
+#  include "config.h"
+#endif
+
 #include "Jet.hpp"
 #include "Thruster.hpp"
 #include "PropEngine.hpp"
 #include "PistonEngine.hpp"
+#include "TurbineEngine.hpp"
 #include "Gear.hpp"
+#include "Hook.hpp"
+#include "Launchbar.hpp"
 #include "Wing.hpp"
+#include "Rotor.hpp"
 #include "Math.hpp"
+#include "Propeller.hpp"
+#include "Hitch.hpp"
 
 #include "ControlMap.hpp"
 namespace yasim {
@@ -118,6 +128,7 @@ int ControlMap::getOutputHandle(void* obj, int type)
        if(o->object == obj && o->type == type)
            return i;
     }
+    return 0;
 }
 
 void ControlMap::setTransitionTime(int handle, float time)
@@ -183,21 +194,54 @@ void ControlMap::applyControls(float dt)
        switch(o->type) {
        case THROTTLE: ((Thruster*)obj)->setThrottle(lval);        break;
        case MIXTURE:  ((Thruster*)obj)->setMixture(lval);         break;
-       case STARTER:  ((Thruster*)obj)->setStarter((bool)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;
+        case PROPPITCH: ((PropEngine*)obj)->setPropPitch(lval);    break;
+        case PROPFEATHER: ((PropEngine*)obj)->setPropFeather((int)lval); break;
        case REHEAT:   ((Jet*)obj)->setReheat(lval);               break;
        case VECTOR:   ((Jet*)obj)->setRotation(lval);             break;
        case BRAKE:    ((Gear*)obj)->setBrake(lval);               break;
        case STEER:    ((Gear*)obj)->setRotation(lval);            break;
        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;
+       case FLAP0EFFECTIVENESS: ((Wing*)obj)->setFlap0Effectiveness(lval); break;
        case FLAP1:    ((Wing*)obj)->setFlap1(lval, rval);         break;
+       case FLAP1EFFECTIVENESS: ((Wing*)obj)->setFlap1Effectiveness(lval); break;
        case SPOILER:  ((Wing*)obj)->setSpoiler(lval, rval);       break;
+        case COLLECTIVE:   ((Rotor*)obj)->setCollective(lval);     break;
+        case CYCLICAIL:    ((Rotor*)obj)->setCyclicail(lval,rval); break;
+        case CYCLICELE:    ((Rotor*)obj)->setCyclicele(lval,rval); break;
+        case TILTPITCH:    ((Rotor*)obj)->setTiltPitch(lval);      break;
+        case TILTYAW:      ((Rotor*)obj)->setTiltYaw(lval);        break;
+        case TILTROLL:     ((Rotor*)obj)->setTiltRoll(lval);       break;
+        case ROTORBALANCE:
+                           ((Rotor*)obj)->setRotorBalance(lval);   break;
+        case ROTORBRAKE:   ((Rotorgear*)obj)->setRotorBrake(lval); break;
+        case ROTORENGINEON: 
+                        ((Rotorgear*)obj)->setEngineOn((int)lval); break;
+        case ROTORENGINEMAXRELTORQUE: 
+              ((Rotorgear*)obj)->setRotorEngineMaxRelTorque(lval); break;
+        case ROTORRELTARGET:
+                       ((Rotorgear*)obj)->setRotorRelTarget(lval); break;
+       case REVERSE_THRUST: ((Jet*)obj)->setReverse(lval != 0);   break;
        case BOOST:
-           ((Thruster*)obj)->getPistonEngine()->setBoost(lval);
+           ((PistonEngine*)((Thruster*)obj)->getEngine())->setBoost(lval);
            break;
+        case WASTEGATE:
+            ((PistonEngine*)((Thruster*)obj)->getEngine())->setWastegate(lval);
+            break;
+        case WINCHRELSPEED: ((Hitch*)obj)->setWinchRelSpeed(lval); break;
+        case HITCHOPEN:    ((Hitch*)obj)->setOpen(lval!=0);       break;
+        case PLACEWINCH:    ((Hitch*)obj)->setWinchPositionAuto(lval!=0); break;
+        case FINDAITOW:     ((Hitch*)obj)->findBestAIObject(lval!=0); break;
        }
     }
 }
@@ -209,7 +253,13 @@ float ControlMap::rangeMin(int type)
     case FLAP0:    return -1;  // [-1:1]
     case FLAP1:    return -1;
     case STEER:    return -1;
+    case CYCLICELE: return -1;
+    case CYCLICAIL: return -1;
+    case COLLECTIVE: return -1;
+    case WINCHRELSPEED: return -1;
     case MAGNETOS: return 0;   // [0:3]
+    case FLAP0EFFECTIVENESS: return 1;  // [0:10]
+    case FLAP1EFFECTIVENESS: return 1;  // [0:10]
     default:       return 0;   // [0:1]
     }
 }
@@ -222,6 +272,8 @@ float ControlMap::rangeMax(int type)
     case FLAP1:    return 1;
     case STEER:    return 1;
     case MAGNETOS: return 3; // [0:3]
+    case FLAP0EFFECTIVENESS: return 10;//  [0:10]
+    case FLAP1EFFECTIVENESS: return 10;//  [0:10]
     default:       return 1; // [0:1]
     }
 }