diff --git a/sfmldemo/main.cpp b/sfmldemo/main.cpp index 5549e97..f1d14ff 100644 --- a/sfmldemo/main.cpp +++ b/sfmldemo/main.cpp @@ -7,26 +7,50 @@ #include #include -int main() { - fmt::print("Setting up a window for you...\n"); - - sf::RenderWindow window(sf::VideoMode(1920, 1080), "ImGui + SFML = <3"); - // window.setFramerateLimit(60); - window.setVerticalSyncEnabled(true); +void ImGui_setup(sf::RenderWindow &window) { int res = ImGui::SFML::Init(window); if(res == 1) { fmt::print("ImGui returned result {}\n", res); } else { fmt::print("ImGui returned an error code={}\n", res); - return -1; } +} + +void ImGui_update(sf::RenderWindow &window, sf::Clock &deltaClock, sf::Time &tick) { + ImGui::SFML::Update(window, deltaClock.restart()); + ImGui::ShowDemoWindow(); + ImGui::Begin("Hello, world!"); + + std::string msg = fmt::format("Time: {}\n", tick.asSeconds()); + ImGui::Button(msg.c_str()); + ImGui::End(); +} + +void Window_update(sf::RenderWindow &window, sf::Shape &shape) { + window.clear(); + window.draw(shape); + ImGui::SFML::Render(window); + window.display(); +} + +int main() { + fmt::print("Setting up a window for you...\n"); + + sf::RenderWindow window(sf::VideoMode(1920, 1080), "ImGui + SFML = <3"); + // window.setFramerateLimit(60); + window.setVerticalSyncEnabled(true); + + ImGui_setup(window); sf::CircleShape shape(100.f); shape.setFillColor(sf::Color::Green); - sf::Clock deltaClock; + sf::Clock clock; + sf::Time tick = clock.getElapsedTime(); + while (window.isOpen()) { sf::Event event; + while (window.pollEvent(event)) { ImGui::SFML::ProcessEvent(window, event); @@ -36,18 +60,13 @@ int main() { } } - ImGui::SFML::Update(window, deltaClock.restart()); - - ImGui::ShowDemoWindow(); - - ImGui::Begin("Hello, world!"); - ImGui::Button("Look at this pretty button"); - ImGui::End(); + sf::Time since = clock.getElapsedTime(); + if(since - tick > sf::seconds(1)) { + tick = since; + } - window.clear(); - window.draw(shape); - ImGui::SFML::Render(window); - window.display(); + ImGui_update(window, deltaClock, tick); + Window_update(window, shape); } ImGui::SFML::Shutdown();