Nous allons maintenant devoir faire un petit interlude
musical pour voir les différents types de variables utilisés dans Irrlicht. J'avoue que si je coupe le chapitre en plein milieu c'est parce que nous en aurons besoin pour la deuxième partie sur les images. Mais bon de toute façon il fallait bien caser ça quelque part. Pourquoi pas là ?
Je vous préviens tout de suite, pas la peine de rêver. Je ne vais pas vous faire une liste exhaustive de toutes les structures et classes d'Irrlicht ! Il y a un formidable outil pour ça qui s'appelle
la doc.
irr::core::dimension2d< T >
Vous l'aurez reconnu, il y a un
template qui traîne par là. Ce qui veut dire que dans le code cette classe s'utilisera comme ceci :
Code : C++ | irr::core::dimension2d<irr::s32> taille;
|
Ce qu'il faut retenir ici, c'est le
irr::s32. Il s'agit tout bêtement d'une variable de 32 bits signée. Il existe plein d'autres types de variables de base de ce genre propres à Irrlicht, et comme il serait long, ennuyeux et inutile que je vous les énumère tous, voici un lien vers
la page de la documentation qui le fait.
Revenons à nos moutons. Comme son nom l'indique, cette classe contient les dimensions d'une surface 2D. Elle contient précisément deux attributs appelés
Height et
Width (en français ça donne
hauteur et
largeur). Au niveau de l'utilisation, c'est donc simplissime. Imaginons par exemple que ma variable "taille" de tout à l'heure contienne les dimensions d'une image, pour récupérer la hauteur il suffit de faire :
Code : C++ | irr::s32 hauteur = taille.Height;
|
Et voilà, on vient de stocker la hauteur de l'image dans une variable de type irr::s32.
irr::core::position2d< T >
C'est quasiment la même à peu de choses près. Ici aussi il n'y a que deux attributs :
- La position en x notée X.
- La position en y notée Y.
Donc au niveau du code, cela nous donne :
Code : C++ | irr::core::position2d<irr::s32> position;
position.X = 50;
position.Y = 50;
|
Et voilà, on vient de créer une instance contenant les positions 50 (pixels) sur les 2 axes.
irr::core::rect< T >
Celle-ci est un poil plus complexe que les 2 autres. Notamment car ses attributs sont eux-mêmes des classes. Mais bonne nouvelle, des classes que nous venons juste d'étudier (comme le hasard fait bien les choses). En réalité,
irr::core::rect<T> permet de définir les coordonnées d'un rectangle. Et pour ce faire, il suffit de connaître les coordonnées de 2 de ses coins symétriques par le point central.
Un petit schéma :

On donne les coordonnées du coin haut gauche et celle du coin bas droit. Et devinez quoi... pour définir ces coordonnées, on utilise
irr::core::position2d<T>.
Code : C++ 1
2
3
4
5
6
7
8
9
10
11
12 | // On cree les positions 2D des deux coins
irr::core::position2d<irr::s32> position0;
position0.X = 0;
position0.Y = 0;
irr::core::position2d<irr::s32> position1;
position1.X = 300;
position1.Y = 300;
// Puis on les associe aux coins d'un rectangle
irr::core::rect<irr::s32> rectangle;
rectangle.UpperLeftCorner = position0;
rectangle.LowerRightCorner = position1;
|
Vous l'aurez remarqué, les deux attributs de
core::rect<T> sont :
- UpperLeftCorner pour le coin en haut à gauche
- LowerRightCorner pour le coin en bas à droite