From 5680b5d9a6072c92d9ff35372218ce1fd2469f9d Mon Sep 17 00:00:00 2001 From: Nicklas Ansman Giertz Date: Sat, 2 Nov 2019 18:58:25 -0400 Subject: [PATCH] Add support for GLTF files in the android gltfio bindings --- android/gltfio-android/src/main/cpp/AssetLoader.cpp | 9 +++++++++ .../google/android/filament/gltfio/AssetLoader.java | 10 ++++++++++ 2 files changed, 19 insertions(+) diff --git a/android/gltfio-android/src/main/cpp/AssetLoader.cpp b/android/gltfio-android/src/main/cpp/AssetLoader.cpp index 3b6ae0c26a..da9189c217 100644 --- a/android/gltfio-android/src/main/cpp/AssetLoader.cpp +++ b/android/gltfio-android/src/main/cpp/AssetLoader.cpp @@ -69,6 +69,15 @@ Java_com_google_android_filament_gltfio_AssetLoader_nCreateAssetFromBinary(JNIEn buffer.getSize()); } +extern "C" JNIEXPORT jlong JNICALL +Java_com_google_android_filament_gltfio_AssetLoader_nCreateAssetFromJson(JNIEnv* env, jclass, + jlong nativeLoader, jobject javaBuffer, jint remaining) { + AssetLoader* loader = (AssetLoader*) nativeLoader; + AutoBuffer buffer(env, javaBuffer, remaining); + return (jlong) loader->createAssetFromJson((const uint8_t *) buffer.getData(), + buffer.getSize()); +} + extern "C" JNIEXPORT void JNICALL Java_com_google_android_filament_gltfio_AssetLoader_nEnableDiagnostics(JNIEnv*, jclass, jlong nativeLoader, jboolean enable) { diff --git a/android/gltfio-android/src/main/java/com/google/android/filament/gltfio/AssetLoader.java b/android/gltfio-android/src/main/java/com/google/android/filament/gltfio/AssetLoader.java index 41182db809..20f8bc2c45 100644 --- a/android/gltfio-android/src/main/java/com/google/android/filament/gltfio/AssetLoader.java +++ b/android/gltfio-android/src/main/java/com/google/android/filament/gltfio/AssetLoader.java @@ -113,6 +113,15 @@ public class AssetLoader { return new FilamentAsset(nativeAsset); } + /** + * Creates a {@link FilamentAsset} from the contents of a GLTF file. + */ + @Nullable + public FilamentAsset createAssetFromJson(@NonNull Buffer buffer) { + long nativeAsset = nCreateAssetFromJson(mNativeObject, buffer, buffer.remaining()); + return new FilamentAsset(nativeAsset); + } + /** * Allows clients to enable diagnostic shading on newly-loaded assets. */ @@ -132,6 +141,7 @@ public class AssetLoader { long nativeEntities); private static native void nDestroyAssetLoader(long nativeLoader); private static native long nCreateAssetFromBinary(long nativeLoader, Buffer buffer, int remaining); + private static native long nCreateAssetFromJson(long nativeLoader, Buffer buffer, int remaining); private static native void nEnableDiagnostics(long nativeLoader, boolean enable); private static native void nDestroyAsset(long nativeLoader, long nativeAsset); }