]> git.mxchange.org Git - flightgear.git/commitdiff
Don't crash with UFO FDM, etc, or other FDMs that don't define global props needed...
authorjmt <jmt>
Mon, 21 Sep 2009 16:26:07 +0000 (16:26 +0000)
committerTim Moore <timoore@redhat.com>
Mon, 21 Sep 2009 20:51:40 +0000 (22:51 +0200)
src/Autopilot/autobrake.cxx

index f97b56c2d492da3ded56b731b195c08f7d185ad8..0eae0fe1b185358866d8336bdd0b6b020526a4ea 100644 (file)
@@ -107,6 +107,20 @@ void FGAutoBrake::unbind()
 
 void FGAutoBrake::update(double dt)
 {
+  _leftBrakeInput = SGMiscd::max(_brakeInputs[0]->getDoubleValue(), 
+      _brakeInputs[2]->getDoubleValue());
+  _rightBrakeInput = SGMiscd::max(_brakeInputs[1]->getDoubleValue(), 
+      _brakeInputs[3]->getDoubleValue());
+
+  // various FDMs don't supply sufficent information for us to work,
+  // so just be passive in those cases.
+  if (!_weightOnWheelsNode || !_groundspeedNode || !_engineControlsNode) {
+    // pass the values straight through
+    _leftBrakeOutput = _leftBrakeInput; 
+    _rightBrakeOutput = _rightBrakeInput; 
+    return;
+  }
+
   if (dt <= 0.0) {
     return; // paused
   }
@@ -115,11 +129,6 @@ void FGAutoBrake::update(double dt)
   _actualDecel = (_lastGroundspeedKts - gs) / dt;
   _lastGroundspeedKts = gs;
   
-  _leftBrakeInput = SGMiscd::max(_brakeInputs[0]->getDoubleValue(), 
-      _brakeInputs[2]->getDoubleValue());
-  _rightBrakeInput = SGMiscd::max(_brakeInputs[1]->getDoubleValue(), 
-      _brakeInputs[3]->getDoubleValue());
-  
   if (!_armed || (_step == 0)) {
     // even if we're off or disarmed, the physical valve system must pass
     // pilot control values through.