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 39e71b30..7f215ae3 100644 --- a/thermion_dart/lib/src/filament/src/implementation/ffi_asset.dart +++ b/thermion_dart/lib/src/filament/src/implementation/ffi_asset.dart @@ -888,33 +888,15 @@ class FFIAsset extends ThermionAsset { /// /// Future getWorldTransform({ThermionEntity? entity}) async { - late Pointer stackPtr; - if (FILAMENT_WASM) { - stackPtr = stackSave(); - } - entity ??= this.entity; - var transform = double4x4ToMatrix4( - TransformManager_getWorldTransform(app.transformManager, entity)); - if (FILAMENT_WASM) { - stackRestore(stackPtr); - } - return transform; + return FilamentApp.instance!.getWorldTransform(entity ?? this.entity); } /// /// /// Future setTransform(Matrix4 transform, {ThermionEntity? entity}) async { - late Pointer stackPtr; - if (FILAMENT_WASM) { - stackPtr = stackSave(); - } - entity ??= this.entity; - TransformManager_setTransform( - app.transformManager, entity, matrix4ToDouble4x4(transform)); - if (FILAMENT_WASM) { - stackRestore(stackPtr); - } + await FilamentApp.instance!.setTransform( + entity ?? this.entity, transform); } /// 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 119570b9..793cb84a 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 @@ -1110,6 +1110,32 @@ class FFIFilamentApp extends FilamentApp { /// /// Future setTransform(ThermionEntity entity, Matrix4 transform) async { + late Pointer stackPtr; + if (FILAMENT_WASM) { + stackPtr = stackSave(); + } TransformManager_setTransform(transformManager, entity, matrix4ToDouble4x4(transform)); + if (FILAMENT_WASM) { + stackRestore(stackPtr); + } + } + + /// + /// + /// + Future getWorldTransform(ThermionEntity entity) async { + late Pointer stackPtr; + if (FILAMENT_WASM) { + stackPtr = stackSave(); + } + + var transform = double4x4ToMatrix4( + TransformManager_getWorldTransform(transformManager, entity)); + if (FILAMENT_WASM) { + stackRestore(stackPtr); + } + return transform; + } + } 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 3116e09d..a66a1485 100644 --- a/thermion_dart/lib/src/filament/src/interface/filament_app.dart +++ b/thermion_dart/lib/src/filament/src/interface/filament_app.dart @@ -330,4 +330,9 @@ abstract class FilamentApp { /// /// Future setTransform(ThermionEntity entity, Matrix4 transform); + + /// + /// + /// + Future getWorldTransform(ThermionEntity entity); }