diff --git a/src/FDM/YASim/Airplane.cpp b/src/FDM/YASim/Airplane.cpp index 60081d0a0..058221d99 100644 --- a/src/FDM/YASim/Airplane.cpp +++ b/src/FDM/YASim/Airplane.cpp @@ -61,12 +61,14 @@ void Airplane::iterate(float dt) updateGearState(); _model.iterate(); +} - // Consume fuel. This is a really simple implementation that - // assumes all engines draw equally from all tanks in proportion - // to the amount of fuel stored there. Needs to be fixed, but - // that has to wait for a decision as to what the property - // interface will look like. +void Airplane::consumeFuel(float dt) +{ + // This is a really simple implementation that assumes all engines + // draw equally from all tanks in proportion to the amount of fuel + // stored there. Needs to be fixed, but that has to wait for a + // decision as to what the property interface will look like. int i, outOfFuel = 0; float fuelFlow = 0, totalFuel = 0.00001; // <-- overflow protection for(i=0; i<_thrusters.size(); i++) diff --git a/src/FDM/YASim/Airplane.hpp b/src/FDM/YASim/Airplane.hpp index 23cf3b6b6..8fffa4ba6 100644 --- a/src/FDM/YASim/Airplane.hpp +++ b/src/FDM/YASim/Airplane.hpp @@ -17,6 +17,7 @@ public: ~Airplane(); void iterate(float dt); + void consumeFuel(float dt); ControlMap* getControlMap(); Model* getModel(); diff --git a/src/FDM/YASim/FGFDM.cpp b/src/FDM/YASim/FGFDM.cpp index 8e7767e9b..81b50bfb6 100644 --- a/src/FDM/YASim/FGFDM.cpp +++ b/src/FDM/YASim/FGFDM.cpp @@ -71,6 +71,10 @@ void FGFDM::iterate(float dt) { getExternalInput(dt); _airplane.iterate(dt); + + if(fgGetBool("/sim/freeze/fuel") != true) + _airplane.consumeFuel(dt); + setOutputProperties(); } diff --git a/src/FDM/YASim/Makefile.am b/src/FDM/YASim/Makefile.am index a69ac8469..d8b62c4fc 100644 --- a/src/FDM/YASim/Makefile.am +++ b/src/FDM/YASim/Makefile.am @@ -25,8 +25,36 @@ libYASim_a_SOURCES = \ bin_PROGRAMS = yasim -yasim_SOURCES = yasim-test.cpp +# Link the yasim executable against the individual object files rather +# than libYASim. The library references other stuff in FlightGear, +# and some linkers (Irix) do dependency checks per-library instead of +# per-object. +# +# I think that it's permissible to list the same source files more +# than once in a Makefile.am. Hopefully this doesn't break anything. -yasim_LDADD = libYASim.a -lsgxml -lsgmisc -lsgdebug +yasim_SOURCES = yasim-test.cpp \ + Airplane.cpp Airplane.hpp \ + Atmosphere.cpp Atmosphere.hpp \ + BodyEnvironment.hpp \ + ControlMap.cpp ControlMap.hpp \ + FGFDM.cpp FGFDM.hpp \ + Gear.cpp Gear.hpp \ + Glue.cpp Glue.hpp \ + Integrator.cpp Integrator.hpp \ + Jet.cpp Jet.hpp \ + Math.cpp Math.hpp \ + Model.cpp Model.hpp \ + PistonEngine.cpp PistonEngine.hpp \ + PropEngine.cpp PropEngine.hpp \ + Propeller.cpp Propeller.hpp \ + RigidBody.cpp RigidBody.hpp \ + SimpleJet.cpp SimpleJet.hpp \ + Surface.cpp Surface.hpp \ + Thruster.cpp Thruster.hpp \ + Vector.hpp \ + Wing.cpp Wing.hpp + +yasim_LDADD = -lsgxml -lsgmisc -lsgdebug INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/src diff --git a/src/FDM/YASim/yasim-test.cpp b/src/FDM/YASim/yasim-test.cpp index 9938cc109..4e18b5cdf 100644 --- a/src/FDM/YASim/yasim-test.cpp +++ b/src/FDM/YASim/yasim-test.cpp @@ -11,6 +11,7 @@ using namespace yasim; // Stubs. Not needed by a batch program, but required to link. bool fgSetFloat (const char * name, float val) { return false; } bool fgSetBool(char const * name, bool val) { return false; } +bool fgGetBool(char const * name, bool def) { return false; } SGPropertyNode* fgGetNode (const char * path, bool create) { return 0; } float fgGetFloat (const char * name, float defaultValue) { return 0; }