]> git.mxchange.org Git - flightgear.git/blobdiff - src/Controls/controls.cxx
Make sure that all elapsed time gets passed to update when a subsystem
[flightgear.git] / src / Controls / controls.cxx
index 9b598467bd5f8a25b478e4032eecb5f13d8e30ae..a60ae0ca36e7b80119b3507f15edfe13fa1bdde1 100644 (file)
@@ -62,7 +62,6 @@ FGControls::FGControls() :
     flaps( 0.0 ),
     parking_brake( 0.0 ),
     throttle_idle( true ),
-    fuel_selector( FUEL_BOTH ),
     gear_down( false )
 {
 }
@@ -79,8 +78,9 @@ void FGControls::reset_all()
     set_throttle( ALL_ENGINES, 0.0 );
     set_starter( ALL_ENGINES, false );
     set_magnetos( ALL_ENGINES, 0 );
+    set_fuel_pump( ALL_ENGINES, false );
     throttle_idle = true;
-    fuel_selector = FUEL_BOTH;
+    set_fuel_selector( ALL_TANKS, true );
     gear_down = true;
 }
 
@@ -96,6 +96,7 @@ FGControls::init ()
     for ( int engine = 0; engine < MAX_ENGINES; engine++ ) {
        throttle[engine] = 0.0;
        mixture[engine] = 1.0;
+       fuel_pump[engine] = false;
        prop_advance[engine] = 1.0;
        magnetos[engine] = 0;
        starter[engine] = false;
@@ -144,6 +145,10 @@ FGControls::bind ()
     fgTie(name, this, index,
         &FGControls::get_mixture, &FGControls::set_mixture);
     fgSetArchivable(name);
+    sprintf(name, "/controls/fuel-pump[%d]", index);
+    fgTie(name, this, index,
+        &FGControls::get_fuel_pump, &FGControls::set_fuel_pump);
+    fgSetArchivable(name);
     sprintf(name, "/controls/propeller-pitch[%d]", index);
     fgTie(name, this, index,
         &FGControls::get_prop_advance, &FGControls::set_prop_advance);
@@ -161,15 +166,19 @@ FGControls::bind ()
        &FGControls::get_parking_brake, &FGControls::set_parking_brake);
   fgSetArchivable("/controls/parking-brake");
   for (index = 0; index < MAX_WHEELS; index++) {
-    char name[32];
-    sprintf(name, "/controls/brakes[%d]", index);
-    fgTie(name, this, index,
-        &FGControls::get_brake, &FGControls::set_brake);
-    fgSetArchivable(name);
+      char name[32];
+      sprintf(name, "/controls/brakes[%d]", index);
+      fgTie(name, this, index,
+            &FGControls::get_brake, &FGControls::set_brake);
+      fgSetArchivable(name);
+  }
+  for (index = 0; index < MAX_TANKS; index++) {
+      char name[32];
+      sprintf(name, "/controls/fuel-selector[%d]", index);
+      fgTie(name, this, index,
+            &FGControls::get_fuel_selector, &FGControls::set_fuel_selector);
+      fgSetArchivable(name);
   }
-  fgTie("/controls/fuel-selector", this,
-       &FGControls::get_fuel_selector, &FGControls::set_fuel_selector);
-  fgSetArchivable("/controls/gear-down");
   fgTie("/controls/gear-down", this,
        &FGControls::get_gear_down, &FGControls::set_gear_down);
   fgSetArchivable("/controls/gear-down");
@@ -194,6 +203,8 @@ FGControls::unbind ()
     fgUntie(name);
     sprintf(name, "/controls/mixture[%d]", index);
     fgUntie(name);
+    sprintf(name, "/controls/fuel-pump[%d]", index);
+    fgUntie(name);
     sprintf(name, "/controls/propeller-pitch[%d]", index);
     fgUntie(name);
     sprintf(name, "/controls/magnetos[%d]", index);
@@ -394,6 +405,20 @@ FGControls::move_mixture( int engine, double amt )
     }
 }
 
+void
+FGControls::set_fuel_pump( int engine, bool val )
+{
+    if ( engine == ALL_ENGINES ) {
+       for ( int i = 0; i < MAX_ENGINES; i++ ) {
+           fuel_pump[i] = val;
+       }
+    } else {
+       if ( (engine >= 0) && (engine < MAX_ENGINES) ) {
+           fuel_pump[engine] = val;
+       }
+    }
+}
+
 void
 FGControls::set_prop_advance( int engine, double pos )
 {
@@ -472,6 +497,21 @@ FGControls::set_starter( int engine, bool flag )
     }
 }
 
+void
+FGControls::set_fuel_selector( int tank, bool pos )
+{
+    if ( tank == ALL_TANKS ) {
+       for ( int i = 0; i < MAX_TANKS; i++ ) {
+           fuel_selector[i] = pos;
+       }
+    } else {
+       if ( (tank >= 0) && (tank < MAX_TANKS) ) {
+           fuel_selector[tank] = pos;
+       }
+    }
+}
+
+
 void
 FGControls::set_parking_brake( double pos )
 {