#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 "fg_init.hxx"
#include "fg_io.hxx"
+#include "fg_os.hxx"
#include "fg_commands.hxx"
#include "fg_props.hxx"
#include "globals.hxx"
compare_values (SGPropertyNode * value1, SGPropertyNode * value2)
{
switch (value1->getType()) {
- case SGPropertyNode::BOOL:
+ case simgear::props::BOOL:
return (value1->getBoolValue() == value2->getBoolValue());
- case SGPropertyNode::INT:
+ case simgear::props::INT:
return (value1->getIntValue() == value2->getIntValue());
- case SGPropertyNode::LONG:
+ case simgear::props::LONG:
return (value1->getLongValue() == value2->getLongValue());
- case SGPropertyNode::FLOAT:
+ case simgear::props::FLOAT:
return (value1->getFloatValue() == value2->getFloatValue());
- case SGPropertyNode::DOUBLE:
+ case simgear::props::DOUBLE:
return (value1->getDoubleValue() == value2->getDoubleValue());
default:
return !strcmp(value1->getStringValue(), value2->getStringValue());
file += ".sav";
if (!fgValidatePath(file.c_str(), false)) {
- SG_LOG(SG_IO, SG_ALERT, "save: reading '" << file << "' denied "
+ SG_LOG(SG_IO, SG_ALERT, "save: writing '" << file << "' denied "
"(unauthorized access)");
return false;
}
return fgDumpSnapShot();
}
+static bool
+do_reload_shaders (const SGPropertyNode*)
+{
+ simgear::reload_shaders();
+ return true;
+}
+
static bool
do_dump_scene_graph (const SGPropertyNode*)
{
}
+/**
+ * Adds model to the scenery. The path to the added branch (/models/model[*])
+ * is returned in property "property".
+ */
+static bool
+do_add_model (const SGPropertyNode * arg)
+{
+ SGPropertyNode * model = fgGetNode("models", true);
+ for (int i = 0;; i++) {
+ if (i < 0)
+ return false;
+ if (!model->getChild("model", i, false)) {
+ model = model->getChild("model", i, true);
+ break;
+ }
+ }
+ copyProperties(arg, model);
+ if (model->hasValue("elevation-m"))
+ model->setDoubleValue("elevation-ft", model->getDoubleValue("elevation-m")
+ * SG_METER_TO_FEET);
+ model->getNode("load", true);
+ model->removeChildren("load");
+ const_cast<SGPropertyNode *>(arg)->setStringValue("property", model->getPath());
+ return true;
+}
+
+
/**
* Set mouse cursor coordinates and cursor shape.
*/
}
SGPropertyNode *cursor = const_cast<SGPropertyNode *>(arg)->getNode("cursor", true);
- if (cursor->getType() != SGPropertyNode::NONE)
+ if (cursor->getType() != simgear::props::NONE)
fgSetMouseCursor(cursor->getIntValue());
cursor->setIntValue(fgGetMouseCursor());
fx->play_message( path, file, volume );
return true;
- } catch (const sg_io_exception& e) {
+ } catch (const sg_io_exception&) {
SG_LOG(SG_GENERAL, SG_ALERT, "play-audio-sample: "
"failed to load" << path << '/' << file);
return false;
{ "dialog-update", do_dialog_update },
{ "dialog-apply", do_dialog_apply },
{ "gui-redraw", do_gui_redraw },
+ { "add-model", do_add_model },
{ "set-cursor", do_set_cursor },
{ "play-audio-sample", do_play_audio_sample },
{ "presets-commit", do_presets_commit },
{ "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
};