From 57918533eb6f58543b8343081dba059a289c36c1 Mon Sep 17 00:00:00 2001
From: andy <andy>
Date: Mon, 10 Dec 2007 19:25:24 +0000
Subject: [PATCH] Maik: add ROTORBALANCE axis.  Fix spelling of ROTORRELTARGET.

---
 src/FDM/YASim/ControlMap.cpp | 4 +++-
 src/FDM/YASim/ControlMap.hpp | 4 ++--
 src/FDM/YASim/FGFDM.cpp      | 3 ++-
 src/FDM/YASim/Rotor.cpp      | 7 +++++++
 src/FDM/YASim/Rotor.hpp      | 1 +
 5 files changed, 15 insertions(+), 4 deletions(-)

diff --git a/src/FDM/YASim/ControlMap.cpp b/src/FDM/YASim/ControlMap.cpp
index 104f67806..43fcb529d 100644
--- a/src/FDM/YASim/ControlMap.cpp
+++ b/src/FDM/YASim/ControlMap.cpp
@@ -214,12 +214,14 @@ void ControlMap::applyControls(float dt)
         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 ROTORELTARGET:
+        case ROTORRELTARGET:
                        ((Rotorgear*)obj)->setRotorRelTarget(lval); break;
 	case REVERSE_THRUST: ((Jet*)obj)->setReverse(lval != 0);   break;
 	case BOOST:
diff --git a/src/FDM/YASim/ControlMap.hpp b/src/FDM/YASim/ControlMap.hpp
index e9235c65c..70125bbd2 100644
--- a/src/FDM/YASim/ControlMap.hpp
+++ b/src/FDM/YASim/ControlMap.hpp
@@ -16,8 +16,8 @@ public:
                       BOOST, CASTERING, PROPPITCH, PROPFEATHER,
                       COLLECTIVE, CYCLICAIL, CYCLICELE, ROTORENGINEON,
                       TILTYAW, TILTPITCH, TILTROLL,
-                      ROTORBRAKE, ROTORENGINEMAXRELTORQUE, ROTORELTARGET,
-                      REVERSE_THRUST, WASTEGATE,
+                      ROTORBRAKE, ROTORENGINEMAXRELTORQUE, ROTORRELTARGET,
+                      ROTORBALANCE, REVERSE_THRUST, WASTEGATE,
                       WINCHRELSPEED, HITCHOPEN, PLACEWINCH, FINDAITOW};
 
     enum { OPT_SPLIT  = 0x01,
diff --git a/src/FDM/YASim/FGFDM.cpp b/src/FDM/YASim/FGFDM.cpp
index b0a5be51d..5d68308f1 100644
--- a/src/FDM/YASim/FGFDM.cpp
+++ b/src/FDM/YASim/FGFDM.cpp
@@ -964,7 +964,8 @@ int FGFDM::parseOutput(const char* name)
     if(eq(name, "ROTORBRAKE")) return ControlMap::ROTORBRAKE;
     if(eq(name, "ROTORENGINEMAXRELTORQUE")) 
         return ControlMap::ROTORENGINEMAXRELTORQUE;
-    if(eq(name, "ROTORRELTARGET")) return ControlMap::ROTORELTARGET;
+    if(eq(name, "ROTORRELTARGET")) return ControlMap::ROTORRELTARGET;
+    if(eq(name, "ROTORBALANCE")) return ControlMap::ROTORBALANCE;
     if(eq(name, "REVERSE_THRUST")) return ControlMap::REVERSE_THRUST;
     if(eq(name, "WASTEGATE")) return ControlMap::WASTEGATE;
     if(eq(name, "WINCHRELSPEED")) return ControlMap::WINCHRELSPEED;
diff --git a/src/FDM/YASim/Rotor.cpp b/src/FDM/YASim/Rotor.cpp
index 6bb69ca49..5e2bf4b4c 100644
--- a/src/FDM/YASim/Rotor.cpp
+++ b/src/FDM/YASim/Rotor.cpp
@@ -791,6 +791,13 @@ void Rotor::setCyclicail(float lval,float rval)
     _cyclicail=-(_mincyclicail+(lval+1)/2*(_maxcyclicail-_mincyclicail));
 }
 
+void Rotor::setRotorBalance(float lval)
+{
+    lval = Math::clamp(lval, -1, 1);
+    int i;
+    _balance2 = lval;
+}
+
 void Rotor::getPosition(float* out)
 {
     int i;
diff --git a/src/FDM/YASim/Rotor.hpp b/src/FDM/YASim/Rotor.hpp
index 5bec0a43f..fcf354391 100644
--- a/src/FDM/YASim/Rotor.hpp
+++ b/src/FDM/YASim/Rotor.hpp
@@ -93,6 +93,7 @@ public:
     void setCyclicail(float lval,float rval);
     void setCyclicele(float lval,float rval);
     void setCollective(float lval);
+    void setRotorBalance(float lval);
     void setAlphaoutput(int i, const char *text);
     void setCcw(int ccw);
     int getCcw() {return _ccw;};