mirror of
https://github.com/flame-engine/flame.git
synced 2025-11-03 20:36:31 +08:00
26 lines
701 B
Dart
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);
|
|
}
|
|
}
|