-void FrameCounter::Print(std::ostream &out) const {
- out << "frame: " << AvgFrame() << std::endl;
- out << " handle: " << AvgHandle() << std::endl;
- out << " update: " << AvgUpdate() << std::endl;
- out << " render: " << AvgRender() << std::endl;
- out << " running: " << AvgRunning() << std::endl;
- out << " waiting: " << AvgWaiting() << std::endl;
- out << std::endl;
+void FrameCounter::Accumulate() noexcept {
+ sum.handle += current.handle;
+ sum.update += current.update;
+ sum.render += current.render;
+ sum.running += current.running;
+ sum.waiting += current.waiting;
+ sum.total += current.total;
+
+ max.handle = std::max(current.handle, max.handle);
+ max.update = std::max(current.update, max.update);
+ max.render = std::max(current.render, max.render);
+ max.running = std::max(current.running, max.running);
+ max.waiting = std::max(current.waiting, max.waiting);
+ max.total = std::max(current.total, max.total);
+
+ current = Frame<int>();
+}
+
+void FrameCounter::Push() noexcept {
+ peak = max;
+ avg.handle = sum.handle * factor;
+ avg.update = sum.update * factor;
+ avg.render = sum.render * factor;
+ avg.running = sum.running * factor;
+ avg.waiting = sum.waiting * factor;
+ avg.total = sum.total * factor;
+
+ sum = Frame<int>();
+ max = Frame<int>();