From c76643377330977dacd5447613cf2b65f9627700 Mon Sep 17 00:00:00 2001
From: jlacoche <jeremy.lacoche@orange.com>
Date: Thu, 4 Jul 2024 18:22:22 +0200
Subject: [PATCH] Add ARCoreExtensions for ARCloudAnchor support

---
 Assets/ExtensionsAssets.meta                  |  8 ++++
 Assets/ExtensionsAssets/Runtime.meta          |  8 ++++
 .../Runtime/RuntimeConfig.asset               | 16 +++++++
 .../Runtime/RuntimeConfig.asset.meta          |  8 ++++
 Assets/Plugins.meta                           |  8 ++++
 Assets/Plugins/Android.meta                   |  8 ++++
 .../Plugins/Android/gradleTemplate.properties |  8 ++++
 .../Android/gradleTemplate.properties.meta    |  7 ++++
 Assets/Plugins/Android/mainTemplate.gradle    | 42 +++++++++++++++++++
 .../Plugins/Android/mainTemplate.gradle.meta  |  7 ++++
 Assets/Plugins/Android/proguard-user.txt      | 34 +++++++++++++++
 Assets/Plugins/Android/proguard-user.txt.meta |  7 ++++
 .../Plugins/Android/settingsTemplate.gradle   | 23 ++++++++++
 .../Android/settingsTemplate.gradle.meta      |  7 ++++
 Assets/Scenes/ExampleGLTF.unity               | 18 ++++++++
 Packages/manifest.json                        |  1 +
 Packages/packages-lock.json                   | 11 +++++
 ...orld-analysis-arfoundation-wrapper-package |  2 +-
 .../ARCoreExtensionsProjectSettings.json      |  1 +
 ProjectSettings/GvhProjectSettings.xml        |  6 +++
 ProjectSettings/ProjectSettings.asset         | 19 +++++----
 ProjectSettings/ProjectVersion.txt            |  4 +-
 22 files changed, 242 insertions(+), 11 deletions(-)
 create mode 100644 Assets/ExtensionsAssets.meta
 create mode 100644 Assets/ExtensionsAssets/Runtime.meta
 create mode 100644 Assets/ExtensionsAssets/Runtime/RuntimeConfig.asset
 create mode 100644 Assets/ExtensionsAssets/Runtime/RuntimeConfig.asset.meta
 create mode 100644 Assets/Plugins.meta
 create mode 100644 Assets/Plugins/Android.meta
 create mode 100644 Assets/Plugins/Android/gradleTemplate.properties
 create mode 100644 Assets/Plugins/Android/gradleTemplate.properties.meta
 create mode 100644 Assets/Plugins/Android/mainTemplate.gradle
 create mode 100644 Assets/Plugins/Android/mainTemplate.gradle.meta
 create mode 100644 Assets/Plugins/Android/proguard-user.txt
 create mode 100644 Assets/Plugins/Android/proguard-user.txt.meta
 create mode 100644 Assets/Plugins/Android/settingsTemplate.gradle
 create mode 100644 Assets/Plugins/Android/settingsTemplate.gradle.meta
 create mode 100644 ProjectSettings/ARCoreExtensionsProjectSettings.json
 create mode 100644 ProjectSettings/GvhProjectSettings.xml

diff --git a/Assets/ExtensionsAssets.meta b/Assets/ExtensionsAssets.meta
new file mode 100644
index 0000000..7e21545
--- /dev/null
+++ b/Assets/ExtensionsAssets.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: d062081e3b400dd418220a7142176266
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/ExtensionsAssets/Runtime.meta b/Assets/ExtensionsAssets/Runtime.meta
new file mode 100644
index 0000000..1bbd2c4
--- /dev/null
+++ b/Assets/ExtensionsAssets/Runtime.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 9e1ff1f3b5ba92f4d86926401688d58b
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/ExtensionsAssets/Runtime/RuntimeConfig.asset b/Assets/ExtensionsAssets/Runtime/RuntimeConfig.asset
new file mode 100644
index 0000000..f3645de
--- /dev/null
+++ b/Assets/ExtensionsAssets/Runtime/RuntimeConfig.asset
@@ -0,0 +1,16 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: e33f0ae6a91754a3d8a1f4e1a8ddd0d6, type: 3}
+  m_Name: RuntimeConfig
+  m_EditorClassIdentifier: 
+  IOSCloudServicesApiKey: 
+  ModulesEnabled: []
diff --git a/Assets/ExtensionsAssets/Runtime/RuntimeConfig.asset.meta b/Assets/ExtensionsAssets/Runtime/RuntimeConfig.asset.meta
new file mode 100644
index 0000000..11f03cf
--- /dev/null
+++ b/Assets/ExtensionsAssets/Runtime/RuntimeConfig.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: d990dc556983b2e47b9135ba8b6bc596
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 11400000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Plugins.meta b/Assets/Plugins.meta
new file mode 100644
index 0000000..4bcc0ce
--- /dev/null
+++ b/Assets/Plugins.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 95d37853f2a3a3c4ba99f8f0ce30e4cc
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Plugins/Android.meta b/Assets/Plugins/Android.meta
new file mode 100644
index 0000000..8be1f9c
--- /dev/null
+++ b/Assets/Plugins/Android.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 93447c1cd87a04c4e8ede8f05bbbbb94
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Plugins/Android/gradleTemplate.properties b/Assets/Plugins/Android/gradleTemplate.properties
new file mode 100644
index 0000000..8704680
--- /dev/null
+++ b/Assets/Plugins/Android/gradleTemplate.properties
@@ -0,0 +1,8 @@
+org.gradle.jvmargs=-Xmx**JVM_HEAP_SIZE**M
+org.gradle.parallel=true
+unityStreamingAssets=**STREAMING_ASSETS**
+# Android Resolver Properties Start
+android.useAndroidX=true
+android.enableJetifier=true
+# Android Resolver Properties End
+**ADDITIONAL_PROPERTIES**
diff --git a/Assets/Plugins/Android/gradleTemplate.properties.meta b/Assets/Plugins/Android/gradleTemplate.properties.meta
new file mode 100644
index 0000000..80e4aaf
--- /dev/null
+++ b/Assets/Plugins/Android/gradleTemplate.properties.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: f953870bbb8409444967ac8f9cecd8fa
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Plugins/Android/mainTemplate.gradle b/Assets/Plugins/Android/mainTemplate.gradle
new file mode 100644
index 0000000..91b28dc
--- /dev/null
+++ b/Assets/Plugins/Android/mainTemplate.gradle
@@ -0,0 +1,42 @@
+apply plugin: 'com.android.library'
+**APPLY_PLUGINS**
+
+dependencies {
+    implementation fileTree(dir: 'libs', include: ['*.jar'])
+    implementation 'com.google.android.gms:play-services-auth:16+'
+**DEPS**}
+
+android {
+    ndkPath "**NDKPATH**"
+
+    compileSdkVersion **APIVERSION**
+    buildToolsVersion '**BUILDTOOLS**'
+
+    compileOptions {
+        sourceCompatibility JavaVersion.VERSION_11
+        targetCompatibility JavaVersion.VERSION_11
+    }
+
+    defaultConfig {
+        minSdkVersion **MINSDKVERSION**
+        targetSdkVersion **TARGETSDKVERSION**
+        ndk {
+            abiFilters **ABIFILTERS**
+        }
+        versionCode **VERSIONCODE**
+        versionName '**VERSIONNAME**'
+        consumerProguardFiles 'proguard-unity.txt'**USER_PROGUARD**
+    }
+
+    lintOptions {
+        abortOnError false
+    }
+
+    aaptOptions {
+        noCompress = **BUILTIN_NOCOMPRESS** + unityStreamingAssets.tokenize(', ')
+        ignoreAssetsPattern = "!.svn:!.git:!.ds_store:!*.scc:!CVS:!thumbs.db:!picasa.ini:!*~"
+    }**PACKAGING_OPTIONS**
+}
+**IL_CPP_BUILD_SETUP**
+**SOURCE_BUILD_SETUP**
+**EXTERNAL_SOURCES**
diff --git a/Assets/Plugins/Android/mainTemplate.gradle.meta b/Assets/Plugins/Android/mainTemplate.gradle.meta
new file mode 100644
index 0000000..a936dae
--- /dev/null
+++ b/Assets/Plugins/Android/mainTemplate.gradle.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: ddfa0d4d92970ab4fbd8c80cc6c9f138
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Plugins/Android/proguard-user.txt b/Assets/Plugins/Android/proguard-user.txt
new file mode 100644
index 0000000..4ed074c
--- /dev/null
+++ b/Assets/Plugins/Android/proguard-user.txt
@@ -0,0 +1,34 @@
+### Module Progurad Rules starts ###
+
+## Default ##
+-keep class com.unity3d.plugin.* { *; }
+
+## AuthenticationModule ##
+-keep class com.google.android.gms.common.** { *; }
+                    -keep class com.google.android.gms.auth.** { *; }
+                    -keep class com.google.android.gms.tasks.** { *; }
+
+### Module Progurad Rules ends ###
+### Module Progurad Rules starts ###
+
+## Default ##
+-keep class com.unity3d.plugin.* { *; }
+
+## AuthenticationModule ##
+-keep class com.google.android.gms.common.** { *; }
+                    -keep class com.google.android.gms.auth.** { *; }
+                    -keep class com.google.android.gms.tasks.** { *; }
+
+### Module Progurad Rules ends ###
+
+### Module Progurad Rules starts ###
+
+## Default ##
+-keep class com.unity3d.plugin.* { *; }
+
+## AuthenticationModule ##
+-keep class com.google.android.gms.common.** { *; }
+                    -keep class com.google.android.gms.auth.** { *; }
+                    -keep class com.google.android.gms.tasks.** { *; }
+
+### Module Progurad Rules ends ###
diff --git a/Assets/Plugins/Android/proguard-user.txt.meta b/Assets/Plugins/Android/proguard-user.txt.meta
new file mode 100644
index 0000000..a2a31a0
--- /dev/null
+++ b/Assets/Plugins/Android/proguard-user.txt.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 502aa553b75944c44945bec0fd146e34
+TextScriptImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Plugins/Android/settingsTemplate.gradle b/Assets/Plugins/Android/settingsTemplate.gradle
new file mode 100644
index 0000000..939fa3d
--- /dev/null
+++ b/Assets/Plugins/Android/settingsTemplate.gradle
@@ -0,0 +1,23 @@
+pluginManagement {
+    repositories {
+        **ARTIFACTORYREPOSITORY**
+        gradlePluginPortal()
+        google()
+        mavenCentral()
+    }
+}
+
+include ':launcher', ':unityLibrary'
+**INCLUDES**
+
+dependencyResolutionManagement {
+    repositoriesMode.set(RepositoriesMode.PREFER_SETTINGS)
+    repositories {
+        **ARTIFACTORYREPOSITORY**
+        google()
+        mavenCentral()
+        flatDir {
+            dirs "${project(':unityLibrary').projectDir}/libs"
+        }
+    }
+}
diff --git a/Assets/Plugins/Android/settingsTemplate.gradle.meta b/Assets/Plugins/Android/settingsTemplate.gradle.meta
new file mode 100644
index 0000000..3514639
--- /dev/null
+++ b/Assets/Plugins/Android/settingsTemplate.gradle.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 9eafb3bc564e7ae459ce3a0b2839b8fa
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Scenes/ExampleGLTF.unity b/Assets/Scenes/ExampleGLTF.unity
index 0f23bd7..e0388d7 100644
--- a/Assets/Scenes/ExampleGLTF.unity
+++ b/Assets/Scenes/ExampleGLTF.unity
@@ -450,6 +450,7 @@ GameObject:
   m_Component:
   - component: {fileID: 334744957}
   - component: {fileID: 334744956}
+  - component: {fileID: 334744958}
   m_Layer: 0
   m_Name: XR Origin
   m_TagString: Untagged
@@ -490,6 +491,23 @@ Transform:
   - {fileID: 789254998}
   m_Father: {fileID: 0}
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &334744958
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 334744955}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 1b50ad3f5d9024549b0a549c5a03a084, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  Session: {fileID: 1210990017}
+  Origin: {fileID: 334744956}
+  CameraManager: {fileID: 13101076}
+  ARCoreExtensionsConfig: {fileID: 11400000, guid: cf9adc83079e8e1479b1a105856aab0e, type: 2}
+  CameraConfigFilter: {fileID: 0}
 --- !u!1 &789254997
 GameObject:
   m_ObjectHideFlags: 0
diff --git a/Packages/manifest.json b/Packages/manifest.json
index 4619fac..ae8e363 100644
--- a/Packages/manifest.json
+++ b/Packages/manifest.json
@@ -1,5 +1,6 @@
 {
   "dependencies": {
+	"com.google.ar.core.arfoundation.extensions": "https://github.com/google-ar/arcore-unity-extensions.git",	
     "com.unity.ai.navigation": "1.1.5",
     "com.unity.cloud.gltfast": "6.4.0",
     "com.unity.collab-proxy": "2.3.1",
diff --git a/Packages/packages-lock.json b/Packages/packages-lock.json
index 29b7877..e8e6ecf 100644
--- a/Packages/packages-lock.json
+++ b/Packages/packages-lock.json
@@ -1,5 +1,16 @@
 {
   "dependencies": {
+    "com.google.ar.core.arfoundation.extensions": {
+      "version": "https://github.com/google-ar/arcore-unity-extensions.git",
+      "depth": 0,
+      "source": "git",
+      "dependencies": {
+        "com.unity.xr.arfoundation": "4.1.5",
+        "com.unity.xr.arcore": "4.1.5",
+        "com.unity.xr.arkit": "4.1.5"
+      },
+      "hash": "09f3de423232cb087ab450f72a2ec56eedd9c465"
+    },
     "com.unity.ai.navigation": {
       "version": "1.1.5",
       "depth": 0,
diff --git a/Packages/unity-world-analysis-arfoundation-wrapper-package b/Packages/unity-world-analysis-arfoundation-wrapper-package
index 25a53c5..172068e 160000
--- a/Packages/unity-world-analysis-arfoundation-wrapper-package
+++ b/Packages/unity-world-analysis-arfoundation-wrapper-package
@@ -1 +1 @@
-Subproject commit 25a53c5037e645114c9930a54c58c0e1e95d6653
+Subproject commit 172068e0fdea526713b4f01c0b95ee0efc02d5a4
diff --git a/ProjectSettings/ARCoreExtensionsProjectSettings.json b/ProjectSettings/ARCoreExtensionsProjectSettings.json
new file mode 100644
index 0000000..2a3a485
--- /dev/null
+++ b/ProjectSettings/ARCoreExtensionsProjectSettings.json
@@ -0,0 +1 @@
+{"Version":"1.44.0","IsIOSSupportEnabled":false,"AndroidAuthenticationStrategySetting":1,"AndroidCloudServicesApiKey":"","IOSAuthenticationStrategySetting":0,"IOSCloudServicesApiKey":"","CloudAnchorEnabled":true,"GeospatialEnabled":false,"GeospatialEditorEnabled":false,"SemanticsIosEnabled":false}
\ No newline at end of file
diff --git a/ProjectSettings/GvhProjectSettings.xml b/ProjectSettings/GvhProjectSettings.xml
new file mode 100644
index 0000000..6349bef
--- /dev/null
+++ b/ProjectSettings/GvhProjectSettings.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<projectSettings>
+  <projectSetting name="Google.PackageManagerResolver.VerboseLoggingEnabled" value="False" />
+  <projectSetting name="Google.VersionHandler.VerboseLoggingEnabled" value="False" />
+  <projectSetting name="GooglePlayServices.UseJetifier" value="True" />
+</projectSettings>
\ No newline at end of file
diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset
index af69ea9..3b85a52 100644
--- a/ProjectSettings/ProjectSettings.asset
+++ b/ProjectSettings/ProjectSettings.asset
@@ -141,10 +141,11 @@ PlayerSettings:
   tvOSBundleVersion: 1.0
   bundleVersion: 1.0
   preloadedAssets:
-  - {fileID: 1027667839647070798, guid: 8f63412dcece46d4d8ff48fb8fc6c31e, type: 2}
+  - {fileID: 5732245400625790027, guid: 8f63412dcece46d4d8ff48fb8fc6c31e, type: 2}
   - {fileID: 11400000, guid: 1ef61a6a59edbba4b81751378314e1d3, type: 2}
-  - {fileID: 4800000, guid: e7c77f6eaab324a819efdc13b8125a39, type: 3}
-  - {fileID: 4800000, guid: 6743a50a812740be8c0aa3fccc46fae9, type: 3}
+  - {fileID: 4800000, guid: c9f956787b1d945e7b36e0516201fc76, type: 3}
+  - {fileID: 4800000, guid: 0945859e5a1034c2cb6dce53cb4fb899, type: 3}
+  - {fileID: 11400000, guid: d990dc556983b2e47b9135ba8b6bc596, type: 2}
   metroInputSource: 0
   wsaTransparentSwapchain: 0
   m_HolographicPauseOnTrackingLoss: 1
@@ -166,6 +167,7 @@ PlayerSettings:
   androidMaxAspectRatio: 2.1
   applicationIdentifier:
     Android: com.DefaultCompany.unityworldanalysisvalidation
+    Standalone: com.DefaultCompany.unity-world-analysis-validation
     iPhone: com.DefaultCompany.unity-world-analysis-validation
   buildNumber:
     Standalone: 0
@@ -258,12 +260,12 @@ PlayerSettings:
   templateDefaultScene: 
   useCustomMainManifest: 0
   useCustomLauncherManifest: 0
-  useCustomMainGradleTemplate: 0
+  useCustomMainGradleTemplate: 1
   useCustomLauncherGradleManifest: 0
   useCustomBaseGradleTemplate: 0
-  useCustomGradlePropertiesTemplate: 0
+  useCustomGradlePropertiesTemplate: 1
   useCustomGradleSettingsTemplate: 0
-  useCustomProguardFile: 0
+  useCustomProguardFile: 1
   AndroidTargetArchitectures: 2
   AndroidTargetDevices: 0
   AndroidSplashScreenScale: 0
@@ -771,6 +773,7 @@ PlayerSettings:
   webGLMemoryGeometricGrowthCap: 96
   webGLPowerPreference: 2
   scriptingDefineSymbols:
+    Android: ARCORE_USE_ARF_5
     iPhone: UNITY_XR_ARKIT_LOADER_ENABLED
   additionalCompilerArguments: {}
   platformArchitecture: {}
@@ -791,7 +794,7 @@ PlayerSettings:
   m_RenderingPath: 1
   m_MobileRenderingPath: 1
   metroPackageName: unity-world-analysis-validation
-  metroPackageVersion: 
+  metroPackageVersion: 1.0.0.0
   metroCertificatePath: 
   metroCertificatePassword: 
   metroCertificateSubject: 
@@ -799,7 +802,7 @@ PlayerSettings:
   metroCertificateNotAfter: 0000000000000000
   metroApplicationDescription: unity-world-analysis-validation
   wsaImages: {}
-  metroTileShortName: 
+  metroTileShortName: unity-world-analysis-validation
   metroTileShowName: 0
   metroMediumTileShowName: 0
   metroLargeTileShowName: 0
diff --git a/ProjectSettings/ProjectVersion.txt b/ProjectSettings/ProjectVersion.txt
index 307ccd3..629f7d4 100644
--- a/ProjectSettings/ProjectVersion.txt
+++ b/ProjectSettings/ProjectVersion.txt
@@ -1,2 +1,2 @@
-m_EditorVersion: 2022.3.19f1
-m_EditorVersionWithRevision: 2022.3.19f1 (244b723c30a6)
+m_EditorVersion: 2022.3.29f1
+m_EditorVersionWithRevision: 2022.3.29f1 (8d510ca76d2b)
-- 
GitLab