From 85f129d435c37f81904d5555ae5f7ce26b092ff1 Mon Sep 17 00:00:00 2001 From: Nick Fisher Date: Sat, 11 May 2024 22:38:28 +0800 Subject: [PATCH] compatibility shims for web --- .../compatibility/native/compatibility.dart | 78 +- .../compatibility/web/allocator.dart | 221 +++++ .../compatibility/web/compatibility.dart | 286 ++----- .../compatibility/web/dart_filament.g.dart | 772 +++++++----------- .../compatibility/web/interop.dart | 16 + .../dart_filament/filament_viewer_impl.dart | 165 ++-- 6 files changed, 753 insertions(+), 785 deletions(-) create mode 100644 dart_filament/lib/dart_filament/compatibility/web/interop.dart diff --git a/dart_filament/lib/dart_filament/compatibility/native/compatibility.dart b/dart_filament/lib/dart_filament/compatibility/native/compatibility.dart index 383c0993..77ea3688 100644 --- a/dart_filament/lib/dart_filament/compatibility/native/compatibility.dart +++ b/dart_filament/lib/dart_filament/compatibility/native/compatibility.dart @@ -1,8 +1,84 @@ +import 'dart:async'; +import 'dart:ffi'; + import 'package:ffi/ffi.dart'; export 'package:ffi/ffi.dart'; export 'dart_filament.g.dart'; - final allocator = calloc; +Future withVoidCallback( + Function(Pointer>) func) async { + final completer = Completer(); + // ignore: prefer_function_declarations_over_variables + void Function() callback = () { + completer.complete(); + }; + final nativeCallable = NativeCallable.listener(callback); + func.call(nativeCallable.nativeFunction); + await completer.future; + nativeCallable.close(); +} + +Future> withVoidPointerCallback( + Function(Pointer)>>) + func) async { + final completer = Completer>(); + // ignore: prefer_function_declarations_over_variables + void Function(Pointer) callback = (Pointer ptr) { + completer.complete(ptr); + }; + final nativeCallable = + NativeCallable)>.listener(callback); + func.call(nativeCallable.nativeFunction); + await completer.future; + nativeCallable.close(); + return completer.future; +} + +Future withBoolCallback( + Function(Pointer>) func) async { + final completer = Completer(); + // ignore: prefer_function_declarations_over_variables + void Function(bool) callback = (bool result) { + completer.complete(result); + }; + final nativeCallable = NativeCallable.listener(callback); + func.call(nativeCallable.nativeFunction); + await completer.future; + nativeCallable.close(); + return completer.future; +} + +Future withIntCallback( + Function(Pointer>) func) async { + final completer = Completer(); + // ignore: prefer_function_declarations_over_variables + void Function(int) callback = (int result) { + completer.complete(result); + }; + final nativeCallable = + NativeCallable.listener(callback); + func.call(nativeCallable.nativeFunction); + await completer.future; + nativeCallable.close(); + return completer.future; +} + +Future withCharPtrCallback( + Function(Pointer)>>) + func) async { + final completer = Completer(); + // ignore: prefer_function_declarations_over_variables + void Function(Pointer) callback = (Pointer result) { + completer.complete(result.cast().toDartString()); + }; + final nativeCallable = + NativeCallable)>.listener(callback); + func.call(nativeCallable.nativeFunction); + await completer.future; + nativeCallable.close(); + return completer.future; +} + class Compatibility {} diff --git a/dart_filament/lib/dart_filament/compatibility/web/allocator.dart b/dart_filament/lib/dart_filament/compatibility/web/allocator.dart index e69de29b..e488dd99 100644 --- a/dart_filament/lib/dart_filament/compatibility/web/allocator.dart +++ b/dart_filament/lib/dart_filament/compatibility/web/allocator.dart @@ -0,0 +1,221 @@ +import 'dart:ffi'; +export "allocator.dart"; +export "dart_filament.g.dart"; + +import 'dart:convert'; +import 'dart:ffi' as ffi hide Uint8Pointer, FloatPointer; +import 'dart:typed_data'; + +import 'package:dart_filament/dart_filament/compatibility/web/dart_filament.g.dart'; + +import 'package:ffi/ffi.dart'; +export 'package:ffi/ffi.dart' hide StringUtf8Pointer, Utf8Pointer; +export 'dart:ffi' + hide + Uint8Pointer, + FloatPointer, + DoublePointer, + Int32Pointer, + Int64Pointer, + PointerPointer, Allocator; + +class Allocator implements ffi.Allocator { + const Allocator(); + @override + ffi.Pointer allocate(int byteCount, + {int? alignment}) { + return flutter_filament_web_allocate(byteCount).cast(); + } + + @override + void free(ffi.Pointer pointer) { + flutter_filament_web_free(pointer.cast()); + } +} + +extension CharPointer on ffi.Pointer { + int get value { + return flutter_filament_web_get(this, 0); + } + + set value(int value) { + flutter_filament_web_set(this, 0, value); + } + + void operator []=(int index, int value) { + this.elementAt(index).value = value; + } + + ffi.Pointer elementAt(int index) => + ffi.Pointer.fromAddress(address + ffi.sizeOf() * index); +} + +extension IntPointer on ffi.Pointer { + int get value { + return flutter_filament_web_get_int32(this.cast(), 0); + } + + set value(int value) { + flutter_filament_web_set_int32(this.cast(), 0, value); + } + + void operator []=(int index, int value) { + this.elementAt(index).value = value; + } + + int operator [](int index) { + return this.elementAt(index).value; + } + + ffi.Pointer elementAt(int index) => + ffi.Pointer.fromAddress(address + ffi.sizeOf() * index); +} + +extension Int32Pointer on ffi.Pointer { + int get value { + return flutter_filament_web_get_int32(this, 0); + } + + set value(int value) { + flutter_filament_web_set_int32(this, 0, value); + } + + void operator []=(int index, int value) { + this.elementAt(index).value = value; + } + + int operator [](int index) { + return this.elementAt(index).value; + } + + ffi.Pointer elementAt(int index) => + ffi.Pointer.fromAddress(address + ffi.sizeOf() * index); +} + +extension UInt8Pointer on ffi.Pointer { + int get value { + return flutter_filament_web_get(this.cast(), 0); + } + + set value(int value) { + flutter_filament_web_set(this.cast(), 0, value); + } + + void operator []=(int index, int value) { + this.elementAt(index).value = value; + } + + int operator [](int index) { + return this.elementAt(index).value; + } + + ffi.Pointer elementAt(int index) => + ffi.Pointer.fromAddress(address + ffi.sizeOf() * index); +} + +extension PointerPointer + on ffi.Pointer> { + ffi.Pointer get value { + return flutter_filament_web_get_pointer(cast>(), 0) + .cast(); + } + + set value(ffi.Pointer value) { + flutter_filament_web_set_pointer( + cast>(), 0, value.cast()); + } + + void operator []=(int index, ffi.Pointer value) { + this.elementAt(index).value = value; + } + + ffi.Pointer> elementAt(int index) => + ffi.Pointer.fromAddress(address + ffi.sizeOf() * index); +} + +extension FloatPointer on ffi.Pointer { + double get value { + return flutter_filament_web_get_float(this, 0); + } + + set value(double value) { + flutter_filament_web_set_float(this, 0, value); + } + + void operator []=(int index, double value) { + this.elementAt(index).value = value; + } + + ffi.Pointer elementAt(int index) => + ffi.Pointer.fromAddress(address + ffi.sizeOf() * index); +} + +extension StringConversion on String { + ffi.Pointer toNativeUtf8({ffi.Allocator? allocator}) { + final units = utf8.encode(this); + final ffi.Pointer result = + allocator!(units.length + 1); + for (int i = 0; i < units.length; i++) { + result.elementAt(i).value = units[i]; + } + result.elementAt(units.length).value = 0; + return result.cast(); + } +} + +extension StringUtf8Pointer on ffi.Pointer { + + + static int _length(ffi.Pointer codeUnits) { + var length = 0; + while (codeUnits[length] != 0) { + length++; + } + return length; + } + + String toDartString({int? length}) { + final codeUnits = this.cast(); + final list = []; + + if (length != null) { + RangeError.checkNotNegative(length, 'length'); + } else { + length = _length(codeUnits); + } + for (int i = 0; i < length; i++) { + list.add(codeUnits.elementAt(i).value); + } + return utf8.decode(list); + } +} + +extension DoublePointer on ffi.Pointer { + double get value { + return flutter_filament_web_get_double(this, 0); + } + + set value(double value) { + return flutter_filament_web_set_double(this, 0, value); + } + + Float64List asTypedList(int length) { + var list = Float64List(length); + + for (int i = 0; i < length; i++) { + list[i] = elementAt(i).value; + } + return list; + } + + double operator [](int index) { + return elementAt(index).value; + } + + void operator []=(int index, double value) { + elementAt(index).value = value; + } + + ffi.Pointer elementAt(int index) => + ffi.Pointer.fromAddress(address + ffi.sizeOf() * index); +} \ No newline at end of file diff --git a/dart_filament/lib/dart_filament/compatibility/web/compatibility.dart b/dart_filament/lib/dart_filament/compatibility/web/compatibility.dart index 319420ad..d0f209d0 100644 --- a/dart_filament/lib/dart_filament/compatibility/web/compatibility.dart +++ b/dart_filament/lib/dart_filament/compatibility/web/compatibility.dart @@ -1,14 +1,12 @@ -import 'dart:ffi'; +import 'dart:async'; +import 'dart:js_interop'; +import 'package:dart_filament/dart_filament/compatibility/web/interop.dart'; + +import "allocator.dart"; + export "allocator.dart"; export "dart_filament.g.dart"; -import 'dart:convert'; -import 'dart:ffi' as ffi hide Uint8Pointer, FloatPointer; -import 'dart:typed_data'; - -import 'package:dart_filament/dart_filament/compatibility/web/dart_filament.g.dart'; - -import 'package:ffi/ffi.dart'; export 'package:ffi/ffi.dart' hide StringUtf8Pointer, Utf8Pointer; export 'dart:ffi' hide @@ -16,210 +14,11 @@ export 'dart:ffi' FloatPointer, DoublePointer, Int32Pointer, - Int64Pointer; + Int64Pointer, + PointerPointer, + Allocator; -class _Allocator implements ffi.Allocator { - const _Allocator(); - @override - ffi.Pointer allocate(int byteCount, - {int? alignment}) { - return flutter_filament_web_allocate(byteCount).cast(); - } - - @override - void free(ffi.Pointer pointer) { - flutter_filament_web_free(pointer.cast()); - } -} - -const allocator = _Allocator(); - -extension CharPointer on ffi.Pointer { - int get value { - return flutter_filament_web_get(this, 0); - } - - set value(int value) { - flutter_filament_web_set(this, 0, value); - } - - void operator []=(int index, int value) { - this.elementAt(index).value = value; - } - - ffi.Pointer elementAt(int index) => - ffi.Pointer.fromAddress(address + ffi.sizeOf() * index); -} - -extension IntPointer on ffi.Pointer { - int get value { - return flutter_filament_web_get_int32(this.cast(), 0); - } - - set value(int value) { - flutter_filament_web_set_int32(this.cast(), 0, value); - } - - void operator []=(int index, int value) { - this.elementAt(index).value = value; - } - - int operator [](int index) { - return this.elementAt(index).value; - } - - ffi.Pointer elementAt(int index) => - ffi.Pointer.fromAddress(address + ffi.sizeOf() * index); -} - -extension Int32Pointer on ffi.Pointer { - int get value { - return flutter_filament_web_get_int32(this, 0); - } - - set value(int value) { - flutter_filament_web_set_int32(this, 0, value); - } - - void operator []=(int index, int value) { - this.elementAt(index).value = value; - } - - int operator [](int index) { - return this.elementAt(index).value; - } - - ffi.Pointer elementAt(int index) => - ffi.Pointer.fromAddress(address + ffi.sizeOf() * index); -} - -extension UInt8Pointer on ffi.Pointer { - int get value { - return flutter_filament_web_get(this.cast(), 0); - } - - set value(int value) { - flutter_filament_web_set(this.cast(), 0, value); - } - - void operator []=(int index, int value) { - this.elementAt(index).value = value; - } - - int operator [](int index) { - return this.elementAt(index).value; - } - - ffi.Pointer elementAt(int index) => - ffi.Pointer.fromAddress(address + ffi.sizeOf() * index); -} - -extension PointerPointer - on ffi.Pointer> { - ffi.Pointer get value { - return flutter_filament_web_get_pointer(cast>(), 0) - .cast(); - } - - set value(ffi.Pointer value) { - flutter_filament_web_set_pointer( - cast>(), 0, value.cast()); - } - - void operator []=(int index, ffi.Pointer value) { - this.elementAt(index).value = value; - } - - ffi.Pointer> elementAt(int index) => - ffi.Pointer.fromAddress(address + ffi.sizeOf() * index); -} - -extension FloatPointer on ffi.Pointer { - double get value { - return flutter_filament_web_get_float(this, 0); - } - - set value(double value) { - flutter_filament_web_set_float(this, 0, value); - } - - void operator []=(int index, double value) { - this.elementAt(index).value = value; - } - - ffi.Pointer elementAt(int index) => - ffi.Pointer.fromAddress(address + ffi.sizeOf() * index); -} - -extension StringConversion on String { - ffi.Pointer toNativeUtf8({ffi.Allocator? allocator}) { - final units = utf8.encode(this); - final ffi.Pointer result = - allocator!(units.length + 1); - for (int i = 0; i < units.length; i++) { - result.elementAt(i).value = units[i]; - } - result.elementAt(units.length).value = 0; - return result.cast(); - } -} - -extension StringUtf8Pointer on ffi.Pointer { - - - static int _length(ffi.Pointer codeUnits) { - var length = 0; - while (codeUnits[length] != 0) { - length++; - } - return length; - } - - String toDartString({int? length}) { - final codeUnits = this.cast(); - final list = []; - - if (length != null) { - RangeError.checkNotNegative(length, 'length'); - } else { - length = _length(codeUnits); - } - for (int i = 0; i < length; i++) { - list.add(codeUnits.elementAt(i).value); - } - return utf8.decode(list); - } -} - -extension DoublePointer on ffi.Pointer { - double get value { - return flutter_filament_web_get_double(this, 0); - } - - set value(double value) { - return flutter_filament_web_set_double(this, 0, value); - } - - Float64List asTypedList(int length) { - var list = Float64List(length); - - for (int i = 0; i < length; i++) { - list[i] = elementAt(i).value; - } - return list; - } - - double operator [](int index) { - return elementAt(index).value; - } - - void operator []=(int index, double value) { - elementAt(index).value = value; - } - - ffi.Pointer elementAt(int index) => - ffi.Pointer.fromAddress(address + ffi.sizeOf() * index); -} +const allocator = Allocator(); @AbiSpecificIntegerMapping({ Abi.androidArm: Uint8(), @@ -252,3 +51,68 @@ final class FooChar extends AbiSpecificInteger { class Compatibility { final _foo = FooChar(); } + +Future withVoidCallback( + Function(Pointer>) func) async { + JSArray retVal = createVoidCallback(); + var promise = retVal.toDart[0] as JSPromise; + var fnPtrAddress = retVal.toDart[1] as JSNumber; + var fnPtr = Pointer>.fromAddress( + fnPtrAddress.toDartInt); + func(fnPtr); + await promise.toDart; +} + +Future withVoidPointerCallback( + void Function(Pointer)>>) + func) async { + JSArray retVal = createVoidPointerCallback(); + var promise = retVal.toDart[0] as JSPromise; + + var fnPtrAddress = retVal.toDart[1] as JSNumber; + var fnPtr = Pointer)>>.fromAddress( + fnPtrAddress.toDartInt); + func(fnPtr); + final addr = await promise.toDart; + return addr.toDartInt; +} + +Future withBoolCallback( + Function(Pointer>) func) async { + JSArray retVal = createBoolCallback(); + var promise = retVal.toDart[0] as JSPromise; + + var fnPtrAddress = retVal.toDart[1] as JSNumber; + var fnPtr = Pointer>.fromAddress( + fnPtrAddress.toDartInt); + func(fnPtr); + final addr = await promise.toDart; + return addr.toDart; +} + +Future withIntCallback( + Function(Pointer>) func) async { + JSArray retVal = createBoolCallback(); + var promise = retVal.toDart[0] as JSPromise; + + var fnPtrAddress = retVal.toDart[1] as JSNumber; + var fnPtr = Pointer>.fromAddress( + fnPtrAddress.toDartInt); + func(fnPtr); + final addr = await promise.toDart; + return addr.toDartInt; +} + +Future withCharPtrCallback( + Function(Pointer)>>) + func) async { + JSArray retVal = createVoidPointerCallback(); + var promise = retVal.toDart[0] as JSPromise; + + var fnPtrAddress = retVal.toDart[1] as JSNumber; + var fnPtr = Pointer)>>.fromAddress( + fnPtrAddress.toDartInt); + func(fnPtr); + final addr = await promise.toDart; + return Pointer.fromAddress(addr.toDartInt).toDartString(); +} diff --git a/dart_filament/lib/dart_filament/compatibility/web/dart_filament.g.dart b/dart_filament/lib/dart_filament/compatibility/web/dart_filament.g.dart index b4ec8764..af7fa1b0 100644 --- a/dart_filament/lib/dart_filament/compatibility/web/dart_filament.g.dart +++ b/dart_filament/lib/dart_filament/compatibility/web/dart_filament.g.dart @@ -7,8 +7,8 @@ import 'dart:ffi' as ffi; @ffi.Native< ffi.Void Function( ffi.Pointer, ffi.Int32, ffi.Pointer)>( - symbol: 'flutter_filament_web_load_resource_callback', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_flutter_filament_web_load_resource_callback', + assetId: 'dart_filament') external void flutter_filament_web_load_resource_callback( ffi.Pointer data, int length, @@ -16,24 +16,21 @@ external void flutter_filament_web_load_resource_callback( ); @ffi.Native, ffi.Int32)>( - symbol: 'flutter_filament_web_get', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_flutter_filament_web_get', assetId: 'dart_filament') external int flutter_filament_web_get( ffi.Pointer ptr, int offset, ); @ffi.Native, ffi.Int32)>( - symbol: 'flutter_filament_web_get_float', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_flutter_filament_web_get_float', assetId: 'dart_filament') external double flutter_filament_web_get_float( ffi.Pointer ptr, int offset, ); @ffi.Native, ffi.Int32)>( - symbol: 'flutter_filament_web_get_double', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_flutter_filament_web_get_double', assetId: 'dart_filament') external double flutter_filament_web_get_double( ffi.Pointer ptr, int offset, @@ -42,16 +39,14 @@ external double flutter_filament_web_get_double( @ffi.Native< ffi.Pointer Function( ffi.Pointer>, ffi.Int32)>( - symbol: 'flutter_filament_web_get_pointer', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_flutter_filament_web_get_pointer', assetId: 'dart_filament') external ffi.Pointer flutter_filament_web_get_pointer( ffi.Pointer> ptr, int offset, ); @ffi.Native, ffi.Int32, ffi.Int32)>( - symbol: 'flutter_filament_web_set', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_flutter_filament_web_set', assetId: 'dart_filament') external void flutter_filament_web_set( ffi.Pointer ptr, int offset, @@ -59,8 +54,7 @@ external void flutter_filament_web_set( ); @ffi.Native, ffi.Int32, ffi.Float)>( - symbol: 'flutter_filament_web_set_float', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_flutter_filament_web_set_float', assetId: 'dart_filament') external void flutter_filament_web_set_float( ffi.Pointer ptr, int offset, @@ -68,8 +62,7 @@ external void flutter_filament_web_set_float( ); @ffi.Native, ffi.Int32, ffi.Double)>( - symbol: 'flutter_filament_web_set_double', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_flutter_filament_web_set_double', assetId: 'dart_filament') external void flutter_filament_web_set_double( ffi.Pointer ptr, int offset, @@ -79,8 +72,7 @@ external void flutter_filament_web_set_double( @ffi.Native< ffi.Void Function(ffi.Pointer>, ffi.Int32, ffi.Pointer)>( - symbol: 'flutter_filament_web_set_pointer', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_flutter_filament_web_set_pointer', assetId: 'dart_filament') external void flutter_filament_web_set_pointer( ffi.Pointer> ptr, int offset, @@ -88,16 +80,14 @@ external void flutter_filament_web_set_pointer( ); @ffi.Native, ffi.Int32)>( - symbol: 'flutter_filament_web_get_int32', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_flutter_filament_web_get_int32', assetId: 'dart_filament') external int flutter_filament_web_get_int32( ffi.Pointer ptr, int offset, ); @ffi.Native, ffi.Int32, ffi.Int32)>( - symbol: 'flutter_filament_web_set_int32', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_flutter_filament_web_set_int32', assetId: 'dart_filament') external void flutter_filament_web_set_int32( ffi.Pointer ptr, int offset, @@ -105,71 +95,72 @@ external void flutter_filament_web_set_int32( ); @ffi.Native>)>( - symbol: 'flutter_filament_web_get_address', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_flutter_filament_web_get_address', assetId: 'dart_filament') external int flutter_filament_web_get_address( ffi.Pointer> out, ); @ffi.Native Function(ffi.Int32)>( - symbol: 'flutter_filament_web_allocate', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_flutter_filament_web_allocate', assetId: 'dart_filament') external ffi.Pointer flutter_filament_web_allocate( int size, ); @ffi.Native)>( - symbol: 'flutter_filament_web_free', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_flutter_filament_web_free', assetId: 'dart_filament') external void flutter_filament_web_free( ffi.Pointer ptr, ); @ffi.Native( - symbol: 'flutter_filament_web_create_gl_context', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_flutter_filament_web_create_gl_context', assetId: 'dart_filament') external int flutter_filament_web_create_gl_context(); @ffi.Native Function()>( - symbol: 'flutter_filament_web_get_resource_loader_wrapper', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_flutter_filament_web_get_resource_loader_wrapper', + assetId: 'dart_filament') external ffi.Pointer flutter_filament_web_get_resource_loader_wrapper(); +@ffi.Native< + ffi.Pointer Function(LoadFilamentResourceFromOwner, + FreeFilamentResourceFromOwner, ffi.Pointer)>( + symbol: '_make_resource_loader', assetId: 'dart_filament') +external ffi.Pointer make_resource_loader( + LoadFilamentResourceFromOwner loadFn, + FreeFilamentResourceFromOwner freeFn, + ffi.Pointer owner, +); + @ffi.Native< ffi.Pointer Function( ffi.Pointer, - ffi.Pointer, + ffi.Pointer, ffi.Pointer, ffi.Pointer)>( - symbol: 'create_filament_viewer', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_create_filament_viewer', assetId: 'dart_filament') external ffi.Pointer create_filament_viewer( ffi.Pointer context, - ffi.Pointer loader, + ffi.Pointer loader, ffi.Pointer platform, ffi.Pointer uberArchivePath, ); @ffi.Native)>( - symbol: 'destroy_filament_viewer', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_destroy_filament_viewer', assetId: 'dart_filament') external void destroy_filament_viewer( ffi.Pointer viewer, ); @ffi.Native Function(ffi.Pointer)>( - symbol: 'get_scene_manager', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_get_scene_manager', assetId: 'dart_filament') external ffi.Pointer get_scene_manager( ffi.Pointer viewer, ); @ffi.Native< - ffi.Void Function( - ffi.Pointer, ffi.IntPtr, ffi.Uint32, ffi.Uint32)>( - symbol: 'create_render_target', - assetId: 'package:dart_filament/dart_filament.dart') + ffi.Void Function(ffi.Pointer, ffi.IntPtr, ffi.Uint32, + ffi.Uint32)>(symbol: '_create_render_target', assetId: 'dart_filament') external void create_render_target( ffi.Pointer viewer, int texture, @@ -178,17 +169,14 @@ external void create_render_target( ); @ffi.Native)>( - symbol: 'clear_background_image', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_clear_background_image', assetId: 'dart_filament') external void clear_background_image( ffi.Pointer viewer, ); @ffi.Native< - ffi.Void Function( - ffi.Pointer, ffi.Pointer, ffi.Bool)>( - symbol: 'set_background_image', - assetId: 'package:dart_filament/dart_filament.dart') + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Bool)>(symbol: '_set_background_image', assetId: 'dart_filament') external void set_background_image( ffi.Pointer viewer, ffi.Pointer path, @@ -198,8 +186,7 @@ external void set_background_image( @ffi.Native< ffi.Void Function( ffi.Pointer, ffi.Float, ffi.Float, ffi.Bool)>( - symbol: 'set_background_image_position', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_set_background_image_position', assetId: 'dart_filament') external void set_background_image_position( ffi.Pointer viewer, double x, @@ -208,10 +195,8 @@ external void set_background_image_position( ); @ffi.Native< - ffi.Void Function( - ffi.Pointer, ffi.Float, ffi.Float, ffi.Float, ffi.Float)>( - symbol: 'set_background_color', - assetId: 'package:dart_filament/dart_filament.dart') + ffi.Void Function(ffi.Pointer, ffi.Float, ffi.Float, ffi.Float, + ffi.Float)>(symbol: '_set_background_color', assetId: 'dart_filament') external void set_background_color( ffi.Pointer viewer, double r, @@ -221,31 +206,29 @@ external void set_background_color( ); @ffi.Native, ffi.Int)>( - symbol: 'set_tone_mapping', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_set_tone_mapping', assetId: 'dart_filament') external void set_tone_mapping( ffi.Pointer viewer, int toneMapping, ); @ffi.Native, ffi.Float)>( - symbol: 'set_bloom', assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_set_bloom', assetId: 'dart_filament') external void set_bloom( ffi.Pointer viewer, double strength, ); @ffi.Native, ffi.Pointer)>( - symbol: 'load_skybox', assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_load_skybox', assetId: 'dart_filament') external void load_skybox( ffi.Pointer viewer, ffi.Pointer skyboxPath, ); @ffi.Native< - ffi.Void Function( - ffi.Pointer, ffi.Pointer, ffi.Float)>( - symbol: 'load_ibl', assetId: 'package:dart_filament/dart_filament.dart') + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Float)>(symbol: '_load_ibl', assetId: 'dart_filament') external void load_ibl( ffi.Pointer viewer, ffi.Pointer iblPath, @@ -253,39 +236,37 @@ external void load_ibl( ); @ffi.Native, ffi.Pointer)>( - symbol: 'rotate_ibl', assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_rotate_ibl', assetId: 'dart_filament') external void rotate_ibl( ffi.Pointer viewer, ffi.Pointer rotationMatrix, ); @ffi.Native)>( - symbol: 'remove_skybox', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_remove_skybox', assetId: 'dart_filament') external void remove_skybox( ffi.Pointer viewer, ); @ffi.Native)>( - symbol: 'remove_ibl', assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_remove_ibl', assetId: 'dart_filament') external void remove_ibl( ffi.Pointer viewer, ); @ffi.Native< - EntityId Function( - ffi.Pointer, - ffi.Uint8, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Bool)>( - symbol: 'add_light', assetId: 'package:dart_filament/dart_filament.dart') + EntityId Function( + ffi.Pointer, + ffi.Uint8, + ffi.Float, + ffi.Float, + ffi.Float, + ffi.Float, + ffi.Float, + ffi.Float, + ffi.Float, + ffi.Float, + ffi.Bool)>(symbol: '_add_light', assetId: 'dart_filament') external int add_light( ffi.Pointer viewer, int type, @@ -301,22 +282,21 @@ external int add_light( ); @ffi.Native, EntityId)>( - symbol: 'remove_light', assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_remove_light', assetId: 'dart_filament') external void remove_light( ffi.Pointer viewer, int entityId, ); @ffi.Native)>( - symbol: 'clear_lights', assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_clear_lights', assetId: 'dart_filament') external void clear_lights( ffi.Pointer viewer, ); @ffi.Native< - EntityId Function( - ffi.Pointer, ffi.Pointer, ffi.Int)>( - symbol: 'load_glb', assetId: 'package:dart_filament/dart_filament.dart') + EntityId Function(ffi.Pointer, ffi.Pointer, + ffi.Int)>(symbol: '_load_glb', assetId: 'dart_filament') external int load_glb( ffi.Pointer sceneManager, ffi.Pointer assetPath, @@ -324,10 +304,8 @@ external int load_glb( ); @ffi.Native< - EntityId Function( - ffi.Pointer, ffi.Pointer, ffi.Size)>( - symbol: 'load_glb_from_buffer', - assetId: 'package:dart_filament/dart_filament.dart') + EntityId Function(ffi.Pointer, ffi.Pointer, + ffi.Size)>(symbol: '_load_glb_from_buffer', assetId: 'dart_filament') external int load_glb_from_buffer( ffi.Pointer sceneManager, ffi.Pointer data, @@ -335,9 +313,8 @@ external int load_glb_from_buffer( ); @ffi.Native< - EntityId Function(ffi.Pointer, ffi.Pointer, - ffi.Pointer)>( - symbol: 'load_gltf', assetId: 'package:dart_filament/dart_filament.dart') + EntityId Function(ffi.Pointer, ffi.Pointer, + ffi.Pointer)>(symbol: '_load_gltf', assetId: 'dart_filament') external int load_gltf( ffi.Pointer sceneManager, ffi.Pointer assetPath, @@ -345,16 +322,14 @@ external int load_gltf( ); @ffi.Native, EntityId)>( - symbol: 'create_instance', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_create_instance', assetId: 'dart_filament') external int create_instance( ffi.Pointer sceneManager, int id, ); @ffi.Native, EntityId)>( - symbol: 'get_instance_count', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_get_instance_count', assetId: 'dart_filament') external int get_instance_count( ffi.Pointer sceneManager, int entityId, @@ -363,8 +338,7 @@ external int get_instance_count( @ffi.Native< ffi.Void Function( ffi.Pointer, EntityId, ffi.Pointer)>( - symbol: 'get_instances', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_get_instances', assetId: 'dart_filament') external void get_instances( ffi.Pointer sceneManager, int entityId, @@ -372,23 +346,20 @@ external void get_instances( ); @ffi.Native)>( - symbol: 'set_main_camera', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_set_main_camera', assetId: 'dart_filament') external void set_main_camera( ffi.Pointer viewer, ); @ffi.Native)>( - symbol: 'get_main_camera', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_get_main_camera', assetId: 'dart_filament') external int get_main_camera( ffi.Pointer viewer, ); @ffi.Native< - ffi.Bool Function( - ffi.Pointer, EntityId, ffi.Pointer)>( - symbol: 'set_camera', assetId: 'package:dart_filament/dart_filament.dart') + ffi.Bool Function(ffi.Pointer, EntityId, + ffi.Pointer)>(symbol: '_set_camera', assetId: 'dart_filament') external bool set_camera( ffi.Pointer viewer, int asset, @@ -396,24 +367,22 @@ external bool set_camera( ); @ffi.Native, ffi.Bool)>( - symbol: 'set_view_frustum_culling', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_set_view_frustum_culling', assetId: 'dart_filament') external void set_view_frustum_culling( ffi.Pointer viewer, bool enabled, ); @ffi.Native< - ffi.Void Function( - ffi.Pointer, - ffi.Uint64, - ffi.Pointer, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function(ffi.Pointer buf, ffi.Size size, - ffi.Pointer data)>>, - ffi.Pointer)>( - symbol: 'render', assetId: 'package:dart_filament/dart_filament.dart') + ffi.Void Function( + ffi.Pointer, + ffi.Uint64, + ffi.Pointer, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(ffi.Pointer buf, ffi.Size size, + ffi.Pointer data)>>, + ffi.Pointer)>(symbol: '_render', assetId: 'dart_filament') external void render( ffi.Pointer viewer, int frameTimeInNanos, @@ -427,10 +396,8 @@ external void render( ); @ffi.Native< - ffi.Void Function(ffi.Pointer, ffi.Pointer, - ffi.Uint32, ffi.Uint32)>( - symbol: 'create_swap_chain', - assetId: 'package:dart_filament/dart_filament.dart') + ffi.Void Function(ffi.Pointer, ffi.Pointer, ffi.Uint32, + ffi.Uint32)>(symbol: '_create_swap_chain', assetId: 'dart_filament') external void create_swap_chain( ffi.Pointer viewer, ffi.Pointer window, @@ -439,15 +406,13 @@ external void create_swap_chain( ); @ffi.Native)>( - symbol: 'destroy_swap_chain', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_destroy_swap_chain', assetId: 'dart_filament') external void destroy_swap_chain( ffi.Pointer viewer, ); @ffi.Native, ffi.Float)>( - symbol: 'set_frame_interval', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_set_frame_interval', assetId: 'dart_filament') external void set_frame_interval( ffi.Pointer viewer, double interval, @@ -456,8 +421,7 @@ external void set_frame_interval( @ffi.Native< ffi.Void Function( ffi.Pointer, ffi.Uint32, ffi.Uint32, ffi.Float)>( - symbol: 'update_viewport_and_camera_projection', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_update_viewport_and_camera_projection', assetId: 'dart_filament') external void update_viewport_and_camera_projection( ffi.Pointer viewer, int width, @@ -466,16 +430,14 @@ external void update_viewport_and_camera_projection( ); @ffi.Native)>( - symbol: 'scroll_begin', assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_scroll_begin', assetId: 'dart_filament') external void scroll_begin( ffi.Pointer viewer, ); @ffi.Native< - ffi.Void Function( - ffi.Pointer, ffi.Float, ffi.Float, ffi.Float)>( - symbol: 'scroll_update', - assetId: 'package:dart_filament/dart_filament.dart') + ffi.Void Function(ffi.Pointer, ffi.Float, ffi.Float, + ffi.Float)>(symbol: '_scroll_update', assetId: 'dart_filament') external void scroll_update( ffi.Pointer viewer, double x, @@ -484,15 +446,14 @@ external void scroll_update( ); @ffi.Native)>( - symbol: 'scroll_end', assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_scroll_end', assetId: 'dart_filament') external void scroll_end( ffi.Pointer viewer, ); @ffi.Native< - ffi.Void Function( - ffi.Pointer, ffi.Float, ffi.Float, ffi.Bool)>( - symbol: 'grab_begin', assetId: 'package:dart_filament/dart_filament.dart') + ffi.Void Function(ffi.Pointer, ffi.Float, ffi.Float, + ffi.Bool)>(symbol: '_grab_begin', assetId: 'dart_filament') external void grab_begin( ffi.Pointer viewer, double x, @@ -501,7 +462,7 @@ external void grab_begin( ); @ffi.Native, ffi.Float, ffi.Float)>( - symbol: 'grab_update', assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_grab_update', assetId: 'dart_filament') external void grab_update( ffi.Pointer viewer, double x, @@ -509,16 +470,18 @@ external void grab_update( ); @ffi.Native)>( - symbol: 'grab_end', assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_grab_end', assetId: 'dart_filament') external void grab_end( ffi.Pointer viewer, ); @ffi.Native< - ffi.Void Function(ffi.Pointer, EntityId, - ffi.Pointer, ffi.Pointer, ffi.Int)>( - symbol: 'apply_weights', - assetId: 'package:dart_filament/dart_filament.dart') + ffi.Void Function( + ffi.Pointer, + EntityId, + ffi.Pointer, + ffi.Pointer, + ffi.Int)>(symbol: '_apply_weights', assetId: 'dart_filament') external void apply_weights( ffi.Pointer sceneManager, int asset, @@ -528,10 +491,8 @@ external void apply_weights( ); @ffi.Native< - ffi.Bool Function( - ffi.Pointer, EntityId, ffi.Pointer, ffi.Int)>( - symbol: 'set_morph_target_weights', - assetId: 'package:dart_filament/dart_filament.dart') + ffi.Bool Function(ffi.Pointer, EntityId, ffi.Pointer, + ffi.Int)>(symbol: '_set_morph_target_weights', assetId: 'dart_filament') external bool set_morph_target_weights( ffi.Pointer sceneManager, int asset, @@ -540,16 +501,14 @@ external bool set_morph_target_weights( ); @ffi.Native< - ffi.Bool Function( - ffi.Pointer, - EntityId, - ffi.Pointer, - ffi.Pointer, - ffi.Int, - ffi.Int, - ffi.Float)>( - symbol: 'set_morph_animation', - assetId: 'package:dart_filament/dart_filament.dart') + ffi.Bool Function( + ffi.Pointer, + EntityId, + ffi.Pointer, + ffi.Pointer, + ffi.Int, + ffi.Int, + ffi.Float)>(symbol: '_set_morph_animation', assetId: 'dart_filament') external bool set_morph_animation( ffi.Pointer sceneManager, int asset, @@ -561,26 +520,23 @@ external bool set_morph_animation( ); @ffi.Native, EntityId)>( - symbol: 'reset_to_rest_pose', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_reset_to_rest_pose', assetId: 'dart_filament') external void reset_to_rest_pose( ffi.Pointer sceneManager, int asset, ); @ffi.Native< - ffi.Void Function( - ffi.Pointer, - EntityId, - ffi.Pointer, - ffi.Int, - ffi.Pointer, - ffi.Pointer>, - ffi.Int, - ffi.Float, - ffi.Bool)>( - symbol: 'add_bone_animation', - assetId: 'package:dart_filament/dart_filament.dart') + ffi.Void Function( + ffi.Pointer, + EntityId, + ffi.Pointer, + ffi.Int, + ffi.Pointer, + ffi.Pointer>, + ffi.Int, + ffi.Float, + ffi.Bool)>(symbol: '_add_bone_animation', assetId: 'dart_filament') external void add_bone_animation( ffi.Pointer sceneManager, int asset, @@ -600,8 +556,7 @@ external void add_bone_animation( ffi.Pointer, ffi.Pointer, ffi.Pointer)>( - symbol: 'set_bone_transform', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_set_bone_transform', assetId: 'dart_filament') external bool set_bone_transform( ffi.Pointer sceneManager, int asset, @@ -611,10 +566,14 @@ external bool set_bone_transform( ); @ffi.Native< - ffi.Void Function(ffi.Pointer, EntityId, ffi.Int, ffi.Bool, - ffi.Bool, ffi.Bool, ffi.Float)>( - symbol: 'play_animation', - assetId: 'package:dart_filament/dart_filament.dart') + ffi.Void Function( + ffi.Pointer, + EntityId, + ffi.Int, + ffi.Bool, + ffi.Bool, + ffi.Bool, + ffi.Float)>(symbol: '_play_animation', assetId: 'dart_filament') external void play_animation( ffi.Pointer sceneManager, int asset, @@ -627,8 +586,7 @@ external void play_animation( @ffi.Native< ffi.Void Function(ffi.Pointer, EntityId, ffi.Int, ffi.Int)>( - symbol: 'set_animation_frame', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_set_animation_frame', assetId: 'dart_filament') external void set_animation_frame( ffi.Pointer sceneManager, int asset, @@ -637,8 +595,7 @@ external void set_animation_frame( ); @ffi.Native, EntityId, ffi.Int)>( - symbol: 'stop_animation', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_stop_animation', assetId: 'dart_filament') external void stop_animation( ffi.Pointer sceneManager, int asset, @@ -646,18 +603,15 @@ external void stop_animation( ); @ffi.Native, EntityId)>( - symbol: 'get_animation_count', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_get_animation_count', assetId: 'dart_filament') external int get_animation_count( ffi.Pointer sceneManager, int asset, ); @ffi.Native< - ffi.Void Function( - ffi.Pointer, EntityId, ffi.Pointer, ffi.Int)>( - symbol: 'get_animation_name', - assetId: 'package:dart_filament/dart_filament.dart') + ffi.Void Function(ffi.Pointer, EntityId, ffi.Pointer, + ffi.Int)>(symbol: '_get_animation_name', assetId: 'dart_filament') external void get_animation_name( ffi.Pointer sceneManager, int asset, @@ -666,8 +620,7 @@ external void get_animation_name( ); @ffi.Native, EntityId, ffi.Int)>( - symbol: 'get_animation_duration', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_get_animation_duration', assetId: 'dart_filament') external double get_animation_duration( ffi.Pointer sceneManager, int asset, @@ -675,10 +628,12 @@ external double get_animation_duration( ); @ffi.Native< - ffi.Void Function(ffi.Pointer, EntityId, - ffi.Pointer, ffi.Pointer, ffi.Int)>( - symbol: 'get_morph_target_name', - assetId: 'package:dart_filament/dart_filament.dart') + ffi.Void Function( + ffi.Pointer, + EntityId, + ffi.Pointer, + ffi.Pointer, + ffi.Int)>(symbol: '_get_morph_target_name', assetId: 'dart_filament') external void get_morph_target_name( ffi.Pointer sceneManager, int asset, @@ -690,8 +645,7 @@ external void get_morph_target_name( @ffi.Native< ffi.Int Function( ffi.Pointer, EntityId, ffi.Pointer)>( - symbol: 'get_morph_target_name_count', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_get_morph_target_name_count', assetId: 'dart_filament') external int get_morph_target_name_count( ffi.Pointer sceneManager, int asset, @@ -699,32 +653,28 @@ external int get_morph_target_name_count( ); @ffi.Native, EntityId)>( - symbol: 'remove_entity', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_remove_entity', assetId: 'dart_filament') external void remove_entity( ffi.Pointer viewer, int asset, ); @ffi.Native)>( - symbol: 'clear_entities', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_clear_entities', assetId: 'dart_filament') external void clear_entities( ffi.Pointer viewer, ); @ffi.Native< - ffi.Bool Function( - ffi.Pointer, - EntityId, - ffi.Pointer, - ffi.Int, - ffi.Float, - ffi.Float, - ffi.Float, - ffi.Float)>( - symbol: 'set_material_color', - assetId: 'package:dart_filament/dart_filament.dart') + ffi.Bool Function( + ffi.Pointer, + EntityId, + ffi.Pointer, + ffi.Int, + ffi.Float, + ffi.Float, + ffi.Float, + ffi.Float)>(symbol: '_set_material_color', assetId: 'dart_filament') external bool set_material_color( ffi.Pointer sceneManager, int asset, @@ -737,18 +687,20 @@ external bool set_material_color( ); @ffi.Native, EntityId)>( - symbol: 'transform_to_unit_cube', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_transform_to_unit_cube', assetId: 'dart_filament') external void transform_to_unit_cube( ffi.Pointer sceneManager, int asset, ); @ffi.Native< - ffi.Void Function(ffi.Pointer, EntityId, ffi.Float, ffi.Float, - ffi.Float, ffi.Bool)>( - symbol: 'queue_position_update', - assetId: 'package:dart_filament/dart_filament.dart') + ffi.Void Function( + ffi.Pointer, + EntityId, + ffi.Float, + ffi.Float, + ffi.Float, + ffi.Bool)>(symbol: '_queue_position_update', assetId: 'dart_filament') external void queue_position_update( ffi.Pointer sceneManager, int asset, @@ -759,10 +711,15 @@ external void queue_position_update( ); @ffi.Native< - ffi.Void Function(ffi.Pointer, EntityId, ffi.Float, ffi.Float, - ffi.Float, ffi.Float, ffi.Float, ffi.Bool)>( - symbol: 'queue_rotation_update', - assetId: 'package:dart_filament/dart_filament.dart') + ffi.Void Function( + ffi.Pointer, + EntityId, + ffi.Float, + ffi.Float, + ffi.Float, + ffi.Float, + ffi.Float, + ffi.Bool)>(symbol: '_queue_rotation_update', assetId: 'dart_filament') external void queue_rotation_update( ffi.Pointer sceneManager, int asset, @@ -775,9 +732,8 @@ external void queue_rotation_update( ); @ffi.Native< - ffi.Void Function( - ffi.Pointer, EntityId, ffi.Float, ffi.Float, ffi.Float)>( - symbol: 'set_position', assetId: 'package:dart_filament/dart_filament.dart') + ffi.Void Function(ffi.Pointer, EntityId, ffi.Float, ffi.Float, + ffi.Float)>(symbol: '_set_position', assetId: 'dart_filament') external void set_position( ffi.Pointer sceneManager, int asset, @@ -787,9 +743,14 @@ external void set_position( ); @ffi.Native< - ffi.Void Function(ffi.Pointer, EntityId, ffi.Float, ffi.Float, - ffi.Float, ffi.Float, ffi.Float)>( - symbol: 'set_rotation', assetId: 'package:dart_filament/dart_filament.dart') + ffi.Void Function( + ffi.Pointer, + EntityId, + ffi.Float, + ffi.Float, + ffi.Float, + ffi.Float, + ffi.Float)>(symbol: '_set_rotation', assetId: 'dart_filament') external void set_rotation( ffi.Pointer sceneManager, int asset, @@ -801,7 +762,7 @@ external void set_rotation( ); @ffi.Native, EntityId, ffi.Float)>( - symbol: 'set_scale', assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_set_scale', assetId: 'dart_filament') external void set_scale( ffi.Pointer sceneManager, int asset, @@ -809,18 +770,15 @@ external void set_scale( ); @ffi.Native, EntityId)>( - symbol: 'move_camera_to_asset', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_move_camera_to_asset', assetId: 'dart_filament') external void move_camera_to_asset( ffi.Pointer viewer, int asset, ); @ffi.Native< - ffi.Void Function( - ffi.Pointer, ffi.Float, ffi.Float, ffi.Float)>( - symbol: 'set_camera_exposure', - assetId: 'package:dart_filament/dart_filament.dart') + ffi.Void Function(ffi.Pointer, ffi.Float, ffi.Float, + ffi.Float)>(symbol: '_set_camera_exposure', assetId: 'dart_filament') external void set_camera_exposure( ffi.Pointer viewer, double aperture, @@ -829,10 +787,8 @@ external void set_camera_exposure( ); @ffi.Native< - ffi.Void Function( - ffi.Pointer, ffi.Float, ffi.Float, ffi.Float)>( - symbol: 'set_camera_position', - assetId: 'package:dart_filament/dart_filament.dart') + ffi.Void Function(ffi.Pointer, ffi.Float, ffi.Float, + ffi.Float)>(symbol: '_set_camera_position', assetId: 'dart_filament') external void set_camera_position( ffi.Pointer viewer, double x, @@ -841,17 +797,14 @@ external void set_camera_position( ); @ffi.Native)>( - symbol: 'get_camera_position', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_get_camera_position', assetId: 'dart_filament') external void get_camera_position( ffi.Pointer viewer, ); @ffi.Native< - ffi.Void Function( - ffi.Pointer, ffi.Float, ffi.Float, ffi.Float, ffi.Float)>( - symbol: 'set_camera_rotation', - assetId: 'package:dart_filament/dart_filament.dart') + ffi.Void Function(ffi.Pointer, ffi.Float, ffi.Float, ffi.Float, + ffi.Float)>(symbol: '_set_camera_rotation', assetId: 'dart_filament') external void set_camera_rotation( ffi.Pointer viewer, double w, @@ -861,30 +814,26 @@ external void set_camera_rotation( ); @ffi.Native, ffi.Pointer)>( - symbol: 'set_camera_model_matrix', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_set_camera_model_matrix', assetId: 'dart_filament') external void set_camera_model_matrix( ffi.Pointer viewer, ffi.Pointer matrix, ); @ffi.Native Function(ffi.Pointer)>( - symbol: 'get_camera_model_matrix', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_get_camera_model_matrix', assetId: 'dart_filament') external ffi.Pointer get_camera_model_matrix( ffi.Pointer viewer, ); @ffi.Native Function(ffi.Pointer)>( - symbol: 'get_camera_view_matrix', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_get_camera_view_matrix', assetId: 'dart_filament') external ffi.Pointer get_camera_view_matrix( ffi.Pointer viewer, ); @ffi.Native Function(ffi.Pointer)>( - symbol: 'get_camera_projection_matrix', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_get_camera_projection_matrix', assetId: 'dart_filament') external ffi.Pointer get_camera_projection_matrix( ffi.Pointer viewer, ); @@ -892,8 +841,7 @@ external ffi.Pointer get_camera_projection_matrix( @ffi.Native< ffi.Void Function(ffi.Pointer, ffi.Pointer, ffi.Double, ffi.Double)>( - symbol: 'set_camera_projection_matrix', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_set_camera_projection_matrix', assetId: 'dart_filament') external void set_camera_projection_matrix( ffi.Pointer viewer, ffi.Pointer matrix, @@ -902,8 +850,7 @@ external void set_camera_projection_matrix( ); @ffi.Native, ffi.Double, ffi.Double)>( - symbol: 'set_camera_culling', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_set_camera_culling', assetId: 'dart_filament') external void set_camera_culling( ffi.Pointer viewer, double near, @@ -911,36 +858,31 @@ external void set_camera_culling( ); @ffi.Native)>( - symbol: 'get_camera_culling_near', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_get_camera_culling_near', assetId: 'dart_filament') external double get_camera_culling_near( ffi.Pointer viewer, ); @ffi.Native)>( - symbol: 'get_camera_culling_far', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_get_camera_culling_far', assetId: 'dart_filament') external double get_camera_culling_far( ffi.Pointer viewer, ); @ffi.Native Function(ffi.Pointer)>( - symbol: 'get_camera_culling_projection_matrix', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_get_camera_culling_projection_matrix', assetId: 'dart_filament') external ffi.Pointer get_camera_culling_projection_matrix( ffi.Pointer viewer, ); @ffi.Native Function(ffi.Pointer)>( - symbol: 'get_camera_frustum', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_get_camera_frustum', assetId: 'dart_filament') external ffi.Pointer get_camera_frustum( ffi.Pointer viewer, ); @ffi.Native, ffi.Float, ffi.Float)>( - symbol: 'set_camera_fov', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_set_camera_fov', assetId: 'dart_filament') external void set_camera_fov( ffi.Pointer viewer, double fovInDegrees, @@ -948,16 +890,14 @@ external void set_camera_fov( ); @ffi.Native, ffi.Float)>( - symbol: 'set_camera_focal_length', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_set_camera_focal_length', assetId: 'dart_filament') external void set_camera_focal_length( ffi.Pointer viewer, double focalLength, ); @ffi.Native, ffi.Float)>( - symbol: 'set_camera_focus_distance', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_set_camera_focus_distance', assetId: 'dart_filament') external void set_camera_focus_distance( ffi.Pointer viewer, double focusDistance, @@ -966,8 +906,7 @@ external void set_camera_focus_distance( @ffi.Native< ffi.Void Function(ffi.Pointer, _ManipulatorMode, ffi.Double, ffi.Double, ffi.Double)>( - symbol: 'set_camera_manipulator_options', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_set_camera_manipulator_options', assetId: 'dart_filament') external void set_camera_manipulator_options( ffi.Pointer viewer, int mode, @@ -977,9 +916,8 @@ external void set_camera_manipulator_options( ); @ffi.Native< - ffi.Int Function( - ffi.Pointer, EntityId, ffi.Pointer)>( - symbol: 'hide_mesh', assetId: 'package:dart_filament/dart_filament.dart') + ffi.Int Function(ffi.Pointer, EntityId, + ffi.Pointer)>(symbol: '_hide_mesh', assetId: 'dart_filament') external int hide_mesh( ffi.Pointer sceneManager, int asset, @@ -987,9 +925,8 @@ external int hide_mesh( ); @ffi.Native< - ffi.Int Function( - ffi.Pointer, EntityId, ffi.Pointer)>( - symbol: 'reveal_mesh', assetId: 'package:dart_filament/dart_filament.dart') + ffi.Int Function(ffi.Pointer, EntityId, + ffi.Pointer)>(symbol: '_reveal_mesh', assetId: 'dart_filament') external int reveal_mesh( ffi.Pointer sceneManager, int asset, @@ -997,8 +934,7 @@ external int reveal_mesh( ); @ffi.Native, ffi.Bool)>( - symbol: 'set_post_processing', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_set_post_processing', assetId: 'dart_filament') external void set_post_processing( ffi.Pointer viewer, bool enabled, @@ -1006,8 +942,7 @@ external void set_post_processing( @ffi.Native< ffi.Void Function(ffi.Pointer, ffi.Bool, ffi.Bool, ffi.Bool)>( - symbol: 'set_antialiasing', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_set_antialiasing', assetId: 'dart_filament') external void set_antialiasing( ffi.Pointer viewer, bool msaa, @@ -1024,8 +959,7 @@ external void set_antialiasing( ffi.NativeFunction< ffi.Void Function( EntityId entityId, ffi.Int x, ffi.Int y)>>)>( - symbol: 'filament_pick', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_filament_pick', assetId: 'dart_filament') external void filament_pick( ffi.Pointer viewer, int x, @@ -1037,8 +971,7 @@ external void filament_pick( ); @ffi.Native Function(ffi.Pointer, EntityId)>( - symbol: 'get_name_for_entity', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_get_name_for_entity', assetId: 'dart_filament') external ffi.Pointer get_name_for_entity( ffi.Pointer sceneManager, int entityId, @@ -1047,8 +980,7 @@ external ffi.Pointer get_name_for_entity( @ffi.Native< EntityId Function( ffi.Pointer, EntityId, ffi.Pointer)>( - symbol: 'find_child_entity_by_name', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_find_child_entity_by_name', assetId: 'dart_filament') external int find_child_entity_by_name( ffi.Pointer sceneManager, int parent, @@ -1056,8 +988,7 @@ external int find_child_entity_by_name( ); @ffi.Native, EntityId, ffi.Bool)>( - symbol: 'get_entity_count', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_get_entity_count', assetId: 'dart_filament') external int get_entity_count( ffi.Pointer sceneManager, int target, @@ -1067,7 +998,7 @@ external int get_entity_count( @ffi.Native< ffi.Void Function( ffi.Pointer, EntityId, ffi.Bool, ffi.Pointer)>( - symbol: 'get_entities', assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_get_entities', assetId: 'dart_filament') external void get_entities( ffi.Pointer sceneManager, int target, @@ -1076,10 +1007,8 @@ external void get_entities( ); @ffi.Native< - ffi.Pointer Function( - ffi.Pointer, EntityId, ffi.Int, ffi.Bool)>( - symbol: 'get_entity_name_at', - assetId: 'package:dart_filament/dart_filament.dart') + ffi.Pointer Function(ffi.Pointer, EntityId, ffi.Int, + ffi.Bool)>(symbol: '_get_entity_name_at', assetId: 'dart_filament') external ffi.Pointer get_entity_name_at( ffi.Pointer sceneManager, int target, @@ -1088,42 +1017,36 @@ external ffi.Pointer get_entity_name_at( ); @ffi.Native, ffi.Bool)>( - symbol: 'set_recording', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_set_recording', assetId: 'dart_filament') external void set_recording( ffi.Pointer viewer, bool recording, ); @ffi.Native, ffi.Pointer)>( - symbol: 'set_recording_output_directory', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_set_recording_output_directory', assetId: 'dart_filament') external void set_recording_output_directory( ffi.Pointer viewer, ffi.Pointer outputDirectory, ); -@ffi.Native( - symbol: 'ios_dummy', assetId: 'package:dart_filament/dart_filament.dart') +@ffi.Native(symbol: '_ios_dummy', assetId: 'dart_filament') external void ios_dummy(); @ffi.Native)>( - symbol: 'flutter_filament_free', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_flutter_filament_free', assetId: 'dart_filament') external void flutter_filament_free( ffi.Pointer ptr, ); @ffi.Native< - ffi.Void Function( - ffi.Pointer, - EntityId, - ffi.Pointer< - ffi.NativeFunction< - ffi.Void Function(EntityId entityId1, EntityId entityId2)>>, - ffi.Bool)>( - symbol: 'add_collision_component', - assetId: 'package:dart_filament/dart_filament.dart') + ffi.Void Function( + ffi.Pointer, + EntityId, + ffi.Pointer< + ffi.NativeFunction< + ffi.Void Function(EntityId entityId1, EntityId entityId2)>>, + ffi.Bool)>(symbol: '_add_collision_component', assetId: 'dart_filament') external void add_collision_component( ffi.Pointer sceneManager, int entityId, @@ -1135,16 +1058,14 @@ external void add_collision_component( ); @ffi.Native, EntityId)>( - symbol: 'remove_collision_component', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_remove_collision_component', assetId: 'dart_filament') external void remove_collision_component( ffi.Pointer sceneManager, int entityId, ); @ffi.Native, EntityId)>( - symbol: 'add_animation_component', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_add_animation_component', assetId: 'dart_filament') external bool add_animation_component( ffi.Pointer sceneManager, int entityId, @@ -1159,8 +1080,7 @@ external bool add_animation_component( ffi.Int, ffi.Int, ffi.Pointer)>( - symbol: 'create_geometry', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_create_geometry', assetId: 'dart_filament') external int create_geometry( ffi.Pointer viewer, ffi.Pointer vertices, @@ -1172,7 +1092,7 @@ external int create_geometry( ); @ffi.Native, EntityId, EntityId)>( - symbol: 'set_parent', assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_set_parent', assetId: 'dart_filament') external void set_parent( ffi.Pointer sceneManager, int child, @@ -1180,15 +1100,14 @@ external void set_parent( ); @ffi.Native, EntityId)>( - symbol: 'test_collisions', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_test_collisions', assetId: 'dart_filament') external void test_collisions( ffi.Pointer sceneManager, int entity, ); @ffi.Native, EntityId, ffi.Int)>( - symbol: 'set_priority', assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_set_priority', assetId: 'dart_filament') external void set_priority( ffi.Pointer sceneManager, int entityId, @@ -1196,7 +1115,7 @@ external void set_priority( ); @ffi.Native, ffi.Pointer)>( - symbol: 'get_gizmo', assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_get_gizmo', assetId: 'dart_filament') external void get_gizmo( ffi.Pointer sceneManager, ffi.Pointer out, @@ -1207,7 +1126,7 @@ external void get_gizmo( ffi.Pointer, ffi.Pointer, ffi.Pointer, - ffi.Pointer, + ffi.Pointer, ffi .Pointer< ffi.NativeFunction< @@ -1217,13 +1136,12 @@ external void get_gizmo( ffi.Pointer< ffi.NativeFunction< ffi.Void Function(ffi.Pointer viewer)>>)>( - symbol: 'create_filament_viewer_ffi', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_create_filament_viewer_ffi', assetId: 'dart_filament') external void create_filament_viewer_ffi( ffi.Pointer context, ffi.Pointer platform, ffi.Pointer uberArchivePath, - ffi.Pointer loader, + ffi.Pointer loader, ffi.Pointer< ffi.NativeFunction< ffi.Void Function(ffi.Pointer renderCallbackOwner)>> @@ -1241,8 +1159,7 @@ external void create_filament_viewer_ffi( ffi.Uint32, ffi.Uint32, ffi.Pointer>)>( - symbol: 'create_swap_chain_ffi', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_create_swap_chain_ffi', assetId: 'dart_filament') external void create_swap_chain_ffi( ffi.Pointer viewer, ffi.Pointer surface, @@ -1254,8 +1171,7 @@ external void create_swap_chain_ffi( @ffi.Native< ffi.Void Function(ffi.Pointer, ffi.Pointer>)>( - symbol: 'destroy_swap_chain_ffi', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_destroy_swap_chain_ffi', assetId: 'dart_filament') external void destroy_swap_chain_ffi( ffi.Pointer viewer, ffi.Pointer> onComplete, @@ -1264,8 +1180,7 @@ external void destroy_swap_chain_ffi( @ffi.Native< ffi.Void Function(ffi.Pointer, ffi.IntPtr, ffi.Uint32, ffi.Uint32, ffi.Pointer>)>( - symbol: 'create_render_target_ffi', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_create_render_target_ffi', assetId: 'dart_filament') external void create_render_target_ffi( ffi.Pointer viewer, int nativeTextureId, @@ -1275,36 +1190,32 @@ external void create_render_target_ffi( ); @ffi.Native)>( - symbol: 'destroy_filament_viewer_ffi', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_destroy_filament_viewer_ffi', assetId: 'dart_filament') external void destroy_filament_viewer_ffi( ffi.Pointer viewer, ); @ffi.Native)>( - symbol: 'render_ffi', assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_render_ffi', assetId: 'dart_filament') external void render_ffi( ffi.Pointer viewer, ); @ffi.Native( - symbol: 'make_render_callback_fn_pointer', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_make_render_callback_fn_pointer', assetId: 'dart_filament') external FilamentRenderCallback make_render_callback_fn_pointer( FilamentRenderCallback arg0, ); @ffi.Native, ffi.Bool)>( - symbol: 'set_rendering_ffi', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_set_rendering_ffi', assetId: 'dart_filament') external void set_rendering_ffi( ffi.Pointer viewer, bool rendering, ); @ffi.Native, ffi.Float)>( - symbol: 'set_frame_interval_ffi', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_set_frame_interval_ffi', assetId: 'dart_filament') external void set_frame_interval_ffi( ffi.Pointer viewer, double frameInterval, @@ -1313,8 +1224,8 @@ external void set_frame_interval_ffi( @ffi.Native< ffi.Void Function(ffi.Pointer, ffi.Uint32, ffi.Uint32, ffi.Float, ffi.Pointer>)>( - symbol: 'update_viewport_and_camera_projection_ffi', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_update_viewport_and_camera_projection_ffi', + assetId: 'dart_filament') external void update_viewport_and_camera_projection_ffi( ffi.Pointer viewer, int width, @@ -1326,8 +1237,7 @@ external void update_viewport_and_camera_projection_ffi( @ffi.Native< ffi.Void Function( ffi.Pointer, ffi.Float, ffi.Float, ffi.Float, ffi.Float)>( - symbol: 'set_background_color_ffi', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_set_background_color_ffi', assetId: 'dart_filament') external void set_background_color_ffi( ffi.Pointer viewer, double r, @@ -1337,8 +1247,7 @@ external void set_background_color_ffi( ); @ffi.Native)>( - symbol: 'clear_background_image_ffi', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_clear_background_image_ffi', assetId: 'dart_filament') external void clear_background_image_ffi( ffi.Pointer viewer, ); @@ -1346,8 +1255,7 @@ external void clear_background_image_ffi( @ffi.Native< ffi.Void Function(ffi.Pointer, ffi.Pointer, ffi.Bool, ffi.Pointer>)>( - symbol: 'set_background_image_ffi', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_set_background_image_ffi', assetId: 'dart_filament') external void set_background_image_ffi( ffi.Pointer viewer, ffi.Pointer path, @@ -1358,8 +1266,7 @@ external void set_background_image_ffi( @ffi.Native< ffi.Void Function( ffi.Pointer, ffi.Float, ffi.Float, ffi.Bool)>( - symbol: 'set_background_image_position_ffi', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_set_background_image_position_ffi', assetId: 'dart_filament') external void set_background_image_position_ffi( ffi.Pointer viewer, double x, @@ -1368,16 +1275,14 @@ external void set_background_image_position_ffi( ); @ffi.Native, ffi.Int)>( - symbol: 'set_tone_mapping_ffi', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_set_tone_mapping_ffi', assetId: 'dart_filament') external void set_tone_mapping_ffi( ffi.Pointer viewer, int toneMapping, ); @ffi.Native, ffi.Float)>( - symbol: 'set_bloom_ffi', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_set_bloom_ffi', assetId: 'dart_filament') external void set_bloom_ffi( ffi.Pointer viewer, double strength, @@ -1386,8 +1291,7 @@ external void set_bloom_ffi( @ffi.Native< ffi.Void Function(ffi.Pointer, ffi.Pointer, ffi.Pointer>)>( - symbol: 'load_skybox_ffi', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_load_skybox_ffi', assetId: 'dart_filament') external void load_skybox_ffi( ffi.Pointer viewer, ffi.Pointer skyboxPath, @@ -1395,9 +1299,8 @@ external void load_skybox_ffi( ); @ffi.Native< - ffi.Void Function( - ffi.Pointer, ffi.Pointer, ffi.Float)>( - symbol: 'load_ibl_ffi', assetId: 'package:dart_filament/dart_filament.dart') + ffi.Void Function(ffi.Pointer, ffi.Pointer, + ffi.Float)>(symbol: '_load_ibl_ffi', assetId: 'dart_filament') external void load_ibl_ffi( ffi.Pointer viewer, ffi.Pointer iblPath, @@ -1405,15 +1308,13 @@ external void load_ibl_ffi( ); @ffi.Native)>( - symbol: 'remove_skybox_ffi', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_remove_skybox_ffi', assetId: 'dart_filament') external void remove_skybox_ffi( ffi.Pointer viewer, ); @ffi.Native)>( - symbol: 'remove_ibl_ffi', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_remove_ibl_ffi', assetId: 'dart_filament') external void remove_ibl_ffi( ffi.Pointer viewer, ); @@ -1432,8 +1333,7 @@ external void remove_ibl_ffi( ffi.Float, ffi.Bool, ffi.Pointer>)>( - symbol: 'add_light_ffi', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_add_light_ffi', assetId: 'dart_filament') external void add_light_ffi( ffi.Pointer viewer, int type, @@ -1450,16 +1350,14 @@ external void add_light_ffi( ); @ffi.Native, EntityId)>( - symbol: 'remove_light_ffi', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_remove_light_ffi', assetId: 'dart_filament') external void remove_light_ffi( ffi.Pointer viewer, int entityId, ); @ffi.Native)>( - symbol: 'clear_lights_ffi', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_clear_lights_ffi', assetId: 'dart_filament') external void clear_lights_ffi( ffi.Pointer viewer, ); @@ -1467,7 +1365,7 @@ external void clear_lights_ffi( @ffi.Native< ffi.Void Function(ffi.Pointer, ffi.Pointer, ffi.Int, ffi.Pointer>)>( - symbol: 'load_glb_ffi', assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_load_glb_ffi', assetId: 'dart_filament') external void load_glb_ffi( ffi.Pointer sceneManager, ffi.Pointer assetPath, @@ -1482,8 +1380,7 @@ external void load_glb_ffi( ffi.Size, ffi.Int, ffi.Pointer>)>( - symbol: 'load_glb_from_buffer_ffi', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_load_glb_from_buffer_ffi', assetId: 'dart_filament') external void load_glb_from_buffer_ffi( ffi.Pointer sceneManager, ffi.Pointer data, @@ -1498,8 +1395,7 @@ external void load_glb_from_buffer_ffi( ffi.Pointer, ffi.Pointer, ffi.Pointer>)>( - symbol: 'load_gltf_ffi', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_load_gltf_ffi', assetId: 'dart_filament') external void load_gltf_ffi( ffi.Pointer sceneManager, ffi.Pointer assetPath, @@ -1510,8 +1406,7 @@ external void load_gltf_ffi( @ffi.Native< ffi.Void Function(ffi.Pointer, EntityId, ffi.Pointer>)>( - symbol: 'create_instance_ffi', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_create_instance_ffi', assetId: 'dart_filament') external void create_instance_ffi( ffi.Pointer sceneManager, int entityId, @@ -1521,8 +1416,7 @@ external void create_instance_ffi( @ffi.Native< ffi.Void Function(ffi.Pointer, EntityId, ffi.Pointer>)>( - symbol: 'remove_entity_ffi', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_remove_entity_ffi', assetId: 'dart_filament') external void remove_entity_ffi( ffi.Pointer viewer, int asset, @@ -1532,8 +1426,7 @@ external void remove_entity_ffi( @ffi.Native< ffi.Void Function(ffi.Pointer, ffi.Pointer>)>( - symbol: 'clear_entities_ffi', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_clear_entities_ffi', assetId: 'dart_filament') external void clear_entities_ffi( ffi.Pointer viewer, ffi.Pointer> callback, @@ -1545,8 +1438,7 @@ external void clear_entities_ffi( EntityId, ffi.Pointer, ffi.Pointer>)>( - symbol: 'set_camera_ffi', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_set_camera_ffi', assetId: 'dart_filament') external void set_camera_ffi( ffi.Pointer viewer, int asset, @@ -1555,10 +1447,12 @@ external void set_camera_ffi( ); @ffi.Native< - ffi.Void Function(ffi.Pointer, EntityId, - ffi.Pointer, ffi.Pointer, ffi.Int)>( - symbol: 'apply_weights_ffi', - assetId: 'package:dart_filament/dart_filament.dart') + ffi.Void Function( + ffi.Pointer, + EntityId, + ffi.Pointer, + ffi.Pointer, + ffi.Int)>(symbol: '_apply_weights_ffi', assetId: 'dart_filament') external void apply_weights_ffi( ffi.Pointer sceneManager, int asset, @@ -1568,10 +1462,14 @@ external void apply_weights_ffi( ); @ffi.Native< - ffi.Void Function(ffi.Pointer, EntityId, ffi.Int, ffi.Bool, - ffi.Bool, ffi.Bool, ffi.Float)>( - symbol: 'play_animation_ffi', - assetId: 'package:dart_filament/dart_filament.dart') + ffi.Void Function( + ffi.Pointer, + EntityId, + ffi.Int, + ffi.Bool, + ffi.Bool, + ffi.Bool, + ffi.Float)>(symbol: '_play_animation_ffi', assetId: 'dart_filament') external void play_animation_ffi( ffi.Pointer sceneManager, int asset, @@ -1584,8 +1482,7 @@ external void play_animation_ffi( @ffi.Native< ffi.Void Function(ffi.Pointer, EntityId, ffi.Int, ffi.Int)>( - symbol: 'set_animation_frame_ffi', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_set_animation_frame_ffi', assetId: 'dart_filament') external void set_animation_frame_ffi( ffi.Pointer sceneManager, int asset, @@ -1594,8 +1491,7 @@ external void set_animation_frame_ffi( ); @ffi.Native, EntityId, ffi.Int)>( - symbol: 'stop_animation_ffi', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_stop_animation_ffi', assetId: 'dart_filament') external void stop_animation_ffi( ffi.Pointer sceneManager, int asset, @@ -1605,8 +1501,7 @@ external void stop_animation_ffi( @ffi.Native< ffi.Void Function(ffi.Pointer, EntityId, ffi.Pointer>)>( - symbol: 'get_animation_count_ffi', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_get_animation_count_ffi', assetId: 'dart_filament') external void get_animation_count_ffi( ffi.Pointer sceneManager, int asset, @@ -1620,8 +1515,7 @@ external void get_animation_count_ffi( ffi.Pointer, ffi.Int, ffi.Pointer>)>( - symbol: 'get_animation_name_ffi', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_get_animation_name_ffi', assetId: 'dart_filament') external void get_animation_name_ffi( ffi.Pointer sceneManager, int asset, @@ -1638,8 +1532,7 @@ external void get_animation_name_ffi( ffi.Pointer, ffi.Int, ffi.Pointer>)>( - symbol: 'get_morph_target_name_ffi', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_get_morph_target_name_ffi', assetId: 'dart_filament') external void get_morph_target_name_ffi( ffi.Pointer sceneManager, int asset, @@ -1655,8 +1548,7 @@ external void get_morph_target_name_ffi( EntityId, ffi.Pointer, ffi.Pointer>)>( - symbol: 'get_morph_target_name_count_ffi', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_get_morph_target_name_count_ffi', assetId: 'dart_filament') external void get_morph_target_name_count_ffi( ffi.Pointer sceneManager, int asset, @@ -1671,8 +1563,7 @@ external void get_morph_target_name_count_ffi( ffi.Pointer, ffi.Int, ffi.Pointer>)>( - symbol: 'set_morph_target_weights_ffi', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_set_morph_target_weights_ffi', assetId: 'dart_filament') external void set_morph_target_weights_ffi( ffi.Pointer sceneManager, int asset, @@ -1689,8 +1580,7 @@ external void set_morph_target_weights_ffi( ffi.Pointer, ffi.Pointer, ffi.Pointer>)>( - symbol: 'set_bone_transform_ffi', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_set_bone_transform_ffi', assetId: 'dart_filament') external void set_bone_transform_ffi( ffi.Pointer sceneManager, int asset, @@ -1701,18 +1591,16 @@ external void set_bone_transform_ffi( ); @ffi.Native< - ffi.Void Function( - ffi.Pointer, - EntityId, - ffi.Pointer, - ffi.Int, - ffi.Pointer, - ffi.Pointer>, - ffi.Int, - ffi.Float, - ffi.Bool)>( - symbol: 'add_bone_animation_ffi', - assetId: 'package:dart_filament/dart_filament.dart') + ffi.Void Function( + ffi.Pointer, + EntityId, + ffi.Pointer, + ffi.Int, + ffi.Pointer, + ffi.Pointer>, + ffi.Int, + ffi.Float, + ffi.Bool)>(symbol: '_add_bone_animation_ffi', assetId: 'dart_filament') external void add_bone_animation_ffi( ffi.Pointer sceneManager, int asset, @@ -1726,24 +1614,21 @@ external void add_bone_animation_ffi( ); @ffi.Native, ffi.Bool)>( - symbol: 'set_post_processing_ffi', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_set_post_processing_ffi', assetId: 'dart_filament') external void set_post_processing_ffi( ffi.Pointer viewer, bool enabled, ); @ffi.Native, EntityId)>( - symbol: 'reset_to_rest_pose_ffi', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_reset_to_rest_pose_ffi', assetId: 'dart_filament') external void reset_to_rest_pose_ffi( ffi.Pointer sceneManager, int entityId, ); @ffi.Native( - symbol: 'ios_dummy_ffi', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_ios_dummy_ffi', assetId: 'dart_filament') external void ios_dummy_ffi(); @ffi.Native< @@ -1756,8 +1641,7 @@ external void ios_dummy_ffi(); ffi.Int, ffi.Pointer, ffi.Pointer>)>( - symbol: 'create_geometry_ffi', - assetId: 'package:dart_filament/dart_filament.dart') + symbol: '_create_geometry_ffi', assetId: 'dart_filament') external void create_geometry_ffi( ffi.Pointer viewer, ffi.Pointer vertices, @@ -1769,24 +1653,10 @@ external void create_geometry_ffi( ffi.Pointer> callback, ); -final class ResourceLoaderWrapper extends ffi.Struct { - external LoadFilamentResource loadResource; - - external FreeFilamentResource freeResource; - - external LoadFilamentResourceFromOwner loadFromOwner; - - external FreeFilamentResourceFromOwner freeFromOwner; - - external ffi.Pointer owner; - - external LoadFilamentResourceIntoOutPointer loadToOut; -} - -typedef LoadFilamentResource - = ffi.Pointer>; -typedef LoadFilamentResourceFunction = ResourceBuffer Function( - ffi.Pointer uri); +typedef LoadFilamentResourceFromOwner + = ffi.Pointer>; +typedef LoadFilamentResourceFromOwnerFunction = ResourceBuffer Function( + ffi.Pointer, ffi.Pointer); final class ResourceBuffer extends ffi.Struct { external ffi.Pointer data; @@ -1798,26 +1668,12 @@ final class ResourceBuffer extends ffi.Struct { external int id; } -typedef FreeFilamentResource - = ffi.Pointer>; -typedef FreeFilamentResourceFunction = ffi.Void Function(ResourceBuffer); -typedef DartFreeFilamentResourceFunction = void Function(ResourceBuffer); -typedef LoadFilamentResourceFromOwner - = ffi.Pointer>; -typedef LoadFilamentResourceFromOwnerFunction = ResourceBuffer Function( - ffi.Pointer, ffi.Pointer); typedef FreeFilamentResourceFromOwner = ffi.Pointer>; typedef FreeFilamentResourceFromOwnerFunction = ffi.Void Function( ResourceBuffer, ffi.Pointer); typedef DartFreeFilamentResourceFromOwnerFunction = void Function( ResourceBuffer, ffi.Pointer); -typedef LoadFilamentResourceIntoOutPointer = ffi - .Pointer>; -typedef LoadFilamentResourceIntoOutPointerFunction = ffi.Void Function( - ffi.Pointer uri, ffi.Pointer out); -typedef DartLoadFilamentResourceIntoOutPointerFunction = void Function( - ffi.Pointer uri, ffi.Pointer out); /// This header replicates most of the methods in FlutterFilamentApi.h, and is only intended to be used to generate client FFI bindings. /// The intention is that calling one of these methods will call its respective method in FlutterFilamentApi.h, but wrapped in some kind of thread runner to ensure thread safety. diff --git a/dart_filament/lib/dart_filament/compatibility/web/interop.dart b/dart_filament/lib/dart_filament/compatibility/web/interop.dart new file mode 100644 index 00000000..4773d252 --- /dev/null +++ b/dart_filament/lib/dart_filament/compatibility/web/interop.dart @@ -0,0 +1,16 @@ +import 'dart:js_interop'; + +@JS() +external JSArray createIntCallback(); + +@JS() +external JSArray createBoolCallback(); + +@JS() +external JSArray createVoidPointerCallback(); + +@JS() +external JSArray createVoidCallback(); + + + diff --git a/dart_filament/lib/dart_filament/filament_viewer_impl.dart b/dart_filament/lib/dart_filament/filament_viewer_impl.dart index 5f33e1c7..e1d6d05f 100644 --- a/dart_filament/lib/dart_filament/filament_viewer_impl.dart +++ b/dart_filament/lib/dart_filament/filament_viewer_impl.dart @@ -9,7 +9,6 @@ import 'abstract_filament_viewer.dart'; import 'scene.dart'; import 'compatibility/compatibility.dart'; - // ignore: constant_identifier_names const FilamentEntity _FILAMENT_ASSET_ERROR = 0; @@ -37,7 +36,7 @@ class FilamentViewer extends AbstractFilamentViewer { final _pickResultController = StreamController.broadcast(); - final Pointer resourceLoader; + final Pointer resourceLoader; var _driver = nullptr.cast(); @@ -62,20 +61,20 @@ class FilamentViewer extends AbstractFilamentViewer { this._driver = driver ?? nullptr; this._sharedContext = sharedContext ?? nullptr; - _onPickResultCallable = - NativeCallable.listener( - _onPickResult); + // _onPickResultCallable = + // NativeCallable.listener( + // _onPickResult); _initialize(); } Future createRenderTarget( double width, double height, int textureHandle) async { - await _withVoidCallback((callback) => create_render_target_ffi( + await withVoidCallback((callback) => create_render_target_ffi( _viewer!, textureHandle, width.toInt(), height.toInt(), callback)); } Future updateViewportAndCameraProjection(double width, double height) async { - await _withVoidCallback((callback) { + await withVoidCallback((callback) { update_viewport_and_camera_projection_ffi( _viewer!, width.toInt(), height.toInt(), 1.0, callback); }); @@ -83,27 +82,36 @@ class FilamentViewer extends AbstractFilamentViewer { Future createSwapChain(double width, double height, {Pointer? surface}) async { - await _withVoidCallback((callback) { + await withVoidCallback((callback) { create_swap_chain_ffi(_viewer!, surface ?? nullptr, width.toInt(), height.toInt(), callback); }); } Future destroySwapChain() async { - await _withVoidCallback((callback) { + await withVoidCallback((callback) { destroy_swap_chain_ffi(_viewer!, callback); }); } Future _initialize() async { final uberarchivePtr = - uberArchivePath?.toNativeUtf8().cast() ?? nullptr; + uberArchivePath?.toNativeUtf8(allocator:allocator).cast() ?? nullptr; + + var viewer = await withVoidPointerCallback( + (Pointer)>> callback) { + create_filament_viewer_ffi(_sharedContext, _driver, uberarchivePtr, + resourceLoader, _renderCallback, _renderCallbackOwner, callback); + }); + print(viewer); + if (viewer is int) { + _viewer = Pointer.fromAddress(viewer); + } else { + _viewer = (viewer as Pointer); + } - _viewer = await _withVoidPointerCallback((callback) => - create_filament_viewer_ffi(_sharedContext, _driver, uberarchivePtr, - resourceLoader, _renderCallback, _renderCallbackOwner, callback)); - print("Set viewer to $_viewer"); allocator.free(uberarchivePtr); + print("Set viewer to $_viewer"); print("Created viewer ${_viewer!.address}"); if (_viewer!.address == 0) { @@ -146,81 +154,6 @@ class FilamentViewer extends AbstractFilamentViewer { _viewer = null; } - Future _withVoidCallback( - Function(Pointer>) func) async { - final completer = Completer(); - // ignore: prefer_function_declarations_over_variables - void Function() callback = () { - completer.complete(); - }; - final nativeCallable = NativeCallable.listener(callback); - func.call(nativeCallable.nativeFunction); - await completer.future; - nativeCallable.close(); - } - - Future> _withVoidPointerCallback( - Function(Pointer)>>) - func) async { - final completer = Completer>(); - // ignore: prefer_function_declarations_over_variables - void Function(Pointer) callback = (Pointer ptr) { - completer.complete(ptr); - }; - final nativeCallable = - NativeCallable)>.listener(callback); - func.call(nativeCallable.nativeFunction); - await completer.future; - nativeCallable.close(); - return completer.future; - } - - Future _withBoolCallback( - Function(Pointer>) func) async { - final completer = Completer(); - // ignore: prefer_function_declarations_over_variables - void Function(bool) callback = (bool result) { - completer.complete(result); - }; - final nativeCallable = - NativeCallable.listener(callback); - func.call(nativeCallable.nativeFunction); - await completer.future; - nativeCallable.close(); - return completer.future; - } - - Future _withIntCallback( - Function(Pointer>) func) async { - final completer = Completer(); - // ignore: prefer_function_declarations_over_variables - void Function(int) callback = (int result) { - completer.complete(result); - }; - final nativeCallable = - NativeCallable.listener(callback); - func.call(nativeCallable.nativeFunction); - await completer.future; - nativeCallable.close(); - return completer.future; - } - - Future _withCharPtrCallback( - Function(Pointer)>>) - func) async { - final completer = Completer(); - // ignore: prefer_function_declarations_over_variables - void Function(Pointer) callback = (Pointer result) { - completer.complete(result.cast().toDartString()); - }; - final nativeCallable = - NativeCallable)>.listener(callback); - func.call(nativeCallable.nativeFunction); - await completer.future; - nativeCallable.close(); - return completer.future; - } - @override Future clearBackgroundImage() async { clear_background_image_ffi(_viewer!); @@ -228,8 +161,8 @@ class FilamentViewer extends AbstractFilamentViewer { @override Future setBackgroundImage(String path, {bool fillHeight = false}) async { - final pathPtr = path.toNativeUtf8().cast(); - await _withVoidCallback((cb) { + final pathPtr = path.toNativeUtf8(allocator:allocator).cast(); + await withVoidCallback((cb) { set_background_image_ffi(_viewer!, pathPtr, fillHeight, cb); }); @@ -249,8 +182,10 @@ class FilamentViewer extends AbstractFilamentViewer { @override Future loadSkybox(String skyboxPath) async { - final pathPtr = skyboxPath.toNativeUtf8().cast(); - await _withVoidCallback((cb) { + + final pathPtr = skyboxPath.toNativeUtf8(allocator: allocator).cast(); + + await withVoidCallback((cb) { load_skybox_ffi(_viewer!, pathPtr, cb); }); @@ -259,7 +194,7 @@ class FilamentViewer extends AbstractFilamentViewer { @override Future loadIbl(String lightingPath, {double intensity = 30000}) async { - final pathPtr = lightingPath.toNativeUtf8().cast(); + final pathPtr = lightingPath.toNativeUtf8(allocator:allocator).cast(); load_ibl_ffi(_viewer!, pathPtr, intensity); } @@ -295,7 +230,7 @@ class FilamentViewer extends AbstractFilamentViewer { double dirY, double dirZ, bool castShadows) async { - var entity = await _withIntCallback((callback) => add_light_ffi( + var entity = await withIntCallback((callback) => add_light_ffi( _viewer!, type, colour, @@ -328,7 +263,7 @@ class FilamentViewer extends AbstractFilamentViewer { @override Future createInstance(FilamentEntity entity) async { - var created = await _withIntCallback( + var created = await withIntCallback( (callback) => create_instance(_sceneManager!, entity)); if (created == _FILAMENT_ASSET_ERROR) { throw Exception("Failed to create instance"); @@ -360,8 +295,8 @@ class FilamentViewer extends AbstractFilamentViewer { if (unlit) { throw Exception("Not yet implemented"); } - final pathPtr = path.toNativeUtf8().cast(); - var entity = await _withIntCallback((callback) => + final pathPtr = path.toNativeUtf8(allocator:allocator).cast(); + var entity = await withIntCallback((callback) => load_glb_ffi(_sceneManager!, pathPtr, numInstances, callback)); allocator.free(pathPtr); if (entity == _FILAMENT_ASSET_ERROR) { @@ -375,15 +310,15 @@ class FilamentViewer extends AbstractFilamentViewer { @override Future loadGltf(String path, String relativeResourcePath, {bool force = false}) async { - if (Platform.isWindows && !force) { - throw Exception( - "loadGltf has a race condition on Windows which is likely to crash your program. If you really want to try, pass force=true to loadGltf"); - } + // if (Platform.isWindows && !force) { + // throw Exception( + // "loadGltf has a race condition on Windows which is likely to crash your program. If you really want to try, pass force=true to loadGltf"); + // } - final pathPtr = path.toNativeUtf8().cast(); + final pathPtr = path.toNativeUtf8(allocator:allocator).cast(); final relativeResourcePathPtr = - relativeResourcePath.toNativeUtf8().cast(); - var entity = await _withIntCallback((callback) => load_gltf_ffi( + relativeResourcePath.toNativeUtf8(allocator:allocator).cast(); + var entity = await withIntCallback((callback) => load_gltf_ffi( _sceneManager!, pathPtr, relativeResourcePathPtr, callback)); allocator.free(pathPtr); allocator.free(relativeResourcePathPtr); @@ -437,7 +372,7 @@ class FilamentViewer extends AbstractFilamentViewer { weightsPtr[i] = weights[i]; } - var success = await _withBoolCallback((cb) { + var success = await withBoolCallback((cb) { set_morph_target_weights_ffi( _sceneManager!, entity, weightsPtr, weights.length, cb); }); @@ -454,9 +389,9 @@ class FilamentViewer extends AbstractFilamentViewer { Future> getMorphTargetNames( FilamentEntity entity, String meshName) async { var names = []; - var meshNamePtr = meshName.toNativeUtf8().cast(); + var meshNamePtr = meshName.toNativeUtf8(allocator:allocator).cast(); - var count = await _withIntCallback((callback) => + var count = await withIntCallback((callback) => get_morph_target_name_count_ffi( _sceneManager!, entity, meshNamePtr, callback)); var outPtr = allocator(255); @@ -632,13 +567,13 @@ class FilamentViewer extends AbstractFilamentViewer { Future removeEntity(FilamentEntity entity) async { _scene.unregisterEntity(entity); - await _withVoidCallback( + await withVoidCallback( (callback) => remove_entity_ffi(_viewer!, entity, callback)); } @override Future clearEntities() async { - await _withVoidCallback( + await withVoidCallback( (callback) => clear_entities_ffi(_viewer!, callback)); _scene.clearEntities(); } @@ -717,7 +652,7 @@ class FilamentViewer extends AbstractFilamentViewer { @override Future setCamera(FilamentEntity entity, String? name) async { - var cameraNamePtr = name?.toNativeUtf8().cast() ?? nullptr; + var cameraNamePtr = name?.toNativeUtf8(allocator:allocator).cast() ?? nullptr; var result = set_camera(_viewer!, entity, cameraNamePtr); allocator.free(cameraNamePtr); if (!result) { @@ -816,7 +751,7 @@ class FilamentViewer extends AbstractFilamentViewer { @override Future setMaterialColor(FilamentEntity entity, String meshName, int materialIndex, double r, double g, double b, double a) async { - var meshNamePtr = meshName.toNativeUtf8().cast(); + var meshNamePtr = meshName.toNativeUtf8(allocator:allocator).cast(); var result = set_material_color( _sceneManager!, entity, meshNamePtr, materialIndex, r, g, b, a); allocator.free(meshNamePtr); @@ -878,14 +813,14 @@ class FilamentViewer extends AbstractFilamentViewer { @override Future hide(FilamentEntity entity, String? meshName) async { - final meshNamePtr = meshName?.toNativeUtf8().cast() ?? nullptr; + final meshNamePtr = meshName?.toNativeUtf8(allocator:allocator).cast() ?? nullptr; if (hide_mesh(_sceneManager!, entity, meshNamePtr) != 1) {} allocator.free(meshNamePtr); } @override Future reveal(FilamentEntity entity, String? meshName) async { - final meshNamePtr = meshName?.toNativeUtf8().cast() ?? nullptr; + final meshNamePtr = meshName?.toNativeUtf8(allocator:allocator).cast() ?? nullptr; final result = reveal_mesh(_sceneManager!, entity, meshNamePtr) == 1; allocator.free(meshNamePtr); if (!result) { @@ -1165,7 +1100,7 @@ class FilamentViewer extends AbstractFilamentViewer { indicesPtr.elementAt(i).value = indices[i]; } - var entity = await _withIntCallback((callback) => create_geometry_ffi( + var entity = await withIntCallback((callback) => create_geometry_ffi( _viewer!, vertexPtr, vertices.length,