tick at lower framerate if specified

This commit is contained in:
Nick Fisher
2023-04-21 08:44:15 +08:00
parent 80a781a3c4
commit 3707b7f49b

View File

@@ -77,7 +77,10 @@ class FilamentController {
_nativeLibrary.render(_viewer, 0);
}
int _frameLengthInMicroseconds = 1000000 ~/ 60;
Future setFrameRate(int framerate) async {
_frameLengthInMicroseconds = 1000000 ~/ framerate;
_nativeLibrary.set_frame_interval(_viewer, 1 / framerate);
}
@@ -85,6 +88,8 @@ class FilamentController {
_pixelRatio = ratio;
}
int _last = 0;
Future createViewer(int width, int height) async {
size = ui.Size(width * _pixelRatio, height * _pixelRatio);
_textureId =
@@ -125,8 +130,11 @@ class FilamentController {
_initialized.complete(true);
_assetManager = _nativeLibrary.get_asset_manager(_viewer);
_ticker = _tickerProvider.createTicker((elapsed) async {
_nativeLibrary.render(_viewer, 0);
_ticker = _tickerProvider.createTicker((Duration elapsed) async {
if (elapsed.inMicroseconds - _last > _frameLengthInMicroseconds) {
render();
_last = elapsed.inMicroseconds;
}
});
_ticker!.start();
}