From 3707b7f49bd9066084c3253c75eae0a25298f6d0 Mon Sep 17 00:00:00 2001 From: Nick Fisher Date: Fri, 21 Apr 2023 08:44:15 +0800 Subject: [PATCH] tick at lower framerate if specified --- lib/filament_controller.dart | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/lib/filament_controller.dart b/lib/filament_controller.dart index 495ed5b4..9d709079 100644 --- a/lib/filament_controller.dart +++ b/lib/filament_controller.dart @@ -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(); }