diff --git a/android/filament-android/src/main/cpp/TransformManager.cpp b/android/filament-android/src/main/cpp/TransformManager.cpp index b329776289..c4b2d3895d 100644 --- a/android/filament-android/src/main/cpp/TransformManager.cpp +++ b/android/filament-android/src/main/cpp/TransformManager.cpp @@ -86,6 +86,13 @@ Java_com_google_android_filament_TransformManager_nSetParent(JNIEnv*, jclass, (TransformManager::Instance) newParent); } +extern "C" JNIEXPORT jint JNICALL +Java_com_google_android_filament_TransformManager_nGetParent(JNIEnv*, jclass, + jlong nativeTransformManager, jint i) { + TransformManager* tm = (TransformManager*) nativeTransformManager; + return tm->getParent((TransformManager::Instance) i).getId(); +} + extern "C" JNIEXPORT void JNICALL Java_com_google_android_filament_TransformManager_nSetTransform(JNIEnv* env, jclass, jlong nativeTransformManager, jint i, diff --git a/android/filament-android/src/main/java/com/google/android/filament/TransformManager.java b/android/filament-android/src/main/java/com/google/android/filament/TransformManager.java index 3611ee6c1e..e67f882e80 100644 --- a/android/filament-android/src/main/java/com/google/android/filament/TransformManager.java +++ b/android/filament-android/src/main/java/com/google/android/filament/TransformManager.java @@ -140,6 +140,19 @@ import androidx.annotation.Size; nSetParent(mNativeObject, i, newParent); } + /** + * Returns the actual parent entity of an {@link EntityInstance} originally defined + * by {@link #setParent(int, int)}. + * + * @param i the {@link EntityInstance} of the transform component to get the parent from. + * @return the parent {@link Entity}. + * @see #getInstance + */ + @Entity + public int getParent(@EntityInstance int i) { + return nGetParent(mNativeObject, i); + } + /** * Sets a local transform of a transform component. *
This operation can be slow if the hierarchy of transform is too deep, and this @@ -241,6 +254,7 @@ import androidx.annotation.Size; private static native int nCreateArray(long mNativeObject, int entity, int parent, float[] localTransform); private static native void nDestroy(long nativeTransformManager, int entity); private static native void nSetParent(long nativeTransformManager, int i, int newParent); + private static native int nGetParent(long nativeTransformManager, int i); private static native void nSetTransform(long nativeTransformManager, int i, float[] localTransform); private static native void nGetTransform(long nativeTransformManager, int i, float[] outLocalTransform); private static native void nGetWorldTransform(long nativeTransformManager, int i, float[] outWorldTransform);