-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
I made a patch that add some missing "var" to the data/Nasal/*.nas files. It
also changes props.wrap to use named arguments and remove a duplicate of
math.asin in lead_target.nas, making it use the math.asin one instead. (As far
as I could find, nothing outside the file itself used it, if I'm wrong about
that: sorry).
I also changed everything in data/Nasal to use math.abs instead of globals.abs,
however a lot remains that uses globals.abs in aircrafts and other places (see
my earlier mail to the list)
As I'm rather new to nasal could someone please have a look at my patch to see
that it is ok?
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (GNU/Linux)
iD8DBQFHVVwpWmK6ng/aMNkRCjG+AJ9hz44kQTNM/jvDAvJHUXOnVbm5JACgoPc2
ne0/AveKS2TyZSWfXXBvBFQ=
=YVgH
-----END PGP SIGNATURE-----
? nasal-var.diff
Index: aircraft.nas
===================================================================
RCS file: /var/cvs/FlightGear-0.9/data/Nasal/aircraft.nas,v
retrieving revision 1.45
diff -u -p -r1.45 aircraft.nas
--- aircraft.nas 6 Nov 2007 21:22:06 -0000 1.45
+++ aircraft.nas 4 Dec 2007 13:50:01 -0000
@@ -135,7 +135,7 @@ var door = {
# door.move(double) -> move to arbitrary position
move : func {
- time = abs(me.getpos() - arg[0]) * me.swingtime;
+ time = math.abs(me.getpos() - arg[0]) * me.swingtime;
interpolate(me.positionN, arg[0], time);
me.target = !me.target;
},
Index: atc-chatter.nas
===================================================================
RCS file: /var/cvs/FlightGear-0.9/data/Nasal/atc-chatter.nas,v
retrieving revision 1.8
diff -u -p -r1.8 atc-chatter.nas
--- atc-chatter.nas 15 May 2007 14:40:58 -0000 1.8
+++ atc-chatter.nas 4 Dec 2007 13:50:01 -0000
@@ -11,16 +11,16 @@
# Global shared variables
#############################################################################
-fg_root = "";
-chatter = "UK";
-chatter_dir = "";
-
-chatter_min_interval = 20.0;
-chatter_max_interval = 40.0;
-
-chatter_index = 0;
-chatter_size = 0;
-chatter_list = 0;
+var fg_root = "";
+var chatter = "UK";
+var chatter_dir = "";
+
+var chatter_min_interval = 20.0;
+var chatter_max_interval = 40.0;
+
+var chatter_index = 0;
+var chatter_size = 0;
+var chatter_list = 0;
#############################################################################
@@ -28,7 +28,7 @@ chatter_list = 0;
# up and running
#############################################################################
-CHATTER_INIT = func {
+var CHATTER_INIT = func {
# default values
fg_root = getprop("/sim/fg-root");
chatter_dir = sprintf("%s/ATC/Chatter/%s", fg_root, chatter);
@@ -46,7 +46,7 @@ settimer(CHATTER_INIT, 0);
# main update function to be called each frame
#############################################################################
-chatter_update = func {
+var chatter_update = func {
if ( chatter_index >= chatter_size ) {
chatter_index = 0;
}
@@ -76,7 +76,7 @@ chatter_update = func {
# Use tha nasal timer to update every 10 seconds
#############################################################################
-nextChatter = func {
+var nextChatter = func {
# schedule next message in next min-max interval seconds so we have a bit
# of a random pacing
next_interval = chatter_min_interval
Index: dynamic_view.nas
===================================================================
RCS file: /var/cvs/FlightGear-0.9/data/Nasal/dynamic_view.nas,v
retrieving revision 1.37
diff -u -p -r1.37 dynamic_view.nas
--- dynamic_view.nas 3 Nov 2007 14:08:40 -0000 1.37
+++ dynamic_view.nas 4 Dec 2007 13:50:01 -0000
@@ -43,7 +43,7 @@ var cos = func(a) { math.cos(a * math.pi
var sigmoid = func(x) { 1 / (1 + math.exp(-x)) }
var nsigmoid = func(x) { 2 / (1 + math.exp(-x)) - 1 }
var pow = func(v, w) { v < 0 ? nil : v == 0 ? 0 : math.exp(math.ln(v) * w) }
-var npow = func(v, w) { v == 0 ? 0 : math.exp(math.ln(abs(v)) * w) * (v < 0 ?
-1 : 1) }
+var npow = func(v, w) { v == 0 ? 0 : math.exp(math.ln(math.abs(v)) * w) * (v <
0 ? -1 : 1) }
var clamp = func(v, min, max) { v < min ? min : v > max ? max : v }
var normatan = func(x) { math.atan2(x, 1) * 2 / math.pi }
Index: geo.nas
===================================================================
RCS file: /var/cvs/FlightGear-0.9/data/Nasal/geo.nas,v
retrieving revision 1.14
diff -u -p -r1.14 geo.nas
--- geo.nas 7 Oct 2007 15:12:06 -0000 1.14
+++ geo.nas 4 Dec 2007 13:50:01 -0000
@@ -276,7 +276,7 @@ var tile_index = func(lat, lon) {
var format = func(lat, lon) {
- sprintf("%s%03d%s%02d", lon < 0 ? "w" : "e", abs(lon), lat < 0 ? "s" :
"n", abs(lat));
+ sprintf("%s%03d%s%02d", lon < 0 ? "w" : "e", math.abs(lon), lat < 0 ?
"s" : "n", math.abs(lat));
}
Index: globals.nas
===================================================================
RCS file: /var/cvs/FlightGear-0.9/data/Nasal/globals.nas,v
retrieving revision 1.26
diff -u -p -r1.26 globals.nas
--- globals.nas 20 Nov 2007 17:02:13 -0000 1.26
+++ globals.nas 4 Dec 2007 13:50:02 -0000
@@ -4,7 +4,7 @@
#
var isa = func(obj, class) {
if(obj == nil or !contains(obj, "parents")) { return 0; }
- foreach(c; obj.parents) {
+ foreach(var c; obj.parents) {
if(c == class) { return 1; }
elsif(isa(obj, c)) { return 1; }
}
Index: gui.nas
===================================================================
RCS file: /var/cvs/FlightGear-0.9/data/Nasal/gui.nas,v
retrieving revision 1.81
diff -u -p -r1.81 gui.nas
--- gui.nas 28 Nov 2007 22:22:29 -0000 1.81
+++ gui.nas 4 Dec 2007 13:50:02 -0000
@@ -61,8 +61,8 @@ var menuEnable = func(searchname, state)
# property and the argument for the "dialog-show" command. This
# probably isn't really needed...
#
-screenHProp = tipArg = nil;
-INIT = func {
+var screenHProp = tipArg = nil;
+var INIT = func {
screenHProp = props.globals.getNode("/sim/startup/ysize");
tipArg = props.Node.new({ "dialog-name" : "PopTip" });
@@ -96,17 +96,17 @@ var fpsDisplay = func(n) {
##
# How many seconds do we show the tip?
#
-DELAY = 1.0;
+var DELAY = 1.0;
##
# Pop down the tip dialog, if it is visible.
#
-popdown = func { fgcommand("dialog-close", tipArg); }
+var popdown = func { fgcommand("dialog-close", tipArg); }
# Marker for the "current" timer. This value gets stored in the
# closure of the timer function, and is used to check that there
# hasn't been a more recent timer set that should override.
-currTimer = 0;
+var currTimer = 0;
########################################################################
# Widgets & Layout Management
@@ -466,7 +466,7 @@ var weightChangeHandler = func {
# Dynamically generates a weight & fuel configuration dialog specific to
# the aircraft.
#
-showWeightDialog = func {
+var showWeightDialog = func {
name = "WeightAndFuel";
title = "Weight and Fuel Settings";
@@ -702,7 +702,7 @@ showWeightDialog = func {
# </text>
# </help>
#
-showHelpDialog = func {
+var showHelpDialog = func {
node = props.globals.getNode(arg[0]);
if (arg[0] == "/sim/help" and size(node.getChildren()) < 4) {
node = node.getChild("common");
Index: lead_target.nas
===================================================================
RCS file: /var/cvs/FlightGear-0.9/data/Nasal/lead_target.nas,v
retrieving revision 1.7
diff -u -p -r1.7 lead_target.nas
--- lead_target.nas 15 May 2007 16:07:15 -0000 1.7
+++ lead_target.nas 4 Dec 2007 13:50:02 -0000
@@ -5,36 +5,36 @@
# print("Target Lead script loading ...");
# script defaults (configurable if you like)
-default_update_period = 0.05;
-default_goal_range_nm = 0.2;
-default_target_root = "/ai/models/aircraft[0]";
-default_target_task = "straight";
+var default_update_period = 0.05;
+var default_goal_range_nm = 0.2;
+var default_target_root = "/ai/models/aircraft[0]";
+var default_target_task = "straight";
# master enable switch
-lead_target_enable = 0;
+var lead_target_enable = 0;
# update period
-update_period = default_update_period;
+var update_period = default_update_period;
# goal range to acheive when following target
-goal_range_nm = 0;
+var goal_range_nm = 0;
# Target property tree root
-target_root = "";
+var target_root = "";
# Target task (straight, turns, pitch, both)
-target_task = default_target_task;
-base_alt = 3000;
-tgt_alt = base_alt;
-tgt_hdg = 20;
-tgt_pitch = 0;
-tgt_roll = 0;
-tgt_speed = 280;
-tgt_lat_mode = "roll";
-tgt_lon_mode = "alt";
-next_turn = 0;
-next_pitch = 0;
-last_time = 0;
+var target_task = default_target_task;
+var base_alt = 3000;
+var tgt_alt = base_alt;
+var tgt_hdg = 20;
+var tgt_pitch = 0;
+var tgt_roll = 0;
+var tgt_speed = 280;
+var tgt_lat_mode = "roll";
+var tgt_lon_mode = "alt";
+var next_turn = 0;
+var next_pitch = 0;
+var last_time = 0;
# Calculate new lon/lat given starting lon/lat, and offset radial, and
@@ -48,16 +48,15 @@ last_time = 0;
# @return destination point in polar coordinates
# define some global constants
-SG_METER_TO_NM = 0.0005399568034557235;
-SG_NM_TO_RAD = 0.00029088820866572159;
-SG_EPSILON = 0.0000001;
-SGD_PI = 3.14159265358979323846;
-SGD_2PI = 6.28318530717958647692;
-SGDTR = SGD_PI / 180.0;
-fmod = func(x, y) { x - y * int(x/y) }
-asin = func(y) { math.atan2(y, math.sqrt(1-y*y)) }
+var SG_METER_TO_NM = 0.0005399568034557235;
+var SG_NM_TO_RAD = 0.00029088820866572159;
+var SG_EPSILON = 0.0000001;
+var SGD_PI = 3.14159265358979323846;
+var SGD_2PI = 6.28318530717958647692;
+var SGDTR = SGD_PI / 180.0;
+var fmod = func(x, y) { x - y * int(x/y) }
-CalcGClonlat = func( lon_rad, lat_rad, hdg_rad, dist_m ) {
+var CalcGClonlat = func( lon_rad, lat_rad, hdg_rad, dist_m ) {
result = [0, 0];
# sanity check
@@ -76,7 +75,7 @@ CalcGClonlat = func( lon_rad, lat_rad, h
dist_rad = dist_m * SG_METER_TO_NM * SG_NM_TO_RAD;
- result[1] = asin( math.sin(lat_rad) * math.cos(dist_rad) +
+ result[1] = math.asin( math.sin(lat_rad) * math.cos(dist_rad) +
math.cos(lat_rad) * math.sin(dist_rad) *
math.cos(hdg_rad) );
@@ -84,7 +83,7 @@ CalcGClonlat = func( lon_rad, lat_rad, h
result[0] = lon_rad; # endpoint a pole
} else {
result[0] =
- fmod(lon_rad - asin( (math.sin(hdg_rad) *
+ fmod(lon_rad - math.asin( (math.sin(hdg_rad) *
math.sin(dist_rad)) /
math.cos(result[1]) )
+ SGD_PI, SGD_2PI) - SGD_PI;
@@ -97,7 +96,7 @@ CalcGClonlat = func( lon_rad, lat_rad, h
# Initialize target tracking
-LeadTargetInit = func {
+var LeadTargetInit = func {
# seed the random number generator with time
srand();
@@ -135,7 +134,7 @@ settimer(LeadTargetInit, 0);
# update target task
-do_target_task = func {
+var do_target_task = func {
time = getprop("/sim/time/elapsed-sec");
dt = time - last_time;
last_time = time;
@@ -295,7 +294,7 @@ do_target_task = func {
# reset target aircraft position and heading relative to the "ownship".
-reset_target_aircraft = func {
+var reset_target_aircraft = func {
print("Reseting target aircraft position");
my_lon = getprop("/position/longitude-deg");
@@ -330,7 +329,7 @@ reset_target_aircraft = func {
# If enabled, update our AP target values based on the target range,
# bearing, and speed
-LeadTargetUpdate = func {
+var LeadTargetUpdate = func {
lead_target_enable =
props.globals.getNode("/autopilot/lead-target/enable");
update_period = getprop("/autopilot/lead-target/update-period");
@@ -401,7 +400,7 @@ LeadTargetUpdate = func {
}
-select_task_dialog = func {
+var select_task_dialog = func {
dialog.load(); # load every time?
dialog.open();
}
@@ -414,7 +413,7 @@ settimer(func {
# timer handling to cause our update function to be called periodially
-registerTimer = func {
+var registerTimer = func {
settimer(LeadTargetUpdate, update_period );
}
registerTimer();
Index: material.nas
===================================================================
RCS file: /var/cvs/FlightGear-0.9/data/Nasal/material.nas,v
retrieving revision 1.8
diff -u -p -r1.8 material.nas
--- material.nas 11 May 2007 19:02:20 -0000 1.8
+++ material.nas 4 Dec 2007 13:50:02 -0000
@@ -48,9 +48,9 @@
# </animation>
#
-dialog = nil;
+var dialog = nil;
-colorgroup = func {
+var colorgroup = func {
parent = arg[0]; # pui parent
name = arg[1]; # "diffuse"
base = arg[2];
@@ -76,7 +76,7 @@ colorgroup = func {
}
-mat = func {
+var mat = func() {
parent = arg[0];
name = arg[1];
path = arg[2];
@@ -107,7 +107,7 @@ mat = func {
}
-showDialog = func {
+var showDialog = func {
base = arg[0];
while (size(base) and substr(base, size(base) - 1, 1) == "/") {
base = substr(base, 0, size(base) - 1);
Index: multiplayer.nas
===================================================================
RCS file: /var/cvs/FlightGear-0.9/data/Nasal/multiplayer.nas,v
retrieving revision 1.3
diff -u -p -r1.3 multiplayer.nas
--- multiplayer.nas 15 Oct 2007 18:27:42 -0000 1.3
+++ multiplayer.nas 4 Dec 2007 13:50:02 -0000
@@ -10,7 +10,7 @@
var messages = {};
-check_messages = func
+var check_messages = func
{
var mp = props.globals.getNode("/ai/models").getChildren("multiplayer");
@@ -39,7 +39,7 @@ check_messages = func
settimer(check_messages, 3);
}
-echo_message = func(msg, callsign)
+var echo_message = func(msg, callsign)
{
if (callsign != nil)
{
Index: props.nas
===================================================================
RCS file: /var/cvs/FlightGear-0.9/data/Nasal/props.nas,v
retrieving revision 1.25
diff -u -p -r1.25 props.nas
--- props.nas 7 Aug 2007 11:30:30 -0000 1.25
+++ props.nas 4 Dec 2007 13:50:02 -0000
@@ -56,7 +56,7 @@ Node = {
# expression to initialize the object a-la setValues().
#
Node.new = func {
- result = wrapNode(_new());
+ var result = wrapNode(_new());
if(size(arg) > 0 and typeof(arg[0]) == "hash") {
result.setValues(arg[0]);
}
@@ -131,10 +131,10 @@ var dump = func {
if(size(arg) == 1) { prefix = ""; node = arg[0]; }
else { prefix = arg[0]; node = arg[1]; }
- index = node.getIndex();
- type = node.getType();
- name = node.getName();
- val = node.getValue();
+ var index = node.getIndex();
+ var type = node.getType();
+ var name = node.getName();
+ var val = node.getValue();
if(val == nil) { val = "nil"; }
name = prefix ~ name;
@@ -172,17 +172,17 @@ var copy = func(src, dest, attr = 0) {
# Utility. Turns any ghosts it finds (either solo, or in an
# array) into Node objects.
#
-var wrap = func {
- argtype = typeof(arg[0]);
+var wrap = func(a) {
+ var argtype = typeof(a);
if(argtype == "ghost") {
- return wrapNode(arg[0]);
+ return wrapNode(a);
} elsif(argtype == "vector") {
- v = arg[0];
- n = size(v);
- for(i=0; i<n; i+=1) { v[i] = wrapNode(v[i]); }
+ var v = a;
+ var n = size(v);
+ for(var i=0; i<n; i+=1) { v[i] = wrapNode(v[i]); }
return v;
}
- return arg[0];
+ return a;
}
##
Index: track_target.nas
===================================================================
RCS file: /var/cvs/FlightGear-0.9/data/Nasal/track_target.nas,v
retrieving revision 1.5
diff -u -p -r1.5 track_target.nas
--- track_target.nas 15 May 2007 16:07:15 -0000 1.5
+++ track_target.nas 4 Dec 2007 13:50:02 -0000
@@ -55,28 +55,28 @@
# print("Target Tracking script loading ...");
# script defaults (configurable if you like)
-default_update_period = 0.05;
-default_goal_range_nm = 0.05;
-default_target_root = "/ai/models/aircraft[0]";
-default_min_speed_kt = 120;
+var default_update_period = 0.05;
+var default_goal_range_nm = 0.05;
+var default_target_root = "/ai/models/aircraft[0]";
+var default_min_speed_kt = 120;
# master enable switch
-target_tracking_enable = 0;
+var target_tracking_enable = 0;
# update period
-update_period = default_update_period;
+var update_period = default_update_period;
# goal range to acheive when following target
-goal_range_nm = 0;
+var goal_range_nm = 0;
# minimum speed so we don't drop out of the sky
-min_speed_kt = 0;
+var min_speed_kt = 0;
# Target property tree root
-target_root = "";
+var target_root = "";
# Initialize target tracking
-TrackInit = func {
+var TrackInit = func {
target_tracking_enable = getprop("/autopilot/target-tracking/enable");
if ( target_tracking_enable == nil ) {
target_tracking_enable = 0;
@@ -112,7 +112,7 @@ settimer(TrackInit, 0);
# If enabled, update our AP target values based on the target range,
# bearing, and speed
-TrackUpdate = func {
+var TrackUpdate = func {
target_tracking_enable = getprop("/autopilot/target-tracking/enable");
update_period = getprop("/autopilot/target-tracking/update-period");
@@ -184,7 +184,7 @@ TrackUpdate = func {
# timer handling to cause our update function to be called periodially
-registerTimer = func {
+var registerTimer = func {
settimer(TrackUpdate, update_period );
}
registerTimer();
Index: view.nas
===================================================================
RCS file: /var/cvs/FlightGear-0.9/data/Nasal/view.nas,v
retrieving revision 1.31
diff -u -p -r1.31 view.nas
--- view.nas 20 Nov 2007 11:34:54 -0000 1.31
+++ view.nas 4 Dec 2007 13:50:02 -0000
@@ -14,10 +14,10 @@
# mul^steps = max/min
# steps * ln(mul) = ln(max/min)
# mul = exp(ln(max/min) / steps)
-STEPS = 40;
-ACUITY = 1/60; # Maximum angle subtended by one pixel (== 1 arc minute)
-max = min = mul = 0;
-calcMul = func {
+var STEPS = 40;
+var ACUITY = 1/60; # Maximum angle subtended by one pixel (== 1 arc minute)
+var max = min = mul = 0;
+var calcMul = func {
max = 120; # Fixed at 120 degrees
min = getprop("/sim/startup/xsize") * ACUITY;
mul = math.exp(math.ln(max/min) / STEPS);
@@ -26,7 +26,7 @@ calcMul = func {
##
# Handler. Increase FOV by one step
#
-increase = func {
+var increase = func {
calcMul();
val = fovProp.getValue() * mul;
if(val == max) { return; }
@@ -38,7 +38,7 @@ increase = func {
##
# Handler. Decrease FOV by one step
#
-decrease = func {
+var decrease = func {
calcMul();
val = fovProp.getValue() / mul;
fovProp.setDoubleValue(val);
@@ -103,13 +103,13 @@ var indexof = func(name) {
##
# Standard view "slew" rate, in degrees/sec.
#
-VIEW_PAN_RATE = 60;
+var VIEW_PAN_RATE = 60;
##
# Pans the view horizontally. The argument specifies a relative rate
# (or number of "steps" -- same thing) to the standard rate.
#
-panViewDir = func(step) {
+var panViewDir = func(step) {
if (getprop("/sim/freeze/master"))
prop = "/sim/current-view/heading-offset-deg";
else
@@ -122,7 +122,7 @@ panViewDir = func(step) {
# Pans the view vertically. The argument specifies a relative rate
# (or number of "steps" -- same thing) to the standard rate.
#
-panViewPitch = func(step) {
+var panViewPitch = func(step) {
if (getprop("/sim/freeze/master"))
prop = "/sim/current-view/pitch-offset-deg";
else
-------------------------------------------------------------------------
SF.Net email is sponsored by: The Future of Linux Business White Paper
from Novell. From the desktop to the data center, Linux is going
mainstream. Let it simplify your IT future.
http://altfarm.mediaplex.com/ad/ck/8857-50307-18918-4
_______________________________________________
Flightgear-devel mailing list
Flightgear-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/flightgear-devel