#include "headers/framerate_counter.hpp" namespace asloengine { FramerateCounter::FramerateCounter(sf::String _name, uint _update_interval) : GameObject(_name) { set_update_interval(_update_interval); prefix = ""; postfix = ""; } FramerateCounter::FramerateCounter(sf::String _name, std::shared_ptr _target_text, uint _update_interval) : GameObject(_name), target_text(_target_text) { set_update_interval(_update_interval); prefix = ""; postfix = ""; } FramerateCounter::~FramerateCounter() { if (values) { delete[] values; } } void FramerateCounter::set_update_interval(uint _update_interval) { if (_update_interval < 1) { _update_interval = 1; } update_interval = _update_interval; values = new float[_update_interval]; for (uint i; i < _update_interval; i++) { values[i] = 0; } } uint FramerateCounter::get_update_interval() const { return update_interval; } void FramerateCounter::on_start() { counter = 0; } void FramerateCounter::on_update(float delta_time) { if (counter == update_interval) { counter = 0; sf::String output_string = prefix + fmt::format("{:.1f}", (calculate_average(values, update_interval))) + postfix; if (target_text) { target_text->setString(output_string); } signal_on_counter_updated(output_string); } values[counter] = (1 / delta_time); counter++; } }