#include <simgear/debug/logstream.hxx>
#include <simgear/math/sg_random.h>
#include <simgear/scene/material/mat.hxx>
+#include <simgear/scene/material/matlib.hxx>
#include <simgear/structure/exception.hxx>
#include <simgear/structure/commands.hxx>
#include <simgear/props/props.hxx>
#include <simgear/structure/event_mgr.hxx>
+#include <simgear/sound/soundmgr_openal.hxx>
#include <Cockpit/panel.hxx>
#include <Cockpit/panel_io.hxx>
#include <Scenery/tilemgr.hxx>
#include <Scenery/scenery.hxx>
#include <Scripting/NasalSys.hxx>
-#include <Sound/fg_fx.hxx>
+#include <Sound/sample_queue.hxx>
#include <Time/sunsolver.hxx>
#include <Time/tmp.hxx>
#include "util.hxx"
#include "viewmgr.hxx"
#include "main.hxx"
+#include <Main/viewer.hxx>
using std::string;
using std::ifstream;
fgSetBool("/sim/signals/exit", true);
if (fgGetBool("/sim/startup/save-on-exit")) {
-#ifdef _MSC_VER
+#ifdef _WIN32
char* envp = ::getenv( "APPDATA" );
if ( envp != NULL ) {
SGPath config( envp );
return fgDumpSnapShot();
}
+static bool
+do_reload_shaders (const SGPropertyNode*)
+{
+ simgear::reload_shaders();
+ return true;
+}
+
static bool
do_dump_scene_graph (const SGPropertyNode*)
{
* boundary and aloft environment layers.
*/
static bool
-do_set_sea_level_degc (const SGPropertyNode * arg)
+do_set_sea_level_degc ( double temp_sea_level_degc)
{
- double temp_sea_level_degc = arg->getDoubleValue("temp-degc", 15.0);
-
SGPropertyNode *node, *child;
// boundary layers
return true;
}
+static bool
+do_set_sea_level_degc (const SGPropertyNode * arg)
+{
+ return do_set_sea_level_degc( arg->getDoubleValue("temp-degc", 15.0) );
+}
+
/**
* Set the outside air temperature at the "current" altitude by first
static bool
do_set_oat_degc (const SGPropertyNode * arg)
{
- const string &temp_str = arg->getStringValue("temp-degc", "15.0");
-
+ double oat_degc = arg->getDoubleValue("temp-degc", 15.0);
// check for an altitude specified in the arguments, otherwise use
// current aircraft altitude.
const SGPropertyNode *altitude_ft = arg->getChild("altitude-ft");
FGEnvironment dummy; // instantiate a dummy so we can leech a method
dummy.set_elevation_ft( altitude_ft->getDoubleValue() );
- dummy.set_temperature_degc( atof( temp_str.c_str() ) );
- double temp_sea_level_degc = dummy.get_temperature_sea_level_degc();
-
- //cout << "Altitude = " << altitude_ft->getDoubleValue() << endl;
- //cout << "Temp at alt (C) = " << atof( temp_str.c_str() ) << endl;
- //cout << "Temp sea level (C) = " << temp_sea_level_degc << endl;
-
- SGPropertyNode *node, *child;
-
- // boundary layers
- node = fgGetNode( "/environment/config/boundary" );
- if ( node != NULL ) {
- int i = 0;
- while ( ( child = node->getNode( "entry", i ) ) != NULL ) {
- child->setDoubleValue( "temperature-sea-level-degc",
- temp_sea_level_degc );
- ++i;
- }
- }
-
- // aloft layers
- node = fgGetNode( "/environment/config/aloft" );
- if ( node != NULL ) {
- int i = 0;
- while ( ( child = node->getNode( "entry", i ) ) != NULL ) {
- child->setDoubleValue( "temperature-sea-level-degc",
- temp_sea_level_degc );
- ++i;
- }
- }
-
- return true;
+ dummy.set_temperature_degc( oat_degc );
+ return do_set_sea_level_degc( dummy.get_temperature_sea_level_degc());
}
/**
* boundary and aloft environment layers.
*/
static bool
-do_set_dewpoint_sea_level_degc (const SGPropertyNode * arg)
+do_set_dewpoint_sea_level_degc (double dewpoint_sea_level_degc)
{
- double dewpoint_sea_level_degc = arg->getDoubleValue("dewpoint-degc", 5.0);
SGPropertyNode *node, *child;
return true;
}
+static bool
+do_set_dewpoint_sea_level_degc (const SGPropertyNode * arg)
+{
+ return do_set_dewpoint_sea_level_degc(arg->getDoubleValue("dewpoint-degc", 5.0));
+}
/**
* Set the outside air dewpoint at the "current" altitude by first
static bool
do_set_dewpoint_degc (const SGPropertyNode * arg)
{
- const string &dewpoint_str = arg->getStringValue("dewpoint-degc", "5.0");
+ double dewpoint_degc = arg->getDoubleValue("dewpoint-degc", 5.0);
// check for an altitude specified in the arguments, otherwise use
// current aircraft altitude.
FGEnvironment dummy; // instantiate a dummy so we can leech a method
dummy.set_elevation_ft( altitude_ft->getDoubleValue() );
- dummy.set_dewpoint_degc( atof( dewpoint_str.c_str() ) );
- double dewpoint_sea_level_degc = dummy.get_dewpoint_sea_level_degc();
-
- //cout << "Altitude = " << altitude_ft->getDoubleValue() << endl;
- //cout << "Dewpoint at alt (C) = " << atof( dewpoint_str.c_str() ) << endl;
- //cout << "Dewpoint at sea level (C) = " << dewpoint_sea_level_degc << endl;
-
- SGPropertyNode *node, *child;
-
- // boundary layers
- node = fgGetNode( "/environment/config/boundary" );
- if ( node != NULL ) {
- int i = 0;
- while ( ( child = node->getNode( "entry", i ) ) != NULL ) {
- child->setDoubleValue( "dewpoint-sea-level-degc",
- dewpoint_sea_level_degc );
- ++i;
- }
- }
-
- // aloft layers
- node = fgGetNode( "/environment/config/aloft" );
- if ( node != NULL ) {
- int i = 0;
- while ( ( child = node->getNode( "entry", i ) ) != NULL ) {
- child->setDoubleValue( "dewpoint-sea-level-degc",
- dewpoint_sea_level_degc );
- ++i;
- }
- }
-
- return true;
+ dummy.set_dewpoint_degc( dewpoint_degc );
+ return do_set_dewpoint_sea_level_degc(dummy.get_dewpoint_sea_level_degc());
}
/**
static bool
do_play_audio_sample (const SGPropertyNode * arg)
{
- FGFX *fx = (FGFX *)globals->get_subsystem("fx");
string path = arg->getStringValue("path");
string file = arg->getStringValue("file");
- double volume = arg->getDoubleValue("volume");
+ float volume = arg->getFloatValue("volume");
// cout << "playing " << path << " / " << file << endl;
try {
- fx->play_message( path, file, volume );
+ static FGSampleQueue *queue = 0;
+ if ( !queue ) {
+ SGSoundMgr *smgr = globals->get_soundmgr();
+ queue = new FGSampleQueue(smgr, "chatter");
+ queue->tie_to_listener();
+ }
+
+ SGSoundSample *msg = new SGSoundSample(path.c_str(), file.c_str());
+ msg->set_volume( volume );
+ queue->add( msg );
+
return true;
} catch (const sg_io_exception&) {
{ "release-cockpit-button", do_release_cockpit_button },
{ "dump-scenegraph", do_dump_scene_graph },
{ "dump-terrainbranch", do_dump_terrain_branch },
+ { "reload-shaders", do_reload_shaders },
{ 0, 0 } // zero-terminated
};
void
fgInitCommands ()
{
- SG_LOG(SG_GENERAL, SG_INFO, "Initializing basic built-in commands:");
+ SG_LOG(SG_GENERAL, SG_BULK, "Initializing basic built-in commands:");
for (int i = 0; built_ins[i].name != 0; i++) {
- SG_LOG(SG_GENERAL, SG_INFO, " " << built_ins[i].name);
+ SG_LOG(SG_GENERAL, SG_BULK, " " << built_ins[i].name);
globals->get_commands()->addCommand(built_ins[i].name,
built_ins[i].command);
}