Files
flame/lib/fps_counter.dart
2020-10-05 21:18:48 -03:00

26 lines
701 B
Dart

import 'package:flutter/scheduler.dart';
import 'game/game.dart';
const _maxFrames = 60;
const frameInterval =
Duration(microseconds: Duration.microsecondsPerSecond ~/ _maxFrames);
mixin FPSCounter on Game {
List<FrameTiming> _previousTimings = [];
@override
void onTimingsCallback(List<FrameTiming> timings) =>
_previousTimings = timings;
/// Returns the FPS based on the frame times from [onTimingsCallback].
double fps([int average = 1]) {
return _previousTimings.length *
_maxFrames /
_previousTimings.map((t) {
return (t.totalSpan.inMicroseconds ~/ frameInterval.inMicroseconds) +
1;
}).fold(0, (a, b) => a + b);
}
}