#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 <Sound/beacon.hxx>
#include <Sound/morse.hxx>
#include <FDM/flight.hxx>
-#include <FDM/UIUCModel/uiuc_aircraftdir.h>
// #include <FDM/ADA.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/multiplaytxmgr.hxx>
-#include <MultiPlayer/multiplayrxmgr.hxx>
-#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_rx_mgr()->Update();
-#endif
-
// Run flight model
// Calculate model iterations needed for next frame
}
}
- view_location->set_tile_center( globals->get_scenery()->get_next_center() );
-
#ifdef ENABLE_AUDIO_SUPPORT
// Right now we make a simplifying assumption that the primary
// aircraft is the source of all sounds and that all sounds are
get_aircraft_model()->get3DModel()->getSGLocation();
// set positional offset for sources
- sgVec3 source_pos_offset;
- sgSubVec3( source_pos_offset,
- view_location->get_view_pos(), acmodel_loc->get_view_pos() );
+ sgdVec3 dsource_pos_offset;
+ sgdSubVec3( dsource_pos_offset,
+ view_location->get_absolute_view_pos(),
+ acmodel_loc->get_absolute_view_pos() );
// cout << "pos all = " << source_pos_offset[0] << " " << source_pos_offset[1] << " " << source_pos_offset[2] << endl;
+ sgVec3 source_pos_offset;
+ sgSetVec3(source_pos_offset, dsource_pos_offset);
globals->get_soundmgr()->set_source_pos_all( source_pos_offset );
// set the velocity
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
sgUseDisplayList = fgGetBool( "/sim/rendering/use-display-list", true );
- // Initialize the Aircraft directory to "" (UIUC)
- aircraft_dir = "";
-
// Load the configuration parameters. (Command line options
// overrides config file options. Config file options override
// defaults.)
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") );