#include STL_STRING
#include STL_FSTREAM
+#include <simgear/sg_inlines.h>
#include <simgear/debug/logstream.hxx>
+#include <simgear/math/sg_random.h>
#include <simgear/misc/commands.hxx>
-#include <simgear/misc/props.hxx>
-#include <simgear/sg_inlines.h>
+#include <simgear/props/props.hxx>
#include <Cockpit/panel.hxx>
#include <Cockpit/panel_io.hxx>
#include <GUI/gui.h>
#include <GUI/new_gui.hxx>
#include <GUI/dialog.hxx>
+#include <Replay/replay.hxx>
#include <Scenery/tilemgr.hxx>
#if defined(HAVE_PLIB_PSL)
-#include <Scripting/scriptmgr.hxx>
+# include <Scripting/scriptmgr.hxx>
#endif
#include <Time/tmp.hxx>
bool result = true;
vector<SGPropertyNode_ptr> subsystems = arg->getChildren("subsystem");
- if (subsystems.size() == 0)
+ if (subsystems.size() == 0) {
globals->get_subsystem_mgr()->reinit();
- else for (int i = 0; i < subsystems.size(); i++) {
- const char * name = subsystems[i]->getStringValue();
- FGSubsystem * subsystem = globals->get_subsystem(name);
- if (subsystem == 0) {
- result = false;
- SG_LOG(SG_GENERAL, SG_ALERT, "Subsystem " << name << "not found");
- } else {
- subsystem->reinit();
+ } else {
+ for ( unsigned int i = 0; i < subsystems.size(); i++ ) {
+ const char * name = subsystems[i]->getStringValue();
+ FGSubsystem * subsystem = globals->get_subsystem(name);
+ if (subsystem == 0) {
+ result = false;
+ SG_LOG( SG_GENERAL, SG_ALERT,
+ "Subsystem " << name << "not found" );
+ } else {
+ subsystem->reinit();
+ }
}
}
+
return result;
}
bool result = true;
vector<SGPropertyNode_ptr> subsystems = arg->getChildren("subsystem");
- for (int i = 0; i < subsystems.size(); i++) {
+ for ( unsigned int i = 0; i < subsystems.size(); i++ ) {
const char * name = subsystems[i]->getStringValue();
FGSubsystem * subsystem = globals->get_subsystem(name);
if (subsystem == 0) {
bool result = true;
vector<SGPropertyNode_ptr> subsystems = arg->getChildren("subsystem");
- for (int i = 0; i < subsystems.size(); i++) {
+ for ( unsigned int i = 0; i < subsystems.size(); i++ ) {
const char * name = subsystems[i]->getStringValue();
FGSubsystem * subsystem = globals->get_subsystem(name);
if (subsystem == 0) {
}
+/**
+ * Built-in command: randomize a numeric property value.
+ *
+ * property: the name of the property value to randomize.
+ * min: the minimum allowed value.
+ * max: the maximum allowed value.
+ */
+static bool
+do_property_randomize (const SGPropertyNode * arg)
+{
+ SGPropertyNode * prop = get_prop(arg);
+ double min = arg->getDoubleValue("min", DBL_MIN);
+ double max = arg->getDoubleValue("max", DBL_MAX);
+ prop->setDoubleValue(sg_random() * (max - min) + min);
+ return true;
+}
+
+
/**
* Built-in command: Show an XML-configured dialog.
*
return true;
}
+/**
+ * Built-in command: replay the FDR buffer
+ */
+static bool
+do_replay (const SGPropertyNode * arg)
+{
+ // freeze the master fdm
+ fgSetBool( "/sim/freeze/replay", true );
+
+ FGReplay *r = (FGReplay *)(globals->get_subsystem( "replay" ));
+
+ fgSetDouble( "/sim/replay/start-time", r->get_start_time() );
+ fgSetDouble( "/sim/replay/end-time", r->get_end_time() );
+ fgSetDouble( "/sim/replay/time", r->get_start_time() );
+
+ cout << "start = " << r->get_start_time()
+ << " end = " << r->get_end_time() << endl;
+
+ return true;
+}
+
\f
{ "property-swap", do_property_swap },
{ "property-scale", do_property_scale },
{ "property-cycle", do_property_cycle },
+ { "property-randomize", do_property_randomize },
{ "dialog-show", do_dialog_show },
{ "dialog-close", do_dialog_close },
{ "dialog-show", do_dialog_show },
{ "dialog-apply", do_dialog_apply },
{ "presets-commit", do_presets_commit },
{ "log-level", do_log_level },
+ { "replay", do_replay },
{ 0, 0 } // zero-terminated
};