OpenSim Tutorial : Cours de LSL - Module 2
Nous allons maintenant nous intéresser aux types du langage ; LSL accepte sept types distincts.
INTEGER
Le type integer (entier) peut stocker des nombres compris entre -2.147.483.648 et 2.147.483.647 ce qui signifie qu'ils sont stockés sur 32 bit ou encore 4 octets puisque 1 octet représente 8 bit. Voici quelques exemples d'entiers en situation :
FLOAT
Pour être simple, il s'agit d'un nombre réel avec 7 chiffres significatifs après la virgule positif ou négatif.
STRING
Il s'agit d'une chaîne de caractères à savoir une suite de caractères, comme ceci :
VECTOR
Un vecteur vaut trois floats, à savoir les composantes x, y et z. Un vecteur sert généralement pour la position, la vitesse, l'accélération ou la couleur. Les trois valeurs peuvent être définies simultanément ou de manière individuelle.
Lorsque l'on initialise un vecteur comme dans les 3 dernières lignes, l'initialisation est beaucoup plus lente que lorsque l'on initialise par un vecteur.
LIST
Puisque LSL ne possède ni tableaux, ni structures, la principale méthode de stockage des collections de données repose sur les listes. Tous les autres type de données peuvent y être placés ( mais une liste ne peut pas être imbriquée dans une autre).
ROTATION
Une rotation correspond à quatre floats, à savoir les composantes x, y, z et s d'une rotation quaternion. Même si les quaternions sont extrêmement compliqués et souvent déroutant,LSL permet de les utiliser sans qu'il soit nécessaire de maîtriser la théorie sous jacente. Nous verrons les rotations un peu plus en profondeur plus tard.
Les rotations dans LSL sont normalisées en entrée même si l'initialisation ne l'est pas.
KEY
Un UUID (ou identifiant universel unique) sert à identifier de nombreux objets dans OpenSim. A l'instar des rotations, les clés (key) permettent d'utiliser les UUID sans qu'il soit besoin d'écrire beaucoup de code pour leur prise en charge. Nous verrons cela plus loin en détail
L'attribution de types sera employée lorsque des variables de différents types sont affectées les unes aux autres. LSL accepte deux conversions implicites : de integer à float et de string à key. Elles permettent aux instructions suivantes de fonctionner correctement.
Pour toute autre conversion, il faut utiliser une conversion explicite (cast). Comme en C, la conversion concerne le type que vous souhaitez convertir à l'intérieur des parenthèses.
|