- remove "nasal-dir-initialized" signal node after use. This code is executed
before the property tree is stored away for reinit, so the signal would be emitted again on reset. - fix inconsistent style that sneaked in with a previous patch
This commit is contained in:
parent
197fd50848
commit
016750c865
1 changed files with 13 additions and 8 deletions
|
@ -82,7 +82,7 @@ naRef FGNasalSys::call(naRef code, naRef locals)
|
||||||
FGNasalSys::~FGNasalSys()
|
FGNasalSys::~FGNasalSys()
|
||||||
{
|
{
|
||||||
map<int, FGNasalListener *>::iterator it, end = _listener.end();
|
map<int, FGNasalListener *>::iterator it, end = _listener.end();
|
||||||
for (it = _listener.begin(); it != end; ++it)
|
for(it = _listener.begin(); it != end; ++it)
|
||||||
delete it->second;
|
delete it->second;
|
||||||
|
|
||||||
// Nasal doesn't have a "destroy context" API yet. :(
|
// Nasal doesn't have a "destroy context" API yet. :(
|
||||||
|
@ -426,7 +426,12 @@ void FGNasalSys::init()
|
||||||
loadModule(fullpath, file.base().c_str());
|
loadModule(fullpath, file.base().c_str());
|
||||||
}
|
}
|
||||||
ulCloseDir(dir);
|
ulCloseDir(dir);
|
||||||
fgSetBool("/sim/signals/nasal-dir-initialized", true);
|
|
||||||
|
// set signal and remove node to avoid restoring at reinit
|
||||||
|
const char *s = "nasal-dir-initialized";
|
||||||
|
SGPropertyNode *signal = fgGetNode("/sim/signals", true);
|
||||||
|
signal->setBoolValue(s, true);
|
||||||
|
signal->removeChildren(s);
|
||||||
|
|
||||||
// Pull scripts out of the property tree, too
|
// Pull scripts out of the property tree, too
|
||||||
loadPropertyScripts();
|
loadPropertyScripts();
|
||||||
|
@ -662,7 +667,7 @@ naRef FGNasalSys::setListener(int argc, naRef* args)
|
||||||
else if(naIsGhost(prop)) node = *(SGPropertyNode_ptr*)naGhost_ptr(prop);
|
else if(naIsGhost(prop)) node = *(SGPropertyNode_ptr*)naGhost_ptr(prop);
|
||||||
else return naNil();
|
else return naNil();
|
||||||
|
|
||||||
if (node->isTied())
|
if(node->isTied())
|
||||||
SG_LOG(SG_NASAL, SG_DEBUG, "Attaching listener to tied property " <<
|
SG_LOG(SG_NASAL, SG_DEBUG, "Attaching listener to tied property " <<
|
||||||
node->getPath());
|
node->getPath());
|
||||||
|
|
||||||
|
@ -747,12 +752,12 @@ void FGNasalModelData::modelLoaded(const string& path, SGPropertyNode *prop,
|
||||||
osg::Node *)
|
osg::Node *)
|
||||||
{
|
{
|
||||||
SGPropertyNode *n = prop->getNode("nasal"), *load;
|
SGPropertyNode *n = prop->getNode("nasal"), *load;
|
||||||
if (!n)
|
if(!n)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
load = n->getNode("load");
|
load = n->getNode("load");
|
||||||
_unload = n->getNode("unload");
|
_unload = n->getNode("unload");
|
||||||
if (!load && !_unload)
|
if(!load && !_unload)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
_module = path;
|
_module = path;
|
||||||
|
@ -763,17 +768,17 @@ void FGNasalModelData::modelLoaded(const string& path, SGPropertyNode *prop,
|
||||||
|
|
||||||
FGNasalModelData::~FGNasalModelData()
|
FGNasalModelData::~FGNasalModelData()
|
||||||
{
|
{
|
||||||
if (_module.empty())
|
if(_module.empty())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
FGNasalSys *nas = (FGNasalSys *)globals->get_subsystem("nasal");
|
FGNasalSys *nas = (FGNasalSys *)globals->get_subsystem("nasal");
|
||||||
if (!nas) {
|
if(!nas) {
|
||||||
SG_LOG(SG_NASAL, SG_ALERT, "Trying to run an <unload> script "
|
SG_LOG(SG_NASAL, SG_ALERT, "Trying to run an <unload> script "
|
||||||
"without Nasal subsystem present.");
|
"without Nasal subsystem present.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_unload) {
|
if(_unload) {
|
||||||
const char *s = _unload->getStringValue();
|
const char *s = _unload->getStringValue();
|
||||||
nas->createModule(_module.c_str(), _module.c_str(), s, strlen(s));
|
nas->createModule(_module.c_str(), _module.c_str(), s, strlen(s));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue