OpenSim Tutorial : Cours de LSL - Module 2
Nous allons maintenant nous intresser aux types du langage ; LSL acceptéée 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 stocks sur 32 bit ou encore 4 octets puisque 1 octet reprsente 8 bit. Voici quelques exemples d'entiers en situation :
FLOAT
Pour tre simple, il s'agit d'un nombre rel avec 7 chiffres significatifs aprs la virgule positif ou ngatif.
STRING
Il s'agit d'une chane de caractres savoir une suite de caractres, comme ceci :
VECTOR
Un vecteur vaut trois floats, savoir les composantes x, y et z. Un vecteur sert gnralement pour la position, la vitesse, l'acclration ou la couleur. Les trois valeurs peuvent tre dfinies simultanment ou de manire individuelle.
Lorsque l'on initialise un vecteur comme dans les 3 dernires lignes, l'initialisation est beaucoup plus lente que lorsque l'on initialise par un vecteur.
LIST
Puisque LSL ne possde ni tableaux, ni structures, la principale mthode de stockage des collections de donnes repose sur les listes. Tous les autres type de donnes peuvent y tre placs ( mais une liste ne peut pas tre imbrique dans une autre).
ROTATION
Une rotation correspond quatre floats, savoir les composantes x, y, z et s d'une rotation quaternion. Mme si les quaternions sont extrmement compliqus et souvent droutant,LSL permet de les utiliser sans qu'il soit ncessaire de matriser la thorie sous jacente. Nous verrons les rotations un peu plus en profondeur plus tard.
Les rotations dans LSL sont normalises en entre mme 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 cls (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 dtail
L'attribution de types sera employe lorsque des variables de diffrents types sont affectes les unes aux autres. LSL acceptéée 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'intrieur des parenthses.
|