diff --git a/android/gltfio-android/CMakeLists.txt b/android/gltfio-android/CMakeLists.txt index c41980a52c..82f4da8398 100644 --- a/android/gltfio-android/CMakeLists.txt +++ b/android/gltfio-android/CMakeLists.txt @@ -14,6 +14,7 @@ set_target_properties(gltfio_resources PROPERTIES IMPORTED_LOCATION include_directories(${FILAMENT_DIR}/include .. + ../../third_party/robin-map ../../libs/utils/include) set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} -Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/libgltfio-jni.map") diff --git a/android/gltfio-android/src/main/cpp/AssetLoader.cpp b/android/gltfio-android/src/main/cpp/AssetLoader.cpp index a258f99450..aa8e7bf0b9 100644 --- a/android/gltfio-android/src/main/cpp/AssetLoader.cpp +++ b/android/gltfio-android/src/main/cpp/AssetLoader.cpp @@ -19,6 +19,7 @@ #include #include +#include #include #include @@ -38,14 +39,17 @@ Java_com_google_android_filament_gltfio_AssetLoader_nCreateAssetLoader(JNIEnv*, Engine* engine = (Engine*) nativeEngine; MaterialProvider* materials = (MaterialProvider*) nativeProvider; EntityManager* entities = (EntityManager*) nativeEntities; - return (jlong) AssetLoader::create({engine, materials, nullptr, entities}); + NameComponentManager* names = new NameComponentManager(*entities); + return (jlong) AssetLoader::create({engine, materials, names, entities}); } extern "C" JNIEXPORT void JNICALL Java_com_google_android_filament_gltfio_AssetLoader_nDestroyAssetLoader(JNIEnv*, jclass, jlong nativeLoader) { AssetLoader* loader = (AssetLoader*) nativeLoader; + NameComponentManager* names = loader->getNames(); AssetLoader::destroy(&loader); + delete names; } extern "C" JNIEXPORT jlong JNICALL @@ -76,7 +80,7 @@ Java_com_google_android_filament_gltfio_AssetLoader_nEnableDiagnostics(JNIEnv*, extern "C" JNIEXPORT void JNICALL Java_com_google_android_filament_gltfio_AssetLoader_nDestroyAsset(JNIEnv*, jclass, jlong nativeLoader, jlong nativeAsset) { - AssetLoader* loader = (AssetLoader*) nativeLoader; + AssetLoader* loader = (AssetLoader*) nativeLoader; FilamentAsset* asset = (FilamentAsset*) nativeAsset; loader->destroyAsset(asset); } diff --git a/android/gltfio-android/src/main/cpp/FilamentAsset.cpp b/android/gltfio-android/src/main/cpp/FilamentAsset.cpp index e27b522ff1..ceec962b7f 100644 --- a/android/gltfio-android/src/main/cpp/FilamentAsset.cpp +++ b/android/gltfio-android/src/main/cpp/FilamentAsset.cpp @@ -85,10 +85,9 @@ Java_com_google_android_filament_gltfio_FilamentAsset_nGetBoundingBox(JNIEnv* en extern "C" JNIEXPORT jstring JNICALL Java_com_google_android_filament_gltfio_FilamentAsset_nGetName(JNIEnv* env, jclass, jlong nativeAsset, jint entityId) { - uint32_t id = static_cast(entityId); - Entity* entity = (Entity*) &id; + Entity entity = Entity::import(entityId); FilamentAsset* asset = (FilamentAsset*) nativeAsset; - const char* val = asset->getName(*entity); + const char* val = asset->getName(entity); return val ? env->NewStringUTF(val) : nullptr; } diff --git a/libs/gltfio/include/gltfio/AssetLoader.h b/libs/gltfio/include/gltfio/AssetLoader.h index f09226fd94..a550cc931a 100644 --- a/libs/gltfio/include/gltfio/AssetLoader.h +++ b/libs/gltfio/include/gltfio/AssetLoader.h @@ -174,6 +174,8 @@ public: */ size_t getMaterialsCount() const noexcept; + utils::NameComponentManager* getNames() const noexcept; + /*! \cond PRIVATE */ protected: AssetLoader() noexcept = default; diff --git a/libs/gltfio/src/AssetLoader.cpp b/libs/gltfio/src/AssetLoader.cpp index 207cff58b3..80bfef58c2 100644 --- a/libs/gltfio/src/AssetLoader.cpp +++ b/libs/gltfio/src/AssetLoader.cpp @@ -122,6 +122,10 @@ struct FAssetLoader : public AssetLoader { return mMaterials->getMaterialsCount(); } + NameComponentManager* getNames() const noexcept { + return mNameManager; + } + const Material* const* getMaterials() const noexcept { return mMaterials->getMaterials(); } @@ -1024,6 +1028,10 @@ size_t AssetLoader::getMaterialsCount() const noexcept { return upcast(this)->getMaterialsCount(); } +NameComponentManager* AssetLoader::getNames() const noexcept { + return upcast(this)->getNames(); +} + const Material* const* AssetLoader::getMaterials() const noexcept { return upcast(this)->getMaterials(); }