]> git.mxchange.org Git - flightgear.git/blobdiff - src/FDM/JSBSim/JSBSim.cxx
Make yasim accept the launchbar and hook properties. They are not tied to anything...
[flightgear.git] / src / FDM / JSBSim / JSBSim.cxx
index ff1f163c0d37a7055ca1b923e480987e47fce598..3129a961ec7c12c9a1649143f2fa23785c418650 100644 (file)
@@ -171,7 +171,8 @@ FGJSBsim::FGJSBsim( double dt )
         node->setDoubleValue("level-gal_us", Propulsion->GetTank(i)->GetContents() / 6.6);
       }
     }
-
+    Propulsion->SetFuelFreeze((fgGetNode("/sim/freeze/fuel",true))->getBoolValue());
+    
     fgSetDouble("/fdm/trim/pitch-trim", FCS->GetPitchTrimCmd());
     fgSetDouble("/fdm/trim/throttle",   FCS->GetThrottleCmd(0));
     fgSetDouble("/fdm/trim/aileron",    FCS->GetDaCmd());
@@ -314,11 +315,11 @@ void FGJSBsim::init()
     stall_warning->setDoubleValue(0);
 
     SG_LOG( SG_FLIGHT, SG_INFO, "  Bank Angle: "
-            << Propagate->Getphi()*RADTODEG << " deg" );
+            << Propagate->GetEuler(ePhi)*RADTODEG << " deg" );
     SG_LOG( SG_FLIGHT, SG_INFO, "  Pitch Angle: "
-            << Propagate->Gettht()*RADTODEG << " deg" );
+            << Propagate->GetEuler(eTht)*RADTODEG << " deg" );
     SG_LOG( SG_FLIGHT, SG_INFO, "  True Heading: "
-            << Propagate->Getpsi()*RADTODEG << " deg" );
+            << Propagate->GetEuler(ePsi)*RADTODEG << " deg" );
     SG_LOG( SG_FLIGHT, SG_INFO, "  Latitude: "
             << Propagate->GetLocation().GetLatitudeDeg() << " deg" );
     SG_LOG( SG_FLIGHT, SG_INFO, "  Longitude: "
@@ -415,7 +416,10 @@ bool FGJSBsim::copy_to_JSBsim()
     FCS->SetPitchTrimCmd( globals->get_controls()->get_elevator_trim() );
     FCS->SetDrCmd( -globals->get_controls()->get_rudder() );
     FCS->SetYawTrimCmd( -globals->get_controls()->get_rudder_trim() );
-    FCS->SetDfCmd(  globals->get_controls()->get_flaps() );
+    // FIXME: make that get_steering work
+//     FCS->SetDsCmd( globals->get_controls()->get_steering()/80.0 );
+    FCS->SetDsCmd( globals->get_controls()->get_rudder() );
+    FCS->SetDfCmd( globals->get_controls()->get_flaps() );
     FCS->SetDsbCmd( globals->get_controls()->get_speedbrake() );
     FCS->SetDspCmd( globals->get_controls()->get_spoilers() );
 
@@ -500,7 +504,8 @@ bool FGJSBsim::copy_to_JSBsim()
     }
     SGPropertyNode* node = fgGetNode("/systems/refuel", true);
     Propulsion->SetRefuel(node->getDoubleValue("contact"));
-
+    Propulsion->SetFuelFreeze((fgGetNode("/sim/freeze/fuel",true))->getBoolValue());
+    
     return true;
 }
 
@@ -576,9 +581,9 @@ bool FGJSBsim::copy_from_JSBsim()
 
     _set_Altitude_AGL( Propagate->GetDistanceAGL() );
 
-    _set_Euler_Angles( Propagate->Getphi(),
-                       Propagate->Gettht(),
-                       Propagate->Getpsi() );
+    _set_Euler_Angles( Propagate->GetEuler(ePhi),
+                       Propagate->GetEuler(eTht),
+                       Propagate->GetEuler(ePsi) );
 
     _set_Alpha( Auxiliary->Getalpha() );
     _set_Beta( Auxiliary->Getbeta() );
@@ -689,11 +694,9 @@ bool FGJSBsim::copy_from_JSBsim()
 
     }
 
-    static const SGPropertyNode *fuel_freeze = fgGetNode("/sim/freeze/fuel");
-
     // Copy the fuel levels from JSBSim if fuel
     // freeze not enabled.
-    if ( ! fuel_freeze->getBoolValue() ) {
+    if ( ! Propulsion->GetFuelFreeze() ) {
       for (i = 0; i < Propulsion->GetNumTanks(); i++) {
         SGPropertyNode * node = fgGetNode("/consumables/fuel/tank", i, true);
         FGTank* tank = Propulsion->GetTank(i);
@@ -914,17 +917,17 @@ void FGJSBsim::init_gear(void )
     FGGroundReactions* gr=fdmex->GetGroundReactions();
     int Ngear=GroundReactions->GetNumGearUnits();
     for (int i=0;i<Ngear;i++) {
+      FGLGear *gear = gr->GetGearUnit(i);
       SGPropertyNode * node = fgGetNode("gear/gear", i, true);
-      node->setDoubleValue("xoffset-in",
-         gr->GetGearUnit(i)->GetBodyLocation()(1));
-      node->setDoubleValue("yoffset-in",
-         gr->GetGearUnit(i)->GetBodyLocation()(2));
-      node->setDoubleValue("zoffset-in",
-         gr->GetGearUnit(i)->GetBodyLocation()(3));
-      node->setBoolValue("wow", gr->GetGearUnit(i)->GetWOW());
-      node->setBoolValue("has-brake", gr->GetGearUnit(i)->GetBrakeGroup() > 0);
+      node->setDoubleValue("xoffset-in", gear->GetBodyLocation()(1));
+      node->setDoubleValue("yoffset-in", gear->GetBodyLocation()(2));
+      node->setDoubleValue("zoffset-in", gear->GetBodyLocation()(3));
+      node->setBoolValue("wow", gear->GetWOW());
+      node->setBoolValue("has-brake", gear->GetBrakeGroup() > 0);
       node->setDoubleValue("position-norm", FCS->GetGearPos());
-      node->setDoubleValue("tire-pressure-norm", gr->GetGearUnit(i)->GetTirePressure());
+      node->setDoubleValue("tire-pressure-norm", gear->GetTirePressure());
+      if ( gear->GetSteerable() )
+        node->setDoubleValue("steering-norm", gear->GetSteerNorm());
     }
 }
 
@@ -933,10 +936,13 @@ void FGJSBsim::update_gear(void)
     FGGroundReactions* gr=fdmex->GetGroundReactions();
     int Ngear=GroundReactions->GetNumGearUnits();
     for (int i=0;i<Ngear;i++) {
+      FGLGear *gear = gr->GetGearUnit(i);
       SGPropertyNode * node = fgGetNode("gear/gear", i, true);
-      node->getChild("wow", 0, true)->setBoolValue(gr->GetGearUnit(i)->GetWOW());
+      node->getChild("wow", 0, true)->setBoolValue( gear->GetWOW());
       node->getChild("position-norm", 0, true)->setDoubleValue(FCS->GetGearPos());
-      gr->GetGearUnit(i)->SetTirePressure(node->getDoubleValue("tire-pressure-norm"));
+      gear->SetTirePressure(node->getDoubleValue("tire-pressure-norm"));
+      if ( gear->GetSteerable() )
+        node->setDoubleValue("steering-norm", gear->GetSteerNorm());
     }
 }