89 lines
No EOL
1.7 KiB
C++
Executable file
89 lines
No EOL
1.7 KiB
C++
Executable file
#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<sf::Text> _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++;
|
|
|
|
}
|
|
|
|
} |