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:
parent
ebc2fbd684
commit
d98b7f05ff
5 changed files with 43 additions and 7 deletions
|
@ -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++)
|
||||||
|
|
|
@ -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();
|
||||||
|
|
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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; }
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue