Les fonctions fournies par le code source

Ce sont les fonctions fournies avec FlightGear, certaines ne sont pas disponibles sur la version 0.9.10.

setlistener(<property>, <function> [, <startup=0> [, <runtime=1>]])

_setlistener(<property>, <function> [, <startup=0> [, <runtime=1>]])

removelistener(<listener_id>)

print([texte [,texte [, texte [...]]]])

Affiche un texte sur la sortie standard (la console), et termine par un retour à la ligne.
Renvoie le nombre de caractères écrits

print ("un texte", " écrit sur ", "une seule", "ligne");
print ("ce texte est écrit sur une deuxième ligne");

getprop(<path>)

renvoie la valeur d'une propriété donnée, renvoie nil si la propriété n'existe pas

print("Le taux de rafraichissement est de ", getprop("/sim/frame-rate"), " FPS");

setprop(<path> [, <path>, [...]], <value>)

affecte une valeur à une propriété donnée, ne renvoie jamais rien Le dernier argument est la valeur à affecter, et le(s) premier(s) arguments sont concaténés pour former une propriété

setprop("/sim/current-view/view-number", 2);
setprop("/controls/engines/engine["~ i ~"]/reverser", 1);

settimer(<function>, <time> [, <realtime=0>])

Exécute du code à intervalles réguliers, renvoie le résultat de fonction (fonction de rappel)

  • function: la fonction à exécuter, attention il s'agit d'un objet et pas d'un appel de la fonction
  • time: l'écart en seconde entre deux appel de la fonction
  • relatime: optionnel, par défaut est à 0, ce qui signifie que la fonction ne s'exécutera pas lorsque que FlightGear est en pause.

systime()

renvoie la date en secondes depuis le 1er janvier 1972 à minuit (aussi appelé temps UNIX)

cartogeod(<cart_lat>,<cart_lon>,<cart_alt>)

Convertit les coordonnées cartésiennes en coordonnées géodésiques, sous forme de vecteur (~ tableau)

var geod = carttogeod(-2737504, -4264101, 3862172);
print("lat=", geod[0], " lon=", geod[1], " alt=", geod[2]);

# écrira
lat=37.49999782141546 lon=-122.6999914632327 alt=998.6042055172776

geodtocart(<geaod_lat>, <geod_lon>, <geod_alt_en_metres>)

Convertit les données géodésiques en coordonnées cartésiennes, sous forme de vecteur

var cart = geodtocart(37.5, -122.7, 1000); # lat/lon/alt(m)
print("x=", cart[0], " y=", cart[1], " z=", cart[2]);

# écrira
x=-2737504.667684828 y=-4264101.900993474 z=3862172.834656495

geodinfo(<lat>, <lon>)

Renvoie une information sous forme de vecteur à propos de la coordonnée entrée, ou nil si aucune information n'est disponible, ce qui peut arriver si la tuile n'est pas chargée. La première entrée est l'altitude, la deuxième est un hash qui donne une foule de détails sur le terrain

parsexml(<path> [, <start-elem> [, <end-elem> [, <data> [, <pi> ]]]])

Cette fonction permet de lire un fichier XML (ça tombe bien il y en a tout un tas dans FlightGear ;-)). Elle renvoie nil en cas d'erreur, et le chemin en cas de succès. Elle peut prendre de un à 5 arguments, le premier étant obligatoire, les autres sont des fonctions qui permettent de traiter l'information lue:

  • path: le chemin vers le fichier que l'on veut lire
  • start-elem: est appelé à chaque déclaration d'élément avec deux arguments (le nom de l'élément et son attribut)
  • end-elem: est appelée à chaque fin d'élément avec un argument (le nom de l'élément)
  • data: est appelée pouur chaque donnée contenu dans l'élément (la valeur de la donnée sous forme de texte)
  • pi: “processing instruction” FIXME je ne sais pas ce que c'est
var start = func(name, attr) {
    print("starting tag ", name);
    foreach (var a; keys(attr))
        print("\twith attribute ", a, "=", attr[a]);
}
var end = func(name) { print("ending tag ", name) }
var data = func(data) { print("data=", data) }
var pi = func(target, data) { print("processing instruction: target=", target, " data=", data) }
parsexml("/tmp/foo.xml", start, end, data, pi);

Les quatre fonctions callback sont optionnelles et par défaut sont égales à nil

_fgcommand(<command> [, <propriete>])

Exécute une commande interne de FlightGear, prend un ou deux arguments

  • command: la commande interne
  • propriete: une propriété qui contient le ou les arguments nécessaires à la commande exécutée
fgcommand("dialog-new", dialog[name].prop());

_cmdarg()

Retourne un handle vers les arguments utilisés apr la commande en cours d'exécution

var cmdarg = func { props.wrapNode(_cmdarg()) }

_interpolate(<path>, [, <vecteur>])

Etabli une interpolation pour une propriété

  • path: la propriété à interpoler, peut être un chemin vers la propriété, ou un handle
  • vecteur: un couple de valeurs valeur/delta

Cette fonction ne devrait pas être appelée directement mais pas l'intermédiaire de la fonction Nasal interpolate implémentée dans $FGROOT/Nasal/globals.nas

var fullBrakeTime = 0.5;
var applyBrakes = func(v, which = 0) {
    if (which <= 0) { interpolate("/controls/gear/brake-left", v, fullBrakeTime); }
    if (which >= 0) { interpolate("/controls/gear/brake-right", v, fullBrakeTime); }
}

rand()

Renvoie un nombre aléatoire

srand()

Réininitialise le générateur de nombre aléatoire

directory(<path>)

Renvoie la liste des fichiers contenus dans un répertoire sous forme de tableau

foreach (var file; directory(path)) print ( "le répertoire ", path, " contient le fichier: ", file );

airportinfo([<id|type> [, <lat>, <lon> [, <type>]]])

non disponible en version 0.9.10
Retourne un hash contenant les informations sur les pistes d'un aéroport donné, ou le plus proche. Renvoie nil en cas d'erreur. Un seul côté par piste.

airportinfo("KSFO");                # des informations sur les pistes de KSFO
airportinfo("seaport");             # renvoie des infos sur l'hydrodrome le plus proche
airportinfo();                      # renvoie des infos sur l'aéroport le plus proche (identique à airportinfo("airport"))
airportinfo(37.2, 120, "heliport"); # renvoie des infos sur l'héliport le plus proche des coordonnées

_getType()

Cette fonction ne devrait pas être appelée directement, préférez getType décrit dans $FGROOT/Nasal/props.nas

_getAttribute()

Cette fonction ne devrait pas être appelée directement, préférez getAttribute décrit dans $FGROOT/Nasal/props.nas

_setAttribute()

Cette fonction ne devrait pas être appelée directement, préférez setAttribute décrit dans $FGROOT/Nasal/props.nas

_getName()

Cette fonction ne devrait pas être appelée directement, préférez getName décrit dans $FGROOT/Nasal/props.nas

_getIndex()

Cette fonction ne devrait pas être appelée directement, préférez getIndex décrit dans $FGROOT/Nasal/props.nas

_getValue()

Cette fonction ne devrait pas être appelée directement, préférez getValue décrit dans $FGROOT/Nasal/props.nas

_setValue()

Cette fonction ne devrait pas être appelée directement, préférez setValue décrit dans $FGROOT/Nasal/props.nas

_setIntValue()

Cette fonction ne devrait pas être appelée directement, préférez setIntValue décrit dans $FGROOT/Nasal/props.nas

_setBoolValue()

Cette fonction ne devrait pas être appelée directement, préférez setBoolValue décrit dans $FGROOT/Nasal/props.nas

_setDoubleValue()

Cette fonction ne devrait pas être appelée directement, préférez setDoubleValue décrit dans $FGROOT/Nasal/props.nas

_getParent()

Cette fonction ne devrait pas être appelée directement, préférez getParent décrit dans $FGROOT/Nasal/props.nas

_getChild()

Cette fonction ne devrait pas être appelée directement, préférez getChild décrit dans $FGROOT/Nasal/props.nas

_getChildren()

Cette fonction ne devrait pas être appelée directement, préférez getChildren décrit dans $FGROOT/Nasal/props.nas

_removeChild()

Cette fonction ne devrait pas être appelée directement, préférez removeChild décrit dans $FGROOT/Nasal/props.nas

_removeChildren()

Cette fonction ne devrait pas être appelée directement, préférez removeChildren décrit dans $FGROOT/Nasal/props.nas

_getNode()

Cette fonction ne devrait pas être appelée directement, préférez getNode décrit dans $FGROOT/Nasal/props.nas

_new()

_globals()

 
devel/nasal_sources.txt · Dernière modification: 2011/12/27 14:06 (modification externe)
 
Recent changes RSS feed GNU General Public License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki