Merci pour ta réponse.
En fait mes deux classes héritent de sf::Transformable et sf::Drawable, du coup dans ma classe A j'effectue une rotation et un positionnement tandis que dans ma classe B j'effectue un positionnement et une mise à l'échelle, or je veux pouvoir cliquer sur la classe B donc récupérer la transformation de A la multiplier par B pour avoir la bonne position de la classe B et utiliser ainsi sf::Mouse pour cliquer sur cette carte.
Exemple:
class A : public sf::Transformable, public sf::Drawable
{
private:
B * object_b;
public:
void draw(sf::RenderTarget & target, sf::RenderStates states) const;
};
// Fichier A.cpp
//...
setRotation(rotation);
//...
void A::draw(sf::RenderTarget & target, sf::RenderStates states) const
{
states.transform *= getTransform();
target.draw(*object_b, states);
}
class B : public sf::Transformable, public sf::Drawable
{
public:
void update(sf::Event evt);
void draw(sf::RenderTarget & target, sf::RenderStates states) const;
}
//Fichier B.cpp
void B::update(sf::Event evt)
{
sf::Vector2f position = getTransform().transformPoint(getPosition()); // récupérer la position de la carte avec la rotation appliquée la classe A
// Verifier si position + taille contient le pointeur de la souris lors d'un click souris
}
void B::draw(sf::RenderTarget & target, sf::RenderStates states) const
{
states.transform *= getTransform();
target.draw(....., states);
}
Et ce que je fais quelque chose qui ne va pas ?
Navré de vous embêter autant