C'est une chose bien pratique dans la
SDL. On peut déjà utiliser getPosition() sur tous les Drawable, mais GetSize() ne fonctionne que sur Sprite, Texture et RectangleShape. Ce serait d'en faire une méthode virtuelle pure de Drawable et de pouvoir l'utiliser sur Text, Shape. L'avantage est que dans les trois que j'ai cités au début, la méthode renvoie simplement un attribut, mais que pour les autres le calcul pourrait être fait à la volée, à moins que Drawable ait un attribut Rect et plus de Position. Dans ce cas, on pourra même changer Left et Top par X et Y, étant donné que les Rect seront présents partout. Je viens juste de voir Text.getLocal/GlobalBounds, qui pourrait aussi être remplacé par un getLocat/Global/Rect. D'autre part, certaines fois je vois bounds et d'autre fois rect, quelle est la différence ?
Dans
ce sujet du forum Anglais, ça serait utile avec ce que propose Tex Killer.
En ce qui me concerne, ça me permettrait par exemple de centrer un exemple sans utiliser des calculs sur getGlyph() approximatifs et d'implémenter une optimisation du Draw des éléments dans une View : seuls les éléments dont les Rect entrent en collision avec celui de la View seront affichés, alors qu'en ce moment je ne sais pas comment faire avec ma collection hétérogène
. Sprite a une méthode setTextureRect(), mais tous les Drawable pourraient avoir ce setRect qui définirait la surface affichée !
Enfin, ça pourrait simplifier les calculs de collision et rendre sf::Rect::Intersects plus célèbre, du moins dans mon code
.
Je me demande aussi si un tel attribut rect devrait appartenir à sf::Transformable ou sf::Drawable. Pour l'instant, le Vector2 de position est dans Transformable, donc il est logique qu'on y mette aussi le Size, et donc le Rect entier. Ca permettrait de séparer encore plus le visuel de la "logique".