Ce chapitre vous permettra de vous familiariser avec l'Editeur de code.
Durant cette session d'entrainement, il vous sera demandé de
faire des choses totalement inutiles. Désolé! Cela ne devrait pas être trop long...
Avant de lancer l'Editeur de code, il vous faut faire quelques préparations.
Il convient notamment de créer des "supports de texture". Nous verrons un peu plus tard
comment faire. Il serait également préférable que vous ayez créé deux ou trois sub-assies
(en plus du desk) dans lesquels se trouvent quelques polygones... Ah, j'allais oublier:
serait-ce trop vous demander que de copier un fichier bitmap 256 couleurs (128x128, 256x256 ou 512x512)
dans le répertoire de votre project?
On y est. Je suppose que ça n'a pas été long. Sélectionnez l'un des polygones que vous avez
créé et activez l'option Define as texture support du menu Utilities.
Recommencez cette opération avec deux ou trois autres polygones.
Lancez l'Editeur de code (10ème bouton de la barre d'outils ou option
Model Editor du menu File. La fenêtre de l'Editeur de code apparait à l'écran.
La fenêtre de l'Editeur de code comprend:
Pour l'instant, la liste est courte : quelques lignes. Il s'agit de la page de
code principale du projet. Les seules instructions présentes sont des
instructions de déclaration des sub-assies (supposons que MYNAME soit le nom du projet
et MYSUB1, MYSUB2... les noms des sub-assies. A moins que ce ne soient TOTO and TOTO1...):
MYNAME MASTER
MYSUB1 SUBASSY,T click to open sub-assy
MYSUB2 SUBASSY,T click to open sub-assy
MYSUB3 SUBASSY,T click to open sub-assy
ENDBLOCK
Si vous n'aviez pas coché la case master project lors de la création du
projet, vous verrez quelque chose d'un peu différent:
MYNAME ASSEMBLY
MYSUB1 SUBASSY,T click to open sub-assy
MYSUB2 SUBASSY,T click to open sub-assy
MYSUB3 SUBASSY,T click to open sub-assy
ENDBLOCK
Double-cliquez sur le champ de données d'une instruction SUBASSY,T (ce
champ comprend la mention "click to open sub-assy"). Ceci a pour effet d'afficher
la page de code associée au sub-assy correspondant:
MYSUB1 SUBASSY,T click to come back
TPOLY 3; 1, 2, 3
TPOLY ...
...
RETURN
Chaque instruction TPOLY represente un polygone du sub-assy. Prenez quelques instants pour jouer avec ces instructions. Sélectionnez l'une des instructions TPOLY en cliquant dessus. Cliquez ensuite sur le bouton de la barre d'outils qui représente des ciseaux (le quatrième). Rien ne se passe, si ce n'est l'apparition d'un message d'alerte dans la barre d'état. Vous ne pouvez pas supprimer un polygone à partir de l'Editeur de code. Vous ne pouvez pas non plus supprimer la première instruction, ni la dernière. Cliquez de nouveau sur une instruction TPOLY. Cliquez ensuite sur le troisième bouton de la barre d'outils. L'apparence du curseur est modifiée, vous êtes passé dans le mode Move To de l'Editeur de code. Cliquez sur une autre instruction (à condition que ce ne soit pas la première). L'instruction en cours de sélection est déplacée de manière à s'insérer juste avant l'instruction sur laquelle vous avez cliqué et le curseur reprend son apparence normale. Recommencez l'opération mais, cette fois, cliquez sur le premier bouton de la barre d'outils au lieu de cliquer sur une autre instruction: le curseur reprend son apparence normale et rien ne se passe. Essayez de déplacer la première ou la dernière instruction: rien ne se passe et un message d'alerte s'affiche dans la barre d'état. Dans l'Editeur de code, il y a différentes catégories d'instructions:
Insérer une instruction
Sélectionnez la deuxième instruction de la liste. Cliquez ensuite sur le deuxième
bouton de la barre d'outils (ou appuyez sur la touche INSER du clavier).
Une fenêtre de sélection d'instruction s'ouvre qui vous propose les options
suivantes :
L'option Insert Assembly n'est affichée que si vous travaillez dans un master project. Cliquez successivement sur les différents boutons de sélection. Le panneau de droite de la fenêtre de sélection s'adapte en fonction de l'option choisie. Par exemple, si vous sélectionnez le bouton Jump, le panneau de gauche présente le choix suivant:
Insérez une autre instruction: choisissez un RETURN par exemple. Si cela ne vous satisfait pas,
double-cliquez sur le champ de code de ce RETURN. La fenêtre de sélection d'instruction
est affichée de nouveau et vous pouvez modifier votre choix. Créez d'autres instructions
(GOSUB, GOTO, RETURN...) sans vous préoccuper pour le moment de leur signification.
Le presse-papiers
L'Editeur de code possède un presse-papiers. Pour placer une instruction dans le
presse-papiers, sélectionnez-la et activez l'option Copy du menu Edit ou
cliquez sur le sixième bouton de la barre d'outils.
Vous pouvez aussi sélectionner plusieurs instructions à la fois. Cliquez par exemple sur la deuxième
instruction, puis cliquez sur une autre instruction de la liste tout en appuyant
sur la touche SHIFT (je fais l'hypothèse que vous avez inséré plusieurs
instructions dans la liste). Dans ce cas, c'est l'ensemble de la sélection que
vous pouvez copier dans le presse-papiers. Si vous sélectionnez une autre
instruction de la liste (en dehors de la sélection), vous pouvez, au choix, coller
le contenu du presse-papiers à la place de la sélection (septième bouton de la
barre d'outils) ou l'insérer juste avant la sélection (huitième bouton de la barre
d'outils). Les restrictions qui s'appliquent au presse-papiers sont décrites
dans un chapitre du fichier d'aide.
Instructions de saut et labels
De nombreuses instructions de l'Editeur de code doivent être complétées
par une adresse de destination dans leur champ de données. C'est le cas par exemple des
instructions de test, des appels de sous-programmes ou des instructions associées aux
parties mobiles. Nous verrons plus tard comment utiliser ces instructions, nous
allons voir maintenant comment leur affecter une adresse de destination.
Insérez quelques instructions au sein de la page de code d'un sub-assy.
Par exemple, insérez la séquence suivante dans le sub-assy MYSUB1:
MYSUB1 SUBASSY,T click to come back
GOSUB ?
JUMP PROP ?
RANGE 0,60
RETURN
GCOLOR ?
GOTO ?
RETURN
TPOLY 3; 1, 2, 3
TPOLY 3; 4, 5, 6
TPOLY ...
...
RETURN
La signification de cette séquence importe peu pour le moment. Nous allons juste chercher
à affecter une adresse de destination aux instructions qui le nécessitent.
Ces instructions sont marquées par un petit point bleu dans la marge.
Double-cliquez dans le champ de données de la première instruction GOSUB de la
liste. Le curseur change de forme: c'était une petite flèche inclinée, c'est
maintenant un doigt pointé vers le haut. L'Editeur de code est passé en mode
d'adressage. Il y a trois façons de sortir de ce mode: soit vous pointez sur
un label existant (il n'y en a pas pour le moment), soit vous cliquez sur une
instruction sans label située au dessous de l'instruction avec laquelle vous
travaillez, soit vous cliquez sur le premier bouton de la barre d'outils pour annuler
l'opération en cours. Ceci ne nous avancerait à rien: cliquez donc avec le doigt
pointé sur la première instruction TPOLY de la liste. Le curseur reprend sa forme
normale et une fenêtre de saisie d'adresse apparaît. Entrez un label alphanumerique
(8 caractères maximum): allons-y pour MYLABEL. Validez en cliquant sur le
bouton OK.
MYLABEL, ce n'est pas mal, mais je suis sûr que nous aurons besoin d'autres labels.
Je propose que nous remplacions MYLABEL par MYLABEL1. Pour faire cela, double-cliquez
sur le label que vous venez de créer. La fenêtre de saisie d'adresse est affichée de
nouveau. Entrez MYLABEL1 et validez. Jetez un oeil à l'instruction GOSUB à partir de laquelle
vous aviez créé le label MYLABEL. Cette instruction a été mise à jour et pointe désormais sur
MYLABEL1. Aircraft Designer 2000 crée des liens dynamiques
entre les labels et les adresses de destination des instructions de saut.
Double-cliquez maintenant sur le champ "label" de la deuxième instruction TPOLY et
donnez lui le label MYLABEL2. Revenez à l'instruction GOSUB de tout à l'heure.
Double-cliquez sur son champ de données (pour le moment, il pointe sur MYLABEL1).
L'éditeur de code repasse en mode d'adressage et le curseur en forme de
doigt pointé reparaît. Cliquez sur MYLABEL2 avec le doigt pointé: le champ de données
du GOSUB indique maintenant MYLABEL2 au lieu de MYLABEL1.
Encore une petite expérience? Sélectionnez l'instruction GOSUB MYLABEL2 en
cliquant dessus. Copiez la dans le presse-papiers (sixième bouton de la barre
d'outils). Insérez et collez le presse-papiers (huitième bouton de la barre
d'outils) quelque part dans la liste avant l'instruction MYLABEL2 TPOLY.
Une autre instruction GOSUB MYLABEL2 est créée.
Double-cliquez sur le champ "label" de l'instruction MYLABEL2 TPOLY.
Modifiez le label MYLABEL2 en MYLABEL3. Vous pourrez constater que les adresses
de destination des deux instructions GOSUB sont mises à jour.
Couleur et Texture
Si vous avez suivi les instructions de ce tutoriel, il devrait y avoir une instruction
de type "couleur ombrée" (GCOLOR) dans la liste. Si ce n'est pas le cas, insérez en une
(groupe COLOR/TEXTURE, option shaded color) quelque part dans la liste.
Souvenez-vous que vous ne pouvez pas insérer une instruction entre deux instructions
combinées.
GCOLOR ?
Double-cliquez sur le point d'interrogation: une fenêtre de sélection de couleur apparaît.
Sélectionnez une couleur et validez. Le point d'interrogation est remplacé par l'indice de la couleur.
Ce n'est pas la bonne couleur? Double-cliquez sur l'indice de couleur et choisissez une autre couleur.
Une couleur ombrée ne s'applique qu'à des polygones ombrés (GPOLY). Tous les
polygones de ce sub-assy sont du type texturé (TPOLY). Pour passer du type
ombré au type texturé, vous pouvez procéder de deux façons: ou bien vous sélectionnez toutes
les instructions TPOLY puis vous activez l'option Polygon type du menu Code,
ou bien vous double-cliquez successivement sur le champ de code de chacune de ces
instructions. Dans les deux cas, une fenêtre de sélection de type apparaît: cliquez sur
le bouton-radio shaded. Sachez que le choix d'un mauvais type de polygone est la
source d'une erreur fréquente. Très souvent, on oublie de transformer les instructions TPOLY
en instructions GPOLY après avoir inséré une instruction GCOLOR. De plus, si aucune texture
n'a été définie au préalable, une erreur de compilation se produira.
Justement: insérons maintenant une instruction de texture (groupe COLOR/TEXTURE, option
texture). Une paire d'instructions combinées est créée:
TEXTURE ?
LIMITS undefined limits
Double-cliquez sue le point d'interrogation de l'instruction TEXTURE: une fenêtre
de sélection de texture apparaît.
La fenêtre de sélection de texture comprend :
Dans la partie haute de la fenêtre, on peut voir trois boutons: une flêche vers la gauche,
une flêche vers la droite et un bouton central. Le bouton central est sans effet dans cette fenêtre.
En cliquant sur les flêches, vous pouvez naviguer dans la liste des supports de texture.
Les limites de texture définies à partir du support courant apparaissent dans la fenêtre.
Validez votre sélection: ces mêmes limites sont reportées dans le champ de données de l'instruction
LIMITS. Si ces limites ne vous satisfont pas, double-cliquez à nouveau sur ce champ de données. La
fenêtre de sélection de support de texture s'affiche de nouveau et vous pouvez modifier votre choix.
Nota : FS2000 et CFS2 permettent de déclarer des
textures de nuit qui, comme leur nom l'indique, remplacent la texture de base de la tombée de la nuit
jusqu'à l'aube. Le nom de ces textures doit être construit à partir de celui de la texture de jour.
Si le nom de la texture de jour est MATEXTU.bmp, celui de la texture
de nuit doit être MATEXTU_LM.bmp.
Les lignes
Les polygones ne sont pas les seules pièces élémentaires que vous pouvez créer avec
Aircraft Designer 2000. Vous aurez parfois besoin
de lignes brisées. Fermez la fenêtre l'Editeur de code et revenez à l'Editeur Graphique.
Sélectionnez un polygone et éditez le. Dans l'éditeur de chaîne, cliquez sur le bouton
line. Le polygone a été transformé en ligne brisée. Pendant que vous êtes dans l'Editeur Graphique,
profitez en pour créer un nouveau sub-assy avec quelques chaînes. Une fois cela
réalisé, effacez quelques unes des chaînes au sein des autres sub-assies. Hé... pas celle là!
Pas la ligne que vous venez de créer, nous allons en avoir besoin!
Relancez l'Editeur de code. Vous pouvez constater plusieurs choses:
Instructions avancées
Les groupes Flight Control et misc. advanced regroupent les instructions
nécessaires à l'animation des parties mobiles. Je vous conseille de lire les chapitres qui
leur sont consacrés dans le fichier d'aide pour mieux comprendre leur fonctionnement.
Pour le moment, il nous suffira de dire que ce sont des instructions combinées. Une instruction
VECTOR leur est associée. Cette instruction VECTOR fait appel à un vecteur, qui doit être
défini au préalable dans l'Editeur Graphique, et à trois angles de rotation.
Les vecteurs sont créés au moyen de l'option Make a vector du menu Utilities.
Si des vecteurs ont été définis, double-cliquez sur le champ de données d'une
instruction VECTOR. Une fenêtre de saisie s'affiche. Cette fenêtre vous permet
de choisir le vecteur de translation (flêches gauche et droite) et les trois
angles de rotation.
L'instruction INSERT vous permet d'insérer un assembly dans le master project.
Cet assembly doit avoir été compilé au préalable. Un assembly se
comporte comme un sub-assy. Il est conseillé de l'appeler au moyen d'une instruction
GOSUB de préférence à tout autre instruction de saut.
Fermer la fenêtre de l'Editeur de code.