From: andy Date: Sat, 30 Nov 2002 20:22:25 +0000 (+0000) Subject: Honor the /sim/freeze/fuel property to inhibit fuel consumption at runtime. X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=d98b7f05ff6ee78d7439eeec6b060f870b6d8798;p=flightgear.git Honor the /sim/freeze/fuel property to inhibit fuel consumption at runtime. Link the standalone executable against the source files explicitly rather than libYASim, as the Irix linker can't handle the unneeded dependance on other parts of FlightGear. --- 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; }