AsloEngine/asloengine/builtin/framerate_counter.cpp
2019-08-29 18:42:28 +02:00

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++;
}
}