//
// Written by Curtis Olson, started May 1997.
//
-// Copyright (C) 1997 - 2002 Curtis L. Olson - curt@flightgear.org
+// Copyright (C) 1997 - 2002 Curtis L. Olson - http://www.flightgear.org/~curt
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License as
#include <Include/general.hxx>
#include <Cockpit/cockpit.hxx>
-#include <Cockpit/radiostack.hxx>
#include <Cockpit/hud.hxx>
#include <Model/panelnode.hxx>
#include <Model/modelmgr.hxx>
#include <Model/acmodel.hxx>
#include <Scenery/scenery.hxx>
#include <Scenery/tilemgr.hxx>
+#include <Sound/beacon.hxx>
+#include <Sound/morse.hxx>
#include <FDM/flight.hxx>
#include <FDM/UIUCModel/uiuc_aircraftdir.h>
-#include <FDM/ADA.hxx>
+// #include <FDM/ADA.hxx>
#include <ATC/ATCdisplay.hxx>
#include <ATC/ATCmgr.hxx>
#include <ATC/AIMgr.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 "fg_commands.hxx"
#include "fg_io.hxx"
int idle_state = 0;
long global_multi_loop;
-
SGTimeStamp last_time_stamp;
SGTimeStamp current_time_stamp;
globals->get_time_params()->getLst(),
cur_fdm_state->get_Latitude() );
- // Update radio stack model
- current_radiostack->update(delta_time_sec);
}
// static const SGPropertyNode *replay_master
// = fgGetNode("/sim/freeze/replay", true);
- SGCloudLayer::enable_bump_mapping = fgGetBool("/sim/rendering/bump-mapping",true);
+ SGCloudLayer::enable_bump_mapping = fgGetBool("/sim/rendering/bump-mapping");
// Update the elapsed time.
static bool first_time = true;
real_delta_time_sec
= double(current_time_stamp - last_time_stamp) / 1000000.0;
+ // round the real time down to a multiple of 1/model-hz.
+ // this way all systems are updated the _same_ amount of dt.
+ {
+ static double rem = 0.0;
+ real_delta_time_sec += rem;
+ double hz = model_hz;
+ double nit = floor(real_delta_time_sec*hz);
+ rem = real_delta_time_sec - nit/hz;
+ real_delta_time_sec = nit/hz;
+ }
+
+
if ( clock_freeze->getBoolValue() ) {
delta_time_sec = 0;
} else {
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
SG_LOG( SG_GENERAL, SG_INFO, "Panel visible = " << fgPanelVisible() );
globals->get_renderer()->resize( fgGetInt("/sim/startup/xsize"),
- fgGetInt("/sim/startup/ysize") );
+ fgGetInt("/sim/startup/ysize") );
}
exit(-1);
}
+ sgUseDisplayList = fgGetBool( "/sim/rendering/use-display-list", true );
+
// Initialize the Aircraft directory to "" (UIUC)
aircraft_dir = "";
_bootstrap_OSInit++;
#endif
- fgRegisterWindowResizeHandler( fgReshape );
+ fgRegisterWindowResizeHandler( FGRenderer::resize );
fgRegisterIdleHandler( fgIdleFunction );
- fgRegisterDrawHandler( fgRenderFrame );
+ fgRegisterDrawHandler( FGRenderer::update );
#ifdef FG_ENABLE_MULTIPASS_CLOUDS
bool get_stencil_buffer = true;
// build our custom render states
globals->get_renderer()->build_states();
- try {
- // pass control off to the master event handler
- fgOSMainLoop();
- } catch (...) {
- SG_LOG( SG_ALL, SG_ALERT,
- "Unknown exception in the main loop. Aborting..." );
- }
+ // pass control off to the master event handler
+ fgOSMainLoop();
// we never actually get here ... but to avoid compiler warnings,
// etc.