]> git.mxchange.org Git - flightgear.git/blobdiff - src/Scripting/NasalSys.cxx
Vivian MEAZZA:
[flightgear.git] / src / Scripting / NasalSys.cxx
index 1c93b9cfcc8ff6cbdaaca3248070316b94f417e5..870d6def1455f0831e095243af62223d333bb799 100644 (file)
@@ -71,7 +71,7 @@ bool FGNasalSys::parseAndRun(const char* sourceCode)
     if(naIsNil(code))
         return false;
 
-    naCall(_context, code, naNil(), naNil(), naNil());
+    naCall(_context, code, 0, 0, naNil(), naNil());
 
     if(!naGetError(_context)) return true;
     logError();
@@ -444,7 +444,7 @@ void FGNasalSys::createModule(const char* moduleName, const char* fileName,
     if(!naHash_get(_globals, modname, &locals))
         locals = naNewHash(_context);
 
-    naCall(_context, code, naNil(), naNil(), locals);
+    naCall(_context, code, 0, 0, naNil(), locals);
     if(naGetError(_context)) {
         logError();
         return;
@@ -471,13 +471,9 @@ naRef FGNasalSys::parse(const char* filename, const char* buf, int len)
 
 bool FGNasalSys::handleCommand(const SGPropertyNode* arg)
 {
-    // Parse the Nasal source.  I'd love to use the property name of
-    // the argument, but it's actually a *clone* of the original
-    // location in the property tree.  arg->getPath() returns an empty
-    // string.
     const char* nasal = arg->getStringValue("script");
     const char* moduleName = arg->getStringValue("module");
-    naRef code = parse("<command>", nasal, strlen(nasal));
+    naRef code = parse(arg->getPath(true), nasal, strlen(nasal));
     if(naIsNil(code)) return false;
 
     naRef locals = naNil();
@@ -493,7 +489,7 @@ bool FGNasalSys::handleCommand(const SGPropertyNode* arg)
     _cmdArg = (SGPropertyNode*)arg;
 
     // Call it!
-    naRef result = naCall(_context, code, naNil(), naNil(), locals);
+    naRef result = naCall(_context, code, 0, 0, naNil(), locals);
     if(!naGetError(_context)) return true;
     logError();
     return false;
@@ -502,7 +498,7 @@ bool FGNasalSys::handleCommand(const SGPropertyNode* arg)
 // settimer(func, dt, simtime) extension function.  The first argument
 // is a Nasal function to call, the second is a delta time (from now),
 // in seconds.  The third, if present, is a boolean value indicating
-// that "simulator" time (rather than real time) is to be used.
+// that "real world" time (rather than simulator time) is to be used.
 //
 // Implementation note: the FGTimer objects don't live inside the
 // garbage collector, so the Nasal handler functions have to be
@@ -519,7 +515,7 @@ void FGNasalSys::setTimer(int argc, naRef* args)
     naRef delta = argc > 1 ? args[1] : naNil();
     if(naIsNil(delta)) return;
     
-    bool simtime = (argc > 2 && naTrue(args[2])) ? true : false;
+    bool simtime = (argc > 2 && naTrue(args[2])) ? false : true;
 
     // Generate and register a C++ timer handler
     NasalTimer* t = new NasalTimer;
@@ -534,7 +530,7 @@ void FGNasalSys::setTimer(int argc, naRef* args)
 
 void FGNasalSys::handleTimer(NasalTimer* t)
 {
-    naCall(_context, t->handler, naNil(), naNil(), naNil());
+    naCall(_context, t->handler, 0, 0, naNil(), naNil());
     if(naGetError(_context))
         logError();
     gcRelease(t->gcKey);