diff --git a/thermion_dart/lib/src/filament/src/implementation/ffi_filament_app.dart b/thermion_dart/lib/src/filament/src/implementation/ffi_filament_app.dart index 24d2bcfb..376cb610 100644 --- a/thermion_dart/lib/src/filament/src/implementation/ffi_filament_app.dart +++ b/thermion_dart/lib/src/filament/src/implementation/ffi_filament_app.dart @@ -1,5 +1,6 @@ import 'dart:async'; +import 'package:thermion_dart/src/filament/src/implementation/ffi_camera.dart'; import 'package:thermion_dart/src/filament/src/interface/scene.dart'; import 'package:thermion_dart/src/filament/src/implementation/ffi_asset.dart'; import 'package:thermion_dart/src/filament/src/implementation/ffi_gizmo.dart'; @@ -194,10 +195,23 @@ class FFIFilamentApp extends FilamentApp { return view; } + /// + /// + /// Future createScene() async { return FFIScene(Engine_createScene(engine)); } + /// + /// + /// + Future createCamera() async { + return FFICamera( + await withPointerCallback( + (cb) => Engine_createCameraRenderThread(engine, cb)), + this); + } + /// /// /// diff --git a/thermion_dart/lib/src/filament/src/interface/filament_app.dart b/thermion_dart/lib/src/filament/src/interface/filament_app.dart index 3e1a73e3..2ff823db 100644 --- a/thermion_dart/lib/src/filament/src/interface/filament_app.dart +++ b/thermion_dart/lib/src/filament/src/interface/filament_app.dart @@ -70,6 +70,11 @@ abstract class FilamentApp { /// Future createScene(); + /// + /// + /// + Future createCamera(); + /// /// /// diff --git a/thermion_dart/lib/src/viewer/src/ffi/src/thermion_viewer_ffi.dart b/thermion_dart/lib/src/viewer/src/ffi/src/thermion_viewer_ffi.dart index b972755a..76bc1c14 100644 --- a/thermion_dart/lib/src/viewer/src/ffi/src/thermion_viewer_ffi.dart +++ b/thermion_dart/lib/src/viewer/src/ffi/src/thermion_viewer_ffi.dart @@ -76,10 +76,8 @@ class ThermionViewerFFI extends ThermionViewer { scene = await FilamentApp.instance!.createScene() as FFIScene; await view.setScene(scene); - final camera = FFICamera( - await withPointerCallback( - (cb) => Engine_createCameraRenderThread(app.engine, cb)), - app); + final camera = await FilamentApp.instance!.createCamera() as FFICamera; + _cameras.add(camera); await camera.setLensProjection();