From 410bfe010f0b8f17780549476251a2feb8171190 Mon Sep 17 00:00:00 2001 From: John Wedgbury Date: Fri, 11 May 2018 18:05:17 +0200 Subject: [PATCH] Allowing transparency in ImageRenderer --- .gitignore | 18 +- .idea/misc.xml | 9 +- .idea/modules.xml | 2 +- README.md | 4 +- app/build.gradle | 8 +- arcore-location/arcore-location.iml | 90 +- arcore-location/build.gradle | 16 +- .../outputs/aar/arcore-location-debug.aar | Bin 41874 -> 44624 bytes .../appoly/arcorelocation/LocationScene.java | 3 - .../rendering/ImageRenderer.java | 13 + build.gradle | 2 +- ...om_github_appoly_ARCore_Location_0_1_0.xml | 10 - ..._android_gms_play_services_base_15_0_0.xml | 10 - ...roid_gms_play_services_basement_15_0_0.xml | 10 - ...roid_gms_play_services_location_15_0_0.xml | 10 - ...lay_services_places_placereport_15_0_0.xml | 10 - ...android_gms_play_services_tasks_15_0_0.xml | 10 - .../android_arch_core_common_1_0_0_jar.xml | 11 - ...ndroid_arch_lifecycle_common_1_0_3_jar.xml | 11 - .../android_arch_lifecycle_runtime_1_0_3.xml | 12 - ...upport_animated_vector_drawable_27_0_2.xml | 12 - ...om_android_support_appcompat_v7_27_0_2.xml | 12 - .../com_android_support_design_27_0_2.xml | 12 - ...android_support_recyclerview_v7_27_0_2.xml | 12 - ...support_support_annotations_27_0_2_jar.xml | 11 - ..._android_support_support_compat_27_0_2.xml | 12 - ...android_support_support_core_ui_27_0_2.xml | 12 - ...roid_support_support_core_utils_27_0_2.xml | 12 - ...ndroid_support_support_fragment_27_0_2.xml | 12 - ...id_support_support_media_compat_27_0_2.xml | 12 - .../com_android_support_support_v4_27_0_2.xml | 12 - ...support_support_vector_drawable_27_0_2.xml | 12 - .../com_android_support_transition_27_0_2.xml | 12 - ...om_github_appoly_ARCore_Location_0_0_3.xml | 10 - .../libraries/com_google_ar_core_0_91_0.xml | 10 - .../libraries/de_javagl_obj_0_2_1_jar.xml | 11 - examples/hello_ar_java/.idea/misc.xml | 9 +- examples/hello_ar_java/.idea/workspace.xml | 1622 ++++++++--------- examples/hello_ar_java/app/build.gradle | 8 +- .../app/libs/arcore-location-debug.aar | Bin 0 -> 45068 bytes .../app/src/main/assets/eiffel.jpg | Bin 231880 -> 0 bytes .../app/src/main/assets/eiffel.png | Bin 0 -> 23312 bytes .../java/helloar/HelloArActivity.java | 2 +- .../profile-2018-03-28-12-27-31-257.json | 1 - .../profile-2018-03-28-12-27-31-257.rawproto | Bin 3362 -> 0 bytes .../profile-2018-03-28-12-36-47-838.json | 1 - .../profile-2018-03-28-12-36-47-838.rawproto | Bin 1462 -> 0 bytes .../profile-2018-03-28-12-37-11-920.json | 1 - .../profile-2018-03-28-12-37-11-920.rawproto | Bin 1662 -> 0 bytes .../profile-2018-03-28-12-37-14-213.json | 1 - .../profile-2018-03-28-12-37-14-213.rawproto | Bin 1462 -> 0 bytes .../profile-2018-03-28-12-38-47-470.json | 1 - .../profile-2018-03-28-12-38-47-470.rawproto | Bin 1464 -> 0 bytes .../profile-2018-03-28-12-39-26-162.json | 1 - .../profile-2018-03-28-12-39-26-162.rawproto | Bin 1462 -> 0 bytes .../profile-2018-03-28-12-39-43-919.json | 1 - .../profile-2018-03-28-12-39-43-919.rawproto | Bin 1463 -> 0 bytes .../profile-2018-03-28-12-40-53-764.json | 1 - .../profile-2018-03-28-12-40-53-764.rawproto | Bin 1462 -> 0 bytes .../profile-2018-03-28-12-41-11-376.json | 1 - .../profile-2018-03-28-12-41-11-376.rawproto | Bin 1461 -> 0 bytes .../profile-2018-03-28-12-41-18-488.json | 1 - .../profile-2018-03-28-12-41-18-488.rawproto | Bin 4166 -> 0 bytes .../profile-2018-03-28-12-41-25-765.json | 1 - .../profile-2018-03-28-12-41-25-765.rawproto | Bin 1660 -> 0 bytes .../profile-2018-03-28-12-41-27-924.json | 1 - .../profile-2018-03-28-12-41-27-924.rawproto | Bin 1460 -> 0 bytes .../profile-2018-03-28-12-45-02-338.json | 1 - .../profile-2018-03-28-12-45-02-338.rawproto | Bin 1463 -> 0 bytes .../profile-2018-03-28-12-45-07-876.json | 1 - .../profile-2018-03-28-12-45-07-876.rawproto | Bin 1462 -> 0 bytes .../profile-2018-03-28-12-47-14-006.json | 1 - .../profile-2018-03-28-12-47-14-006.rawproto | Bin 8413 -> 0 bytes .../profile-2018-03-28-12-47-59-687.json | 1 - .../profile-2018-03-28-12-47-59-687.rawproto | Bin 1462 -> 0 bytes .../profile-2018-03-28-12-48-03-849.json | 1 - .../profile-2018-03-28-12-48-03-849.rawproto | Bin 4165 -> 0 bytes .../profile-2018-03-28-12-49-01-350.json | 1 - .../profile-2018-03-28-12-49-01-350.rawproto | Bin 6795 -> 0 bytes .../profile-2018-03-28-12-49-55-913.json | 1 - .../profile-2018-03-28-12-49-55-913.rawproto | Bin 6027 -> 0 bytes .../build/intermediates/dex-cache/cache.xml | 195 -- .../com/android/support/group-index.xml | 89 - .../com/google/ar/group-index.xml | 4 - .../lint-cache/maven.google/master-index.xml | 40 - examples/hello_ar_java/local.properties | 19 +- 86 files changed, 840 insertions(+), 1612 deletions(-) delete mode 100644 examples/hello_ar_java/.idea/libraries/Gradle__com_github_appoly_ARCore_Location_0_1_0.xml delete mode 100644 examples/hello_ar_java/.idea/libraries/Gradle__com_google_android_gms_play_services_base_15_0_0.xml delete mode 100644 examples/hello_ar_java/.idea/libraries/Gradle__com_google_android_gms_play_services_basement_15_0_0.xml delete mode 100644 examples/hello_ar_java/.idea/libraries/Gradle__com_google_android_gms_play_services_location_15_0_0.xml delete mode 100644 examples/hello_ar_java/.idea/libraries/Gradle__com_google_android_gms_play_services_places_placereport_15_0_0.xml delete mode 100644 examples/hello_ar_java/.idea/libraries/Gradle__com_google_android_gms_play_services_tasks_15_0_0.xml delete mode 100644 examples/hello_ar_java/.idea/libraries/android_arch_core_common_1_0_0_jar.xml delete mode 100644 examples/hello_ar_java/.idea/libraries/android_arch_lifecycle_common_1_0_3_jar.xml delete mode 100644 examples/hello_ar_java/.idea/libraries/android_arch_lifecycle_runtime_1_0_3.xml delete mode 100644 examples/hello_ar_java/.idea/libraries/com_android_support_animated_vector_drawable_27_0_2.xml delete mode 100644 examples/hello_ar_java/.idea/libraries/com_android_support_appcompat_v7_27_0_2.xml delete mode 100644 examples/hello_ar_java/.idea/libraries/com_android_support_design_27_0_2.xml delete mode 100644 examples/hello_ar_java/.idea/libraries/com_android_support_recyclerview_v7_27_0_2.xml delete mode 100644 examples/hello_ar_java/.idea/libraries/com_android_support_support_annotations_27_0_2_jar.xml delete mode 100644 examples/hello_ar_java/.idea/libraries/com_android_support_support_compat_27_0_2.xml delete mode 100644 examples/hello_ar_java/.idea/libraries/com_android_support_support_core_ui_27_0_2.xml delete mode 100644 examples/hello_ar_java/.idea/libraries/com_android_support_support_core_utils_27_0_2.xml delete mode 100644 examples/hello_ar_java/.idea/libraries/com_android_support_support_fragment_27_0_2.xml delete mode 100644 examples/hello_ar_java/.idea/libraries/com_android_support_support_media_compat_27_0_2.xml delete mode 100644 examples/hello_ar_java/.idea/libraries/com_android_support_support_v4_27_0_2.xml delete mode 100644 examples/hello_ar_java/.idea/libraries/com_android_support_support_vector_drawable_27_0_2.xml delete mode 100644 examples/hello_ar_java/.idea/libraries/com_android_support_transition_27_0_2.xml delete mode 100644 examples/hello_ar_java/.idea/libraries/com_github_appoly_ARCore_Location_0_0_3.xml delete mode 100644 examples/hello_ar_java/.idea/libraries/com_google_ar_core_0_91_0.xml delete mode 100644 examples/hello_ar_java/.idea/libraries/de_javagl_obj_0_2_1_jar.xml create mode 100644 examples/hello_ar_java/app/libs/arcore-location-debug.aar delete mode 100644 examples/hello_ar_java/app/src/main/assets/eiffel.jpg create mode 100644 examples/hello_ar_java/app/src/main/assets/eiffel.png delete mode 100644 examples/hello_ar_java/build/android-profile/profile-2018-03-28-12-27-31-257.json delete mode 100644 examples/hello_ar_java/build/android-profile/profile-2018-03-28-12-27-31-257.rawproto delete mode 100644 examples/hello_ar_java/build/android-profile/profile-2018-03-28-12-36-47-838.json delete mode 100644 examples/hello_ar_java/build/android-profile/profile-2018-03-28-12-36-47-838.rawproto delete mode 100644 examples/hello_ar_java/build/android-profile/profile-2018-03-28-12-37-11-920.json delete mode 100644 examples/hello_ar_java/build/android-profile/profile-2018-03-28-12-37-11-920.rawproto delete mode 100644 examples/hello_ar_java/build/android-profile/profile-2018-03-28-12-37-14-213.json delete mode 100644 examples/hello_ar_java/build/android-profile/profile-2018-03-28-12-37-14-213.rawproto delete mode 100644 examples/hello_ar_java/build/android-profile/profile-2018-03-28-12-38-47-470.json delete mode 100644 examples/hello_ar_java/build/android-profile/profile-2018-03-28-12-38-47-470.rawproto delete mode 100644 examples/hello_ar_java/build/android-profile/profile-2018-03-28-12-39-26-162.json delete mode 100644 examples/hello_ar_java/build/android-profile/profile-2018-03-28-12-39-26-162.rawproto delete mode 100644 examples/hello_ar_java/build/android-profile/profile-2018-03-28-12-39-43-919.json delete mode 100644 examples/hello_ar_java/build/android-profile/profile-2018-03-28-12-39-43-919.rawproto delete mode 100644 examples/hello_ar_java/build/android-profile/profile-2018-03-28-12-40-53-764.json delete mode 100644 examples/hello_ar_java/build/android-profile/profile-2018-03-28-12-40-53-764.rawproto delete mode 100644 examples/hello_ar_java/build/android-profile/profile-2018-03-28-12-41-11-376.json delete mode 100644 examples/hello_ar_java/build/android-profile/profile-2018-03-28-12-41-11-376.rawproto delete mode 100644 examples/hello_ar_java/build/android-profile/profile-2018-03-28-12-41-18-488.json delete mode 100644 examples/hello_ar_java/build/android-profile/profile-2018-03-28-12-41-18-488.rawproto delete mode 100644 examples/hello_ar_java/build/android-profile/profile-2018-03-28-12-41-25-765.json delete mode 100644 examples/hello_ar_java/build/android-profile/profile-2018-03-28-12-41-25-765.rawproto delete mode 100644 examples/hello_ar_java/build/android-profile/profile-2018-03-28-12-41-27-924.json delete mode 100644 examples/hello_ar_java/build/android-profile/profile-2018-03-28-12-41-27-924.rawproto delete mode 100644 examples/hello_ar_java/build/android-profile/profile-2018-03-28-12-45-02-338.json delete mode 100644 examples/hello_ar_java/build/android-profile/profile-2018-03-28-12-45-02-338.rawproto delete mode 100644 examples/hello_ar_java/build/android-profile/profile-2018-03-28-12-45-07-876.json delete mode 100644 examples/hello_ar_java/build/android-profile/profile-2018-03-28-12-45-07-876.rawproto delete mode 100644 examples/hello_ar_java/build/android-profile/profile-2018-03-28-12-47-14-006.json delete mode 100644 examples/hello_ar_java/build/android-profile/profile-2018-03-28-12-47-14-006.rawproto delete mode 100644 examples/hello_ar_java/build/android-profile/profile-2018-03-28-12-47-59-687.json delete mode 100644 examples/hello_ar_java/build/android-profile/profile-2018-03-28-12-47-59-687.rawproto delete mode 100644 examples/hello_ar_java/build/android-profile/profile-2018-03-28-12-48-03-849.json delete mode 100644 examples/hello_ar_java/build/android-profile/profile-2018-03-28-12-48-03-849.rawproto delete mode 100644 examples/hello_ar_java/build/android-profile/profile-2018-03-28-12-49-01-350.json delete mode 100644 examples/hello_ar_java/build/android-profile/profile-2018-03-28-12-49-01-350.rawproto delete mode 100644 examples/hello_ar_java/build/android-profile/profile-2018-03-28-12-49-55-913.json delete mode 100644 examples/hello_ar_java/build/android-profile/profile-2018-03-28-12-49-55-913.rawproto delete mode 100644 examples/hello_ar_java/build/intermediates/dex-cache/cache.xml delete mode 100644 examples/hello_ar_java/build/intermediates/lint-cache/maven.google/com/android/support/group-index.xml delete mode 100644 examples/hello_ar_java/build/intermediates/lint-cache/maven.google/com/google/ar/group-index.xml delete mode 100644 examples/hello_ar_java/build/intermediates/lint-cache/maven.google/master-index.xml diff --git a/.gitignore b/.gitignore index 39fb081..01404d2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,23 @@ *.iml .gradle /local.properties -/.idea/workspace.xml -/.idea/libraries +.idea +/.idea +.idea/* .DS_Store /build +build +build/* /captures .externalNativeBuild +/examples/hello_ar_java/.idea +/examples/hello_ar_java/.gradle +/examples/hello_ar_java/app/build +/app/build +examples/hello_ar_java/local.properties +arcore-location/build +arcore-location/build/* +/arcore-location/build +/arcore-location/build/* +.idea/misc.xml +.idea/modules.xml diff --git a/.idea/misc.xml b/.idea/misc.xml index 75dac50..99202cc 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -5,11 +5,12 @@ @@ -24,7 +25,7 @@ - + diff --git a/.idea/modules.xml b/.idea/modules.xml index 6206408..4800926 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -2,7 +2,7 @@ - + diff --git a/README.md b/README.md index fcda9d2..badafe0 100644 --- a/README.md +++ b/README.md @@ -24,10 +24,10 @@ allprojects { ``` #### Step 2. -Add the ARCore-Location dependency. Replace `0.1.0` with the latest release from the [releases tab on Github](https://github.com/appoly/ARCore-Location/releases) +Add the ARCore-Location dependency. Replace `0.2.0` with the latest release from the [releases tab on Github](https://github.com/appoly/ARCore-Location/releases) ``` dependencies { - compile 'com.github.appoly:ARCore-Location:0.1.0' + compile 'com.github.appoly:ARCore-Location:0.2.0' } ``` diff --git a/app/build.gradle b/app/build.gradle index a708ddd..3de97ec 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -19,10 +19,10 @@ android { } dependencies { - implementation fileTree(dir: 'libs', include: ['*.jar']) + implementation fileTree(include: ['*.jar'], dir: 'libs') implementation 'com.android.support:appcompat-v7:26.1.0' testImplementation 'junit:junit:4.12' - androidTestImplementation 'com.android.support.test:runner:1.0.1' - androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1' - implementation 'com.google.android.gms:play-services-location:15.0.0' + androidTestImplementation 'com.android.support.test:runner:1.0.2' + androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' + implementation 'com.google.android.gms:play-services-location:15.0.1' } diff --git a/arcore-location/arcore-location.iml b/arcore-location/arcore-location.iml index fe6e5c6..6beffa9 100644 --- a/arcore-location/arcore-location.iml +++ b/arcore-location/arcore-location.iml @@ -71,13 +71,6 @@ - - - - - - - @@ -85,46 +78,69 @@ + + + + + + + + - - + + - + + + + + + + + + - + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/arcore-location/build.gradle b/arcore-location/build.gradle index ee9d883..1d36603 100644 --- a/arcore-location/build.gradle +++ b/arcore-location/build.gradle @@ -8,8 +8,8 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:3.1.0' - classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1' + classpath 'com.android.tools.build:gradle:3.1.2' + classpath 'com.github.dcendents:android-maven-gradle-plugin:2.0' classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.2' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files @@ -55,14 +55,12 @@ android { } dependencies { - implementation fileTree(dir: 'libs', include: ['*.jar']) - - implementation 'com.google.ar:core:1.1.0' + implementation fileTree(include: ['*.jar'], dir: 'libs') + implementation 'com.google.ar:core:1.2.0' implementation 'com.android.support:appcompat-v7:26.1.0' testImplementation 'junit:junit:4.12' - androidTestImplementation 'com.android.support.test:runner:1.0.1' - androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1' - implementation 'com.google.android.gms:play-services-location:15.0.0' - + androidTestImplementation 'com.android.support.test:runner:1.0.2' + androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' + implementation 'com.google.android.gms:play-services-location:15.0.1' } diff --git a/arcore-location/build/outputs/aar/arcore-location-debug.aar b/arcore-location/build/outputs/aar/arcore-location-debug.aar index 67b44c19449425b69d3865607353f38b2540c235..aeeb7934b3cd9da8fd062dd7b73413792ae5f23d 100644 GIT binary patch delta 24245 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 delta 21488 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 b000000000G0PR5vp_4JL83r+-0000052*U% diff --git a/arcore-location/src/main/java/uk/co/appoly/arcorelocation/LocationScene.java b/arcore-location/src/main/java/uk/co/appoly/arcorelocation/LocationScene.java index cf4b04f..4078cdf 100644 --- a/arcore-location/src/main/java/uk/co/appoly/arcorelocation/LocationScene.java +++ b/arcore-location/src/main/java/uk/co/appoly/arcorelocation/LocationScene.java @@ -2,10 +2,7 @@ import android.app.Activity; import android.content.Context; -import android.opengl.Matrix; import android.os.Handler; -import android.util.DisplayMetrics; -import android.util.Log; import com.google.ar.core.Anchor; import com.google.ar.core.Frame; diff --git a/arcore-location/src/main/java/uk/co/appoly/arcorelocation/rendering/ImageRenderer.java b/arcore-location/src/main/java/uk/co/appoly/arcorelocation/rendering/ImageRenderer.java index 2de701a..e08d976 100644 --- a/arcore-location/src/main/java/uk/co/appoly/arcorelocation/rendering/ImageRenderer.java +++ b/arcore-location/src/main/java/uk/co/appoly/arcorelocation/rendering/ImageRenderer.java @@ -89,6 +89,7 @@ public void createOnGlThread(Context context, int distance) { Bitmap textureBitmap = null; try { textureBitmap = BitmapFactory.decodeStream(context.getAssets().open(pngName)); + textureBitmap.setHasAlpha(true); // Adjusts size of 3D shape to keep image aspect correct float adjustedWidth = ((float)textureBitmap.getWidth() / 250) / 2; @@ -111,6 +112,11 @@ public void createOnGlThread(Context context, int distance) { GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER, GLES20.GL_NEAREST); GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER, GLES20.GL_NEAREST); + + // Transparency + GLES20.glBlendColor(0,0,0,0); + GLES20.glBlendFunc(GLES20.GL_SRC_ALPHA, GLES20.GL_ONE_MINUS_SRC_ALPHA); + GLES20.glEnable(GLES20.GL_BLEND); GLUtils.texImage2D(GLES20.GL_TEXTURE_2D, 0, textureBitmap, 0); GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, 0); @@ -208,8 +214,15 @@ public void draw(float[] cameraView, float[] cameraPerspective, float lightInten // Attach the object texture. GLES20.glActiveTexture(GLES20.GL_TEXTURE0); GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, mTextures[0]); + + // enable transparency + GLES20.glEnable(GLES20.GL_BLEND); + GLES20.glBlendFunc(GLES20.GL_SRC_ALPHA, GLES20.GL_ONE_MINUS_SRC_ALPHA); + GLES20.glBlendColor(0,0,0,0); + GLES20.glUniform1i(mTextureUniform, 0); GLES20.glUniformMatrix4fv(mModelViewProjectionUniform, 1, false, mModelViewProjectionMatrix, 0); + // Set the vertex positions. GLES20.glVertexAttribPointer( mQuadPositionParam, COORDS_PER_VERTEX, GLES20.GL_FLOAT, false, 0, mQuadVertices); diff --git a/build.gradle b/build.gradle index 88d94bc..ac591a4 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:3.1.1' + classpath 'com.android.tools.build:gradle:3.1.2' classpath 'com.github.dcendents:android-maven-gradle-plugin:2.0' diff --git a/examples/hello_ar_java/.idea/libraries/Gradle__com_github_appoly_ARCore_Location_0_1_0.xml b/examples/hello_ar_java/.idea/libraries/Gradle__com_github_appoly_ARCore_Location_0_1_0.xml deleted file mode 100644 index 813a9e9..0000000 --- a/examples/hello_ar_java/.idea/libraries/Gradle__com_github_appoly_ARCore_Location_0_1_0.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/examples/hello_ar_java/.idea/libraries/Gradle__com_google_android_gms_play_services_base_15_0_0.xml b/examples/hello_ar_java/.idea/libraries/Gradle__com_google_android_gms_play_services_base_15_0_0.xml deleted file mode 100644 index 1cbf717..0000000 --- a/examples/hello_ar_java/.idea/libraries/Gradle__com_google_android_gms_play_services_base_15_0_0.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/examples/hello_ar_java/.idea/libraries/Gradle__com_google_android_gms_play_services_basement_15_0_0.xml b/examples/hello_ar_java/.idea/libraries/Gradle__com_google_android_gms_play_services_basement_15_0_0.xml deleted file mode 100644 index 033ad3a..0000000 --- a/examples/hello_ar_java/.idea/libraries/Gradle__com_google_android_gms_play_services_basement_15_0_0.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/examples/hello_ar_java/.idea/libraries/Gradle__com_google_android_gms_play_services_location_15_0_0.xml b/examples/hello_ar_java/.idea/libraries/Gradle__com_google_android_gms_play_services_location_15_0_0.xml deleted file mode 100644 index 6d78e1d..0000000 --- a/examples/hello_ar_java/.idea/libraries/Gradle__com_google_android_gms_play_services_location_15_0_0.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/examples/hello_ar_java/.idea/libraries/Gradle__com_google_android_gms_play_services_places_placereport_15_0_0.xml b/examples/hello_ar_java/.idea/libraries/Gradle__com_google_android_gms_play_services_places_placereport_15_0_0.xml deleted file mode 100644 index 1c2e864..0000000 --- a/examples/hello_ar_java/.idea/libraries/Gradle__com_google_android_gms_play_services_places_placereport_15_0_0.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/examples/hello_ar_java/.idea/libraries/Gradle__com_google_android_gms_play_services_tasks_15_0_0.xml b/examples/hello_ar_java/.idea/libraries/Gradle__com_google_android_gms_play_services_tasks_15_0_0.xml deleted file mode 100644 index 58907ac..0000000 --- a/examples/hello_ar_java/.idea/libraries/Gradle__com_google_android_gms_play_services_tasks_15_0_0.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/examples/hello_ar_java/.idea/libraries/android_arch_core_common_1_0_0_jar.xml b/examples/hello_ar_java/.idea/libraries/android_arch_core_common_1_0_0_jar.xml deleted file mode 100644 index ee12c7f..0000000 --- a/examples/hello_ar_java/.idea/libraries/android_arch_core_common_1_0_0_jar.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/examples/hello_ar_java/.idea/libraries/android_arch_lifecycle_common_1_0_3_jar.xml b/examples/hello_ar_java/.idea/libraries/android_arch_lifecycle_common_1_0_3_jar.xml deleted file mode 100644 index 57c763e..0000000 --- a/examples/hello_ar_java/.idea/libraries/android_arch_lifecycle_common_1_0_3_jar.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/examples/hello_ar_java/.idea/libraries/android_arch_lifecycle_runtime_1_0_3.xml b/examples/hello_ar_java/.idea/libraries/android_arch_lifecycle_runtime_1_0_3.xml deleted file mode 100644 index f7de03c..0000000 --- a/examples/hello_ar_java/.idea/libraries/android_arch_lifecycle_runtime_1_0_3.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/examples/hello_ar_java/.idea/libraries/com_android_support_animated_vector_drawable_27_0_2.xml b/examples/hello_ar_java/.idea/libraries/com_android_support_animated_vector_drawable_27_0_2.xml deleted file mode 100644 index 4e729dd..0000000 --- a/examples/hello_ar_java/.idea/libraries/com_android_support_animated_vector_drawable_27_0_2.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/examples/hello_ar_java/.idea/libraries/com_android_support_appcompat_v7_27_0_2.xml b/examples/hello_ar_java/.idea/libraries/com_android_support_appcompat_v7_27_0_2.xml deleted file mode 100644 index 3ae35ac..0000000 --- a/examples/hello_ar_java/.idea/libraries/com_android_support_appcompat_v7_27_0_2.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/examples/hello_ar_java/.idea/libraries/com_android_support_design_27_0_2.xml b/examples/hello_ar_java/.idea/libraries/com_android_support_design_27_0_2.xml deleted file mode 100644 index a95cf3a..0000000 --- a/examples/hello_ar_java/.idea/libraries/com_android_support_design_27_0_2.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/examples/hello_ar_java/.idea/libraries/com_android_support_recyclerview_v7_27_0_2.xml b/examples/hello_ar_java/.idea/libraries/com_android_support_recyclerview_v7_27_0_2.xml deleted file mode 100644 index 0a386d6..0000000 --- a/examples/hello_ar_java/.idea/libraries/com_android_support_recyclerview_v7_27_0_2.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/examples/hello_ar_java/.idea/libraries/com_android_support_support_annotations_27_0_2_jar.xml b/examples/hello_ar_java/.idea/libraries/com_android_support_support_annotations_27_0_2_jar.xml deleted file mode 100644 index 393e070..0000000 --- a/examples/hello_ar_java/.idea/libraries/com_android_support_support_annotations_27_0_2_jar.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/examples/hello_ar_java/.idea/libraries/com_android_support_support_compat_27_0_2.xml b/examples/hello_ar_java/.idea/libraries/com_android_support_support_compat_27_0_2.xml deleted file mode 100644 index 6f0f154..0000000 --- a/examples/hello_ar_java/.idea/libraries/com_android_support_support_compat_27_0_2.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/examples/hello_ar_java/.idea/libraries/com_android_support_support_core_ui_27_0_2.xml b/examples/hello_ar_java/.idea/libraries/com_android_support_support_core_ui_27_0_2.xml deleted file mode 100644 index f764a4c..0000000 --- a/examples/hello_ar_java/.idea/libraries/com_android_support_support_core_ui_27_0_2.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/examples/hello_ar_java/.idea/libraries/com_android_support_support_core_utils_27_0_2.xml b/examples/hello_ar_java/.idea/libraries/com_android_support_support_core_utils_27_0_2.xml deleted file mode 100644 index 2fae8ff..0000000 --- a/examples/hello_ar_java/.idea/libraries/com_android_support_support_core_utils_27_0_2.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/examples/hello_ar_java/.idea/libraries/com_android_support_support_fragment_27_0_2.xml b/examples/hello_ar_java/.idea/libraries/com_android_support_support_fragment_27_0_2.xml deleted file mode 100644 index 603e6d8..0000000 --- a/examples/hello_ar_java/.idea/libraries/com_android_support_support_fragment_27_0_2.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/examples/hello_ar_java/.idea/libraries/com_android_support_support_media_compat_27_0_2.xml b/examples/hello_ar_java/.idea/libraries/com_android_support_support_media_compat_27_0_2.xml deleted file mode 100644 index 6ffaabb..0000000 --- a/examples/hello_ar_java/.idea/libraries/com_android_support_support_media_compat_27_0_2.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/examples/hello_ar_java/.idea/libraries/com_android_support_support_v4_27_0_2.xml b/examples/hello_ar_java/.idea/libraries/com_android_support_support_v4_27_0_2.xml deleted file mode 100644 index 765fb5f..0000000 --- a/examples/hello_ar_java/.idea/libraries/com_android_support_support_v4_27_0_2.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/examples/hello_ar_java/.idea/libraries/com_android_support_support_vector_drawable_27_0_2.xml b/examples/hello_ar_java/.idea/libraries/com_android_support_support_vector_drawable_27_0_2.xml deleted file mode 100644 index ce3d02b..0000000 --- a/examples/hello_ar_java/.idea/libraries/com_android_support_support_vector_drawable_27_0_2.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/examples/hello_ar_java/.idea/libraries/com_android_support_transition_27_0_2.xml b/examples/hello_ar_java/.idea/libraries/com_android_support_transition_27_0_2.xml deleted file mode 100644 index af77466..0000000 --- a/examples/hello_ar_java/.idea/libraries/com_android_support_transition_27_0_2.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/examples/hello_ar_java/.idea/libraries/com_github_appoly_ARCore_Location_0_0_3.xml b/examples/hello_ar_java/.idea/libraries/com_github_appoly_ARCore_Location_0_0_3.xml deleted file mode 100644 index 3d0c147..0000000 --- a/examples/hello_ar_java/.idea/libraries/com_github_appoly_ARCore_Location_0_0_3.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/examples/hello_ar_java/.idea/libraries/com_google_ar_core_0_91_0.xml b/examples/hello_ar_java/.idea/libraries/com_google_ar_core_0_91_0.xml deleted file mode 100644 index d633117..0000000 --- a/examples/hello_ar_java/.idea/libraries/com_google_ar_core_0_91_0.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/examples/hello_ar_java/.idea/libraries/de_javagl_obj_0_2_1_jar.xml b/examples/hello_ar_java/.idea/libraries/de_javagl_obj_0_2_1_jar.xml deleted file mode 100644 index f6cd358..0000000 --- a/examples/hello_ar_java/.idea/libraries/de_javagl_obj_0_2_1_jar.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/examples/hello_ar_java/.idea/misc.xml b/examples/hello_ar_java/.idea/misc.xml index 3963879..c0f68ed 100644 --- a/examples/hello_ar_java/.idea/misc.xml +++ b/examples/hello_ar_java/.idea/misc.xml @@ -5,11 +5,12 @@ @@ -24,7 +25,7 @@ - + diff --git a/examples/hello_ar_java/.idea/workspace.xml b/examples/hello_ar_java/.idea/workspace.xml index 99c9fdc..88b7425 100644 --- a/examples/hello_ar_java/.idea/workspace.xml +++ b/examples/hello_ar_java/.idea/workspace.xml @@ -1,7 +1,10 @@ + + - + - @@ -23,105 +25,23 @@ - - - - - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - + - - - - - + + + @@ -131,12 +51,12 @@ - @@ -1863,7 +2081,7 @@ - + @@ -1872,58 +2090,43 @@ + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + +