From 48b631b0a8141367b3805dc77ddb3c577dd850b6 Mon Sep 17 00:00:00 2001 From: Nick Fisher Date: Fri, 27 Jun 2025 11:33:50 +0800 Subject: [PATCH] add generic parameter to NativeHandle, rather than getNativeHandle() --- .../lib/src/filament/src/implementation/ffi_material.dart | 4 ++-- .../lib/src/filament/src/implementation/ffi_scene.dart | 6 +++++- .../lib/src/filament/src/implementation/ffi_swapchain.dart | 4 ++-- .../lib/src/filament/src/implementation/ffi_view.dart | 4 ++-- .../lib/src/filament/src/interface/native_handle.dart | 2 +- thermion_dart/lib/src/filament/src/interface/scene.dart | 4 +++- 6 files changed, 15 insertions(+), 9 deletions(-) diff --git a/thermion_dart/lib/src/filament/src/implementation/ffi_material.dart b/thermion_dart/lib/src/filament/src/implementation/ffi_material.dart index 18a95161..c7b1ca91 100644 --- a/thermion_dart/lib/src/filament/src/implementation/ffi_material.dart +++ b/thermion_dart/lib/src/filament/src/implementation/ffi_material.dart @@ -200,8 +200,8 @@ class FFIMaterialInstance extends MaterialInstance> { } @override - T getNativeHandle() { - return pointer as T; + Pointer getNativeHandle() { + return pointer; } } diff --git a/thermion_dart/lib/src/filament/src/implementation/ffi_scene.dart b/thermion_dart/lib/src/filament/src/implementation/ffi_scene.dart index 9ebdb030..59999769 100644 --- a/thermion_dart/lib/src/filament/src/implementation/ffi_scene.dart +++ b/thermion_dart/lib/src/filament/src/implementation/ffi_scene.dart @@ -6,13 +6,17 @@ import 'package:thermion_dart/src/filament/src/interface/skybox.dart'; import 'package:thermion_dart/thermion_dart.dart'; import 'package:logging/logging.dart'; -class FFIScene extends Scene { +class FFIScene extends Scene> { late final _logger = Logger(this.runtimeType.toString()); final Pointer scene; FFIScene(this.scene); + Pointer getNativeHandle() { + return scene; + } + @override Future add(ThermionAsset asset) async { SceneAsset_addToScene(asset.getHandle(), scene); diff --git a/thermion_dart/lib/src/filament/src/implementation/ffi_swapchain.dart b/thermion_dart/lib/src/filament/src/implementation/ffi_swapchain.dart index 0096978f..8a491861 100644 --- a/thermion_dart/lib/src/filament/src/implementation/ffi_swapchain.dart +++ b/thermion_dart/lib/src/filament/src/implementation/ffi_swapchain.dart @@ -1,10 +1,10 @@ import 'package:thermion_dart/thermion_dart.dart'; -class FFISwapChain extends SwapChain { +class FFISwapChain extends SwapChain> { final Pointer pointer; - T getNativeHandle() => pointer as T; + Pointer getNativeHandle() => pointer; FFISwapChain(this.pointer); diff --git a/thermion_dart/lib/src/filament/src/implementation/ffi_view.dart b/thermion_dart/lib/src/filament/src/implementation/ffi_view.dart index 270a5e56..e131e975 100644 --- a/thermion_dart/lib/src/filament/src/implementation/ffi_view.dart +++ b/thermion_dart/lib/src/filament/src/implementation/ffi_view.dart @@ -150,8 +150,8 @@ class FFIView extends View { View_setRenderQuality(view, quality.index); } - Future setScene(covariant FFIScene scene) async { - View_setScene(view, scene.scene); + Future setScene(Scene scene) async { + View_setScene(view, scene.getNativeHandle()); } @override diff --git a/thermion_dart/lib/src/filament/src/interface/native_handle.dart b/thermion_dart/lib/src/filament/src/interface/native_handle.dart index 0bb975fe..5d4655d1 100644 --- a/thermion_dart/lib/src/filament/src/interface/native_handle.dart +++ b/thermion_dart/lib/src/filament/src/interface/native_handle.dart @@ -7,5 +7,5 @@ /// not a compile-time error). /// abstract class NativeHandle { - T getNativeHandle(); + T getNativeHandle(); } diff --git a/thermion_dart/lib/src/filament/src/interface/scene.dart b/thermion_dart/lib/src/filament/src/interface/scene.dart index 7f66677f..760c2faf 100644 --- a/thermion_dart/lib/src/filament/src/interface/scene.dart +++ b/thermion_dart/lib/src/filament/src/interface/scene.dart @@ -1,7 +1,9 @@ +import 'package:thermion_dart/src/filament/src/interface/native_handle.dart'; import 'package:thermion_dart/src/filament/src/interface/skybox.dart'; import 'package:thermion_dart/thermion_dart.dart'; -abstract class Scene { +abstract class Scene extends NativeHandle { + /// Adds all renderable entities in [asset] to this scene. /// ///