Ensign Variable
Ensign Variable

Reputation: 77

How do I access shape position in SFML?

I'm using SFML to draw in C++. It was going well until I tried accessing the position of a circle I drew on the screen. Code:

sf::Shape RootCircle = sf::Shape::Circle(300, 30, 30, sf::Color::Blue);
App.Draw(RootCircle);
cout << "X: " <<  RootCircle.GetPosition().x << endl;
cout << "Y: " <<  RootCircle.GetPosition().y << endl;

It's consisting telling me that the x and y positions are set to 0. What am I missing?

Upvotes: 3

Views: 2806

Answers (1)

Dan Watkins
Dan Watkins

Reputation: 998

By calling the sf::Shape::Circle() constructor, only the offset relative to the position is set to 300,30. To actually set the position of the circle, you need to call:

rootCircle.SetPosition(300.0f, 30.0f);

Note that by setting the position to 300,30, whatever offset is specified in the Circle() constructor will be relative to the actual position specified.

Upvotes: 2

Related Questions