add createCamera method to FilamentApp

This commit is contained in:
Nick Fisher
2025-05-22 15:07:23 +08:00
parent 9a4fd1141e
commit 943de8f77b
3 changed files with 21 additions and 4 deletions

View File

@@ -1,5 +1,6 @@
import 'dart:async'; 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/interface/scene.dart';
import 'package:thermion_dart/src/filament/src/implementation/ffi_asset.dart'; import 'package:thermion_dart/src/filament/src/implementation/ffi_asset.dart';
import 'package:thermion_dart/src/filament/src/implementation/ffi_gizmo.dart'; import 'package:thermion_dart/src/filament/src/implementation/ffi_gizmo.dart';
@@ -194,10 +195,23 @@ class FFIFilamentApp extends FilamentApp<Pointer> {
return view; return view;
} }
///
///
///
Future<Scene> createScene() async { Future<Scene> createScene() async {
return FFIScene(Engine_createScene(engine)); return FFIScene(Engine_createScene(engine));
} }
///
///
///
Future<Camera> createCamera() async {
return FFICamera(
await withPointerCallback<TCamera>(
(cb) => Engine_createCameraRenderThread(engine, cb)),
this);
}
/// ///
/// ///
/// ///

View File

@@ -70,6 +70,11 @@ abstract class FilamentApp<T> {
/// ///
Future<Scene> createScene(); Future<Scene> createScene();
///
///
///
Future<Camera> createCamera();
/// ///
/// ///
/// ///

View File

@@ -76,10 +76,8 @@ class ThermionViewerFFI extends ThermionViewer {
scene = await FilamentApp.instance!.createScene() as FFIScene; scene = await FilamentApp.instance!.createScene() as FFIScene;
await view.setScene(scene); await view.setScene(scene);
final camera = FFICamera( final camera = await FilamentApp.instance!.createCamera() as FFICamera;
await withPointerCallback<TCamera>(
(cb) => Engine_createCameraRenderThread(app.engine, cb)),
app);
_cameras.add(camera); _cameras.add(camera);
await camera.setLensProjection(); await camera.setLensProjection();