C'est marrant que tu mettes en avant la SFML de cette manière, et la façon dont tu l'utilises me parais... anormale s'il en est.
Tu prends
la classe Sprite de la SFML, elle a une simple méthode setPosition(float x, float y).
Tu as également une autre option avec setPosition(const Vector2f& v).
Vector2f qui est...
un POD x, y.
D'ailleurs, depuis que j'utilise la SFML, le besoin d'une structure Position a quasiment disparu de mon code : j'utilise directement celle de la SFML.
Code:
1 2 3 4 5 6
| class Perso
{
public:
const Vector2f& getPosition() const { return m_sprite.getPosition(); }
void setPosition(float x, float y) { m_sprite.setPosition(x, y); }
}; |
Une autre approche sur un autre projet, où j'avais déjà ma Position et ai switché de la SDL vers SFML pour le rendu, et ça donne
Code:
1 2 3 4 5 6 7 8 9 10 11
|
struct Position { int x, y; };
class Perso
{
Position m_pos;
sf::Sprite m_sprite;
public:
const Position& getPosition() const { return m_pos; }
const setPosition(int x, int y) { m_pos.x = x; m_pos.y = y; }
bool Update(u32 dt) { m_sprite.setPosition(m_pos.x, m_pos.y); return true; }
}; |
La méthode update existe chez moi, mais puisque tu as une méthode Draw non const, tu peux inclure son code dans le Draw.
Le même résultat en... 3 lignes ? Alors explique-nous comment toi tu as besoin de 10 lignes pour cela ?