Bonjour, j'utilise une fonction template qui permet à l'utilisateur d'intéragir avec des sf::RectangleShape ou sf::Sprite avec la souris :
template<typename TShape>
bool MouseInteract(const sf::Event& _event, const sf::RenderWindow& _window, const TShape& _tShape)
{
bool bReturn = false;
int mx = sf::Mouse::getPosition(_window).x;
int my = sf::Mouse::getPosition(_window).y;
sf::Vector2u sizeShape;
if (std::is_same<TShape, sf::RectangleShape>::_tShape)
{
sizeShape = _tShape.getSize();
}
else if (std::is_same<TShape, sf::Sprite>::_tShape)
{
sizeShape = _tShape.getTexture()->getSize();
}
if (mx > _tShape.getPosition().x && mx < _tShape.getPosition().x + sizeShape.x && // en X
my > _tShape.getPosition().y && my < _tShape.getPosition().y + sizeShape.y)
{
if (_event.type == sf::Event::MouseButtonPressed)
{
if (_event.key.code == sf::Mouse::Left)
{
bReturn = true;
}
}
}
return bReturn;
}
mais il y a un pb à la compilation, donc comment faire ?
désolé pour l'erreur en image et merci pour l'aide, ca fonctionne :
template<typename TShape>
bool MouseInteract(const sf::Event& _event, const sf::RenderWindow& _window, const TShape& _tShape)
{
bool bReturn = false;
sf::Vector2f posMouse = sf::Vector2f(sf::Mouse::getPosition(_window));
if (_tShape.getGlobalBounds().contains(posMouse))
{
if (_event.type == sf::Event::MouseButtonPressed)
{
if (_event.key.code == sf::Mouse::Left)
{
bReturn = true;
}
}
}
return bReturn;
}