#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>
static double real_delta_time_sec = 0.0;
double delta_time_sec = 0.0;
+extern float init_volume;
#ifdef macintosh
void fgUpdateTimeDepCalcs() {
static bool inited = false;
- static const SGPropertyNode *replay_master
- = fgGetNode( "/sim/freeze/replay", true );
+ static const SGPropertyNode *replay_state
+ = fgGetNode( "/sim/freeze/replay-state", true );
static SGPropertyNode *replay_time
= fgGetNode( "/sim/replay/time", true );
// static const SGPropertyNode *replay_end_time
inited = true;
}
- if ( ! replay_master->getBoolValue() ) {
+ if ( replay_state->getIntValue() == 0 ) {
+ // replay off, run fdm
cur_fdm_state->update( delta_time_sec );
} else {
FGReplay *r = (FGReplay *)(globals->get_subsystem( "replay" ));
r->replay( replay_time->getDoubleValue() );
- replay_time->setDoubleValue( replay_time->getDoubleValue()
- + ( delta_time_sec
- * fgGetInt("/sim/speed-up") ) );
- }
+ if ( replay_state->getIntValue() == 1 ) {
+ // normal playback
+ replay_time->setDoubleValue( replay_time->getDoubleValue()
+ + ( delta_time_sec
+ * fgGetInt("/sim/speed-up") ) );
+ } else if ( replay_state->getIntValue() == 2 ) {
+ // paused playback (don't advance replay time)
+ }
+ }
} else {
// do nothing, fdm isn't inited yet
}
globals->get_time_params()->getLst(),
cur_fdm_state->get_Latitude() );
- // Update radio stack model
- current_radiostack->update(delta_time_sec);
}
= fgGetNode("/sim/freeze/clock", true);
static const SGPropertyNode *cur_time_override
= fgGetNode("/sim/time/cur-time-override", true);
- // static const SGPropertyNode *replay_master
- // = fgGetNode("/sim/freeze/replay", true);
SGCloudLayer::enable_bump_mapping = fgGetBool("/sim/rendering/bump-mapping");
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 (!scenery_loaded && globals->get_tile_mgr()->all_queues_empty() && cur_fdm_state->get_inited()) {
fgSetBool("sim/sceneryloaded",true);
+ fgSetFloat("/sim/sound/volume", init_volume);
+ globals->get_soundmgr()->set_volume(init_volume);
}
if (fgGetBool("/sim/rendering/specular-highlight")) {
// printf("idle state == %d\n", idle_state);
if ( idle_state == 0 ) {
- fgSetBool("sim/initialised", false);
-
// Initialize the splash screen right away
if ( fgGetBool("/sim/startup/splash-screen") ) {
fgSplashInit(fgGetString("/sim/startup/splash-texture"));
if ( idle_state == 1000 ) {
// We've finished all our initialization steps, from now on we
// run the main loop.
- fgSetBool("sim/initialised",true);
fgSetBool("sim/sceneryloaded",false);
fgRegisterIdleHandler(fgMainLoop);
fgInitFGRoot(argc, argv);
// Check for the correct base package version
- static char required_version[] = "0.9.6";
+ static char required_version[] = "0.9.8";
string base_version = fgBasePackageVersion();
if ( !(base_version == required_version) ) {
// tell the operator how to use this application
_bootstrap_OSInit++;
#endif
- fgRegisterWindowResizeHandler( FGRenderer::resize );
- fgRegisterIdleHandler( fgIdleFunction );
- fgRegisterDrawHandler( FGRenderer::update );
+ fgRegisterWindowResizeHandler( &FGRenderer::resize );
+ fgRegisterIdleHandler( &fgIdleFunction );
+ fgRegisterDrawHandler( &FGRenderer::update );
#ifdef FG_ENABLE_MULTIPASS_CLOUDS
bool get_stencil_buffer = true;