#include <simgear/scene/sky/sky.hxx>
#include <Time/light.hxx>
#include <Include/general.hxx>
+#include <Aircraft/replay.hxx>
#include <Cockpit/cockpit.hxx>
#include <Cockpit/hud.hxx>
#include <Model/panelnode.hxx>
#include <ATC/ATCdisplay.hxx>
#include <ATC/ATCmgr.hxx>
#include <ATC/AIMgr.hxx>
-#include <Replay/replay.hxx>
#include <Time/tmp.hxx>
#include <Time/fg_timer.hxx>
#include <Environment/environment_mgr.hxx>
#include <GUI/new_gui.hxx>
-
-#ifdef FG_MPLAYER_AS
-#include <MultiPlayer/multiplaymgr.hpp>
-#endif
-
-
+#include <MultiPlayer/multiplaymgr.hxx>
#include "fg_commands.hxx"
#include "fg_io.hxx"
= fgGetNode("/sim/freeze/clock", true);
static const SGPropertyNode *cur_time_override
= fgGetNode("/sim/time/cur-time-override", true);
+ static const SGPropertyNode *max_simtime_per_frame
+ = fgGetNode("/sim/max-simtime-per-frame", true);
SGCloudLayer::enable_bump_mapping = fgGetBool("/sim/rendering/bump-mapping");
real_delta_time_sec
= double(current_time_stamp - last_time_stamp) / 1000000.0;
+
+ // Limit the time we need to spend in simulation loops
+ // That means, if the /sim/max-simtime-per-frame value is strictly positive
+ // you can limit the maximum amount of time you will do simulations for
+ // one frame to display. The cpu time spent in simulations code is roughtly
+ // at least O(real_delta_time_sec). If this is (due to running debug
+ // builds or valgrind or something different blowing up execution times)
+ // larger than the real time you will no more get any response
+ // from flightgear. This limits that effect. Just set to property from
+ // your .fgfsrc or commandline ...
+ double dtMax = max_simtime_per_frame->getDoubleValue();
+ if (0 < dtMax && dtMax < real_delta_time_sec)
+ real_delta_time_sec = dtMax;
+
// round the real time down to a multiple of 1/model-hz.
// this way all systems are updated the _same_ amount of dt.
{
++frames;
#endif
+ // Update any multiplayer's network queues, the AIMultiplayer
+ // implementation is an AI model and depends on that
+ globals->get_multiplayer_mgr()->Update();
+
// Run ATC subsystem
if (fgGetBool("/sim/atc/enabled"))
globals->get_ATC_mgr()->update(delta_time_sec);
// Run the AI subsystem
+ // FIXME: run that also if we have multiplying enabled since the
+ // multiplayer information is interpreted by an AI model
if (fgGetBool("/sim/ai-traffic/enabled"))
globals->get_AI_mgr()->update(delta_time_sec);
-#ifdef FG_MPLAYER_AS
- // Update any multiplayer models
- globals->get_multiplayer_mgr()->Update();
-#endif
-
// Run flight model
// Calculate model iterations needed for next frame
fgInitFGRoot(argc, argv);
// Check for the correct base package version
- static char required_version[] = "0.9.8";
+ static char required_version[] = "0.9.9";
string base_version = fgBasePackageVersion();
if ( !(base_version == required_version) ) {
// tell the operator how to use this application
fgOSOpenWindow( fgGetInt("/sim/startup/xsize"),
fgGetInt("/sim/startup/ysize"),
fgGetInt("/sim/rendering/bits-per-pixel"),
- fgGetBool("/sim/rendering/clouds3d"),
+ fgGetBool("/sim/rendering/clouds3d-enable"),
get_stencil_buffer,
fgGetBool("/sim/startup/fullscreen") );