diff --git a/thermion_dart/lib/src/filament/src/implementation/ffi_asset.dart b/thermion_dart/lib/src/filament/src/implementation/ffi_asset.dart index dbcced83..c9cc9374 100644 --- a/thermion_dart/lib/src/filament/src/implementation/ffi_asset.dart +++ b/thermion_dart/lib/src/filament/src/implementation/ffi_asset.dart @@ -321,7 +321,7 @@ class FFIAsset extends ThermionAsset { /// /// @override - Future setMaterialInstanceAt(FFIMaterialInstance instance, + Future setMaterialInstanceAt(MaterialInstance instance, {int? entity = null, int primitiveIndex = 0}) async { if (entity != null && !RenderableManager_isRenderable(app.renderableManager, entity)) { @@ -350,7 +350,7 @@ class FFIAsset extends ThermionAsset { Engine_getRenderableManager(app.engine), entity, primitiveIndex, - instance.pointer)) { + instance.getNativeHandle())) { _logger.warning( "Failed to set material instance for entity $entity at primitive index ${primitiveIndex}"); } 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 8624077a..18a95161 100644 --- a/thermion_dart/lib/src/filament/src/implementation/ffi_material.dart +++ b/thermion_dart/lib/src/filament/src/implementation/ffi_material.dart @@ -30,7 +30,7 @@ class FFIMaterial extends Material { } } -class FFIMaterialInstance extends MaterialInstance { +class FFIMaterialInstance extends MaterialInstance> { final Pointer pointer; final FFIFilamentApp app; @@ -198,6 +198,11 @@ class FFIMaterialInstance extends MaterialInstance { MaterialInstance_setParameterMat4( pointer, name.toNativeUtf8().cast(), matrix.storage.address); } + + @override + T getNativeHandle() { + return pointer as T; + } } extension TStencilFaceExt on StencilFace { diff --git a/thermion_dart/lib/src/filament/src/interface/material.dart b/thermion_dart/lib/src/filament/src/interface/material.dart index e1b6054a..825a4afe 100644 --- a/thermion_dart/lib/src/filament/src/interface/material.dart +++ b/thermion_dart/lib/src/filament/src/interface/material.dart @@ -1,3 +1,4 @@ +import 'package:thermion_dart/src/filament/src/interface/native_handle.dart'; import 'package:thermion_dart/thermion_dart.dart'; import 'package:vector_math/vector_math_64.dart'; @@ -98,7 +99,7 @@ abstract class Material { Future destroy(); } -abstract class MaterialInstance { +abstract class MaterialInstance extends NativeHandle { Future isStencilWriteEnabled(); Future setDepthWriteEnabled(bool enabled); Future setDepthFunc(SamplerCompareFunction depthFunc);