]> git.mxchange.org Git - flightgear.git/blobdiff - src/Scripting/NasalPositioned.cxx
Allow disabling embedded nasal (load/unload scripts).
[flightgear.git] / src / Scripting / NasalPositioned.cxx
index 25d28bb40c1c549c1e168eefddfc0c383d14b9ad..1d2b41402a28a71b02f12e0266a2f66463f20af4 100644 (file)
@@ -124,6 +124,17 @@ static naRef stringToNasal(naContext c, const std::string& s)
                    s.length());
 }
 
+static bool convertToNum(naRef v, double& result)
+{
+    naRef n = naNumValue(v);
+    if (naIsNil(n)) {
+        return false; // couldn't convert
+    }
+    
+    result = n.num;
+    return true;
+}
+
 static WayptFlag wayptFlagFromString(const char* s)
 {
   if (!strcmp(s, "sid")) return WPT_DEPARTURE;
@@ -2186,13 +2197,14 @@ static naRef f_leg_setSpeed(naContext c, naRef me, int argc, naRef* args)
   if (!leg) {
     naRuntimeError(c, "leg.setSpeed called on non-flightplan-leg object");
   }
-  
-  if (argc < 2) {
-    naRuntimeError(c, "bad arguments to leg.setSpeed");
-  }
-  
+
+    double speed = 0.0;
+    if ((argc < 2) || !convertToNum(args[0], speed))
+        naRuntimeError(c, "bad arguments to setSpeed");
+    
   RouteRestriction rr = routeRestrictionFromString(naStr_data(args[1]));
-  leg->setSpeed(rr, args[0].num);
+  leg->setSpeed(rr, speed);
+  
   return naNil();
 }
 
@@ -2203,12 +2215,13 @@ static naRef f_leg_setAltitude(naContext c, naRef me, int argc, naRef* args)
     naRuntimeError(c, "leg.setAltitude called on non-flightplan-leg object");
   }
   
-  if (argc < 2) {
-    naRuntimeError(c, "bad arguments to leg.setAltitude");
-  }
-  
+    double alt = 0.0;
+    if ((argc < 2) || !convertToNum(args[0], alt))
+        naRuntimeError(c, "bad arguments to leg.setAltitude");
+    
   RouteRestriction rr = routeRestrictionFromString(naStr_data(args[1]));
-  leg->setAltitude(rr, args[0].num);
+    leg->setAltitude(rr, alt);
+
   return naNil();
 }