From 58525c16af48ed82bbe846bc9be7a17cc744ebf1 Mon Sep 17 00:00:00 2001 From: Nick Fisher Date: Sat, 1 Jun 2024 12:51:07 +0800 Subject: [PATCH] update tests --- dart_filament/test/integration_test.dart | 41 ++++++++++++++++++------ 1 file changed, 32 insertions(+), 9 deletions(-) diff --git a/dart_filament/test/integration_test.dart b/dart_filament/test/integration_test.dart index 8c74f5fd..d23e7390 100644 --- a/dart_filament/test/integration_test.dart +++ b/dart_filament/test/integration_test.dart @@ -4,9 +4,9 @@ import 'package:dart_filament/dart_filament/swift/swift_bindings.g.dart'; import 'package:dart_filament/dart_filament/utils/dart_resources.dart'; import 'package:ffi/ffi.dart'; import 'package:dart_filament/dart_filament.dart'; -import 'package:dart_filament/dart_filament/dart_filament.g.dart'; - +import 'package:dart_filament/dart_filament/compatibility/compatibility.dart'; import 'package:test/test.dart'; +import 'package:animation_tools_dart/animation_tools_dart.dart'; /// Test files are run in a variety of ways, find this package root in all. /// @@ -47,28 +47,33 @@ extension on Uri { String get name => pathSegments.where((e) => e != '').last; } +late String testDir; void main() async { final packageUri = findPackageRoot('dart_filament'); - var testDir = Directory("${packageUri.toFilePath()}/test").path; + testDir = Directory("${packageUri.toFilePath()}/test").path; final lib = DartFilamentTexture1(DynamicLibrary.open( '${packageUri.toFilePath()}/native/lib/macos/swift/libdartfilamenttexture.dylib')); final object = DartFilamentTexture.new1(lib); object.initWithWidth_height_(500, 500); final resourceLoader = calloc(1); - resourceLoader.ref.loadResource = - Pointer.fromFunction(DartResourceLoader.loadResource); - resourceLoader.ref.freeResource = - Pointer.fromFunction(DartResourceLoader.freeResource); + var loadToOut = NativeCallable< + Void Function(Pointer, + Pointer)>.listener(DartResourceLoader.loadResource); - var viewer = FilamentViewer(resourceLoader: resourceLoader); + resourceLoader.ref.loadToOut = loadToOut.nativeFunction; + var freeResource = NativeCallable.listener( + DartResourceLoader.freeResource); + resourceLoader.ref.freeResource = freeResource.nativeFunction; + + var viewer = FilamentViewer(resourceLoader: resourceLoader.cast()); await viewer.initialized; await viewer.createSwapChain(500, 500); await viewer.createRenderTarget(500, 500, object.metalTextureAddress); await viewer.updateViewportAndCameraProjection(500, 500); - group('String', () { + group('background', () { test('set background color', () async { var outDir = Directory("$testDir/bgcolor"); outDir.createSync(); @@ -88,6 +93,24 @@ void main() async { await viewer.loadSkybox( "file:///$testDir/../../flutter_filament/example/assets/default_env/default_env_skybox.ktx"); await viewer.render(); + await viewer.render(); + await viewer.setRecording(false); + }); + }); + + group('animations', () { + test('get bone names', () async { + var model = await viewer.loadGlb("$testDir/assets/shapes.glb"); + var names = await viewer.getBoneNames(model); + expect(names.first, "Bone"); + }); + test('set from BVH', () async { + var model = await viewer.loadGlb("$testDir/assets/shapes.glb"); + var animation = BVHParser.parse( + File("$testDir/assets/animation.bvh").readAsStringSync(), + ["Cylinder"], + boneRegex: RegExp(r"Bone$")); + await viewer.addBoneAnimation(model, animation); }); }); }