From e200064d1bafa3ca7e967a0298730b3d068a70d7 Mon Sep 17 00:00:00 2001 From: Nick Fisher Date: Mon, 15 Aug 2022 19:01:37 +1000 Subject: [PATCH] add setTexture to Android API --- android/src/main/cpp/filament_android.cpp | 4 ++++ .../main/kotlin/app/polyvox/filament/FilamentInterop.kt | 3 +++ .../src/main/kotlin/app/polyvox/filament/FilamentView.kt | 9 ++++++++- 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/android/src/main/cpp/filament_android.cpp b/android/src/main/cpp/filament_android.cpp index d43b4d5d..72346f4d 100644 --- a/android/src/main/cpp/filament_android.cpp +++ b/android/src/main/cpp/filament_android.cpp @@ -198,5 +198,9 @@ extern "C" { void clear_assets(void* viewer) { ((FilamentViewer*)viewer)->clearAssets(); } + + void set_texture(void* asset, const char* assetPath, int renderableIndex) { + ((SceneAsset*)asset)->setTexture(assetPath, renderableIndex); + } } diff --git a/android/src/main/kotlin/app/polyvox/filament/FilamentInterop.kt b/android/src/main/kotlin/app/polyvox/filament/FilamentInterop.kt index cab012f7..f45dd211 100644 --- a/android/src/main/kotlin/app/polyvox/filament/FilamentInterop.kt +++ b/android/src/main/kotlin/app/polyvox/filament/FilamentInterop.kt @@ -71,4 +71,7 @@ interface FilamentInterop : Library { fun remove_ibl(viewer:Pointer); fun set_background_image(viewer:Pointer, path:String); + + fun set_texture(asset:Pointer, path:String, renderableIndex:Int); } + diff --git a/android/src/main/kotlin/app/polyvox/filament/FilamentView.kt b/android/src/main/kotlin/app/polyvox/filament/FilamentView.kt index aa9bcb17..7709b7d6 100644 --- a/android/src/main/kotlin/app/polyvox/filament/FilamentView.kt +++ b/android/src/main/kotlin/app/polyvox/filament/FilamentView.kt @@ -170,7 +170,7 @@ PlatformView { _lib.load_skybox(_viewer!!, loader.getLookupKeyForAsset(args)) result.success("OK"); } - "loadIbl" -> { + "loadIbl" -> { val args = call.arguments as String val loader = FlutterInjector.instance().flutterLoader() @@ -211,6 +211,13 @@ PlatformView { ) result.success(Pointer.nativeValue(assetPtr)); } + "setTexture" -> { + val args = call.arguments as ArrayList<*> + val loader = FlutterInjector.instance().flutterLoader() + val assetPtr = Pointer(args[0] as Long); + _lib.set_texture(assetPtr, loader.getLookupKeyForAsset(args[1] as String), args[2] as Int) + result.success("OK"); + } "setCamera" -> { val args = call.arguments as ArrayList<*> val success = _lib.set_camera(