pass shared NameComponentManager to gltfio AssetLoader

This commit is contained in:
Nick Fisher
2025-05-31 11:21:57 +08:00
parent 7f0ec01937
commit 2f7f363db9
9 changed files with 52 additions and 19 deletions

View File

@@ -339,10 +339,11 @@ external void FilamentAsset_getEntities(
@ffi.Native<
ffi.Pointer<TGltfAssetLoader> Function(
ffi.Pointer<TEngine>, ffi.Pointer<TMaterialProvider>)>(isLeaf: true)
ffi.Pointer<TEngine>, ffi.Pointer<TMaterialProvider>, ffi.Pointer<TNameComponentManager> )>(isLeaf: true)
external ffi.Pointer<TGltfAssetLoader> GltfAssetLoader_create(
ffi.Pointer<TEngine> tEngine,
ffi.Pointer<TMaterialProvider> tMaterialProvider,
ffi.Pointer<TNameComponentManager> tNameComponentManager,
);
@ffi.Native<
@@ -2718,6 +2719,7 @@ external void AnimationManager_resetToRestPoseRenderThread(
ffi.Void Function(
ffi.Pointer<TEngine>,
ffi.Pointer<TMaterialProvider>,
ffi.Pointer<TNameComponentManager>,
ffi.Pointer<
ffi.NativeFunction<
ffi.Void Function(
@@ -2725,6 +2727,7 @@ external void AnimationManager_resetToRestPoseRenderThread(
external void GltfAssetLoader_createRenderThread(
ffi.Pointer<TEngine> tEngine,
ffi.Pointer<TMaterialProvider> tMaterialProvider,
ffi.Pointer<TNameComponentManager> tNameComponentManager,
ffi.Pointer<
ffi.NativeFunction<ffi.Void Function(ffi.Pointer<TGltfAssetLoader>)>>
callback,

View File

@@ -592,6 +592,7 @@ extension type NativeLibrary(JSObject _) implements JSObject {
external Pointer<TGltfAssetLoader> _GltfAssetLoader_create(
Pointer<TEngine> tEngine,
Pointer<TMaterialProvider> tMaterialProvider,
self.Pointer<TNameComponentManager> tNameComponentManager
);
external Pointer<TFilamentAsset> _GltfAssetLoader_load(
Pointer<TEngine> tEngine,
@@ -1841,6 +1842,7 @@ extension type NativeLibrary(JSObject _) implements JSObject {
external void _GltfAssetLoader_createRenderThread(
Pointer<TEngine> tEngine,
Pointer<TMaterialProvider> tMaterialProvider,
Pointer<TNameComponentManager> tNameComponentManager,
Pointer<self.NativeFunction<void Function(PointerClass<TGltfAssetLoader>)>>
callback,
);
@@ -2641,9 +2643,10 @@ void FilamentAsset_getEntities(
self.Pointer<TGltfAssetLoader> GltfAssetLoader_create(
self.Pointer<TEngine> tEngine,
self.Pointer<TMaterialProvider> tMaterialProvider,
self.Pointer<TNameComponentManager> tNameComponentManager
) {
final result =
_lib._GltfAssetLoader_create(tEngine.cast(), tMaterialProvider.cast());
_lib._GltfAssetLoader_create(tEngine.cast(), tMaterialProvider.cast(), tNameComponentManager.cast());
return self.Pointer<TGltfAssetLoader>(result);
}
@@ -5200,11 +5203,12 @@ void AnimationManager_resetToRestPoseRenderThread(
void GltfAssetLoader_createRenderThread(
self.Pointer<TEngine> tEngine,
self.Pointer<TMaterialProvider> tMaterialProvider,
self.Pointer<TNameComponentManager> tNameComponentManager,
self.Pointer<self.NativeFunction<void Function(Pointer<TGltfAssetLoader>)>>
callback,
) {
final result = _lib._GltfAssetLoader_createRenderThread(
tEngine.cast(), tMaterialProvider.cast(), callback.cast());
tEngine.cast(), tMaterialProvider.cast(), tNameComponentManager.cast(), callback.cast());
return result;
}

View File

@@ -82,12 +82,9 @@ class FFIAsset extends ThermionAsset {
final childEntities = await getChildEntities();
var names = <String?>[];
for (final entity in childEntities) {
var name = NameComponentManager_getName(app.nameComponentManager, entity);
if (name == nullptr) {
names.add(null);
} else {
names.add(name.cast<Utf8>().toDartString());
}
var name = await FilamentApp.instance!.getNameForEntity(entity);
names.add(name);
}
return names;
}

View File

@@ -85,9 +85,9 @@ class FFIFilamentApp extends FilamentApp<Pointer> {
config.stereoscopicEyeCount,
config.disableHandleUseAfterFreeCheck,
cb));
final nameComponentManager = NameComponentManager_create();
final gltfAssetLoader = await withPointerCallback<TGltfAssetLoader>(
(cb) => GltfAssetLoader_createRenderThread(engine, nullptr, cb));
(cb) => GltfAssetLoader_createRenderThread(engine, nullptr, nameComponentManager, cb));
final renderer = await withPointerCallback<TRenderer>(
(cb) => Engine_createRendererRenderThread(engine, cb));
final ubershaderMaterialProvider =
@@ -101,7 +101,7 @@ class FFIFilamentApp extends FilamentApp<Pointer> {
RenderThread_setRenderTicker(renderTicker);
final nameComponentManager = NameComponentManager_create();
FilamentApp.instance = FFIFilamentApp(
engine,