Bon ben je vais me répondre à moi même comme personne n'a trouvé:p
2. Comment aligner un élément GUI (exemple une IGUIWindow) en bas à droite ?
Perso j'ai fait une classe avec des methodes qui donnent :
//je précise au cas où les includes
#include <irrlicht.h>
#include <IGUIElement.h>
#include "Aligne.h"
//et le namespace
using namespace irr;
// aligne un IGUIElement en bas à droite (sans modifier sa taille)
void Aligne::aligneLowerRight(gui::IGUIWindow* Element)
{
// on récupère le IGUIElement parent pour connaître la position max
gui::IGUIElement* elementParent = Element->getParent();
s32 pointXmax = elementParent->getRelativePosition().getWidth();
s32 pointXmin = pointXmax - Element->getRelativePosition().getWidth() ; //on récupère la largeur
s32 pointYmax = elementParent->getRelativePosition().getHeight();
s32 pointYmin = pointYmax - Element->getRelativePosition().getHeight() ; //on récupère la hauteur
core::rect<s32> tailleRectSceneFinal (pointXmin, pointYmin, pointXmax, pointYmax);
Element->setRelativePosition(tailleRectSceneFinal); //on repositionne l'élément GUI
}
Pour aligner en bas de la fenêtre :
//aligne un IGUIElement en bas de la fenêtre (sans modifier sa taille)
void Aligne::aligneLower(gui::IGUIWindow* Element)
{
// on récupere le IGUIElement parent pour connaitre la position max
gui::IGUIElement* elementParent = Element->getParent();
s32 pointXmax = Element->getAbsolutePosition().getWidth() ;
s32 pointXmin = Element->getAbsolutePosition().UpperLeftCorner.X;
s32 pointYmax = elementParent->getAbsolutePosition().getHeight();
s32 pointYmin = pointYmax - Element->getAbsolutePosition().getHeight() ;
core::rect<s32> tailleRectSceneFinal (pointXmin, pointYmin, pointXmax, pointYmax);
Element->setRelativePosition(tailleRectSceneFinal);
}
Et pour faire appel à ces methodes c'est tout simple :
//l'include de la nouvelle class en plus des autres
#include "Aligne.h"
Aligne monAligne;
//monAligne.aligneLeft( maWindow);
monAligne.aligneLowerRight( maWindow);
Attention cependant il y a peut être une petite erreur au niveau des methodes getAbsolutePosition() et getRelativePosition(). Elles semblent donner le même resultat mais il doit y avoir une différence que je n'ai pas encore trouvé !