From ecfaa79b9e9b8c708bc0d5066e468e6df0dfde69 Mon Sep 17 00:00:00 2001 From: curt <curt> Date: Wed, 16 Mar 2005 21:36:55 +0000 Subject: [PATCH] Permit a single nasal module to reference any number of files which are all loaded into that single nasal name space. --- src/Scripting/NasalSys.cxx | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/Scripting/NasalSys.cxx b/src/Scripting/NasalSys.cxx index c7063647c..1a894415b 100644 --- a/src/Scripting/NasalSys.cxx +++ b/src/Scripting/NasalSys.cxx @@ -355,6 +355,22 @@ void FGNasalSys::loadPropertyScripts() if(n->hasChild("module")) module = n->getStringValue("module"); + // allow multiple files to be specified within in a single + // Nasal module tag + int j = 0; + SGPropertyNode *fn; + bool file_specified = false; + while ( (fn = n->getChild("file", j)) != NULL ) { + file_specified = true; + const char* file = fn->getStringValue(); + SGPath p(globals->get_fg_root()); + p.append(file); + readScriptFile(p, module); + j++; + } + + // Old code which only allowed a single file to be specified per module + /* const char* file = n->getStringValue("file"); if(!n->hasChild("file")) file = 0; // Hrm... if(file) { @@ -362,13 +378,14 @@ void FGNasalSys::loadPropertyScripts() p.append(file); readScriptFile(p, module); } + */ const char* src = n->getStringValue("script"); if(!n->hasChild("script")) src = 0; // Hrm... if(src) initModule(module, n->getPath(), src, strlen(src)); - if(!file && !src) + if(!file_specified && !src) SG_LOG(SG_NASAL, SG_ALERT, "Nasal error: " << "no <file> or <script> defined in " << "/nasal/" << module);