]> git.mxchange.org Git - flightgear.git/blobdiff - src/Controls/controls.cxx
- adjusted for no-value constructor for FGPanel
[flightgear.git] / src / Controls / controls.cxx
index e4f828c1e7f577bcd5a150774b3ef1b794c95372..203aaea4b33c4d93ffd4563bd5b373b01aefebcb 100644 (file)
@@ -23,6 +23,9 @@
 
 #include "controls.hxx"
 
+#include <simgear/debug/logstream.hxx>
+#include <Main/fg_props.hxx>
+
 
 FGControls controls;
 
@@ -35,13 +38,6 @@ FGControls::FGControls() :
     rudder( 0.0 ),
     throttle_idle( true )
 {
-    for ( int engine = 0; engine < MAX_ENGINES; engine++ ) {
-       throttle[engine] = 0.0;
-    }
-
-    for ( int wheel = 0; wheel < MAX_WHEELS; wheel++ ) {
-        brake[wheel] = 0.0;
-    }
 }
 
 
@@ -61,3 +57,95 @@ FGControls::~FGControls() {
 }
 
 
+void
+FGControls::init ()
+{
+    for ( int engine = 0; engine < MAX_ENGINES; engine++ ) {
+       throttle[engine] = 0.0;
+       mixture[engine] = 1.0;
+       prop_advance[engine] = 1.0;
+    }
+
+    for ( int wheel = 0; wheel < MAX_WHEELS; wheel++ ) {
+        brake[wheel] = 0.0;
+    }
+
+    auto_coordination = fgGetNode("/sim/auto-coordination", true);
+}
+
+
+void
+FGControls::bind ()
+{
+  fgTie("/controls/aileron", this,
+                   &FGControls::get_aileron, &FGControls::set_aileron);
+  fgTie("/controls/elevator", this,
+       &FGControls::get_elevator, &FGControls::set_elevator);
+  fgTie("/controls/elevator-trim", this,
+       &FGControls::get_elevator_trim, &FGControls::set_elevator_trim);
+  fgTie("/controls/rudder", this,
+       &FGControls::get_rudder, &FGControls::set_rudder);
+  fgTie("/controls/flaps", this,
+       &FGControls::get_flaps, &FGControls::set_flaps);
+  int index;
+  for (index = 0; index < MAX_ENGINES; index++) {
+    char name[32];
+    sprintf(name, "/controls/throttle[%d]", index);
+    fgTie(name, this, index,
+         &FGControls::get_throttle, &FGControls::set_throttle);
+    sprintf(name, "/controls/mixture[%d]", index);
+    fgTie(name, this, index,
+        &FGControls::get_mixture, &FGControls::set_mixture);
+    sprintf(name, "/controls/propellor-pitch[%d]", index);
+    fgTie(name, this, index,
+        &FGControls::get_prop_advance, &FGControls::set_prop_advance);
+  }
+//   fgTie("/controls/throttle/all", this, ALL_ENGINES,
+//     &FGControls::get_throttle, &FGControls::set_throttle);
+//   fgTie("/controls/mixture/all", this, ALL_ENGINES,
+//     &FGControls::get_mixture, &FGControls::set_mixture);
+//   fgTie("/controls/propellor-pitch/all", this, ALL_ENGINES,
+//     &FGControls::get_prop_advance, &FGControls::set_prop_advance);
+  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);
+  }
+  fgTie("/controls/brakes/all", this, ALL_WHEELS,
+       &FGControls::get_brake, &FGControls::set_brake);
+}
+
+
+void
+FGControls::unbind ()
+{
+                               // Tie control properties.
+  fgUntie("/controls/aileron");
+  fgUntie("/controls/elevator");
+  fgUntie("/controls/elevator-trim");
+  fgUntie("/controls/rudder");
+  fgUntie("/controls/flaps");
+  int index;
+  for (index = 0; index < MAX_ENGINES; index++) {
+    char name[32];
+    sprintf(name, "/controls/throttle[%d]", index);
+    fgUntie(name);
+    sprintf(name, "/controls/mixture[%d]", index);
+    fgUntie(name);
+    sprintf(name, "/controls/propellor-pitch[%d]", index);
+    fgUntie(name);
+  }
+  for (index = 0; index < MAX_WHEELS; index++) {
+    char name[32];
+    sprintf(name, "/controls/brakes[%d]", index);
+    fgUntie(name);
+  }
+}
+
+
+void
+FGControls::update ()
+{
+}
+