1
0
Fork 0

leave temporary hint for the nasal init block, so that it can access

its own data, and can distinguish itself from other instances of the
same js driver. This property is removed after script execution.
Example:

  self = props.globals.getNode(getprop("/input/joysticks/this"));
This commit is contained in:
mfranz 2005-06-12 19:27:20 +00:00
parent 938502b239
commit dec07ab83e

View file

@ -466,7 +466,7 @@ FGInput::_init_joystick ()
if ((named = jsmap[name])) { if ((named = jsmap[name])) {
string source = named->getStringValue("source", "user defined"); string source = named->getStringValue("source", "user defined");
SG_LOG(SG_INPUT, SG_INFO, "... found joystick: \"" << source << '"'); SG_LOG(SG_INPUT, SG_INFO, "... found joystick: " << source);
} else if ((named = jsmap["default"])) { } else if ((named = jsmap["default"])) {
string source = named->getStringValue("source", "user defined"); string source = named->getStringValue("source", "user defined");
@ -474,7 +474,8 @@ FGInput::_init_joystick ()
<< "\"\nUsing default: \"" << source << '"'); << "\"\nUsing default: \"" << source << '"');
} else { } else {
throw sg_throwable(string("No joystick configuration file with <name>default</name> entry found!")); throw sg_throwable(string("No joystick configuration file with "
"<name>default</name> entry found!"));
} }
js_node = js_nodes->getChild("js", i, true); js_node = js_nodes->getChild("js", i, true);
@ -603,12 +604,17 @@ FGInput::_init_joystick ()
void void
FGInput::_postinit_joystick() FGInput::_postinit_joystick()
{ {
vector<SGPropertyNode_ptr> js = fgGetNode("/input/joysticks")->getChildren("js"); SGPropertyNode *js_nodes = fgGetNode("/input/joysticks");
vector<SGPropertyNode_ptr> js = js_nodes->getChildren("js");
for (unsigned int i = 0; i < js.size(); i++) { for (unsigned int i = 0; i < js.size(); i++) {
// leave temporary hint for the nasal init block
js_nodes->setStringValue("this", js[i]->getPath());
vector<SGPropertyNode_ptr> nasal = js[i]->getChildren("nasal"); vector<SGPropertyNode_ptr> nasal = js[i]->getChildren("nasal");
for (unsigned int j = 0; j < nasal.size(); j++) for (unsigned int j = 0; j < nasal.size(); j++)
((FGNasalSys*)globals->get_subsystem("nasal"))->handleCommand(nasal[j]); ((FGNasalSys*)globals->get_subsystem("nasal"))->handleCommand(nasal[j]);
} }
js_nodes->removeChild("this", 0);
} }