Skip to content

Instantly share code, notes, and snippets.

@kennyrkun
Created October 21, 2018 19:50
Show Gist options
  • Save kennyrkun/bd812efdd868937e6eb336510ef1c1d7 to your computer and use it in GitHub Desktop.
Save kennyrkun/bd812efdd868937e6eb336510ef1c1d7 to your computer and use it in GitHub Desktop.
sfml convex shape creator
int main()
{
sf::RenderWindow window(sf::VideoMode(800, 600), "creator");
std::vector<sf::Vector2f> positions;
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::EventType::Closed)
window.close();
else if (event.type == sf::Event::EventType::MouseButtonPressed)
{
if (event.key.code == sf::Mouse::Left)
{
sf::Vector2f p(sf::Mouse::getPosition(window).x, sf::Mouse::getPosition(window).y);
positions.push_back(p);
}
else if (event.key.code == sf::Mouse::Right)
{
positions.pop_back();
}
}
else if (event.type == sf::Event::EventType::KeyPressed)
{
if (event.key.code == sf::Keyboard::Key::Return)
{
// save
std::ofstream out("shape.txt", std::ios::trunc);
out << "sf::ConvexShape shape;" << std::endl;
out << "shape.setPointCount(" << positions.size() << ");" << std::endl;
for (size_t i = 0; i < positions.size(); i++)
out << "shape.setPoint(" << i << ", sf::Vector2f(" << positions[i].x << ", " << positions[i].y << "));" << std::endl;
out.close();
system("start shape.txt");
}
}
}
window.clear(sf::Color::White);
sf::ConvexShape c;
c.setFillColor(sf::Color::Red);
c.setPointCount(positions.size());
for (size_t i = 0; i < positions.size(); i++)
c.setPoint(i, positions[i]);
window.draw(c);
for (size_t i = 0; i < positions.size(); i++)
{
sf::CircleShape s;
s.setPosition(positions[i]);
s.setRadius(4);
s.setOrigin(4 / 2, 4 / 2);
s.setFillColor(sf::Color::Green);
window.draw(s);
}
window.display();
}
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment