1
0
Fork 0

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.
This commit is contained in:
andy 2002-11-30 20:22:25 +00:00
parent ebc2fbd684
commit d98b7f05ff
5 changed files with 43 additions and 7 deletions

View file

@ -61,12 +61,14 @@ void Airplane::iterate(float dt)
updateGearState(); updateGearState();
_model.iterate(); _model.iterate();
}
// Consume fuel. This is a really simple implementation that void Airplane::consumeFuel(float dt)
// assumes all engines draw equally from all tanks in proportion {
// to the amount of fuel stored there. Needs to be fixed, but // This is a really simple implementation that assumes all engines
// that has to wait for a decision as to what the property // draw equally from all tanks in proportion to the amount of fuel
// interface will look like. // 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; int i, outOfFuel = 0;
float fuelFlow = 0, totalFuel = 0.00001; // <-- overflow protection float fuelFlow = 0, totalFuel = 0.00001; // <-- overflow protection
for(i=0; i<_thrusters.size(); i++) for(i=0; i<_thrusters.size(); i++)

View file

@ -17,6 +17,7 @@ public:
~Airplane(); ~Airplane();
void iterate(float dt); void iterate(float dt);
void consumeFuel(float dt);
ControlMap* getControlMap(); ControlMap* getControlMap();
Model* getModel(); Model* getModel();

View file

@ -71,6 +71,10 @@ void FGFDM::iterate(float dt)
{ {
getExternalInput(dt); getExternalInput(dt);
_airplane.iterate(dt); _airplane.iterate(dt);
if(fgGetBool("/sim/freeze/fuel") != true)
_airplane.consumeFuel(dt);
setOutputProperties(); setOutputProperties();
} }

View file

@ -25,8 +25,36 @@ libYASim_a_SOURCES = \
bin_PROGRAMS = yasim 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 INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/src

View file

@ -11,6 +11,7 @@ using namespace yasim;
// Stubs. Not needed by a batch program, but required to link. // Stubs. Not needed by a batch program, but required to link.
bool fgSetFloat (const char * name, float val) { return false; } bool fgSetFloat (const char * name, float val) { return false; }
bool fgSetBool(char const * name, bool 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; } SGPropertyNode* fgGetNode (const char * path, bool create) { return 0; }
float fgGetFloat (const char * name, float defaultValue) { return 0; } float fgGetFloat (const char * name, float defaultValue) { return 0; }