tick at lower framerate if specified
This commit is contained in:
@@ -77,7 +77,10 @@ class FilamentController {
|
|||||||
_nativeLibrary.render(_viewer, 0);
|
_nativeLibrary.render(_viewer, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int _frameLengthInMicroseconds = 1000000 ~/ 60;
|
||||||
|
|
||||||
Future setFrameRate(int framerate) async {
|
Future setFrameRate(int framerate) async {
|
||||||
|
_frameLengthInMicroseconds = 1000000 ~/ framerate;
|
||||||
_nativeLibrary.set_frame_interval(_viewer, 1 / framerate);
|
_nativeLibrary.set_frame_interval(_viewer, 1 / framerate);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -85,6 +88,8 @@ class FilamentController {
|
|||||||
_pixelRatio = ratio;
|
_pixelRatio = ratio;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int _last = 0;
|
||||||
|
|
||||||
Future createViewer(int width, int height) async {
|
Future createViewer(int width, int height) async {
|
||||||
size = ui.Size(width * _pixelRatio, height * _pixelRatio);
|
size = ui.Size(width * _pixelRatio, height * _pixelRatio);
|
||||||
_textureId =
|
_textureId =
|
||||||
@@ -125,8 +130,11 @@ class FilamentController {
|
|||||||
_initialized.complete(true);
|
_initialized.complete(true);
|
||||||
_assetManager = _nativeLibrary.get_asset_manager(_viewer);
|
_assetManager = _nativeLibrary.get_asset_manager(_viewer);
|
||||||
|
|
||||||
_ticker = _tickerProvider.createTicker((elapsed) async {
|
_ticker = _tickerProvider.createTicker((Duration elapsed) async {
|
||||||
_nativeLibrary.render(_viewer, 0);
|
if (elapsed.inMicroseconds - _last > _frameLengthInMicroseconds) {
|
||||||
|
render();
|
||||||
|
_last = elapsed.inMicroseconds;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
_ticker!.start();
|
_ticker!.start();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user