diff --git a/UnityExamples/Assets/Plugins/Android/AndroidManifest.xml.meta b/UnityExamples/Assets/Plugins/Android/AndroidManifest.xml.meta index f40aea24..3119de23 100644 --- a/UnityExamples/Assets/Plugins/Android/AndroidManifest.xml.meta +++ b/UnityExamples/Assets/Plugins/Android/AndroidManifest.xml.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 2393f1c60f6984a86840c4b35f7ed04a +guid: aee9217c7e3ab47afa63d020b46d12fd TextScriptImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/UnityUxHelper.meta b/UnityExamples/Assets/Plugins/Android/UnityUxHelper.meta index 9c8d8723..cb8ffc22 100644 --- a/UnityExamples/Assets/Plugins/Android/UnityUxHelper.meta +++ b/UnityExamples/Assets/Plugins/Android/UnityUxHelper.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: bbfa75534417f43268e9ae179792ed9f folderAsset: yes -timeCreated: 1440434055 +timeCreated: 1442017923 licenseType: Pro PluginImporter: serializedVersion: 1 diff --git a/UnityExamples/Assets/Plugins/Android/UnityUxHelper/AndroidManifest.xml.meta b/UnityExamples/Assets/Plugins/Android/UnityUxHelper/AndroidManifest.xml.meta index cc423ec0..230bd227 100644 --- a/UnityExamples/Assets/Plugins/Android/UnityUxHelper/AndroidManifest.xml.meta +++ b/UnityExamples/Assets/Plugins/Android/UnityUxHelper/AndroidManifest.xml.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 96be092a8f1e949deb5fbf3756cfc9c9 +guid: 6c6d3010e866543088a365055cc88f6a DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/UnityUxHelper/bin.meta b/UnityExamples/Assets/Plugins/Android/UnityUxHelper/bin.meta index 3afc8e31..95b77b5b 100644 --- a/UnityExamples/Assets/Plugins/Android/UnityUxHelper/bin.meta +++ b/UnityExamples/Assets/Plugins/Android/UnityUxHelper/bin.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 25c2388b544974aecb4c6922931094ed folderAsset: yes -timeCreated: 1440434055 +timeCreated: 1442017923 licenseType: Pro DefaultImporter: userData: diff --git a/UnityExamples/Assets/Plugins/Android/UnityUxHelper/bin/AndroidManifest.xml.meta b/UnityExamples/Assets/Plugins/Android/UnityUxHelper/bin/AndroidManifest.xml.meta index e29969d6..00359688 100644 --- a/UnityExamples/Assets/Plugins/Android/UnityUxHelper/bin/AndroidManifest.xml.meta +++ b/UnityExamples/Assets/Plugins/Android/UnityUxHelper/bin/AndroidManifest.xml.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: e95dee7639f3f475b87cb131a2810147 +guid: 6d555dad2c4be4e1292a76b9364cd87d DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/UnityUxHelper/bin/R.txt.meta b/UnityExamples/Assets/Plugins/Android/UnityUxHelper/bin/R.txt.meta index c804c35a..56820b89 100644 --- a/UnityExamples/Assets/Plugins/Android/UnityUxHelper/bin/R.txt.meta +++ b/UnityExamples/Assets/Plugins/Android/UnityUxHelper/bin/R.txt.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 881563345bd264b11881bc40daaf9ae8 +guid: 2eb6cda69656641d0b825ad3dff6febe DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/UnityUxHelper/bin/unityuxhelper.jar.meta b/UnityExamples/Assets/Plugins/Android/UnityUxHelper/bin/unityuxhelper.jar.meta index e700d13b..71325c48 100644 --- a/UnityExamples/Assets/Plugins/Android/UnityUxHelper/bin/unityuxhelper.jar.meta +++ b/UnityExamples/Assets/Plugins/Android/UnityUxHelper/bin/unityuxhelper.jar.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: d197180e73e9c44578a8b57b31f30114 +guid: 4e6e2efeeb0d9478aa95ee05b198dba3 DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/UnityUxHelper/libs.meta b/UnityExamples/Assets/Plugins/Android/UnityUxHelper/libs.meta index 2494b8a2..118e6721 100644 --- a/UnityExamples/Assets/Plugins/Android/UnityUxHelper/libs.meta +++ b/UnityExamples/Assets/Plugins/Android/UnityUxHelper/libs.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: c6d1ab5e100fd4c1cbaa8c3979bb0490 folderAsset: yes -timeCreated: 1440434055 +timeCreated: 1442017923 licenseType: Pro DefaultImporter: userData: diff --git a/UnityExamples/Assets/Plugins/Android/UnityUxHelper/libs/android-support-v4.jar.meta b/UnityExamples/Assets/Plugins/Android/UnityUxHelper/libs/android-support-v4.jar.meta index 69e40407..5193ddd6 100644 --- a/UnityExamples/Assets/Plugins/Android/UnityUxHelper/libs/android-support-v4.jar.meta +++ b/UnityExamples/Assets/Plugins/Android/UnityUxHelper/libs/android-support-v4.jar.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: e478d62c80bdc4eb7a4537395e43d2d4 +guid: 55f0632b08862498c85f394869a118fb DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/UnityUxHelper/project.properties.meta b/UnityExamples/Assets/Plugins/Android/UnityUxHelper/project.properties.meta index c177d76e..6eb8d24b 100644 --- a/UnityExamples/Assets/Plugins/Android/UnityUxHelper/project.properties.meta +++ b/UnityExamples/Assets/Plugins/Android/UnityUxHelper/project.properties.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 6ee62fba82b8f46888ed4e238b009f69 +guid: 9cc1c0f2dcce240729e26be670e4e973 DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res.meta b/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res.meta index 61e263d4..b8e5a18f 100644 --- a/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res.meta +++ b/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: bcf361d8b6fc14039888fd80ff8e611d folderAsset: yes -timeCreated: 1440434055 +timeCreated: 1442017923 licenseType: Pro DefaultImporter: userData: diff --git a/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/drawable-hdpi.meta b/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/drawable-hdpi.meta index 648f4039..f061f0b2 100644 --- a/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/drawable-hdpi.meta +++ b/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/drawable-hdpi.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 1e24a1c4d95054282911e1d54cacea4f folderAsset: yes -timeCreated: 1440434055 +timeCreated: 1442017923 licenseType: Pro DefaultImporter: userData: diff --git a/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/drawable-hdpi/ic_launcher.png.meta b/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/drawable-hdpi/ic_launcher.png.meta index f33217f5..c862efa3 100644 --- a/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/drawable-hdpi/ic_launcher.png.meta +++ b/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/drawable-hdpi/ic_launcher.png.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: b4f3404446af948898ae812b258fb9f4 +guid: d20c596774a4c4dbf9a080ed10804b04 DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/drawable-mdpi.meta b/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/drawable-mdpi.meta index 3be90909..10a4dda5 100644 --- a/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/drawable-mdpi.meta +++ b/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/drawable-mdpi.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 653b9f99ddb5a48cbb9c2ab03338c35e folderAsset: yes -timeCreated: 1440434055 +timeCreated: 1442017923 licenseType: Pro DefaultImporter: userData: diff --git a/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/drawable-mdpi/ic_launcher.png.meta b/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/drawable-mdpi/ic_launcher.png.meta index f43e727a..4289b11b 100644 --- a/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/drawable-mdpi/ic_launcher.png.meta +++ b/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/drawable-mdpi/ic_launcher.png.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 1637279f49f194c5f8e590cf47b17b73 +guid: 3e694bf42b6bd47798685767bac0b978 DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/drawable-xhdpi.meta b/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/drawable-xhdpi.meta index 4482490a..1df6b493 100644 --- a/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/drawable-xhdpi.meta +++ b/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/drawable-xhdpi.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: c67d2ba4c8c344c3bbdf42616dae2628 folderAsset: yes -timeCreated: 1440434055 +timeCreated: 1442017923 licenseType: Pro DefaultImporter: userData: diff --git a/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/drawable-xhdpi/ic_launcher.png.meta b/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/drawable-xhdpi/ic_launcher.png.meta index 5b973ea4..dfc31de0 100644 --- a/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/drawable-xhdpi/ic_launcher.png.meta +++ b/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/drawable-xhdpi/ic_launcher.png.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: b8f60f4d776744ac9a2260fd600cbd9e +guid: 4a26853b5cf62487a8f1f4e1b07663ad DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/layout.meta b/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/layout.meta index 2f00bed5..3aa149ed 100644 --- a/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/layout.meta +++ b/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/layout.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: f4c21d0246fba44a48a91408f1603e1a folderAsset: yes -timeCreated: 1440434055 +timeCreated: 1442017923 licenseType: Pro DefaultImporter: userData: diff --git a/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/layout/tango_ux_exceptions.xml.meta b/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/layout/tango_ux_exceptions.xml.meta index 77f21000..f397902e 100644 --- a/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/layout/tango_ux_exceptions.xml.meta +++ b/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/layout/tango_ux_exceptions.xml.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: da4df9c91f687403ba832060664e4b26 +guid: 6f33d20cd90f7446d9cbd768d5e923ab DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/values-v11.meta b/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/values-v11.meta index 66c432dd..fee0b0e2 100644 --- a/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/values-v11.meta +++ b/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/values-v11.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 6b0817b96a4f84df296fec4387514b1a folderAsset: yes -timeCreated: 1440434055 +timeCreated: 1442017923 licenseType: Pro DefaultImporter: userData: diff --git a/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/values-v11/styles.xml.meta b/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/values-v11/styles.xml.meta index 88b82f4e..2f77c63b 100644 --- a/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/values-v11/styles.xml.meta +++ b/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/values-v11/styles.xml.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 8e3a426843d0645578118da081fd63bf +guid: cfc805e2962624383a66d588b45cfc2d DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/values-v14.meta b/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/values-v14.meta index d3158658..18e07c04 100644 --- a/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/values-v14.meta +++ b/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/values-v14.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 32380f61c7e734ba2aabb538325cd629 folderAsset: yes -timeCreated: 1440434055 +timeCreated: 1442017923 licenseType: Pro DefaultImporter: userData: diff --git a/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/values-v14/styles.xml.meta b/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/values-v14/styles.xml.meta index ac9e546a..fcdd2a2d 100644 --- a/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/values-v14/styles.xml.meta +++ b/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/values-v14/styles.xml.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: c9114e3c1745f49f488faa8d96d70ce2 +guid: 619297ad98cd84bf19a2842b567a5802 DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/values.meta b/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/values.meta index 8595ae5f..763d6f62 100644 --- a/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/values.meta +++ b/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/values.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 252ca1f4642954898849d1ee0108d7fc folderAsset: yes -timeCreated: 1440434055 +timeCreated: 1442017923 licenseType: Pro DefaultImporter: userData: diff --git a/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/values/strings.xml.meta b/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/values/strings.xml.meta index c91135b7..261c17ce 100644 --- a/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/values/strings.xml.meta +++ b/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/values/strings.xml.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 65851139a950a4c2fa6e7c217d5bb815 +guid: d2806486e46164c02bf6785d73ccf778 DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/values/styles.xml.meta b/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/values/styles.xml.meta index 147b8eba..4a7b050e 100644 --- a/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/values/styles.xml.meta +++ b/UnityExamples/Assets/Plugins/Android/UnityUxHelper/res/values/styles.xml.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 4e88b9e176b794d97bf91c9f8f60591e +guid: e5c0984fef11742debe9d5c919b78dbf DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/google-unity-wrapper.meta b/UnityExamples/Assets/Plugins/Android/google-unity-wrapper.meta index 4c45c0a9..db983567 100644 --- a/UnityExamples/Assets/Plugins/Android/google-unity-wrapper.meta +++ b/UnityExamples/Assets/Plugins/Android/google-unity-wrapper.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 9cc69a99be59f444c828de9c33f550d0 folderAsset: yes -timeCreated: 1440434026 +timeCreated: 1441729896 licenseType: Pro PluginImporter: serializedVersion: 1 diff --git a/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/AndroidManifest.xml.meta b/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/AndroidManifest.xml.meta index 2a48edc3..d2283f18 100644 --- a/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/AndroidManifest.xml.meta +++ b/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/AndroidManifest.xml.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 1b2d5532425fe4f8789f276b0b6e40c1 +guid: 010949d0386834cdf8c1dbdcda1308f1 DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/bin.meta b/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/bin.meta index f2074317..c6d9ab07 100644 --- a/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/bin.meta +++ b/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/bin.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 82e9828a3b16447768339ef7f7b16f84 folderAsset: yes -timeCreated: 1440434026 +timeCreated: 1441729896 licenseType: Pro DefaultImporter: userData: diff --git a/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/bin/AndroidManifest.xml.meta b/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/bin/AndroidManifest.xml.meta index b3f1f5e9..ee58aec6 100644 --- a/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/bin/AndroidManifest.xml.meta +++ b/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/bin/AndroidManifest.xml.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 65d80c45f7ce943a6a648244a09e5037 +guid: e6c8d012020104b34bf842c47cbe2374 DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/bin/classes.meta b/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/bin/classes.meta index d8c7c78c..847633e8 100644 --- a/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/bin/classes.meta +++ b/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/bin/classes.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 454c743945f934a0ab9888c983bb13a5 folderAsset: yes -timeCreated: 1440434026 +timeCreated: 1441729896 licenseType: Pro DefaultImporter: userData: diff --git a/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/bin/classes/com.meta b/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/bin/classes/com.meta index 3f74b3e8..33e4a019 100644 --- a/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/bin/classes/com.meta +++ b/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/bin/classes/com.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: ea2c7df88ccd945f4bbacfc4f12a5d11 folderAsset: yes -timeCreated: 1440434026 +timeCreated: 1441729896 licenseType: Pro DefaultImporter: userData: diff --git a/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/bin/classes/com/google.meta b/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/bin/classes/com/google.meta index 73f647a5..11378df7 100644 --- a/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/bin/classes/com/google.meta +++ b/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/bin/classes/com/google.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 428eb9ee5870d45608287202591e1a5c folderAsset: yes -timeCreated: 1440434026 +timeCreated: 1441729896 licenseType: Pro DefaultImporter: userData: diff --git a/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/bin/classes/com/google/unity.meta b/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/bin/classes/com/google/unity.meta index 7c4f3ec2..1e6c35eb 100644 --- a/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/bin/classes/com/google/unity.meta +++ b/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/bin/classes/com/google/unity.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 90a02237508e0480fa303a251d339c5a folderAsset: yes -timeCreated: 1440434026 +timeCreated: 1441729896 licenseType: Pro DefaultImporter: userData: diff --git a/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/bin/classes/com/google/unity/BuildConfig.class.meta b/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/bin/classes/com/google/unity/BuildConfig.class.meta index 9a319017..bf922a7b 100644 --- a/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/bin/classes/com/google/unity/BuildConfig.class.meta +++ b/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/bin/classes/com/google/unity/BuildConfig.class.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: bf953503dfbe74063b4fb432a26fc179 +guid: 785445ff5344747cb83bd4d094ddf6d9 DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/bin/classes/com/google/unity/GoogleUnityActivity$1.class.meta b/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/bin/classes/com/google/unity/GoogleUnityActivity$1.class.meta index 2600c45e..a77cff26 100644 --- a/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/bin/classes/com/google/unity/GoogleUnityActivity$1.class.meta +++ b/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/bin/classes/com/google/unity/GoogleUnityActivity$1.class.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 40c864be56b7949f9a73a5d2ff611ace +guid: fe9fd0a42ef3140b792d5d5f8f0b9d3a DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/bin/classes/com/google/unity/GoogleUnityActivity$AndroidLifecycleListener.class.meta b/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/bin/classes/com/google/unity/GoogleUnityActivity$AndroidLifecycleListener.class.meta index 487e3722..4f46780d 100644 --- a/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/bin/classes/com/google/unity/GoogleUnityActivity$AndroidLifecycleListener.class.meta +++ b/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/bin/classes/com/google/unity/GoogleUnityActivity$AndroidLifecycleListener.class.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 9528953aa35b2437b8754b41514827a6 +guid: e431a293812bc429abbc5928dd3731a3 DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/bin/classes/com/google/unity/GoogleUnityActivity.class b/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/bin/classes/com/google/unity/GoogleUnityActivity.class index 301b6060..1842287e 100644 Binary files a/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/bin/classes/com/google/unity/GoogleUnityActivity.class and b/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/bin/classes/com/google/unity/GoogleUnityActivity.class differ diff --git a/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/bin/classes/com/google/unity/GoogleUnityActivity.class.meta b/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/bin/classes/com/google/unity/GoogleUnityActivity.class.meta index 2d5fc03f..489217c0 100644 --- a/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/bin/classes/com/google/unity/GoogleUnityActivity.class.meta +++ b/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/bin/classes/com/google/unity/GoogleUnityActivity.class.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: a852c112fb3364d92a1b79708349d9d7 +guid: ba16012c218b54884b081bd1c9ae30c3 DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/bin/google-unity-wrapper.jar b/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/bin/google-unity-wrapper.jar index a5b38da1..608d1902 100644 Binary files a/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/bin/google-unity-wrapper.jar and b/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/bin/google-unity-wrapper.jar differ diff --git a/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/bin/google-unity-wrapper.jar.meta b/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/bin/google-unity-wrapper.jar.meta index be20c97b..496c7b92 100644 --- a/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/bin/google-unity-wrapper.jar.meta +++ b/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/bin/google-unity-wrapper.jar.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: f1483cc18315e4e8d8b6b090fc49aa85 +guid: d3fe9f572eca84f76a60dc5b4998feb8 DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/project.properties.meta b/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/project.properties.meta index f00a5a80..bcf45f17 100644 --- a/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/project.properties.meta +++ b/UnityExamples/Assets/Plugins/Android/google-unity-wrapper/project.properties.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: aec16ffd81f5d427cbc3310bff0f741c +guid: c782a962409ae409db729f0cb83a0a71 DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-java-lib.meta b/UnityExamples/Assets/Plugins/Android/tango-java-lib.meta index dfe0eadd..eb38f64d 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-java-lib.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-java-lib.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 00eaa1aad644d429c9958627e61314a8 folderAsset: yes -timeCreated: 1440434026 +timeCreated: 1441729896 licenseType: Pro PluginImporter: serializedVersion: 1 diff --git a/UnityExamples/Assets/Plugins/Android/tango-java-lib/AndroidManifest.xml.meta b/UnityExamples/Assets/Plugins/Android/tango-java-lib/AndroidManifest.xml.meta index fdf70ef6..3ca59245 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-java-lib/AndroidManifest.xml.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-java-lib/AndroidManifest.xml.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: d5b7894f472184d69a7ee0ec0268374c +guid: c76e5ec84619b49c6b8ec794dc217a47 DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin.meta b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin.meta index fabe20bb..2027276c 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 5abcd22b5d1924911a6fae133ad45259 folderAsset: yes -timeCreated: 1440434026 +timeCreated: 1441729896 licenseType: Pro DefaultImporter: userData: diff --git a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/AndroidManifest.xml.meta b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/AndroidManifest.xml.meta index 55fcaf18..f15ab991 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/AndroidManifest.xml.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/AndroidManifest.xml.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: b1c7735ba96a54f998a4007a1f75ca54 +guid: 8124236e17d3c4b6fad5063b4934f375 DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes.meta b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes.meta index 1e3450e0..a83647f9 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 9f48ceeaedcdd4ed6a129398670afb0a folderAsset: yes -timeCreated: 1440434026 +timeCreated: 1441729896 licenseType: Pro DefaultImporter: userData: diff --git a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com.meta b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com.meta index fce9ee7c..d8d0153b 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 182695de821454fd6921c64666cf1af3 folderAsset: yes -timeCreated: 1440434026 +timeCreated: 1441729896 licenseType: Pro DefaultImporter: userData: diff --git a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google.meta b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google.meta index 7f456090..303ff4f7 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 15246131f5b974cf2b9d14d2ec46a8da folderAsset: yes -timeCreated: 1440434026 +timeCreated: 1441729896 licenseType: Pro DefaultImporter: userData: diff --git a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap.meta b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap.meta index dd722910..777b53d0 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: d197c0d282e174063b125216c6a22404 folderAsset: yes -timeCreated: 1440434026 +timeCreated: 1441729896 licenseType: Pro DefaultImporter: userData: diff --git a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tango.meta b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tango.meta index 65c2755f..02c05918 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tango.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tango.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 5bef54d15b8424c17b3bb533d11b41b1 folderAsset: yes -timeCreated: 1440434027 +timeCreated: 1441729897 licenseType: Pro DefaultImporter: userData: diff --git a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tango/TangoJNINative.class.meta b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tango/TangoJNINative.class.meta index 2aefedf3..2da5d03e 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tango/TangoJNINative.class.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tango/TangoJNINative.class.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 2490437add03d40a7a0c984bc54056f6 +guid: 97cd2e33ae0d443c18d49f57106cd23c DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tango/package.html.meta b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tango/package.html.meta index 42b40f38..18ceee92 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tango/package.html.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tango/package.html.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 1eec34b98b7cf4387a20757c77e3c831 +guid: 1dc6954c7cdf342b48bce1baa97aa58d DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangohelperlib.meta b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangohelperlib.meta index 92894c0c..1b4ee7ca 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangohelperlib.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangohelperlib.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: afcff3dda4cde4f24868b9249d0e0afe folderAsset: yes -timeCreated: 1440434027 +timeCreated: 1441729897 licenseType: Pro DefaultImporter: userData: diff --git a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangohelperlib/BuildConfig.class.meta b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangohelperlib/BuildConfig.class.meta index 619da901..c75d7199 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangohelperlib/BuildConfig.class.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangohelperlib/BuildConfig.class.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: bae8ed9f3926b4d6a907aae2969596e6 +guid: e8090888be7514efe892f2b6f1adc538 DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice.meta b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice.meta index c7dd1ce3..013dd7bd 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 42dc9c9efcbc3474887eb565bc4d4ba7 folderAsset: yes -timeCreated: 1440434026 +timeCreated: 1441729897 licenseType: Pro DefaultImporter: userData: diff --git a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/Tango$OnTangoUpdateListener.class.meta b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/Tango$OnTangoUpdateListener.class.meta index e465876f..51dda841 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/Tango$OnTangoUpdateListener.class.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/Tango$OnTangoUpdateListener.class.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: c1ca5aac36e654a64b64ac0f5743507b +guid: 2fe866aa5c0914e4bb0ca908d2866651 DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/Tango.class.meta b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/Tango.class.meta index 6a8624ad..11bdb125 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/Tango.class.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/Tango.class.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 4b3952f55fde14ab58a5fdb46d10999b +guid: 710b1e326fb6b4559a270ce6c16a9c8a DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoAreaDescriptionMetaData$1.class.meta b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoAreaDescriptionMetaData$1.class.meta index a5350a3c..2034a314 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoAreaDescriptionMetaData$1.class.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoAreaDescriptionMetaData$1.class.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: c3b398ec08679419daf50d8ed8f80f90 +guid: e4e0b14dadcb84abd8d1fc97e53510e5 DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoAreaDescriptionMetaData.class.meta b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoAreaDescriptionMetaData.class.meta index d642899d..0f511dcb 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoAreaDescriptionMetaData.class.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoAreaDescriptionMetaData.class.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 8cd0a2c31d5304b9d985b2b11b70ad09 +guid: d9efe2d29da43420994602c56bd0f980 DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoCameraIntrinsics$1.class.meta b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoCameraIntrinsics$1.class.meta index b4376a2d..3fbf9b77 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoCameraIntrinsics$1.class.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoCameraIntrinsics$1.class.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: f3f7aeda4b1b14463a45bf6f120e6d1f +guid: b55d99d03cb3e4de7a05a448ec668eb4 DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoCameraIntrinsics.class.meta b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoCameraIntrinsics.class.meta index aad32399..4c4f45af 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoCameraIntrinsics.class.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoCameraIntrinsics.class.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 849fe963df06c458392f592c188999c5 +guid: f16898839a1fd4a4d90141f7f2cd64fc DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoCameraPreview$MainRenderer.class.meta b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoCameraPreview$MainRenderer.class.meta index 626adc24..d6edf2bd 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoCameraPreview$MainRenderer.class.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoCameraPreview$MainRenderer.class.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 14eb58945af0241daad2258d8ae12f30 +guid: 9cb0685aa07be40ba8f59b4a54ac2acc DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoCameraPreview.class.meta b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoCameraPreview.class.meta index 9d0f830e..d7677666 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoCameraPreview.class.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoCameraPreview.class.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 62df46368d74d4bafbf99f5032e32189 +guid: e05139d87a337464899fc67de62a8c5b DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoConfig$1.class.meta b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoConfig$1.class.meta index 3a25ce93..78e97748 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoConfig$1.class.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoConfig$1.class.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: a8489cc3995514794b55a8df596ad66c +guid: d479066d728004e56bb614cae23e0372 DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoConfig.class.meta b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoConfig.class.meta index 1dc7ef33..8c1459d3 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoConfig.class.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoConfig.class.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 10278985a171c4843850ad3c6ea0c679 +guid: cdfd513f0da294dfeb6e277a2e247d8e DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoCoordinateFramePair$1.class.meta b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoCoordinateFramePair$1.class.meta index dd003118..91d3dc6f 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoCoordinateFramePair$1.class.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoCoordinateFramePair$1.class.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 4727a1939eb224110955aa533f477faa +guid: 4fed07366463d440c917e3198b59c519 DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoCoordinateFramePair.class.meta b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoCoordinateFramePair.class.meta index 4ce6f176..bbae1475 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoCoordinateFramePair.class.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoCoordinateFramePair.class.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: a0d28fe1d922642b3804624aad124a1d +guid: e664a63c7a2764c828e1bd6cd28b9c6c DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoErrorException.class.meta b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoErrorException.class.meta index 80f05148..d1f1f1b1 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoErrorException.class.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoErrorException.class.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 1980257d5d54b42529d57296e5b97ae2 +guid: a4d96fa5d5e2a43ea985ce88a84308de DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoEvent$1.class.meta b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoEvent$1.class.meta index 98e2b462..572a1ad4 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoEvent$1.class.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoEvent$1.class.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: ba912b0506033495cbc5377f2d18b625 +guid: 8ab405c03e3054536ae2aed4428d9777 DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoEvent.class.meta b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoEvent.class.meta index 2a99867e..3b911a7f 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoEvent.class.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoEvent.class.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: d488e7d41356f4cbca37c0247ec27d54 +guid: 3be78d234a1204e11be5fe3a06578124 DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoException.class.meta b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoException.class.meta index 0114a7d9..150d33c5 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoException.class.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoException.class.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: d8b62cc2d1019455185190c9b42099d2 +guid: a0a8134aea21e470b923f9c33db14975 DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoInvalidException.class.meta b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoInvalidException.class.meta index 1af23d61..6a0041bb 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoInvalidException.class.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoInvalidException.class.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: cd0a282196f7749c8ae8891e1af2b835 +guid: b2b91dfc3eebe4c839eee22c856ff72a DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoOutOfDateException.class.meta b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoOutOfDateException.class.meta index 7cc60bbb..ef5fe1d0 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoOutOfDateException.class.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoOutOfDateException.class.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: f76f46da606ee4771bfb55496dd95a47 +guid: a327fef468d914eeaa0779155b83644f DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoPoseData$1.class.meta b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoPoseData$1.class.meta index 4eeaa3b0..1aea3956 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoPoseData$1.class.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoPoseData$1.class.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 1327ae508ab0c446993c66e5d26e42f0 +guid: 74a20ace050674c57b65823dab0a1ee7 DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoPoseData.class.meta b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoPoseData.class.meta index 6c7a9427..9023b70a 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoPoseData.class.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoPoseData.class.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: d15aec76a2b48497894e55a44a340aab +guid: 10538c1229f9548ada766e74dda97eb5 DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoTextureCameraPreview.class.meta b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoTextureCameraPreview.class.meta index ed0e690f..2a2f6978 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoTextureCameraPreview.class.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoTextureCameraPreview.class.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: ebb225fee42114515bf60608ed53c743 +guid: 9c34a9a831cc44713b1d277d3359ae78 DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoXyzIjData$1.class.meta b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoXyzIjData$1.class.meta index 49d9ced2..15aefe14 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoXyzIjData$1.class.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoXyzIjData$1.class.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 7f5acc348bfe2419991081ace83ac40a +guid: c6cff3eba9c164a9e9362498aac19a55 DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoXyzIjData.class.meta b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoXyzIjData.class.meta index bb0a0417..14ec5b89 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoXyzIjData.class.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TangoXyzIjData.class.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: d4ba66c146f434d6c8b4fd34192afe51 +guid: ddf58140c7c544c178ef57fd9ebeeecc DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TextureRenderer.class.meta b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TextureRenderer.class.meta index 4c1702b4..577dbfc7 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TextureRenderer.class.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/TextureRenderer.class.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 1930517bc24214c108e3f893f4cfcedc +guid: 4b99a24cf90774bf38890a1f6b0b4923 DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/experimental.meta b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/experimental.meta index 88dbdec7..d425a09c 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/experimental.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/experimental.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 80cb9c621c08c41d1bf457684e061a41 folderAsset: yes -timeCreated: 1440434027 +timeCreated: 1441729897 licenseType: Pro DefaultImporter: userData: diff --git a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/experimental/TangoMesh.class.meta b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/experimental/TangoMesh.class.meta index 009c4d5b..c98a7c98 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/experimental/TangoMesh.class.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/experimental/TangoMesh.class.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: e646aaf04da9e446aa66f5f2477b1f13 +guid: 2ce7caed0a60d43e98959a438b0755dd DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/experimental/TangoMeshVector$1.class.meta b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/experimental/TangoMeshVector$1.class.meta index f486daf6..9b18b96a 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/experimental/TangoMeshVector$1.class.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/experimental/TangoMeshVector$1.class.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 4693f475583944c799fa66889c3bbeb7 +guid: bc3c12013bcfa40d685cc0b0c31ce2a4 DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/experimental/TangoMeshVector.class.meta b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/experimental/TangoMeshVector.class.meta index a040d795..bc6f821f 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/experimental/TangoMeshVector.class.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/experimental/TangoMeshVector.class.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 4fdf93d38e5064b5ba1f0ac343d8a245 +guid: 3a94a008411f94cf88680b80645511fd DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/experimental/TangoMesher$OnTangoMeshVectorAvailableListener.class.meta b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/experimental/TangoMesher$OnTangoMeshVectorAvailableListener.class.meta index 6a4e7690..48ca68c1 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/experimental/TangoMesher$OnTangoMeshVectorAvailableListener.class.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/experimental/TangoMesher$OnTangoMeshVectorAvailableListener.class.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 1058263ca4174482faefc29c12330ed3 +guid: 33b9dce346d454bd8a6778c4357360df DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/experimental/TangoMesher.class.meta b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/experimental/TangoMesher.class.meta index c124dcb1..b8422040 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/experimental/TangoMesher.class.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/experimental/TangoMesher.class.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 7f04c6d1efefe4f79a4f9e06ae51c99a +guid: f8224aa5cd8df4455b2dd8fd0b538b71 DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/experimental/package-info.class.meta b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/experimental/package-info.class.meta index ceac2dfb..af10151a 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/experimental/package-info.class.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/experimental/package-info.class.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 7a1830f47966940e79d04674cbdaa927 +guid: 62f54bc87ea3448f09e9b0ef45bae13f DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/package-info.class.meta b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/package-info.class.meta index 189faa11..23586182 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/package-info.class.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/classes/com/google/atap/tangoservice/package-info.class.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: a363f371df05f48ce8b00b19ad7c3e49 +guid: 39f2b943c70f24c4a9b7d7b363ff8a79 DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/tango-java-lib.jar.meta b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/tango-java-lib.jar.meta index aa863a10..836171b5 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/tango-java-lib.jar.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-java-lib/bin/tango-java-lib.jar.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 822f7e76a5ade4ecb8965c14547e4c8c +guid: db01d5ef27bd342b8a5d040ba6c0b5d5 DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-java-lib/project.properties.meta b/UnityExamples/Assets/Plugins/Android/tango-java-lib/project.properties.meta index 17045ce3..ff331003 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-java-lib/project.properties.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-java-lib/project.properties.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: a8986f554db7b41fd8ccb9b8c90ae15e +guid: 99d7490486c3f48a88c73a4f03b0b9cd DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-unity-helper.meta b/UnityExamples/Assets/Plugins/Android/tango-unity-helper.meta index 7d8a7880..fb0ea6b8 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-unity-helper.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-unity-helper.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: c0a826487b8304d3288512aff8443656 folderAsset: yes -timeCreated: 1440434026 +timeCreated: 1441729896 licenseType: Pro PluginImporter: serializedVersion: 1 diff --git a/UnityExamples/Assets/Plugins/Android/tango-unity-helper/AndroidManifest.xml.meta b/UnityExamples/Assets/Plugins/Android/tango-unity-helper/AndroidManifest.xml.meta index cfba6ac7..f0f6c175 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-unity-helper/AndroidManifest.xml.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-unity-helper/AndroidManifest.xml.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 94b83cfccb1d54475b95a1c29c7fc624 +guid: 57e284a9afc434e04809cb2a5b9e47a4 DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-unity-helper/bin.meta b/UnityExamples/Assets/Plugins/Android/tango-unity-helper/bin.meta index 94f218e4..aa7b6ac9 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-unity-helper/bin.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-unity-helper/bin.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 721c052a60a1a430685b336ac7c0e42c folderAsset: yes -timeCreated: 1440434026 +timeCreated: 1441729896 licenseType: Pro DefaultImporter: userData: diff --git a/UnityExamples/Assets/Plugins/Android/tango-unity-helper/bin/AndroidManifest.xml.meta b/UnityExamples/Assets/Plugins/Android/tango-unity-helper/bin/AndroidManifest.xml.meta index ee61d85c..3415a917 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-unity-helper/bin/AndroidManifest.xml.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-unity-helper/bin/AndroidManifest.xml.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: b8bc4a5f8e2ec4775bcdf586c5c4fd28 +guid: bffdb30cce99943269b62b8acb1a846a DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-unity-helper/bin/classes.meta b/UnityExamples/Assets/Plugins/Android/tango-unity-helper/bin/classes.meta index 63152f47..77dfe5b2 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-unity-helper/bin/classes.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-unity-helper/bin/classes.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: fff2a47d7b2134cb8a0b88b47449a730 folderAsset: yes -timeCreated: 1440434026 +timeCreated: 1441729896 licenseType: Pro DefaultImporter: userData: diff --git a/UnityExamples/Assets/Plugins/Android/tango-unity-helper/bin/classes/com.meta b/UnityExamples/Assets/Plugins/Android/tango-unity-helper/bin/classes/com.meta index 12557f0e..50afff46 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-unity-helper/bin/classes/com.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-unity-helper/bin/classes/com.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: eace03ad54b694e10b9708ddb0eb4179 folderAsset: yes -timeCreated: 1440434026 +timeCreated: 1441729896 licenseType: Pro DefaultImporter: userData: diff --git a/UnityExamples/Assets/Plugins/Android/tango-unity-helper/bin/classes/com/projecttango.meta b/UnityExamples/Assets/Plugins/Android/tango-unity-helper/bin/classes/com/projecttango.meta index c6ece1e4..50946c1d 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-unity-helper/bin/classes/com/projecttango.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-unity-helper/bin/classes/com/projecttango.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 199d8b96150bb4600a7b0ec8e3064346 folderAsset: yes -timeCreated: 1440434026 +timeCreated: 1441729896 licenseType: Pro DefaultImporter: userData: diff --git a/UnityExamples/Assets/Plugins/Android/tango-unity-helper/bin/classes/com/projecttango/unity.meta b/UnityExamples/Assets/Plugins/Android/tango-unity-helper/bin/classes/com/projecttango/unity.meta index cb5db0b3..a03abb25 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-unity-helper/bin/classes/com/projecttango/unity.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-unity-helper/bin/classes/com/projecttango/unity.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: d33fb341feda1484ea48e92c5118223e folderAsset: yes -timeCreated: 1440434026 +timeCreated: 1441729896 licenseType: Pro DefaultImporter: userData: diff --git a/UnityExamples/Assets/Plugins/Android/tango-unity-helper/bin/classes/com/projecttango/unity/BuildConfig.class.meta b/UnityExamples/Assets/Plugins/Android/tango-unity-helper/bin/classes/com/projecttango/unity/BuildConfig.class.meta index 28fcf369..36c80fa4 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-unity-helper/bin/classes/com/projecttango/unity/BuildConfig.class.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-unity-helper/bin/classes/com/projecttango/unity/BuildConfig.class.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 993db61fd9d11443dbe7ec40cb212824 +guid: 089c24cf83c864db197125dda2d8f7e5 DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-unity-helper/bin/classes/com/projecttango/unity/TangoUnityHelper.class.meta b/UnityExamples/Assets/Plugins/Android/tango-unity-helper/bin/classes/com/projecttango/unity/TangoUnityHelper.class.meta index b3ce26bd..b2182856 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-unity-helper/bin/classes/com/projecttango/unity/TangoUnityHelper.class.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-unity-helper/bin/classes/com/projecttango/unity/TangoUnityHelper.class.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: cfa6b960a4d6243648ce3af817515894 +guid: 887f5f9a7ff0e4b34b33e19f6115b63e DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-unity-helper/bin/tango-unity-helper.jar.meta b/UnityExamples/Assets/Plugins/Android/tango-unity-helper/bin/tango-unity-helper.jar.meta index 6ae17355..166af09c 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-unity-helper/bin/tango-unity-helper.jar.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-unity-helper/bin/tango-unity-helper.jar.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 8c51d50c6162345e2b84997969a724b1 +guid: b5ee2602b4eff496797392ec27c066b4 DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-unity-helper/project.properties.meta b/UnityExamples/Assets/Plugins/Android/tango-unity-helper/project.properties.meta index ca5bc21f..7f37da7d 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-unity-helper/project.properties.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-unity-helper/project.properties.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 28a523326d2d945eebd32e22e4529508 +guid: 7d18dd27032b9411099f8eafdaed41f0 DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library.meta b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library.meta index 20b92f2b..439e994e 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 9cbaeed14f5ba4a128a3178cee73342c folderAsset: yes -timeCreated: 1440434055 +timeCreated: 1442017923 licenseType: Pro PluginImporter: serializedVersion: 1 diff --git a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/AndroidManifest.xml.meta b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/AndroidManifest.xml.meta index 8b7e9ff6..f2d8f8f8 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/AndroidManifest.xml.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/AndroidManifest.xml.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: fb1855a48cf5249b0bb15ed6a59e1135 +guid: c0c55822782244b60a794ed5e30fec90 DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/bin.meta b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/bin.meta index ca9aa555..5a65f8c7 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/bin.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/bin.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 04399f879535b4594ba031c4e7956d1b folderAsset: yes -timeCreated: 1440434055 +timeCreated: 1442017923 licenseType: Pro DefaultImporter: userData: diff --git a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/bin/AndroidManifest.xml b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/bin/AndroidManifest.xml index bfa61674..3f07b937 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/bin/AndroidManifest.xml +++ b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/bin/AndroidManifest.xml @@ -20,7 +20,7 @@ android:versionName="0" > \ No newline at end of file diff --git a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/bin/AndroidManifest.xml.meta b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/bin/AndroidManifest.xml.meta index 1d524006..bdba7185 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/bin/AndroidManifest.xml.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/bin/AndroidManifest.xml.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 5ed42dd55e45d4761b211f28e9fc3d2d +guid: 12af0d8898350430bb2486dedc5c5e3d DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/bin/R.txt b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/bin/R.txt index 61702d1c..a7663cd1 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/bin/R.txt +++ b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/bin/R.txt @@ -1,14 +1,14 @@ int color gray_dark 0x7f040000 -int color tango_blue 0x7f040004 -int color tango_green 0x7f040003 -int color tango_yellow 0x7f040005 -int color text_exception_action_required 0x7f040002 -int color text_exception_description 0x7f040001 +int color tango_blue 0x7f040001 +int color tango_green 0x7f040002 +int color tango_yellow 0x7f040003 +int color text_exception_action_required 0x7f040004 +int color text_exception_description 0x7f040005 int dimen connection_progress_bar_sub_margin 0x7f050000 int dimen exception_component_height 0x7f050001 int dimen exception_status_component_size 0x7f050002 -int dimen hold_steady_bubble_level_max_y 0x7f050004 -int dimen hold_steady_frame_transform_pivot_y 0x7f050003 +int dimen hold_steady_bubble_level_max_y 0x7f050003 +int dimen hold_steady_frame_transform_pivot_y 0x7f050004 int dimen hold_steady_trace_size 0x7f050005 int drawable exception_container_shadow 0x7f020000 int drawable hold_steady_bubble_level_err 0x7f020001 @@ -45,38 +45,37 @@ int layout exception_component 0x7f030001 int layout layout_connection 0x7f030002 int layout layout_splash 0x7f030003 int layout layout_tango_ux 0x7f030004 -int string action_required 0x7f060015 -int string connection_layout_description 0x7f060017 -int string connection_layout_message 0x7f060016 -int string device_not_responding_description 0x7f06000c -int string device_not_responding_title 0x7f06000b -int string lying_on_surface_description 0x7f060010 -int string lying_on_surface_title 0x7f06000f -int string motion_track_description 0x7f060012 -int string motion_track_title 0x7f060011 -int string moving_too_fast_description 0x7f060002 -int string moving_too_fast_title 0x7f060001 -int string not_enough_light_description 0x7f060008 -int string not_enough_light_title 0x7f060007 -int string project_tango 0x7f060000 -int string run_time_mismatch_description 0x7f060014 -int string run_time_mismatch_title 0x7f060013 -int string service_updated_description 0x7f06000e -int string service_updated_title 0x7f06000d -int string space_not_recognized_description 0x7f060006 -int string space_not_recognized_title 0x7f060005 -int string too_much_light_description 0x7f06000a -int string too_much_light_title 0x7f060009 -int string unable_to_detect_surface_description 0x7f060004 -int string unable_to_detect_surface_title 0x7f060003 -int style ConnectionLayoutSubtext 0x7f070003 -int style ConnectionLayoutText 0x7f070002 -int style DownloadProgressText 0x7f070004 -int style ExceptionActionRequired 0x7f070007 -int style ExceptionDescription 0x7f070006 +int string action_required 0x7f060000 +int string connection_layout_message 0x7f060001 +int string device_not_responding_description 0x7f060002 +int string device_not_responding_title 0x7f060003 +int string lying_on_surface_description 0x7f060004 +int string lying_on_surface_title 0x7f060005 +int string motion_track_description 0x7f060006 +int string motion_track_title 0x7f060007 +int string moving_too_fast_description 0x7f060008 +int string moving_too_fast_title 0x7f060009 +int string not_enough_light_description 0x7f06000a +int string not_enough_light_title 0x7f06000b +int string project_tango 0x7f06000c +int string run_time_mismatch_description 0x7f06000d +int string run_time_mismatch_title 0x7f06000e +int string service_updated_description 0x7f06000f +int string service_updated_title 0x7f060010 +int string space_not_recognized_description 0x7f060011 +int string space_not_recognized_title 0x7f060012 +int string too_much_light_description 0x7f060013 +int string too_much_light_title 0x7f060014 +int string unable_to_detect_surface_description 0x7f060015 +int string unable_to_detect_surface_title 0x7f060016 +int style ConnectionLayoutSubtext 0x7f070000 +int style ConnectionLayoutText 0x7f070001 +int style DownloadProgressText 0x7f070002 +int style ExceptionActionRequired 0x7f070003 +int style ExceptionDescription 0x7f070004 int style ExceptionTitle 0x7f070005 -int style Text20GrayDarkLight 0x7f070001 -int style Text40GrayDarkThin 0x7f070000 -int style TextListContentItem 0x7f07000a -int style TextListTitle 0x7f070008 -int style TextListTitleItem 0x7f070009 +int style Text20GrayDarkLight 0x7f070006 +int style Text40GrayDarkThin 0x7f070007 +int style TextListContentItem 0x7f070008 +int style TextListTitle 0x7f070009 +int style TextListTitleItem 0x7f07000a diff --git a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/bin/R.txt.meta b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/bin/R.txt.meta index 7eb5b730..b57615a8 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/bin/R.txt.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/bin/R.txt.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 53c4a77bb9ff94dc8a9a29df3839fcf0 +guid: 3a814b608f0ca4f3794b3e6172056007 DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/bin/tango-ux-support-library.jar b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/bin/tango-ux-support-library.jar index 45a57ec2..b3e8347d 100644 Binary files a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/bin/tango-ux-support-library.jar and b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/bin/tango-ux-support-library.jar differ diff --git a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/bin/tango-ux-support-library.jar.meta b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/bin/tango-ux-support-library.jar.meta index 327fb373..d63af778 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/bin/tango-ux-support-library.jar.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/bin/tango-ux-support-library.jar.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: ab5d30c37ce034f8f97da7d59af5084e +guid: c19ee39257d2d4ecb9ffe05e28e4f8e0 DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/project.properties.meta b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/project.properties.meta index e6bada1b..01452aea 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/project.properties.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/project.properties.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 0d4bd0272f13248aba56ecc1e589ffa9 +guid: 58b250d77e25c4e8aaa1a16701165e8e DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res.meta b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res.meta index 26876e09..08bcef9d 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: fd9dcf3597e5d4387b74288b2f31442a folderAsset: yes -timeCreated: 1440434055 +timeCreated: 1442017923 licenseType: Pro DefaultImporter: userData: diff --git a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi.meta b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi.meta index 6ab7ccda..68f56a57 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 8b284ef68867845fdba8889f5242a41e folderAsset: yes -timeCreated: 1440434055 +timeCreated: 1442017923 licenseType: Pro DefaultImporter: userData: diff --git a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi/exception_container_shadow.png.meta b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi/exception_container_shadow.png.meta index 9e201088..e82202cc 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi/exception_container_shadow.png.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi/exception_container_shadow.png.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 92e885633f5b0478c8ddfe15af3e62c1 +guid: c83f7ae2437a34ec2a2a4b87a21eac61 DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi/hold_steady_bubble_level_err.png.meta b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi/hold_steady_bubble_level_err.png.meta index b952c186..ea813ca4 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi/hold_steady_bubble_level_err.png.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi/hold_steady_bubble_level_err.png.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 33e1c79516e434be0ac9186037aa9eea +guid: 728b86c7f85df414bb48a72785c19aaf DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi/hold_steady_bubble_level_ok.png.meta b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi/hold_steady_bubble_level_ok.png.meta index b1b038a8..792d8612 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi/hold_steady_bubble_level_ok.png.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi/hold_steady_bubble_level_ok.png.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: facbf073298f8457e9d0cc095dfb1155 +guid: a8f5c7e0c04354187889c0c7a015b4f7 DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi/hold_steady_frame_err.png.meta b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi/hold_steady_frame_err.png.meta index 131b35e9..230d70b7 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi/hold_steady_frame_err.png.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi/hold_steady_frame_err.png.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 038ce08ae5ade411485af0a8fcd0a9ef +guid: 5612d950d71a247a8b421d70df8a9dfa DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi/hold_steady_frame_ok.png.meta b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi/hold_steady_frame_ok.png.meta index f4ab7114..be314062 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi/hold_steady_frame_ok.png.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi/hold_steady_frame_ok.png.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 9bacc2b46bdfb4e3480e457188d47892 +guid: fac73c7be55cf4d25bf1292aaf3fd849 DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi/hold_steady_trace_left_1.png.meta b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi/hold_steady_trace_left_1.png.meta index 59bc3d22..6b92d804 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi/hold_steady_trace_left_1.png.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi/hold_steady_trace_left_1.png.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 709bc139bb1564750ac2067eac8e7ec4 +guid: 680b0b26a3faf4f429467370161fecc2 DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi/hold_steady_trace_left_2.png.meta b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi/hold_steady_trace_left_2.png.meta index d4c6f49b..3913f6f1 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi/hold_steady_trace_left_2.png.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi/hold_steady_trace_left_2.png.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: bc70d1a2a2d6e4c62bcbc943a47664ca +guid: 93fab9a5d52a84b3e95318d39a241b86 DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi/hold_steady_trace_right_1.png.meta b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi/hold_steady_trace_right_1.png.meta index 57f1d846..aa256fc1 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi/hold_steady_trace_right_1.png.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi/hold_steady_trace_right_1.png.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: d7f94cc4b613348dc886e6daab805459 +guid: 114602e7119004bae967929f739217a2 DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi/hold_steady_trace_right_2.png.meta b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi/hold_steady_trace_right_2.png.meta index 2269badb..7a3a9e78 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi/hold_steady_trace_right_2.png.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi/hold_steady_trace_right_2.png.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 038eef80a51674a11928eabdaab8543c +guid: 8f18e3edf7d0c40ddab5d06787be7a19 DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi/ic_exception_i_am_dizzy.png.meta b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi/ic_exception_i_am_dizzy.png.meta index 42e4540e..90e46b85 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi/ic_exception_i_am_dizzy.png.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi/ic_exception_i_am_dizzy.png.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 63ea0364c9f0741deb3ff598832ed32b +guid: ccbc58387f5814b4ea83dcf29dbfa236 DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi/ic_exception_i_am_lost.png.meta b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi/ic_exception_i_am_lost.png.meta index 27073d7f..4abbe98e 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi/ic_exception_i_am_lost.png.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi/ic_exception_i_am_lost.png.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 7d30719c6ae8d48fb825414fda35518a +guid: 3cfc0d6cc9e4048ce9095fcebb8e7f2c DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi/ic_exception_i_cant_see.png.meta b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi/ic_exception_i_cant_see.png.meta index f709f48d..4cc8f148 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi/ic_exception_i_cant_see.png.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi/ic_exception_i_cant_see.png.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: b11d579b46ba54b58a98f3c9a8af66cd +guid: f96000b1f919c406db6de0a2e2960cc2 DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi/ic_exception_system.png.meta b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi/ic_exception_system.png.meta index f03452c0..6d987cbc 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi/ic_exception_system.png.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi/ic_exception_system.png.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 98d42567dd7a846ed8cbb9e75c2e4132 +guid: 33462bb6b34204a3aa56c00e63d4ac7d DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi/splash_logo.png.meta b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi/splash_logo.png.meta index 363f9ce0..3f8cfcca 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi/splash_logo.png.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/drawable-xhdpi/splash_logo.png.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 6b595833602c34b5aa8928d366cf41c2 +guid: 86dd2879b137e463db2e1686aabcc74a DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/layout.meta b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/layout.meta index 7bac0e81..36f7c8cc 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/layout.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/layout.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 0fa3a214c4fdd4be8bf45d42f0596de8 folderAsset: yes -timeCreated: 1440434055 +timeCreated: 1442017923 licenseType: Pro DefaultImporter: userData: diff --git a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/layout/component_hold_steady.xml.meta b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/layout/component_hold_steady.xml.meta index 3d0d380f..4d94e280 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/layout/component_hold_steady.xml.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/layout/component_hold_steady.xml.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 337a1e50bf3954b2697013fe74527093 +guid: be434169d7c61486c8e90002886e0251 DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/layout/exception_component.xml.meta b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/layout/exception_component.xml.meta index 9df78088..904b734b 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/layout/exception_component.xml.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/layout/exception_component.xml.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 9cdbfb4548a8147d68e14b910cbe76ca +guid: c2e54118470ed49aa954b79ba6dd99f7 DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/layout/layout_connection.xml b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/layout/layout_connection.xml index b17d42df..e8c8455a 100755 --- a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/layout/layout_connection.xml +++ b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/layout/layout_connection.xml @@ -38,11 +38,4 @@ android:text="@string/connection_layout_message" android:textAllCaps="true" /> - - diff --git a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/layout/layout_connection.xml.meta b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/layout/layout_connection.xml.meta index e49a303c..f97b6acb 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/layout/layout_connection.xml.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/layout/layout_connection.xml.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: eb84e881bd975441594fb4a9135f1f02 +guid: 3474435349f5e4df2a59abef18c7504b DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/layout/layout_splash.xml.meta b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/layout/layout_splash.xml.meta index 1af0f909..7d8bd99e 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/layout/layout_splash.xml.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/layout/layout_splash.xml.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 98ab9deac97bc466fb0ba293e59d09f0 +guid: dec3305c4202a4898a053aac4c5835eb DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/layout/layout_tango_ux.xml.meta b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/layout/layout_tango_ux.xml.meta index 3c97e9cf..c84f4381 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/layout/layout_tango_ux.xml.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/layout/layout_tango_ux.xml.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 508d64f7e0bec4ed3aa07badadeada48 +guid: 445b640922e504a67b3717d8c815f3eb DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/values.meta b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/values.meta index db39e41e..f31845b4 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/values.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/values.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 9a4395c2824094c1d8f295967429fc62 folderAsset: yes -timeCreated: 1440434055 +timeCreated: 1442017923 licenseType: Pro DefaultImporter: userData: diff --git a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/values/colors.xml.meta b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/values/colors.xml.meta index 12694877..5c5d7c87 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/values/colors.xml.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/values/colors.xml.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 95ab709761a4449e1a1b8f4540aab554 +guid: 981fc3c35046042f5b3f8febf7462650 DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/values/dimens.xml.meta b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/values/dimens.xml.meta index fe1a8be7..fd33d375 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/values/dimens.xml.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/values/dimens.xml.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: fed378dee4e2a46778c6162d652572ae +guid: 485fdc2a9e5b14cb38b5c0e8f9f5d0ee DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/values/strings.xml b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/values/strings.xml index ec7687a3..f0e8acd0 100755 --- a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/values/strings.xml +++ b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/values/strings.xml @@ -53,7 +53,6 @@ Action required - Connecting - Please hold steady + Hold steady \ No newline at end of file diff --git a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/values/strings.xml.meta b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/values/strings.xml.meta index d9d52f12..b1a17d08 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/values/strings.xml.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/values/strings.xml.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: cbc69026447e54056980fe57e06bb4f2 +guid: efe77506871ab46428f1b6966172f4ea DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/values/styles.xml.meta b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/values/styles.xml.meta index b93ac8ba..fb84ab4b 100644 --- a/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/values/styles.xml.meta +++ b/UnityExamples/Assets/Plugins/Android/tango-ux-support-library/res/values/styles.xml.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 337e215e57a1444b491eb4b4890b6420 +guid: 4c153ed4c6ca8475d9f0420569f832e5 DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/Scenes/Materials.meta b/UnityExamples/Assets/Scenes/Materials.meta deleted file mode 100644 index a9f3f95c..00000000 --- a/UnityExamples/Assets/Scenes/Materials.meta +++ /dev/null @@ -1,9 +0,0 @@ -fileFormatVersion: 2 -guid: e806fdce175124c39ac9fe2c0ba8567d -folderAsset: yes -timeCreated: 1440525069 -licenseType: Free -DefaultImporter: - userData: - assetBundleName: - assetBundleVariant: diff --git a/UnityExamples/Assets/Scenes/Materials/pCylinder1Mat.mat b/UnityExamples/Assets/Scenes/Materials/pCylinder1Mat.mat deleted file mode 100644 index 993493e4..00000000 --- a/UnityExamples/Assets/Scenes/Materials/pCylinder1Mat.mat +++ /dev/null @@ -1,138 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!21 &2100000 -Material: - serializedVersion: 6 - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_Name: pCylinder1Mat - m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} - m_ShaderKeywords: - m_LightmapFlags: 5 - m_CustomRenderQueue: -1 - stringTagMap: {} - m_SavedProperties: - serializedVersion: 2 - m_TexEnvs: - data: - first: - name: _MainTex - second: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - data: - first: - name: _BumpMap - second: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - data: - first: - name: _DetailNormalMap - second: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - data: - first: - name: _ParallaxMap - second: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - data: - first: - name: _OcclusionMap - second: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - data: - first: - name: _EmissionMap - second: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - data: - first: - name: _DetailMask - second: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - data: - first: - name: _DetailAlbedoMap - second: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - data: - first: - name: _MetallicGlossMap - second: - m_Texture: {fileID: 0} - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Floats: - data: - first: - name: _SrcBlend - second: 1 - data: - first: - name: _DstBlend - second: 0 - data: - first: - name: _Cutoff - second: .5 - data: - first: - name: _Parallax - second: .0199999996 - data: - first: - name: _ZWrite - second: 1 - data: - first: - name: _Glossiness - second: .5 - data: - first: - name: _BumpScale - second: 1 - data: - first: - name: _OcclusionStrength - second: 1 - data: - first: - name: _DetailNormalMapScale - second: 1 - data: - first: - name: _UVSec - second: 0 - data: - first: - name: _Mode - second: 0 - data: - first: - name: _Metallic - second: 0 - m_Colors: - data: - first: - name: _EmissionColor - second: {r: 0, g: 0, b: 0, a: 1} - data: - first: - name: _Color - second: {r: .800000012, g: .800000012, b: .800000012, a: 1} diff --git a/UnityExamples/Assets/TangoExamples/Common/Textures/ProjectTango_Logo.png b/UnityExamples/Assets/TangoExamples/Common/Textures/ProjectTango_Logo.png old mode 100644 new mode 100755 index d8665552..c53fe23e Binary files a/UnityExamples/Assets/TangoExamples/Common/Textures/ProjectTango_Logo.png and b/UnityExamples/Assets/TangoExamples/Common/Textures/ProjectTango_Logo.png differ diff --git a/UnityExamples/Assets/TangoExamples/ExperimentalAugmentedReality/Materials/pin_shadow.mat b/UnityExamples/Assets/TangoExamples/ExperimentalAugmentedReality/Materials/pin_shadow.mat new file mode 100644 index 00000000..f4ba8871 --- /dev/null +++ b/UnityExamples/Assets/TangoExamples/ExperimentalAugmentedReality/Materials/pin_shadow.mat @@ -0,0 +1,30 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: pin_shadow + m_Shader: {fileID: 30, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: 270aaf7f8aaa0454ab5c3ed1e3d06087, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: {} + m_Colors: + data: + first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} diff --git a/UnityExamples/Assets/Scenes/Materials/pCylinder1Mat.mat.meta b/UnityExamples/Assets/TangoExamples/ExperimentalAugmentedReality/Materials/pin_shadow.mat.meta similarity index 55% rename from UnityExamples/Assets/Scenes/Materials/pCylinder1Mat.mat.meta rename to UnityExamples/Assets/TangoExamples/ExperimentalAugmentedReality/Materials/pin_shadow.mat.meta index 72f6f1e6..c474e1f5 100644 --- a/UnityExamples/Assets/Scenes/Materials/pCylinder1Mat.mat.meta +++ b/UnityExamples/Assets/TangoExamples/ExperimentalAugmentedReality/Materials/pin_shadow.mat.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 -guid: f1a242400dee94ce3906f578b4f8e33c -timeCreated: 1440525069 -licenseType: Free +guid: 6260fee5fdb624898bd92068ab874264 +timeCreated: 1441140322 +licenseType: Pro NativeFormatImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/TangoExamples/ExperimentalAugmentedReality/Prefabs/Location Marker.prefab b/UnityExamples/Assets/TangoExamples/ExperimentalAugmentedReality/Prefabs/Location Marker.prefab index 669701b1..96cf86e5 100644 --- a/UnityExamples/Assets/TangoExamples/ExperimentalAugmentedReality/Prefabs/Location Marker.prefab +++ b/UnityExamples/Assets/TangoExamples/ExperimentalAugmentedReality/Prefabs/Location Marker.prefab @@ -1,5 +1,23 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: +--- !u!1 &141338 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 424758} + - 33: {fileID: 3388810} + - 64: {fileID: 6411824} + - 23: {fileID: 2356450} + m_Layer: 0 + m_Name: Quad + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 --- !u!1 &188320 GameObject: m_ObjectHideFlags: 0 @@ -27,11 +45,24 @@ Transform: m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 188320} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: .0199999996, y: .0199999996, z: .0199999996} - m_Children: [] + m_Children: + - {fileID: 424758} m_Father: {fileID: 0} m_RootOrder: 0 +--- !u!4 &424758 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 141338} + m_LocalRotation: {x: .707106829, y: 0, z: 0, w: .707106709} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 5, y: 5, z: 5} + m_Children: [] + m_Father: {fileID: 421018} + m_RootOrder: 0 --- !u!23 &2344510 MeshRenderer: m_ObjectHideFlags: 1 @@ -56,6 +87,30 @@ MeshRenderer: m_LightmapParameters: {fileID: 0} m_SortingLayerID: 0 m_SortingOrder: 0 +--- !u!23 &2356450 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 141338} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_Materials: + - {fileID: 2100000, guid: 6260fee5fdb624898bd92068ab874264, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 1 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 --- !u!33 &3376278 MeshFilter: m_ObjectHideFlags: 1 @@ -63,6 +118,13 @@ MeshFilter: m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 188320} m_Mesh: {fileID: 4300000, guid: 6c28710ea3d26482eba596282b5e6538, type: 3} +--- !u!33 &3388810 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 141338} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} --- !u!64 &6406318 MeshCollider: m_ObjectHideFlags: 1 @@ -75,6 +137,18 @@ MeshCollider: serializedVersion: 2 m_Convex: 0 m_Mesh: {fileID: 4300000, guid: 6c28710ea3d26482eba596282b5e6538, type: 3} +--- !u!64 &6411824 +MeshCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 141338} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 0 + serializedVersion: 2 + m_Convex: 0 + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} --- !u!111 &11140948 Animation: m_ObjectHideFlags: 1 @@ -102,8 +176,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 81f9f42e3ed5b417f97d7297e8ea7582, type: 3} m_Name: m_EditorClassIdentifier: - m_normalShader: {fileID: 10703, guid: 0000000000000000f000000000000000, type: 0} - m_selectedShader: {fileID: 30, guid: 0000000000000000f000000000000000, type: 0} --- !u!1001 &100100000 Prefab: m_ObjectHideFlags: 1 diff --git a/UnityExamples/Assets/TangoExamples/ExperimentalAugmentedReality/Scripts/ARScreen.cs b/UnityExamples/Assets/TangoExamples/ExperimentalAugmentedReality/Scripts/ARScreen.cs index 594a6d72..f633a255 100644 --- a/UnityExamples/Assets/TangoExamples/ExperimentalAugmentedReality/Scripts/ARScreen.cs +++ b/UnityExamples/Assets/TangoExamples/ExperimentalAugmentedReality/Scripts/ARScreen.cs @@ -300,8 +300,15 @@ private void _SetCameraIntrinsics() float verticalFOV = 2.0f * Mathf.Rad2Deg * Mathf.Atan((intrinsics.height * 0.5f) / (float)intrinsics.fy); if (!float.IsNaN(verticalFOV)) { - m_renderCamera.fieldOfView = verticalFOV; - + m_renderCamera.projectionMatrix = + ProjectionMatrixForCameraIntrinsics((float)intrinsics.width, + (float)intrinsics.height, + (float)intrinsics.fx, + (float)intrinsics.fy, + (float)intrinsics.cx, + (float)intrinsics.cy, + 0.1f, 1000.0f); + // Here we are scaling the image plane to make sure the image plane's ratio is set as the // color camera image ratio. // If we don't do this, because we are drawing the texture fullscreen, the image plane will @@ -320,4 +327,57 @@ private void _SetCameraIntrinsics() } } } + + /// + /// Create a projection matrix from window size, camera intrinsics, and clip settings. + /// + /// The width of the camera image. + /// The height of the camera image. + /// The x-axis focal length of the camera. + /// The y-axis focal length of the camera. + /// The x-coordinate principal point in pixels. + /// The y-coordinate principal point in pixels. + /// The desired near z-clipping plane. + /// The desired far z-clipping plane. + private Matrix4x4 ProjectionMatrixForCameraIntrinsics(float width, float height, + float fx, float fy, + float cx, float cy, + float near, float far) { + float xscale = near / fx; + float yscale = near / fy; + + float xoffset = (cx - (width / 2.0f)) * xscale; + // OpenGL coordinates has y pointing downwards so we negate this term. + float yoffset = -(cy - (height / 2.0f)) * yscale; + + return Frustum(xscale * -width / 2.0f - xoffset, + xscale * width / 2.0f - xoffset, + yscale * -height / 2.0f - yoffset, + yscale * height / 2.0f - yoffset, + near, far); + } + + /// + /// This is function compute the projection matrix based on frustum size. + /// This function's implementation is same as glFrustum. + /// + /// Specify the coordinates for the left vertical clipping planes. + /// Specify the coordinates for the right vertical clipping planes. + /// Specify the coordinates for the bottom horizontal clipping planes. + /// Specify the coordinates for the top horizontal clipping planes. + /// Specify the distances to the near depth clipping planes. Both distances must be positive. + /// Specify the distances to the far depth clipping planes. Both distances must be positive. + private Matrix4x4 Frustum(float left, + float right, + float bottom, + float top, + float zNear, + float zFar) { + Matrix4x4 m = new Matrix4x4(); + m.SetRow(0, new Vector4(2.0f * zNear / (right - left), 0.0f, (right + left) / (right - left) , 0.0f)); + m.SetRow(1, new Vector4(0.0f, 2.0f * zNear/ (top - bottom), (top + bottom) / (top - bottom) , 0.0f)); + m.SetRow(2, new Vector4(0.0f, 0.0f, -(zFar + zNear) / (zFar - zNear), -(2 * zFar * zNear) / (zFar - zNear))); + m.SetRow(3, new Vector4(0.0f, 0.0f, -1.0f, 0.0f)); + return m; + } } diff --git a/UnityExamples/Assets/TangoExamples/ExperimentalAugmentedReality/Scripts/AugmentedRealityGUIController.cs b/UnityExamples/Assets/TangoExamples/ExperimentalAugmentedReality/Scripts/AugmentedRealityGUIController.cs index 59ceb6bd..54511351 100644 --- a/UnityExamples/Assets/TangoExamples/ExperimentalAugmentedReality/Scripts/AugmentedRealityGUIController.cs +++ b/UnityExamples/Assets/TangoExamples/ExperimentalAugmentedReality/Scripts/AugmentedRealityGUIController.cs @@ -411,7 +411,22 @@ private void _UpdateLocationMarker() { return; } - Instantiate(m_prefabLocation, planeCenter, Quaternion.FromToRotation(Vector3.up, plane.normal)); + + // Ensure the location is always facing the camera. This is like a LookRotation, but for the Y axis. + Vector3 up = plane.normal; + Vector3 forward; + if (Vector3.Angle(plane.normal, cam.transform.forward) < 175) + { + Vector3 right = Vector3.Cross(up, cam.transform.forward).normalized; + forward = Vector3.Cross(right, up).normalized; + } + else + { + // Normal is nearly parallel to camera look direction, the cross product would have too much + // floating point error in it. + forward = Vector3.Cross(up, cam.transform.right); + } + Instantiate(m_prefabLocation, planeCenter, Quaternion.LookRotation(forward, up)); m_selectedMarker = null; } } diff --git a/UnityExamples/Assets/TangoExamples/ExperimentalAugmentedReality/Textures/pin_shadow.png b/UnityExamples/Assets/TangoExamples/ExperimentalAugmentedReality/Textures/pin_shadow.png new file mode 100644 index 00000000..c863eae3 Binary files /dev/null and b/UnityExamples/Assets/TangoExamples/ExperimentalAugmentedReality/Textures/pin_shadow.png differ diff --git a/UnityExamples/Assets/TangoExamples/ExperimentalAugmentedReality/Textures/pin_shadow.png.meta b/UnityExamples/Assets/TangoExamples/ExperimentalAugmentedReality/Textures/pin_shadow.png.meta new file mode 100644 index 00000000..05b4c30b --- /dev/null +++ b/UnityExamples/Assets/TangoExamples/ExperimentalAugmentedReality/Textures/pin_shadow.png.meta @@ -0,0 +1,55 @@ +fileFormatVersion: 2 +guid: 270aaf7f8aaa0454ab5c3ed1e3d06087 +timeCreated: 1441140192 +licenseType: Pro +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/UnityExamples/Assets/TangoSDK/Core.meta b/UnityExamples/Assets/TangoSDK/Core.meta index ea3c0c43..2dcc9fae 100644 --- a/UnityExamples/Assets/TangoSDK/Core.meta +++ b/UnityExamples/Assets/TangoSDK/Core.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: b80c15ce37a1447f69e465cf133f71b6 folderAsset: yes -timeCreated: 1440434026 +timeCreated: 1441729896 licenseType: Pro DefaultImporter: userData: diff --git a/UnityExamples/Assets/TangoSDK/Core/Scripts.meta b/UnityExamples/Assets/TangoSDK/Core/Scripts.meta index da3b86a8..c40fbb99 100644 --- a/UnityExamples/Assets/TangoSDK/Core/Scripts.meta +++ b/UnityExamples/Assets/TangoSDK/Core/Scripts.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 8e63f857443034fb6b291e8ff42a6c60 folderAsset: yes -timeCreated: 1440434026 +timeCreated: 1441729896 licenseType: Pro DefaultImporter: userData: diff --git a/UnityExamples/Assets/TangoSDK/Core/Scripts/Common.meta b/UnityExamples/Assets/TangoSDK/Core/Scripts/Common.meta index 954f4682..b6ca0cfe 100644 --- a/UnityExamples/Assets/TangoSDK/Core/Scripts/Common.meta +++ b/UnityExamples/Assets/TangoSDK/Core/Scripts/Common.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: a96639d914c7d4c11aa8634e9e475b09 folderAsset: yes -timeCreated: 1440434026 +timeCreated: 1441729896 licenseType: Pro DefaultImporter: userData: diff --git a/UnityExamples/Assets/TangoSDK/Core/Scripts/Common/Common.cs b/UnityExamples/Assets/TangoSDK/Core/Scripts/Common/Common.cs index f244d824..79eb1efc 100755 --- a/UnityExamples/Assets/TangoSDK/Core/Scripts/Common/Common.cs +++ b/UnityExamples/Assets/TangoSDK/Core/Scripts/Common/Common.cs @@ -1,18 +1,22 @@ -/* - * Copyright 2014 Google Inc. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +//----------------------------------------------------------------------- +// +// +// Copyright 2015 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// +//----------------------------------------------------------------------- using System.Runtime.InteropServices; using UnityEngine; @@ -33,16 +37,39 @@ public struct Common /// public struct ErrorType { - public static readonly int TANGO_NO_CAMERA_PERMISSION = -5; /**< Camera access not allowed */ - public static readonly int TANGO_NO_ADF_PERMISSION = -4; /**< ADF access not allowed */ - public static readonly int TANGO_NO_MOTION_TRACKING_PERMISSION = -3; /**< Motion tracking not allowed*/ + /// + /// Camera access not allowed. + /// + public static readonly int TANGO_NO_CAMERA_PERMISSION = -5; + + /// + /// ADF access not allowed. + /// + public static readonly int TANGO_NO_ADF_PERMISSION = -4; + + /// + /// Motion tracking not allowed. + /// + public static readonly int TANGO_NO_MOTION_TRACKING_PERMISSION = -3; + + /// + /// General invalid state. + /// public static readonly int TANGO_INVALID = -2; + + /// + /// General error state. + /// public static readonly int TANGO_ERROR = -1; + + /// + /// No error, success. + /// public static readonly int TANGO_SUCCESS = 0; } /// - /// Metadata keys supported by Tango APIs + /// Metadata keys supported by Tango APIs. /// public struct MetaDataKeyType { @@ -52,24 +79,28 @@ public struct MetaDataKeyType public const string KEY_TRANSFORMATION = "transformation"; } - public enum AndroidResult - { - SUCCESS = -1, - CANCELED = 0, - DENIED = 1 - } - - public const string TANGO_UNITY_DLL = "tango_client_api"; + /// + /// Return values from Android actvities. + /// + public enum AndroidResult + { + SUCCESS = -1, + CANCELED = 0, + DENIED = 1 + } + /// + /// DEPRECATED: Empty string. + /// public const string TANGO_PERMISSION_STRING = ""; - public const string TANGO_MOTION_TRACKING_PERMISSIONS = "MOTION_TRACKING_PERMISSION"; - public const string TANGO_ADF_LOAD_SAVE_PERMISSIONS = "ADF_LOAD_SAVE_PERMISSION"; - public const string TANGO_NO_PERMISSIONS_ERROR = "This application requires all Tango permissions to run. Please restart the application and grant Tango permissions."; - public const int TANGO_MOTION_TRACKING_PERMISSIONS_REQUEST_CODE = 42; - public const int TANGO_ADF_LOAD_SAVE_PERMISSIONS_REQUEST_CODE = 43; - public const int UNITY_MAX_SUPPORTED_VERTS_PER_MESH = 65534; + /// + /// DEPRECATED: Tango permissions error. + /// + public const string TANGO_NO_PERMISSIONS_ERROR = "This application requires all Tango permissions to run. Please restart the application and grant Tango permissions."; + //// \cond + //// Collection of deprecated fields that should be removed public const float UI_LABEL_START_X = 15.0f; public const float UI_LABEL_START_Y = 15.0f; public const float UI_LABEL_SIZE_X = 1920.0f; @@ -86,33 +117,68 @@ public enum AndroidResult public const float UI_DEPTH_LABLE_START_Y = UI_POSE_LABEL_START_Y + UI_LABEL_OFFSET; public const string UI_FLOAT_FORMAT = "F3"; public const string UI_FONT_SIZE = ""; - + public const float UI_TANGO_VERSION_X = UI_LABEL_START_X; public const float UI_TANGO_VERSION_Y = UI_LABEL_START_Y; public const float UI_TANGO_APP_SPECIFIC_START_X = UI_TANGO_VERSION_X; public const float UI_TANGO_APP_SPECIFIC_START_Y = UI_TANGO_VERSION_Y + (UI_LABEL_OFFSET * 2); - + public const string UX_SERVICE_VERSION = "Service version: {0}"; public const string UX_TANGO_SERVICE_VERSION = "Tango service version: {0}"; public const string UX_TANGO_SYSTEM_EVENT = "Tango system event: {0}"; public const string UX_TARGET_TO_BASE_FRAME = "Target->{0}, Base->{1}:"; public const string UX_STATUS = "\tstatus: {0}, count: {1}, delta time(ms): {2}, position (m): [{3}], orientation: [{4}]"; - - public const int UUID_LENGTH = 37; public const float SECOND_TO_MILLISECOND = 1000.0f; - - #if (UNITY_EDITOR) + //// \endcond + + /// + /// Name of the Tango C-API library. + /// + internal const string TANGO_UNITY_DLL = "tango_client_api"; + + /// + /// Motion Tracking permission intent string. + /// + internal const string TANGO_MOTION_TRACKING_PERMISSIONS = "MOTION_TRACKING_PERMISSION"; + + /// + /// ADF Load/Save permission intent string. + /// + internal const string TANGO_ADF_LOAD_SAVE_PERMISSIONS = "ADF_LOAD_SAVE_PERMISSION"; + + /// + /// Code used to identify the result came from the Motion Tracking permission request. + /// + internal const int TANGO_MOTION_TRACKING_PERMISSIONS_REQUEST_CODE = 42; + + /// + /// Code used to identify the result came from the ADF Load/Save permission request. + /// + internal const int TANGO_ADF_LOAD_SAVE_PERMISSIONS_REQUEST_CODE = 43; + + /// + /// Max number of vertices the Point Cloud supports. + /// + internal const int UNITY_MAX_SUPPORTED_VERTS_PER_MESH = 65534; + + /// + /// The length of an area description ID string. + /// + internal const int UUID_LENGTH = 37; + + //// Backing for deprecated properties below. +#if (UNITY_EDITOR) private static bool m_mirroring = true; - #elif (UNITY_ANDROID) +#elif (UNITY_ANDROID) private static bool m_mirroring = false; - #else +#else private static bool m_mirroring = false; - #endif +#endif private static Resolution m_depthFrameResolution; private static int m_depthBufferSize; /// - /// Property for mirroring. + /// DEPRECATED: Property for mirroring. /// /// Bool - sets mirroring. public static bool Mirroring @@ -122,7 +188,7 @@ public static bool Mirroring } /// - /// Property for the current depth frame resolution. + /// DEPRECATED: Property for the current depth frame resolution. /// /// Resolution - Sets depth frame resolution reference. public static Resolution DepthFrameResolution @@ -132,7 +198,7 @@ public static Resolution DepthFrameResolution } /// - /// Property for the depth buffer size. + /// DEPRECATED: Property for the depth buffer size. /// /// Bool - Sets the size of the depth buffer. public static int DepthBufferSize @@ -142,7 +208,7 @@ public static int DepthBufferSize } /// - /// Get the world rotation. + /// DEPRECATED: Get the world rotation. /// /// Quaternion representing the world rotation. public static Quaternion GetWorldRotation() @@ -151,10 +217,11 @@ public static Quaternion GetWorldRotation() } /// - /// Gets current window resoltion where width is - /// always larger than height. + /// DEPRECATED: Get the screen size if the screen was in landscape mode. + /// + /// This looks at Screen.width and Screen.height. /// - /// Vector2 containing the screen width and height. + /// Vector2 containing the screen size. public static Vector2 GetWindowResolution() { Vector2 screenSize; @@ -168,12 +235,21 @@ public static Vector2 GetWindowResolution() } return screenSize; } - + + /// + /// DEPRECATED: Get the aspect ratio of the screen in landscape mode. + /// + /// Aspect ratio. + public static float GetWindowResolutionAspect() + { + Vector2 resolution = GetWindowResolution(); + return resolution.x / resolution.y; + } + /// - /// Get the aspect resolution of the window. + /// DEPRECATED: Misspelled version of GetWindowResolutionAspect. /// - /// Window resolution aspect ratio as a single - /// precision floating point. + /// Aspect ratio. public static float GetWindowResoltionAspect() { Vector2 resolution = GetWindowResolution(); diff --git a/UnityExamples/Assets/TangoSDK/Core/Scripts/Common/OrientationManager.cs b/UnityExamples/Assets/TangoSDK/Core/Scripts/Common/OrientationManager.cs index 56ca6f46..b80bedf0 100755 --- a/UnityExamples/Assets/TangoSDK/Core/Scripts/Common/OrientationManager.cs +++ b/UnityExamples/Assets/TangoSDK/Core/Scripts/Common/OrientationManager.cs @@ -1,18 +1,22 @@ -/* - * Copyright 2014 Google Inc. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +//----------------------------------------------------------------------- +// +// +// Copyright 2015 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// +//----------------------------------------------------------------------- using System.Collections; using UnityEngine; @@ -21,55 +25,55 @@ namespace Tango /// /// Manages the orientation of the screen. /// - public class OrientationManager - { + public class OrientationManager + { /// /// Gets the Screen orientation. /// /// Returns the current orientation of the screen. - public static ScreenOrientation GetScreenOrientation() + public static ScreenOrientation GetScreenOrientation() { - #if (UNITY_EDITOR || UNITY_STANDALONE_OSX) - if (Screen.width > Screen.height) +#if (UNITY_EDITOR || UNITY_STANDALONE_OSX) + if (Screen.width > Screen.height) { - return ScreenOrientation.LandscapeLeft; + return ScreenOrientation.LandscapeLeft; } - else + else { - return ScreenOrientation.Portrait; + return ScreenOrientation.Portrait; } - #elif (UNITY_IPHONE || UNITY_ANDROID) - return Screen.orientation; - #else - #error not supported platform - #endif - } - +#elif (UNITY_IPHONE || UNITY_ANDROID) + return Screen.orientation; +#else +#error not supported platform +#endif + } + /// /// Get the current world rotation. /// /// Returns a Quaternion representing the current world rotation. - public static Quaternion GetWorldRotation() + public static Quaternion GetWorldRotation() { - ScreenOrientation orientation = GetScreenOrientation(); - Quaternion transformation = Quaternion.identity; - if (orientation == ScreenOrientation.LandscapeLeft) + ScreenOrientation orientation = GetScreenOrientation(); + Quaternion transformation = Quaternion.identity; + if (orientation == ScreenOrientation.LandscapeLeft) { - transformation = Quaternion.identity; - } + transformation = Quaternion.identity; + } else if (orientation == ScreenOrientation.LandscapeRight) { - transformation = Quaternion.AngleAxis(180f, Vector3.forward); - } + transformation = Quaternion.AngleAxis(180f, Vector3.forward); + } else if (orientation == ScreenOrientation.PortraitUpsideDown) { - transformation = Quaternion.AngleAxis(90f, Vector3.forward); - } + transformation = Quaternion.AngleAxis(90f, Vector3.forward); + } else if (orientation == ScreenOrientation.Portrait) { - transformation = Quaternion.AngleAxis(-90f, Vector3.forward); - } - return transformation; - } - } + transformation = Quaternion.AngleAxis(-90f, Vector3.forward); + } + return transformation; + } + } } \ No newline at end of file diff --git a/UnityExamples/Assets/TangoSDK/Core/Scripts/Common/TangoAndroidHelper.cs b/UnityExamples/Assets/TangoSDK/Core/Scripts/Common/TangoAndroidHelper.cs index bf6de0e4..091e8ead 100644 --- a/UnityExamples/Assets/TangoSDK/Core/Scripts/Common/TangoAndroidHelper.cs +++ b/UnityExamples/Assets/TangoSDK/Core/Scripts/Common/TangoAndroidHelper.cs @@ -1,86 +1,96 @@ -/* - * Copyright 2014 Google Inc. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -using UnityEngine; +//----------------------------------------------------------------------- +// +// +// Copyright 2015 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// +//----------------------------------------------------------------------- using System.Collections; +using UnityEngine; /// -/// Helper functions for common android functionality. +/// Misc Android related utilities provided by the Tango CoreSDK. /// public partial class AndroidHelper { /// - /// Holds the current and default offset of the - /// current Tango device. + /// Holds the current and default orientation of the device. /// public struct TangoDeviceOrientation { + /// + /// The default orientation of the device. This is the "natural" way to hold this device. + /// public DeviceOrientation defaultRotation; + + /// + /// The current orientation of the device. + /// public DeviceOrientation currentRotation; } private const string PERMISSION_REQUESTER = "com.projecttango.permissionrequester.RequestManagerActivity"; - #pragma warning disable 414 +#if UNITY_ANDROID && !UNITY_EDITOR private static AndroidJavaObject m_tangoHelper = null; - #pragma warning restore 414 - +#endif + /// /// Gets the Java tango helper object. /// /// The tango helper object. public static AndroidJavaObject GetTangoHelperObject() { - #if UNITY_ANDROID && !UNITY_EDITOR +#if UNITY_ANDROID && !UNITY_EDITOR if(m_tangoHelper == null) { m_tangoHelper = new AndroidJavaObject("com.projecttango.unity.TangoUnityHelper", GetUnityActivity()); } return m_tangoHelper; - #else +#else return null; - #endif +#endif } /// - /// Starts the tango permissions activity of the provided type. + /// Start the Tango permissions activity, requesting that permission. /// - /// Permissions type. + /// String for the permission to request. public static void StartTangoPermissionsActivity(string permissionsType) { AndroidJavaObject unityActivity = GetUnityActivity(); - if(unityActivity != null) + if (unityActivity != null) { int requestCode = 0; string[] args = new string[1]; - - if(permissionsType == Tango.Common.TANGO_MOTION_TRACKING_PERMISSIONS) + + if (permissionsType == Tango.Common.TANGO_MOTION_TRACKING_PERMISSIONS) { requestCode = Tango.Common.TANGO_MOTION_TRACKING_PERMISSIONS_REQUEST_CODE; args[0] = "PERMISSIONTYPE:" + Tango.Common.TANGO_MOTION_TRACKING_PERMISSIONS; } - else if(permissionsType == Tango.Common.TANGO_ADF_LOAD_SAVE_PERMISSIONS) + else if (permissionsType == Tango.Common.TANGO_ADF_LOAD_SAVE_PERMISSIONS) { requestCode = Tango.Common.TANGO_ADF_LOAD_SAVE_PERMISSIONS_REQUEST_CODE; args[0] = "PERMISSIONTYPE:" + Tango.Common.TANGO_ADF_LOAD_SAVE_PERMISSIONS; } - if(requestCode != 0) + if (requestCode != 0) { - unityActivity.Call("LaunchIntent", "com.projecttango.tango", "com.google.atap.tango.RequestPermissionActivity", args, requestCode); + unityActivity.Call("launchIntent", "com.projecttango.tango", "com.google.atap.tango.RequestPermissionActivity", args, requestCode); } else { @@ -88,15 +98,16 @@ public static void StartTangoPermissionsActivity(string permissionsType) } } } - + /// - /// Determines if the application has Tango permissions. + /// Check if the application has a Tango permission. /// - /// true if application has tango permissions; otherwise, false. + /// String for the permission. + /// true if application has the permission; otherwise, false. public static bool ApplicationHasTangoPermissions(string permissionType) { AndroidJavaObject tangoObject = GetTangoHelperObject(); - if(tangoObject != null) + if (tangoObject != null) { return tangoObject.Call("hasPermission", permissionType); } @@ -105,9 +116,9 @@ public static bool ApplicationHasTangoPermissions(string permissionType) } /// - /// Gets the current and default device orientation. + /// Get the devices current and default orientations. /// - /// The current and default tango device orientation. + /// The current and default orientations. public static TangoDeviceOrientation GetTangoDeviceOrientation() { AndroidJavaObject tangoObject = GetTangoHelperObject(); @@ -115,7 +126,7 @@ public static TangoDeviceOrientation GetTangoDeviceOrientation() deviceOrientation.defaultRotation = DeviceOrientation.Unknown; deviceOrientation.currentRotation = DeviceOrientation.Unknown; - if(tangoObject != null) + if (tangoObject != null) { AndroidJavaObject rotationInfo = tangoObject.Call("showTranslatedOrientation"); @@ -127,16 +138,16 @@ public static TangoDeviceOrientation GetTangoDeviceOrientation() } /// - /// Determines if is tango core present. + /// Check if the Tango Core package is installed. /// - /// true if is tango core present; otherwise, false. + /// true if the package is installed; otherwise, false. public static bool IsTangoCorePresent() { AndroidJavaObject unityActivity = GetUnityActivity(); - if(unityActivity != null) + if (unityActivity != null) { - if(GetPackageInfo("com.projecttango.tango") != null) + if (GetPackageInfo("com.projecttango.tango") != null) { return true; } diff --git a/UnityExamples/Assets/TangoSDK/Core/Scripts/Common/TangoEnums.cs b/UnityExamples/Assets/TangoSDK/Core/Scripts/Common/TangoEnums.cs index e434da9e..11759a30 100644 --- a/UnityExamples/Assets/TangoSDK/Core/Scripts/Common/TangoEnums.cs +++ b/UnityExamples/Assets/TangoSDK/Core/Scripts/Common/TangoEnums.cs @@ -1,18 +1,22 @@ -/* - * Copyright 2014 Google Inc. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +//----------------------------------------------------------------------- +// +// +// Copyright 2015 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// +//----------------------------------------------------------------------- using System.Collections; using UnityEngine; @@ -24,99 +28,242 @@ namespace Tango public class TangoEnums { /// - /// Possible states for the motion tracking + /// Tango pose status lifecycle enumerations. + /// + /// Every pose has a state denoted by this enum, which provides information about the internal status of the + /// position estimate. The application may use the status to decide what actions or rendering should be taken. + /// A change in the status between poses and subsequent timestamps can denote lifecycle state changes. The + /// status affects the rotation and position estimates. Other fields are considered valid (i.e. version or + /// timestamp). /// public enum TangoPoseStatusType { - TANGO_POSE_INITIALIZING, /**< Motion estimation is being initialized */ - TANGO_POSE_VALID, /**< The pose of this estimate is valid */ - TANGO_POSE_INVALID, /**< The pose of this estimate is not valid */ - TANGO_POSE_UNKNOWN, /**< Could not estimate pose at this time */ - NA /*** + /// Motion estimation is being initialized. + /// + TANGO_POSE_INITIALIZING, + + /// + /// The pose of this estimate is valid. + /// + TANGO_POSE_VALID, + + /// + /// The pose of this estimate is not valid. + /// + TANGO_POSE_INVALID, + + /// + /// Could not estimate pose at this time. + /// + TANGO_POSE_UNKNOWN, + + /// + /// Not Available, not a real TangoPoseStatusType. + /// + NA } /// - /// Coordinate frames provided by the Tango Service. + /// Tango coordinate frame enumerations. /// public enum TangoCoordinateFrameType { - /** Coordinate system for the entire Earth. - * See WGS84: http://en.wikipedia.org/wiki/World_Geodetic_System - */ + /// + /// Coordinate system for the entire Earth. + /// + /// See WGS84: [http://en.wikipedia.org/wiki/World_Geodetic_System]. + /// TANGO_COORDINATE_FRAME_GLOBAL_WGS84 = 0, - /** Origin within a saved area description */ + + /// + /// Origin within a saved area description. + /// TANGO_COORDINATE_FRAME_AREA_DESCRIPTION, - /** Origin when the device started tracking */ + + /// + /// Origin when the device started tracking. + /// TANGO_COORDINATE_FRAME_START_OF_SERVICE, - /** Immediately previous device pose */ + + /// + /// Immediately previous device pose. + /// TANGO_COORDINATE_FRAME_PREVIOUS_DEVICE_POSE, - TANGO_COORDINATE_FRAME_DEVICE, /**< Device coordinate frame */ - TANGO_COORDINATE_FRAME_IMU, /**< Inertial Measurement Unit */ - TANGO_COORDINATE_FRAME_DISPLAY, /**< Display */ - TANGO_COORDINATE_FRAME_CAMERA_COLOR, /**< Color camera */ - TANGO_COORDINATE_FRAME_CAMERA_DEPTH, /**< Depth camera */ - TANGO_COORDINATE_FRAME_CAMERA_FISHEYE, /**< Fisheye camera */ + + /// + /// Device coordinate frame. + /// + TANGO_COORDINATE_FRAME_DEVICE, + + /// + /// Inertial Measurement Unit. + /// + TANGO_COORDINATE_FRAME_IMU, + + /// + /// Display. + /// + TANGO_COORDINATE_FRAME_DISPLAY, + + /// + /// Color camera. + /// + TANGO_COORDINATE_FRAME_CAMERA_COLOR, + + /// + /// Depth camera. + /// + TANGO_COORDINATE_FRAME_CAMERA_DEPTH, + + /// + /// Fisheye camera. + /// + TANGO_COORDINATE_FRAME_CAMERA_FISHEYE, + + /// + /// An invalid frame. + /// TANGO_COORDINATE_FRAME_INVALID, - TANGO_MAX_COORDINATE_FRAME_TYPE /**< Maximum allowed */ + + /// + /// Maximum allowed. + /// + TANGO_MAX_COORDINATE_FRAME_TYPE } /// - /// Enumeration containing the ID used for each - /// Tango camera. + /// Tango Camera enumerations. /// public enum TangoCameraId { - TANGO_CAMERA_COLOR = 0, /**< Back-facing color camera */ - TANGO_CAMERA_RGBIR, /**< Back-facing camera producing IR-sensitive images */ - TANGO_CAMERA_FISHEYE, /**< Back-facing fisheye wide-angle camera */ - TANGO_CAMERA_DEPTH, /**< Depth camera */ - TANGO_MAX_CAMERA_ID /**< Maximum camera allowable */ + /// + /// Back-facing color camera. + /// + TANGO_CAMERA_COLOR = 0, + + /// + /// Back-facing camera producing IR-sensitive images. + /// + TANGO_CAMERA_RGBIR, + + /// + /// Back-facing fisheye wide-angle camera. + /// + TANGO_CAMERA_FISHEYE, + + /// + /// Depth camera. + /// + TANGO_CAMERA_DEPTH, + + /// + /// Maximum camera allowable. + /// + TANGO_MAX_CAMERA_ID } /// - /// Enumeration containing events provided by the - /// Tango Service. + /// Tango Event types. /// public enum TangoEventType { - TANGO_EVENT_UNKNOWN = 0, /**< Unclassified Event Type */ - TANGO_EVENT_GENERAL, /**< General callbacks not otherwise categorized */ - TANGO_EVENT_FISHEYE_CAMERA, /**< Fisheye Camera Event */ - TANGO_EVENT_COLOR_CAMERA, /**< Color Camera Event */ - TANGO_EVENT_IMU, /**< IMU Event */ - TANGO_EVENT_FEATURE_TRACKING, /**< Feature Tracking Event */ + /// + /// Unclassified Event Type. + /// + TANGO_EVENT_UNKNOWN = 0, + + /// + /// General callbacks not otherwise categorized. + /// + TANGO_EVENT_GENERAL, + + /// + /// Fisheye Camera Event. + /// + TANGO_EVENT_FISHEYE_CAMERA, + + /// + /// Color Camera Event. + /// + TANGO_EVENT_COLOR_CAMERA, + + /// + /// IMU Event. + /// + TANGO_EVENT_IMU, + + /// + /// Feature Tracking Event. + /// + TANGO_EVENT_FEATURE_TRACKING, } + /// + /// Tango runtime configuration enumerations. + /// public enum TangoConfigType { - TANGO_CONFIG_DEFAULT = 0, /**< Default, motion tracking only. */ - TANGO_CONFIG_CURRENT, /**< Current */ - TANGO_CONFIG_MOTION_TRACKING, /**< Motion tracking */ - TANGO_CONFIG_AREA_LEARNING, /**< Area learning */ - TANGO_MAX_CONFIG_TYPE /**< Maximum number allowable. */ + /// + /// Default, motion tracking only. + /// + TANGO_CONFIG_DEFAULT = 0, + + /// + /// Current. + /// + TANGO_CONFIG_CURRENT, + + /// + /// Motion tracking. + /// + TANGO_CONFIG_MOTION_TRACKING, + + /// + /// Area learning. + /// + TANGO_CONFIG_AREA_LEARNING, + + /// + /// Maximum number allowable. + /// + TANGO_MAX_CONFIG_TYPE } + /// + /// Tango Camera Calibration types. + /// + /// See TangoCameraIntrinsics for a detailed description. + /// public enum TangoCalibrationType { TANGO_CALIBRATION_UNKNOWN, - /**< f-theta fisheye lens model. See - http://scholar.google.com/scholar?cluster=13508836606423559694&hl=en&as_sdt=2005&sciodt=0,5 - */ + + /// + /// An f-theta fisheye lens model. + /// See . + /// TANGO_CALIBRATION_EQUIDISTANT, TANGO_CALIBRATION_POLYNOMIAL_2_PARAMETERS, - /**< Tsai's k1,k2,k3 Model. See - http://scholar.google.com/scholar?cluster=3512800631607394002&hl=en&as_sdt=0,5&sciodt=0,5 - */ + + /// + /// Tsai's k1,k2,k3 Model. + /// See . + /// TANGO_CALIBRATION_POLYNOMIAL_3_PARAMETERS, TANGO_CALIBRATION_POLYNOMIAL_5_PARAMETERS, - } - - /// Tango Image Formats + + /// + /// Tango Image Formats. /// Equivalent to those found in Android core/system/include/system/graphics.h. + /// public enum TangoImageFormatType { - TANGO_HAL_PIXEL_FORMAT_YV12 = 0x32315659 // YCrCb 4:2:0 Planar + /// + /// YCrCb 4:2:0 Planar. + /// + TANGO_HAL_PIXEL_FORMAT_YV12 = 0x32315659 } } } \ No newline at end of file diff --git a/UnityExamples/Assets/TangoSDK/Core/Scripts/Common/TangoTypes.cs b/UnityExamples/Assets/TangoSDK/Core/Scripts/Common/TangoTypes.cs index e7b63ac8..a3c1aad0 100644 --- a/UnityExamples/Assets/TangoSDK/Core/Scripts/Common/TangoTypes.cs +++ b/UnityExamples/Assets/TangoSDK/Core/Scripts/Common/TangoTypes.cs @@ -1,100 +1,205 @@ -/* - * Copyright 2014 Google Inc. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +//----------------------------------------------------------------------- +// +// +// Copyright 2015 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// +//----------------------------------------------------------------------- using System; +using System.Collections.Generic; using System.Runtime.InteropServices; using UnityEngine; +[module: System.Diagnostics.CodeAnalysis.SuppressMessage("StyleCop.CSharp.DocumentationRules", + "SA1649:FileHeaderFileNameDocumentationMustMatchTypeName", + Justification = "Types file.")] + namespace Tango { /// - /// Represents the ordered point cloud data. + /// The TangoXYZij struct contains information returned from the depth sensor. /// [StructLayout(LayoutKind.Sequential)] public class TangoXYZij { + /// + /// An integer denoting the version of the structure. + /// [MarshalAs(UnmanagedType.I4)] public int version; - + + /// + /// Time of capture of the depth data for this struct (in seconds). + /// [MarshalAs(UnmanagedType.R8)] public double timestamp; - + + /// + /// The number of points in the xyz array. + /// + /// This is variable with result and is returned in (x,y,z) triplets populated (e.g. 2 points populated + /// returned means 6 floats, or 6*4 bytes used). + /// [MarshalAs(UnmanagedType.I4)] public int xyz_count; - + + /// + /// An array of packed coordinate triplets, x,y,z as floating point values. + /// + /// With the unit in landscape orientation, screen facing the user: +Z points in the direction of the + /// camera's optical axis, and is measured perpendicular to the plane of the camera. +X points toward the + /// user's right, and +Y points toward the bottom of the screen. The origin is the focal centre of the color + /// camera. The output is in units of metres. + /// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.SysUInt)] public IntPtr[] xyz; - + + /// + /// The dimensions of the ij index buffer. + /// [MarshalAs(UnmanagedType.I4)] public int ij_rows; - + + /// + /// The dimensions of the ij index buffer. + /// [MarshalAs(UnmanagedType.I4)] public int ij_cols; - + + /// + /// A 2D buffer, of size ij_rows x ij_cols in raster ordering that contains the index of a point in the xyz + /// array that was generated at this "ij" location. + /// + /// A value of -1 denotes there was no corresponding point generated at that position. This buffer can be used + /// to find neighbouring points in the point cloud. + /// + /// For more information, see our developer overview on depth perception . + /// public IntPtr ij; - // Reserved for future use. + /// + /// TangoImageBuffer is reserved for future use. + /// public IntPtr color_image; /// /// Returns a that represents the current . /// - /// A that represents the current . + /// + /// A that represents the current . + /// public override string ToString() { - return ("timestamp : " + timestamp + "\n" + - "xyz_count : " + xyz_count + "\n" + - "ij_rows : " + ij_rows + "\n" + - "ij_cols : " + ij_cols); + return string.Format("timestamp : {0}\nxyz_count : {1}\nij_rows : {2}\nij_cols : {3}", + timestamp, xyz_count, ij_rows, ij_cols); } } /// - /// Tango event. + /// The TangoEvent structure signals important sensor and tracking events. + /// + /// Each event comes with a timestamp, a type, and a key-value pair describing + /// the event. The type is an enumeration which generally classifies the event + /// type. The key is a text string describing the event. The description holds + /// parameters specific to the event. + /// + /// Possible descriptions (as "key:value") are: + /// - "TangoServiceException:X" - The service has encountered an exception, and + /// a text description is given in X. + /// - "FisheyeOverExposed:X" - the fisheye image is over exposed with average + /// pixel value X px. + /// - "FisheyeUnderExposed:X" - the fisheye image is under exposed with average + /// pixel value X px. + /// - "ColorOverExposed:X" - the color image is over exposed with average pixel + /// value X px. + /// - "ColorUnderExposed:X" - the color image is under exposed with average + /// pixel value X px. + /// - "TooFewFeaturesTracked:X" - too few features were tracked in the fisheye + /// image. The number of features tracked is X. + /// - "Unknown". /// [StructLayout(LayoutKind.Sequential)] public class TangoEvent { + /// + /// Timestamp, in seconds, of the event. + /// [MarshalAs(UnmanagedType.R8)] public double timestamp; - + + /// + /// Type of event. + /// [MarshalAs(UnmanagedType.I4)] public TangoEnums.TangoEventType type; - + + /// + /// Description of the event key. + /// [MarshalAs(UnmanagedType.LPStr)] public string event_key; + /// + /// Description of the event value. + /// [MarshalAs(UnmanagedType.LPStr)] public string event_value; } /// - /// Tango coordinate frame pair. + /// The TangoCoordinateFramePair struct contains a pair of coordinate frames of reference. + /// + /// Tango pose data is calculated as a transformation between two frames + /// of reference (so, for example, you can be asking for the pose of the + /// device within a learned area). + /// + /// This struct is used to specify the desired base and target frames of + /// reference when requesting pose data. You can also use it when you have + /// a TangoPoseData structure returned from the API and want to examine which + /// frames of reference were used to get that pose. + /// + /// For more information, including which coordinate frame pairs are valid, + /// see our page on + /// frames of reference. /// [StructLayout(LayoutKind.Sequential)] public struct TangoCoordinateFramePair { + /// + /// Base frame of reference to compare against when requesting pose data. + /// For example, if you have loaded an area and want to find out where the + /// device is within it, you would use the + /// TangoCoordinateFrameType.TANGO_COORDINATE_FRAME_AREA_DESCRIPTION frame of reference + /// as your base. + /// [MarshalAs(UnmanagedType.I4)] public TangoEnums.TangoCoordinateFrameType baseFrame; - + + /// + /// Target frame of reference when requesting pose data, compared to the + /// base. For example, if you want the device's pose data, use + /// TangoCoordinateFrameType.TANGO_COORDINATE_FRAME_DEVICE. + /// [MarshalAs(UnmanagedType.I4)] public TangoEnums.TangoCoordinateFrameType targetFrame; } /// - /// Tango image buffer. + /// The TangoImageBuffer contains information about a byte buffer holding image data. + /// + /// This data is populated by the service when it returns an image. /// [StructLayout(LayoutKind.Sequential)] public class TangoImageBuffer @@ -136,34 +241,46 @@ public class TangoImageBuffer public TangoEnums.TangoImageFormatType format; /// - /// Pixels in HAL_PIXEL_FORMAT_YV12 format. Y samples of width x height are - /// first, followed by V samples, with half the stride and half the lines of - /// the Y data, followed by a U samples with the same dimensions as the V - /// sample. This is stored in the API as a dynamic byte array (uint8_t*). + /// Pixels in the format of this image buffer. /// public IntPtr data; } /// /// The TangoCameraIntrinsics struct contains intrinsic parameters for a camera. - /// For image coordinates, the obervations, [u, v]^T in pixels. - /// Normalized image plane coordinates refer to: /// - /// x = (u - cx) / fx + /// Given a 3D point (X, Y, Z) in camera coordinates, the corresponding + /// pixel coordinates (x, y) are: /// - /// y = (v - cy) / fy + /// + /// x = X / Z * fx * rd / ru + cx + /// y = X / Z * fy * rd / ru + cy + /// /// - /// Distortion model type is as given by calibration_type. For example, for the - /// color camera, TANGO_CALIBRATION_POLYNOMIAL_3_PARAMETERS means that the - /// distortion parameters are in distortion[] as {k1, k2 ,k3} where + /// The normalized radial distance ru is given by: /// - /// x_corr_px = x_px (1 + k1 * r2 + k2 * r4 + k3 * r6) - /// y_corr_px = y_px (1 + k1 * r2 + k2 * r4 + k3 * r6) + /// + /// ru = sqrt((X^2 + Y^2) / (Z^2)) + /// /// - /// where r2, r4, r6 are the 2nd, 4th, and 6th powers of the r, where r is the - /// distance (normalized image plane coordinates) of (x,y) to (cx,cy), and - /// for a pixel at point (x_px, y_px) in pixel coordinates, the corrected output - /// position would be (x_corr, y_corr). + /// The distorted radial distance rd depends on the distortion model used. + /// + /// For TangoCalibrationType.TANGO_CALIBRATION_POLYNOMIAL_3_PARAMETERS, rd is a + /// polynomial that depends on the 3 distortion coefficients k1, k2 and k3: + /// + /// + /// rd = ru + k1 * ru^3 + k2 * ru^5 + k3 * ru^7 + /// + /// + /// For TangoCalibrationType.TANGO_CALIBRATION_EQUIDISTANT, rd depends on the single + /// distortion coefficient w: + /// + /// + /// rd = 1 / w * arctan(2 * ru * tan(w / 2)) + /// + /// + /// For more information, see our page on + /// Camera Intrinsics and Extrinsics. /// [StructLayout(LayoutKind.Sequential)] public class TangoCameraIntrinsics @@ -175,7 +292,8 @@ public class TangoCameraIntrinsics public TangoEnums.TangoCameraId camera_id; /// - /// Calibration model type that they distorion parameters reference. + /// The type of distortion model used. This determines the meaning of the + /// distortion coefficients. /// [MarshalAs(UnmanagedType.I4)] public TangoEnums.TangoCalibrationType calibration_type; @@ -218,34 +336,72 @@ public class TangoCameraIntrinsics } /// - /// Data representing a pose from the Tango Service. + /// The TangoPoseData struct contains 6DOF pose information. + /// + /// The device pose is given using Android conventions. See the Android + /// Sensor + /// Overview page for more information. /// [StructLayout(LayoutKind.Sequential)] public class TangoPoseData { + /// + /// An integer denoting the version of the structure. + /// [MarshalAs(UnmanagedType.I4)] public int version; - + + /// + /// Timestamp of the time that this pose estimate corresponds to. + /// [MarshalAs(UnmanagedType.R8)] public double timestamp; - + + /// + /// Orientation, as a quaternion, of the pose of the target frame + /// with reference to the base frame. + /// Specified as (x,y,z,w) where RotationAngle is in radians: + /// + /// x = RotationAxis.x * sin(RotationAngle / 2) + /// y = RotationAxis.y * sin(RotationAngle / 2) + /// z = RotationAxis.z * sin(RotationAngle / 2) + /// w = cos(RotationAngle / 2) + /// + /// [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 4, ArraySubType = UnmanagedType.R8)] public double[] orientation; - + + /// + /// Translation, ordered x, y, z, of the pose of the target frame + /// with reference to the base frame. + /// [MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.R8)] public double[] translation; - + + /// + /// The status of the pose, according to the pose lifecycle. + /// [MarshalAs(UnmanagedType.I4)] public TangoEnums.TangoPoseStatusType status_code; - + + /// + /// The pair of coordinate frames for this pose. + /// + /// We retrieve a pose for a target coordinate frame (such as the Tango device) against a base + /// coordinate frame (such as a learned area). + /// [MarshalAs(UnmanagedType.Struct)] public TangoCoordinateFramePair framePair; - - // Unused. Integer levels are determined by service. + + /// + /// Unused. Integer levels are determined by service. + /// [MarshalAs(UnmanagedType.I4)] public int confidence; - // Unused. Reserved for metric accuracy. + /// + /// Unused. Reserved for metric accuracy. + /// [MarshalAs(UnmanagedType.R4)] public float accuracy; @@ -265,7 +421,7 @@ public TangoPoseData() } /// - /// Performs a deep copy of pose data. + /// Deep copy from poseToCopy into this. /// /// Pose to copy. public void DeepCopy(TangoPoseData poseToCopy) @@ -276,11 +432,11 @@ public void DeepCopy(TangoPoseData poseToCopy) this.framePair.baseFrame = poseToCopy.framePair.baseFrame; this.framePair.targetFrame = poseToCopy.framePair.targetFrame; this.confidence = poseToCopy.confidence; - for(int i = 0; i < 4; ++i) + for (int i = 0; i < 4; ++i) { this.orientation[i] = poseToCopy.orientation[i]; } - for(int i = 0; i < 3; ++i) + for (int i = 0; i < 3; ++i) { this.translation[i] = poseToCopy.translation[i]; } @@ -288,14 +444,19 @@ public void DeepCopy(TangoPoseData poseToCopy) } /// - /// Used in the Unity SDK to hold information about the UUID - /// to avoid too many conversions when needing to access the information. + /// Unity-side representation of a area description ID and its associated metadata. + /// + /// Used to avoid too many conversions when needing to access the information. /// public class UUIDUnityHolder { + /// + /// The Metadata for this area description ID. + /// + public Metadata uuidMetaData; + private UUID uuidObject; private string uuidName; - public Metadata uuidMetaData; /// /// Initializes a new instance of the class. @@ -314,7 +475,6 @@ public UUIDUnityHolder() /// public void PrepareUUIDMetaData() { - uuidMetaData.PopulateMetaDataKeyValues(); } @@ -334,7 +494,7 @@ public void AllocateDataBuffer() /// The data marshalled by the UUID list object for this UUID object. public void SetDataUUID(byte[] uuidData) { - if(uuidObject.data == IntPtr.Zero) + if (uuidObject.data == IntPtr.Zero) { AllocateDataBuffer(); } @@ -346,7 +506,7 @@ public void SetDataUUID(byte[] uuidData) /// Copies the data contained by uuidData into our UUID object /// data IntPtr. /// - /// The UTF-8 encoded string for this UUID object. + /// The UTF-8 encoded string for this UUID object. public void SetDataUUID(string uuidString) { uuidName = uuidString; @@ -381,7 +541,9 @@ public bool IsObjectValid() } /// - /// Unique Identifier for an Area Description File. + /// The unique id associated with a single area description. + /// + /// Should be 36 characters including dashes and a null terminating character. /// [StructLayout(LayoutKind.Sequential)] public class UUID @@ -395,15 +557,16 @@ public class UUID /// public class UUID_list { - private UUIDUnityHolder[] UUIDs; + private UUIDUnityHolder[] uuids; private int count; /// /// Count of all Area Description Files (Read only). /// + /// The count. public int Count { - get {return count;} + get { return count; } } /// @@ -411,7 +574,7 @@ public int Count /// public UUID_list() { - UUIDs = null; + uuids = null; } /// @@ -422,32 +585,33 @@ public void PopulateUUIDList(string uuidNames) { System.Text.UTF8Encoding encoder = new System.Text.UTF8Encoding(); string[] splitNames = uuidNames.Split(','); - UUIDs = new UUIDUnityHolder[splitNames.Length]; + uuids = new UUIDUnityHolder[splitNames.Length]; count = splitNames.Length; - for(int i = 0; i < count; ++i) + for (int i = 0; i < count; ++i) { - if(UUIDs[i] == null) + if (uuids[i] == null) { - UUIDs[i] = new Tango.UUIDUnityHolder(); + uuids[i] = new Tango.UUIDUnityHolder(); } - //Following three calls should be done in the same order always. - UUIDs[i].SetDataUUID(System.Text.Encoding.UTF8.GetString(encoder.GetBytes(splitNames[i]))); - PoseProvider.GetAreaDescriptionMetaData(UUIDs[i]); - UUIDs[i].PrepareUUIDMetaData(); + + // Following three calls should be done in the same order always. + uuids[i].SetDataUUID(System.Text.Encoding.UTF8.GetString(encoder.GetBytes(splitNames[i]))); + PoseProvider.GetAreaDescriptionMetaData(uuids[i]); + uuids[i].PrepareUUIDMetaData(); } } /// - /// Returns the latest ADF UUID found in the list + /// Returns the latest ADF UUID found in the list. /// /// UUIDUnityHolder object that contains the last ADF saved. public UUIDUnityHolder GetLatestADFUUID() { - if(UUIDs == null || (UUIDs != null && count <= 0)) + if (uuids == null || (uuids != null && count <= 0)) { return null; } - return UUIDs[count - 1]; + return uuids[count - 1]; } /// @@ -457,11 +621,11 @@ public UUIDUnityHolder GetLatestADFUUID() /// Index. public UUIDUnityHolder GetADFAtIndex(int index) { - if(UUIDs == null || (index < 0 || index >= count)) + if (uuids == null || (index < 0 || index >= count)) { return null; } - return UUIDs[index]; + return uuids[index]; } /// @@ -471,11 +635,11 @@ public UUIDUnityHolder GetADFAtIndex(int index) /// Index. public string GetUUIDAsString(int index) { - if(UUIDs == null || (index < 0 || index >= count)) + if (uuids == null || (index < 0 || index >= count)) { return null; } - return UUIDs[index].GetStringDataUUID(); + return uuids[index].GetStringDataUUID(); } /// @@ -489,20 +653,19 @@ public bool HasEntries() } /// - /// Metadata_entry. + /// UUID Metadata list. /// - [StructLayout(LayoutKind.Sequential)] public class Metadata { - private System.Collections.Generic.Dictionary m_KeyValuePairs = new System.Collections.Generic.Dictionary(); public IntPtr meta_data_pointer; + private Dictionary m_keyValuePairs = new Dictionary(); /// /// Populates the meta data key values pairs. /// public void PopulateMetaDataKeyValues() { - PoseProvider.PopulateAreaDescriptionMetaDataKeyValues(meta_data_pointer,ref m_KeyValuePairs); + PoseProvider.PopulateAreaDescriptionMetaDataKeyValues(meta_data_pointer, ref m_keyValuePairs); } /// @@ -510,13 +673,15 @@ public void PopulateMetaDataKeyValues() /// PopulateMetaDataKeyValues() should be called before calling this. /// /// The meta data key values. - public System.Collections.Generic.Dictionary GetMetaDataKeyValues() + public Dictionary GetMetaDataKeyValues() { - return m_KeyValuePairs; + return m_keyValuePairs; } - } + /// + /// The TangoUnityImageData contains information about a byte buffer holding image data. + /// public class TangoUnityImageData { /// @@ -545,39 +710,28 @@ public class TangoUnityImageData public Int64 frame_number; /// - /// The pixel format of the data. + /// Pixel format of the data. /// public TangoEnums.TangoImageFormatType format; /// - /// Pixels in HAL_PIXEL_FORMAT_YV12 format. Y samples of width x height are - /// first, followed by V samples, with half the stride and half the lines of - /// the Y data, followed by a U samples with the same dimensions as the V - /// sample. This is stored in the API as a dynamic byte array (uint8_t*). + /// Pixels in the format of this image buffer. /// public byte[] data; } - + /// - /// Tango depth that is more Unity friendly. + /// Like TangoXYZij, but more Unity friendly. /// public class TangoUnityDepth { - public int m_version; - public int m_pointCount; - public float[] m_points; - public double m_timestamp; - public int m_ijRows; - public int m_ijColumns; - public int[] m_ij; - /// /// Max point array size is currently defined by the largest single mesh /// supported by Unity. This array is multiplied by 3 to account for the /// x/y/z components. /// public static readonly int MAX_POINTS_ARRAY_SIZE = Common.UNITY_MAX_SUPPORTED_VERTS_PER_MESH * 3; - + /// /// Max IJ array size is currently defined by the largest single mesh /// supported by Unity. This number is multiplied by 2 to account for the @@ -585,6 +739,56 @@ public class TangoUnityDepth /// public static readonly int MAX_IJ_ARRAY_SIZE = Common.UNITY_MAX_SUPPORTED_VERTS_PER_MESH * 2; + /// + /// + /// An integer denoting the version of the structure. + /// + public int m_version; + + /// + /// The number of points in the m_points array. + /// + /// Because the points array always contains 3D points, this is m_points.Count / 3. + /// + public int m_pointCount; + + /// + /// An array of packed coordinate triplets, x,y,z as floating point values. + /// + public float[] m_points; + + /// + /// Time of capture of the depth data for this struct (in seconds). + /// + public double m_timestamp; + + /// + /// The dimensions of the ij index buffer. + /// + public int m_ijRows; + + /// + /// The dimensions of the ij index buffer. + /// + public int m_ijColumns; + + /// + /// A 2D buffer, of size ij_rows x ij_cols in raster ordering that contains + /// the index of a point in the xyz array that was generated at this "ij" + /// location. + /// + /// A value of -1 denotes there was no corresponding point generated at that position. This buffer can be used + /// to find neighbouring points in the point cloud. + /// + /// For more information, see our + /// developer + /// overview on depth perception. + /// + public int[] m_ij; + + /// + /// Initializes an empty instance of the class, with no points. + /// public TangoUnityDepth() { m_points = new float[MAX_POINTS_ARRAY_SIZE]; diff --git a/UnityExamples/Assets/TangoSDK/Core/Scripts/Interfaces.meta b/UnityExamples/Assets/TangoSDK/Core/Scripts/Interfaces.meta index b67addc5..9e25d3ba 100644 --- a/UnityExamples/Assets/TangoSDK/Core/Scripts/Interfaces.meta +++ b/UnityExamples/Assets/TangoSDK/Core/Scripts/Interfaces.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: f5d37fb7ce64947f28ab06d0dbf90ce4 folderAsset: yes -timeCreated: 1440434026 +timeCreated: 1441729896 licenseType: Pro DefaultImporter: userData: diff --git a/UnityExamples/Assets/TangoSDK/Core/Scripts/Interfaces/IExperimentalTangoVideoOverlay.cs b/UnityExamples/Assets/TangoSDK/Core/Scripts/Interfaces/IExperimentalTangoVideoOverlay.cs index 61695067..b23c25b7 100644 --- a/UnityExamples/Assets/TangoSDK/Core/Scripts/Interfaces/IExperimentalTangoVideoOverlay.cs +++ b/UnityExamples/Assets/TangoSDK/Core/Scripts/Interfaces/IExperimentalTangoVideoOverlay.cs @@ -1,25 +1,35 @@ -/* - * Copyright 2014 Google Inc. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +//----------------------------------------------------------------------- +// +// +// Copyright 2015 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// +//----------------------------------------------------------------------- using System.Collections; using UnityEngine; /// -/// Interface for experimental Tango video overlay event handler. +/// Experimental API only, subject to change. Tango video overlay interface. /// public interface IExperimentalTangoVideoOverlay { + /// + /// This will be called when a new frame is available from the camera. + /// + /// The first scan-line of the color image is reserved for metadata instead of image pixels. + /// + /// Camera identifier. void OnExperimentalTangoImageAvailable(Tango.TangoEnums.TangoCameraId cameraId); } \ No newline at end of file diff --git a/UnityExamples/Assets/TangoSDK/Core/Scripts/Interfaces/ITangoDepth.cs b/UnityExamples/Assets/TangoSDK/Core/Scripts/Interfaces/ITangoDepth.cs index 1d99a6f0..b6813eb4 100644 --- a/UnityExamples/Assets/TangoSDK/Core/Scripts/Interfaces/ITangoDepth.cs +++ b/UnityExamples/Assets/TangoSDK/Core/Scripts/Interfaces/ITangoDepth.cs @@ -1,25 +1,35 @@ -/* - * Copyright 2014 Google Inc. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +//----------------------------------------------------------------------- +// +// +// Copyright 2015 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// +//----------------------------------------------------------------------- using System.Collections; using UnityEngine; /// -/// Interface for Tango depth event handler. +/// Tango depth interface. /// public interface ITangoDepth { - void OnTangoDepthAvailable(Tango.TangoUnityDepth tangoDepth); + /// + /// This is called each time new depth data is available. + /// + /// On the Tango tablet, the depth callback occurs at 5 Hz. + /// + /// Tango depth. + void OnTangoDepthAvailable(Tango.TangoUnityDepth tangoDepth); } \ No newline at end of file diff --git a/UnityExamples/Assets/TangoSDK/Core/Scripts/Interfaces/ITangoEvent.cs b/UnityExamples/Assets/TangoSDK/Core/Scripts/Interfaces/ITangoEvent.cs index eb2dad3e..d3619678 100644 --- a/UnityExamples/Assets/TangoSDK/Core/Scripts/Interfaces/ITangoEvent.cs +++ b/UnityExamples/Assets/TangoSDK/Core/Scripts/Interfaces/ITangoEvent.cs @@ -1,25 +1,33 @@ -/* - * Copyright 2014 Google Inc. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -using UnityEngine; +//----------------------------------------------------------------------- +// +// +// Copyright 2015 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// +//----------------------------------------------------------------------- using System.Collections; +using UnityEngine; /// -/// Interface for Tango Events +/// Event notification interface. /// public interface ITangoEvent { + /// + /// This is called each time a Tango event happens. + /// + /// Tango event. void OnTangoEventAvailableEventHandler(Tango.TangoEvent tangoEvent); } diff --git a/UnityExamples/Assets/TangoSDK/Core/Scripts/Interfaces/ITangoPose.cs b/UnityExamples/Assets/TangoSDK/Core/Scripts/Interfaces/ITangoPose.cs index e0370544..06a8169d 100644 --- a/UnityExamples/Assets/TangoSDK/Core/Scripts/Interfaces/ITangoPose.cs +++ b/UnityExamples/Assets/TangoSDK/Core/Scripts/Interfaces/ITangoPose.cs @@ -1,25 +1,36 @@ -/* - * Copyright 2014 Google Inc. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +//----------------------------------------------------------------------- +// +// +// Copyright 2015 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// +//----------------------------------------------------------------------- using System.Collections; using UnityEngine; /// -/// Interface for Tango pose event handler. +/// Pose interface. /// public interface ITangoPose { - void OnTangoPoseAvailable(Tango.TangoPoseData poseData); + /// + /// This is called as new pose updates become available. + /// + /// This will be called for START_OF_SERVICE to DEVICE, AREA_DESCRIPTION to DEVICE, and START_OF_SERVICE to + /// AREA_DESCRIPTION, based on which flags have been set on the TangoApplication. + /// + /// Pose data. + void OnTangoPoseAvailable(Tango.TangoPoseData poseData); } diff --git a/UnityExamples/Assets/TangoSDK/Core/Scripts/Interfaces/ITangoVideoOverlay.cs b/UnityExamples/Assets/TangoSDK/Core/Scripts/Interfaces/ITangoVideoOverlay.cs index f208a9f9..06b7270f 100644 --- a/UnityExamples/Assets/TangoSDK/Core/Scripts/Interfaces/ITangoVideoOverlay.cs +++ b/UnityExamples/Assets/TangoSDK/Core/Scripts/Interfaces/ITangoVideoOverlay.cs @@ -1,26 +1,37 @@ -/* - * Copyright 2014 Google Inc. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +//----------------------------------------------------------------------- +// +// +// Copyright 2015 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// +//----------------------------------------------------------------------- using System.Collections; using UnityEngine; /// -/// Interface for Tango video overlay event handler. +/// Tango video overlay interface. /// public interface ITangoVideoOverlay { + /// + /// This will be called when a new frame is available from the camera. + /// + /// The first scan-line of the color image is reserved for metadata instead of image pixels. + /// + /// Camera identifier. + /// Image buffer. void OnTangoImageAvailableEventHandler(Tango.TangoEnums.TangoCameraId cameraId, Tango.TangoUnityImageData imageBuffer); } \ No newline at end of file diff --git a/UnityExamples/Assets/TangoSDK/Core/Scripts/Listeners.meta b/UnityExamples/Assets/TangoSDK/Core/Scripts/Listeners.meta index 7adfc8ed..582cccc2 100644 --- a/UnityExamples/Assets/TangoSDK/Core/Scripts/Listeners.meta +++ b/UnityExamples/Assets/TangoSDK/Core/Scripts/Listeners.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: f2e1e806634414f10ad59d9b84c3130c folderAsset: yes -timeCreated: 1440434026 +timeCreated: 1441729896 licenseType: Pro DefaultImporter: userData: diff --git a/UnityExamples/Assets/TangoSDK/Core/Scripts/Listeners/DepthListener.cs b/UnityExamples/Assets/TangoSDK/Core/Scripts/Listeners/DepthListener.cs index 7e8e035e..bedbebd3 100644 --- a/UnityExamples/Assets/TangoSDK/Core/Scripts/Listeners/DepthListener.cs +++ b/UnityExamples/Assets/TangoSDK/Core/Scripts/Listeners/DepthListener.cs @@ -1,18 +1,22 @@ -/* - * Copyright 2014 Google Inc. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +//----------------------------------------------------------------------- +// +// +// Copyright 2015 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// +//----------------------------------------------------------------------- using System; using System.Runtime.InteropServices; using UnityEngine; @@ -20,24 +24,23 @@ namespace Tango { /// - /// On tango depth available event handler. + /// Delegate for Tango depth events. /// /// TangoUnityDepth object for the available depth frame. - public delegate void OnTangoDepthAvailableEventHandler(TangoUnityDepth tangoDepth); + internal delegate void OnTangoDepthAvailableEventHandler(TangoUnityDepth tangoDepth); /// - /// Abstract base class that can be used to - /// automatically register for onDepthAvailable - /// callbacks from the Tango Service. + /// Marshals Tango depth data between the C callbacks in one thread and + /// the main Unity thread. /// - public class DepthListener + internal class DepthListener { private Tango.DepthProvider.TangoService_onDepthAvailable m_onDepthAvailableCallback; /// /// Occurs when m_on tango depth available. /// - private event OnTangoDepthAvailableEventHandler m_OnTangoDepthAvailable; + private event OnTangoDepthAvailableEventHandler OnTangoDepthAvailable; private bool m_isDirty = false; private TangoUnityDepth m_tangoDepth; @@ -45,56 +48,59 @@ public class DepthListener private float[] m_depthPoints; /// - /// Register this class to receive the OnDepthAvailable callback. + /// Register to get Tango depth callbacks. + /// + /// NOTE: Tango depth callbacks happen on a different thread than the main + /// Unity thread. /// - public virtual void SetCallback() + internal virtual void SetCallback() { m_tangoDepth = new TangoUnityDepth(); m_onDepthAvailableCallback = new Tango.DepthProvider.TangoService_onDepthAvailable(_OnDepthAvailable); - Tango.DepthProvider.SetCallback(m_onDepthAvailableCallback); + Tango.DepthProvider.SetCallback(m_onDepthAvailableCallback); } /// - /// Sends the depth if available. + /// Raise a Tango depth event if there is new data. /// - public void SendDepthIfAvailable() + internal void SendDepthIfAvailable() { - if (m_isDirty && m_OnTangoDepthAvailable != null) + if (m_isDirty && OnTangoDepthAvailable != null) { lock (m_lockObject) { - m_OnTangoDepthAvailable(m_tangoDepth); + OnTangoDepthAvailable(m_tangoDepth); } m_isDirty = false; } } /// - /// Registers the on tango depth available. + /// Register a Unity main thread handler for the Tango depth event. /// - /// Handler. - public void RegisterOnTangoDepthAvailable(OnTangoDepthAvailableEventHandler handler) + /// Event handler to register. + internal void RegisterOnTangoDepthAvailable(OnTangoDepthAvailableEventHandler handler) { if (handler != null) { - m_OnTangoDepthAvailable += handler; + OnTangoDepthAvailable += handler; } } /// - /// Unregisters the on tango depth available. + /// Unregisters a Unity main thread handler for the Tango depth event. /// - /// Handler. - public void UnregisterOnTangoDepthAvailable(OnTangoDepthAvailableEventHandler handler) + /// Event handler to unregister. + internal void UnregisterOnTangoDepthAvailable(OnTangoDepthAvailableEventHandler handler) { if (handler != null) { - m_OnTangoDepthAvailable -= handler; + OnTangoDepthAvailable -= handler; } } /// - /// Callback that gets called when depth is available + /// DEPRECATED: Callback that gets called when depth is available /// from the Tango Service. /// /// Callback context. diff --git a/UnityExamples/Assets/TangoSDK/Core/Scripts/Listeners/PoseListener.cs b/UnityExamples/Assets/TangoSDK/Core/Scripts/Listeners/PoseListener.cs index eb6a093d..4f79d849 100644 --- a/UnityExamples/Assets/TangoSDK/Core/Scripts/Listeners/PoseListener.cs +++ b/UnityExamples/Assets/TangoSDK/Core/Scripts/Listeners/PoseListener.cs @@ -1,18 +1,22 @@ -/* - * Copyright 2014 Google Inc. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +//----------------------------------------------------------------------- +// +// +// Copyright 2015 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// +//----------------------------------------------------------------------- using System; using System.Collections.Generic; using UnityEngine; @@ -20,49 +24,32 @@ namespace Tango { /// - /// On tango pose available event handler. + /// Delegate for Tango pose events. /// - public delegate void OnTangoPoseAvailableEventHandler(TangoPoseData poseData); + /// The pose data from Tango. + internal delegate void OnTangoPoseAvailableEventHandler(TangoPoseData poseData); /// - /// Abstract base class that can be used to - /// automatically register for onPoseAvailable - /// callbacks from the Tango Service. + /// Marshals Tango pose data between the C callbacks in one thread and the main Unity thread. /// public class PoseListener { - public Tango.PoseProvider.TangoService_onPoseAvailable m_poseAvailableCallback; + /// + /// DEPRECATED: The pose available callback. + /// + internal Tango.PoseProvider.TangoService_onPoseAvailable m_poseAvailableCallback; private const int SIZE_OF_POSE_DATA_POOL = 3; - private TangoPoseData m_motionTrackingData; - private TangoPoseData m_areaLearningData; - private TangoPoseData m_relocalizationData; + private TangoPoseData m_motionTrackingData = null; + private TangoPoseData m_areaLearningData = null; + private TangoPoseData m_relocalizationData = null; private OnTangoPoseAvailableEventHandler m_onTangoPoseAvailable; private Stack m_poseDataPool; private bool m_isDirty = false; + private object m_lockObject = new object(); /// - /// Initializes a new instance of the class. - /// - public PoseListener() - { - m_motionTrackingData = null; - m_areaLearningData = null; - m_relocalizationData = null; - m_poseDataPool = new Stack(); - - // Add pre-allocated TangoPoseData objects to the - // pool stack. - for(int i = 0; i < SIZE_OF_POSE_DATA_POOL; ++i) - { - TangoPoseData emptyPose = new TangoPoseData(); - m_poseDataPool.Push(emptyPose); - } - } - - /// - /// Gets or sets a value indicating whether this - /// is using auto reset. + /// DEPRECATED: Gets or sets a value indicating whether this is using auto reset. /// /// true if auto reset; otherwise, false. public bool AutoReset @@ -72,7 +59,7 @@ public bool AutoReset } /// - /// Gets or sets a value indicating whether this use camera intrinsics. + /// DEPRECATED: Gets or sets a value indicating whether this use camera intrinsics. /// /// true if use camera intrinsics; otherwise, false. public bool UseCameraIntrinsics @@ -82,143 +69,210 @@ public bool UseCameraIntrinsics } /// - /// Sends the pose if available. + /// Initializes a new instance of the class. /// - /// The pose status if available. - public void SendPoseIfAvailable() + internal PoseListener() { - if(m_isDirty) - { - if(m_onTangoPoseAvailable != null) + m_poseDataPool = new Stack(); + + // Add pre-allocated TangoPoseData objects to the + // pool stack. + for (int i = 0; i < SIZE_OF_POSE_DATA_POOL; ++i) + { + TangoPoseData emptyPose = new TangoPoseData(); + m_poseDataPool.Push(emptyPose); + } + } + + /// + /// Raise a Tango pose event if there is new data. + /// + internal void SendPoseIfAvailable() + { +#if UNITY_EDITOR + if (TangoApplication.m_mouseEmulationViaPoseUpdates) + { + PoseProvider.UpdateTangoEmulation(); + lock (m_lockObject) { - if(m_motionTrackingData != null) + if (m_onTangoPoseAvailable != null) { - m_onTangoPoseAvailable(m_motionTrackingData); - m_poseDataPool.Push(m_motionTrackingData); - m_motionTrackingData = null; + FillEmulatedPoseData(ref m_motionTrackingData, + TangoEnums.TangoCoordinateFrameType.TANGO_COORDINATE_FRAME_START_OF_SERVICE, + TangoEnums.TangoCoordinateFrameType.TANGO_COORDINATE_FRAME_DEVICE); + FillEmulatedPoseData(ref m_areaLearningData, + TangoEnums.TangoCoordinateFrameType.TANGO_COORDINATE_FRAME_AREA_DESCRIPTION, + TangoEnums.TangoCoordinateFrameType.TANGO_COORDINATE_FRAME_DEVICE); + m_isDirty = true; } - if(m_areaLearningData != null) - { - m_onTangoPoseAvailable(m_areaLearningData); - m_poseDataPool.Push(m_areaLearningData); - m_areaLearningData = null; - } - if(m_relocalizationData != null) + } + } +#endif + + if (m_isDirty) + { + if (m_onTangoPoseAvailable != null) + { + // NOTE: If this becomes a performance issue, this could be changed to use + // Interlocked.CompareExchange to "consume" the motion tracking data. + lock (m_lockObject) { - m_onTangoPoseAvailable(m_relocalizationData); - m_poseDataPool.Push(m_relocalizationData); - m_relocalizationData = null; + if (m_motionTrackingData != null) + { + m_onTangoPoseAvailable(m_motionTrackingData); + m_poseDataPool.Push(m_motionTrackingData); + m_motionTrackingData = null; + } + if (m_areaLearningData != null) + { + m_onTangoPoseAvailable(m_areaLearningData); + m_poseDataPool.Push(m_areaLearningData); + m_areaLearningData = null; + } + if (m_relocalizationData != null) + { + m_onTangoPoseAvailable(m_relocalizationData); + m_poseDataPool.Push(m_relocalizationData); + m_relocalizationData = null; + } } } - m_isDirty = false; + m_isDirty = false; } } /// - /// Registers the callback. + /// Register to get Tango pose callbacks for specific reference frames. + /// + /// NOTE: Tango pose callbacks happen on a different thread than the main + /// Unity thread. /// - /// Frame pairs. - public void SetCallback(TangoCoordinateFramePair[] framePairs) + /// The reference frames to get callbacks for. + internal void SetCallback(TangoCoordinateFramePair[] framePairs) { m_poseAvailableCallback = new Tango.PoseProvider.TangoService_onPoseAvailable(_OnPoseAvailable); Tango.PoseProvider.SetCallback(framePairs, m_poseAvailableCallback); } - + /// - /// Registers for Tango pose available. + /// Register a Unity main thread handler for the Tango pose event. /// - /// Handler. - public void RegisterTangoPoseAvailable(OnTangoPoseAvailableEventHandler handler) + /// Event handler to register. + internal void RegisterTangoPoseAvailable(OnTangoPoseAvailableEventHandler handler) { - if(handler != null) + if (handler != null) { m_onTangoPoseAvailable += handler; } } - + /// - /// Unregisters the tango pose available. + /// Unregister a Unity main thread handler for the Tango depth event. /// - /// Handler. - public void UnregisterTangoPoseAvailable(OnTangoPoseAvailableEventHandler handler) + /// Event handler to unregister. + internal void UnregisterTangoPoseAvailable(OnTangoPoseAvailableEventHandler handler) { - if(handler != null) + if (handler != null) { m_onTangoPoseAvailable -= handler; } } /// - /// Handle the callback sent by the Tango Service - /// when a new pose is sampled. + /// Handle the callback sent by the Tango Service when a new pose is sampled. /// /// Callback context. /// Pose. private void _OnPoseAvailable(IntPtr callbackContext, TangoPoseData pose) { - // MotionTracking if (pose.framePair.baseFrame == TangoEnums.TangoCoordinateFrameType.TANGO_COORDINATE_FRAME_START_OF_SERVICE && pose.framePair.targetFrame == TangoEnums.TangoCoordinateFrameType.TANGO_COORDINATE_FRAME_DEVICE) { - // Only set new pose once the previous pose has been returned. - if(m_motionTrackingData == null) + // MotionTracking + lock (m_lockObject) { - TangoPoseData currentPose = m_poseDataPool.Pop(); - - if(currentPose == null) - { - return; - } - else + // Only set new pose once the previous pose has been returned. + if (m_motionTrackingData == null) { + TangoPoseData currentPose = m_poseDataPool.Pop(); currentPose.DeepCopy(pose); m_motionTrackingData = currentPose; } } } - // ADF Localized else if (pose.framePair.baseFrame == TangoEnums.TangoCoordinateFrameType.TANGO_COORDINATE_FRAME_AREA_DESCRIPTION && pose.framePair.targetFrame == TangoEnums.TangoCoordinateFrameType.TANGO_COORDINATE_FRAME_DEVICE) { - // Only set new pose once the previous pose has been returned. - if(m_areaLearningData == null) + // ADF Localized + lock (m_lockObject) { - TangoPoseData currentPose = m_poseDataPool.Pop(); - - if(currentPose == null) - { - return; - } - else + // Only set new pose once the previous pose has been returned. + if (m_areaLearningData == null) { + TangoPoseData currentPose = m_poseDataPool.Pop(); currentPose.DeepCopy(pose); m_areaLearningData = currentPose; } } - } - // Relocalized against ADF + } else if (pose.framePair.baseFrame == TangoEnums.TangoCoordinateFrameType.TANGO_COORDINATE_FRAME_AREA_DESCRIPTION && pose.framePair.targetFrame == TangoEnums.TangoCoordinateFrameType.TANGO_COORDINATE_FRAME_START_OF_SERVICE) { - // Only set new pose once the previous pose has been returned. - if(m_relocalizationData == null) + // Relocalized against ADF + lock (m_lockObject) { - TangoPoseData currentPose = m_poseDataPool.Pop(); - - if(currentPose == null) - { - return; - } - else + // Only set new pose once the previous pose has been returned. + if (m_relocalizationData == null) { + TangoPoseData currentPose = m_poseDataPool.Pop(); currentPose.DeepCopy(pose); m_relocalizationData = currentPose; } } } - m_isDirty = true; + m_isDirty = true; + } + +#if UNITY_EDITOR + /// + /// Fill out poseData with emulated values from Tango. + /// + /// The poseData to fill out. + /// Base frame to set. + /// Target frame to set. + private void FillEmulatedPoseData(ref TangoPoseData poseData, TangoEnums.TangoCoordinateFrameType baseFrame, + TangoEnums.TangoCoordinateFrameType targetFrame) + { + if (poseData == null) + { + TangoPoseData currentPose = m_poseDataPool.Pop(); + + if (currentPose != null) + { + Vector3 position; + Quaternion rotation; + PoseProvider.GetTangoEmulation(out position, out rotation); + + currentPose.framePair.baseFrame = baseFrame; + currentPose.framePair.targetFrame = targetFrame; + + currentPose.timestamp = Time.time * 1000; // timestamp is in ms, time is in sec. + currentPose.version = 0; // Not actually used + currentPose.status_code = TangoEnums.TangoPoseStatusType.TANGO_POSE_VALID; + + currentPose.translation[0] = position.x; + currentPose.translation[1] = position.y; + currentPose.translation[2] = position.z; + currentPose.orientation[0] = rotation.x; + currentPose.orientation[1] = rotation.y; + currentPose.orientation[2] = rotation.z; + currentPose.orientation[3] = rotation.w; + poseData = currentPose; + } + } } +#endif } -} \ No newline at end of file +} diff --git a/UnityExamples/Assets/TangoSDK/Core/Scripts/Listeners/TangoEventListener.cs b/UnityExamples/Assets/TangoSDK/Core/Scripts/Listeners/TangoEventListener.cs index 6f62da44..873098ca 100644 --- a/UnityExamples/Assets/TangoSDK/Core/Scripts/Listeners/TangoEventListener.cs +++ b/UnityExamples/Assets/TangoSDK/Core/Scripts/Listeners/TangoEventListener.cs @@ -1,31 +1,37 @@ -/* - * Copyright 2014 Google Inc. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +//----------------------------------------------------------------------- +// +// +// Copyright 2015 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// +//----------------------------------------------------------------------- using System; using UnityEngine; namespace Tango { - public delegate void OnTangoEventAvailableEventHandler(TangoEvent tangoEvent); + /// + /// IDelegate for Tango event events. + /// + /// Tango event that happened. + internal delegate void OnTangoEventAvailableEventHandler(TangoEvent tangoEvent); /// - /// Abstract base class that can be used to - /// automatically register for onEventAvailable - /// callbacks from the Tango Service. + /// Marshals Tango event data between the C callbacks in one thread and the main Unity thread. /// - public class TangoEventListener + internal class TangoEventListener { private TangoEvents.TangoService_onEventAvailable m_onEventAvaialableCallback; private OnTangoEventAvailableEventHandler m_onTangoEventAvailable; @@ -33,66 +39,68 @@ public class TangoEventListener private bool m_isDirty; /// - /// Sets the callback. + /// Register to get Tango event callbacks. + /// + /// NOTE: Tango event callbacks happen on a different thread than the main + /// Unity thread. /// - public virtual void SetCallback() + internal virtual void SetCallback() { - m_onEventAvaialableCallback = new TangoEvents.TangoService_onEventAvailable(_onEventAvailable); - TangoEvents.SetCallback(m_onEventAvaialableCallback); + m_onEventAvaialableCallback = new TangoEvents.TangoService_onEventAvailable(_onEventAvailable); + TangoEvents.SetCallback(m_onEventAvaialableCallback); m_previousEvent = new TangoEvent(); m_isDirty = false; } - /// - /// Sends if tango event available. - /// - /// If set to true using UX library. - public void SendIfTangoEventAvailable() - { - if(m_isDirty) - { - if(m_onTangoEventAvailable != null) - { - m_onTangoEventAvailable(m_previousEvent); - } + /// + /// Raise a Tango event if there is new data. + /// + internal void SendIfTangoEventAvailable() + { + if (m_isDirty) + { + if (m_onTangoEventAvailable != null) + { + m_onTangoEventAvailable(m_previousEvent); + } - m_isDirty = true; - } + m_isDirty = true; + } } /// - /// Registers the on tango event available. + /// Register a Unity main thread handler for Tango events. /// - /// Handler. - public void RegisterOnTangoEventAvailable(OnTangoEventAvailableEventHandler handler) + /// Event handler to register. + internal void RegisterOnTangoEventAvailable(OnTangoEventAvailableEventHandler handler) { - if(handler != null) + if (handler != null) { m_onTangoEventAvailable += handler; } } /// - /// Unregisters the on tango event available. + /// Unregister a Unity main thread handler for the Tango depth event. /// - /// Handler. - public void UnregisterOnTangoEventAvailable(OnTangoEventAvailableEventHandler handler) + /// Event handler to unregister. + internal void UnregisterOnTangoEventAvailable(OnTangoEventAvailableEventHandler handler) { - if(handler != null) + if (handler != null) { m_onTangoEventAvailable -= handler; } } /// - /// Handle the callback sent by the Tango Service + /// DEPRECATED: Handle the callback sent by the Tango Service /// when a new event is issued. /// /// Callback context. /// Tango event. protected void _onEventAvailable(IntPtr callbackContext, TangoEvent tangoEvent) { - if(tangoEvent != null) + if (tangoEvent != null) { m_previousEvent.timestamp = tangoEvent.timestamp; m_previousEvent.type = tangoEvent.type; diff --git a/UnityExamples/Assets/TangoSDK/Core/Scripts/Listeners/VideoOverlayListener.cs b/UnityExamples/Assets/TangoSDK/Core/Scripts/Listeners/VideoOverlayListener.cs index 5d06c399..5f07a266 100644 --- a/UnityExamples/Assets/TangoSDK/Core/Scripts/Listeners/VideoOverlayListener.cs +++ b/UnityExamples/Assets/TangoSDK/Core/Scripts/Listeners/VideoOverlayListener.cs @@ -1,62 +1,88 @@ - -/* - * Copyright 2014 Google Inc. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -using UnityEngine; +//----------------------------------------------------------------------- +// +// +// Copyright 2015 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// +//----------------------------------------------------------------------- using System.Collections; using System; using System.Runtime.InteropServices; +using UnityEngine; namespace Tango { - public delegate void OnTangoImageAvailableEventHandler(TangoEnums.TangoCameraId cameraId, - TangoUnityImageData imageBuffer); - public delegate void OnExperimentalTangoImageAvailableEventHandler(Tango.TangoEnums.TangoCameraId cameraId); + /// + /// Delegate for Tango image events. + /// + /// The camera for the image. + /// The image from the camera. + internal delegate void OnTangoImageAvailableEventHandler(TangoEnums.TangoCameraId cameraId, + TangoUnityImageData imageBuffer); + + /// + /// Experimental API only, subject to change. Delegate for Tango image events. + /// + /// The camera for the image. + internal delegate void OnExperimentalTangoImageAvailableEventHandler(Tango.TangoEnums.TangoCameraId cameraId); /// - /// Video overlay listener. + /// Marshals Tango image data between the C callbacks in one thread and + /// the main Unity thread. /// - public class VideoOverlayListener + internal class VideoOverlayListener { - private VideoOverlayProvider.TangoService_onImageAvailable m_onImageAvailable; + private VideoOverlayProvider.TangoService_onImageAvailable m_onImageAvailable; private VideoOverlayProvider.TangoService_onUnityFrameAvailable m_onUnityFrameAvailable; - private event OnTangoImageAvailableEventHandler m_onTangoImageAvailable; - private event OnExperimentalTangoImageAvailableEventHandler m_onExperimentalTangoImageAvailable; + /// + /// Called when a new Tango image is available. + /// + private event OnTangoImageAvailableEventHandler OnTangoImageAvailable; - private TangoEnums.TangoCameraId m_previousCameraId; - private TangoUnityImageData m_previousImageBuffer; - private bool m_shouldSendEvent = false; + /// + /// Called when a new Tange image is available (experimental version). + /// + private event OnExperimentalTangoImageAvailableEventHandler OnExperimentalTangoImageAvailable; + + private TangoEnums.TangoCameraId m_previousCameraId; + private TangoUnityImageData m_previousImageBuffer; + private bool m_shouldSendEvent = false; private bool m_usingExperimentalOverlay = false; - /// - /// Sets the callback for image updates. - /// - /// Camera identifier. - public virtual void SetCallback(Tango.TangoEnums.TangoCameraId cameraId, bool useExperimentalOverlay, YUVTexture videoOverlayTexture) - { + /// + /// Register to get Tango image events. + /// + /// NOTE: Tango image events happen on a different thread than the main + /// Unity thread. + /// + /// Camera identifier to get events for. + /// If true, use the experimental video overlay. + /// The video overlay texture to use. Only used in experimental mode. + internal virtual void SetCallback(Tango.TangoEnums.TangoCameraId cameraId, bool useExperimentalOverlay, YUVTexture videoOverlayTexture) + { m_usingExperimentalOverlay = useExperimentalOverlay; - if(!useExperimentalOverlay) + if (!useExperimentalOverlay) { m_previousImageBuffer = new TangoUnityImageData(); - m_onImageAvailable = new Tango.VideoOverlayProvider.TangoService_onImageAvailable(_OnImageAvailable); - Tango.VideoOverlayProvider.SetCallback(cameraId, m_onImageAvailable); + m_onImageAvailable = new Tango.VideoOverlayProvider.TangoService_onImageAvailable(_OnImageAvailable); + Tango.VideoOverlayProvider.SetCallback(cameraId, m_onImageAvailable); } else { - if(videoOverlayTexture != null) + if (videoOverlayTexture != null) { m_onUnityFrameAvailable = new Tango.VideoOverlayProvider.TangoService_onUnityFrameAvailable(_OnExperimentalUnityFrameAvailable); VideoOverlayProvider.ExperimentalConnectTexture(cameraId, @@ -70,93 +96,93 @@ public virtual void SetCallback(Tango.TangoEnums.TangoCameraId cameraId, bool us Debug.Log("VideoOverlayListener.SetCallback() : No Texture2D found!"); } } - } + } /// - /// Sends event if video overlay is available. + /// Raise a Tango image event if there is new data. /// - public void SendIfVideoOverlayAvailable() - { - if(m_usingExperimentalOverlay) + internal void SendIfVideoOverlayAvailable() + { + if (m_usingExperimentalOverlay) { - if(m_onExperimentalTangoImageAvailable != null && m_shouldSendEvent) + if (OnExperimentalTangoImageAvailable != null && m_shouldSendEvent) { - m_onExperimentalTangoImageAvailable(m_previousCameraId); + OnExperimentalTangoImageAvailable(m_previousCameraId); m_shouldSendEvent = false; } } else { - if(m_onTangoImageAvailable != null && m_shouldSendEvent) - { - m_onTangoImageAvailable(TangoEnums.TangoCameraId.TANGO_CAMERA_COLOR, m_previousImageBuffer); + if (OnTangoImageAvailable != null && m_shouldSendEvent) + { + OnTangoImageAvailable(TangoEnums.TangoCameraId.TANGO_CAMERA_COLOR, m_previousImageBuffer); m_shouldSendEvent = false; - } + } } - } + } /// - /// Registers the on tango image available. + /// Register a Unity main thread handler for the Tango image event. /// - /// Handler. - public void RegisterOnTangoImageAvailable(OnTangoImageAvailableEventHandler handler) + /// Event handler to register. + internal void RegisterOnTangoImageAvailable(OnTangoImageAvailableEventHandler handler) { - if(handler != null) + if (handler != null) { - m_onTangoImageAvailable += handler; + OnTangoImageAvailable += handler; } } /// - /// Unregisters the on tango image available. + /// Unregister a Unity main thread handler for the Tango image event. /// - /// Handler. - public void UnregisterOnTangoImageAvailable(OnTangoImageAvailableEventHandler handler) + /// Event handler to unregister. + internal void UnregisterOnTangoImageAvailable(OnTangoImageAvailableEventHandler handler) { - if(handler != null) + if (handler != null) { - m_onTangoImageAvailable -= handler; + OnTangoImageAvailable -= handler; } } /// - /// Registers the on tango image available. + /// Register a Unity main thread handler for the Tango image event. /// - /// Handler. - public void RegisterOnExperimentalTangoImageAvailable(OnExperimentalTangoImageAvailableEventHandler handler) + /// Event handler to register. + internal void RegisterOnExperimentalTangoImageAvailable(OnExperimentalTangoImageAvailableEventHandler handler) { - if(handler != null) + if (handler != null) { - m_onExperimentalTangoImageAvailable += handler; + OnExperimentalTangoImageAvailable += handler; } } /// - /// Unregisters the on tango image available. + /// Unregister a Unity main thread handler for the Tango image event. /// - /// Handler. - public void UnregisterOnExperimentalTangoImageAvailable(OnExperimentalTangoImageAvailableEventHandler handler) + /// Event handler to unregister. + internal void UnregisterOnExperimentalTangoImageAvailable(OnExperimentalTangoImageAvailableEventHandler handler) { - if(handler != null) + if (handler != null) { - m_onExperimentalTangoImageAvailable -= handler; + OnExperimentalTangoImageAvailable -= handler; } } - - /// - /// Handle the callback sent by the Tango Service - /// when a new image is sampled. - /// - /// Camera identifier. - /// Callback context. - /// Image buffer. - protected void _OnImageAvailable(IntPtr callbackContext, - TangoEnums.TangoCameraId cameraId, - TangoImageBuffer imageBuffer) + + /// + /// DEPRECATED: Handle the callback sent by the Tango Service + /// when a new image is sampled. + /// + /// Callback context. + /// Camera identifier. + /// Image buffer. + protected void _OnImageAvailable(IntPtr callbackContext, + TangoEnums.TangoCameraId cameraId, + TangoImageBuffer imageBuffer) { - m_previousCameraId = cameraId; + m_previousCameraId = cameraId; - if(m_previousImageBuffer.data == null) + if (m_previousImageBuffer.data == null) { m_previousImageBuffer.data = new byte[imageBuffer.width * imageBuffer.height * 2]; } @@ -170,10 +196,15 @@ protected void _OnImageAvailable(IntPtr callbackContext, Marshal.Copy(imageBuffer.data, m_previousImageBuffer.data, 0, m_previousImageBuffer.data.Length); - m_shouldSendEvent = true; + m_shouldSendEvent = true; } - public void _OnExperimentalUnityFrameAvailable(IntPtr callbackContext, Tango.TangoEnums.TangoCameraId cameraId) + /// + /// DEPRECATED: Handle the callback set by the Tango Service when a new image is available. + /// + /// Callback context. + /// Camera identifier. + protected void _OnExperimentalUnityFrameAvailable(IntPtr callbackContext, Tango.TangoEnums.TangoCameraId cameraId) { m_previousCameraId = cameraId; m_shouldSendEvent = true; diff --git a/UnityExamples/Assets/TangoSDK/Core/Scripts/TangoWrappers.meta b/UnityExamples/Assets/TangoSDK/Core/Scripts/TangoWrappers.meta index ab2a508b..ecc99fdb 100644 --- a/UnityExamples/Assets/TangoSDK/Core/Scripts/TangoWrappers.meta +++ b/UnityExamples/Assets/TangoSDK/Core/Scripts/TangoWrappers.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 4fc55f6870f0443b986d0ef797cec697 folderAsset: yes -timeCreated: 1440434026 +timeCreated: 1441729896 licenseType: Pro DefaultImporter: userData: diff --git a/UnityExamples/Assets/TangoSDK/Core/Scripts/TangoWrappers/DepthProvider.cs b/UnityExamples/Assets/TangoSDK/Core/Scripts/TangoWrappers/DepthProvider.cs index 841a7b9f..5dadf42f 100644 --- a/UnityExamples/Assets/TangoSDK/Core/Scripts/TangoWrappers/DepthProvider.cs +++ b/UnityExamples/Assets/TangoSDK/Core/Scripts/TangoWrappers/DepthProvider.cs @@ -1,18 +1,22 @@ -/* - * Copyright 2014 Google Inc. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +//----------------------------------------------------------------------- +// +// +// Copyright 2015 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// +//----------------------------------------------------------------------- using System; using System.Collections; using System.Runtime.InteropServices; @@ -21,24 +25,28 @@ namespace Tango { /// - /// Wraps depth related Tango Service functionality. + /// C API wrapper for the Tango depth interface. /// - public class DepthProvider + internal class DepthProvider { + /// + /// Tango depth C callback function signature. + /// + /// Callback context. + /// Depth information. [UnmanagedFunctionPointer(CallingConvention.Cdecl)] - public delegate void TangoService_onDepthAvailable(IntPtr callbackContext, [In,Out] TangoXYZij xyzij); + internal delegate void TangoService_onDepthAvailable(IntPtr callbackContext, [In, Out] TangoXYZij xyzij); /// - /// Sets the callback that is called when new depth - /// points have been sampled by the Tango Service. + /// Set the C callback for the Tango depth interface. /// /// Callback. - public static void SetCallback(TangoService_onDepthAvailable callback) + internal static void SetCallback(TangoService_onDepthAvailable callback) { int returnValue = DepthAPI.TangoService_connectOnXYZijAvailable(callback); if (returnValue != Common.ErrorType.TANGO_SUCCESS) { - Debug.Log("DepthProvider.SetCallback() Callback was not set!"); + Debug.Log("DepthProvider.SetCallback() Callback was not set!"); } else { @@ -46,9 +54,9 @@ public static void SetCallback(TangoService_onDepthAvailable callback) } } - /// - /// Wraps depth functionality from Tango Service. - /// + [System.Diagnostics.CodeAnalysis.SuppressMessage("StyleCop.CSharp.DocumentationRules", + "SA1600:ElementsMustBeDocumented", + Justification = "C API Wrapper.")] private struct DepthAPI { #if UNITY_ANDROID && !UNITY_EDITOR diff --git a/UnityExamples/Assets/TangoSDK/Core/Scripts/TangoWrappers/PoseProvider.cs b/UnityExamples/Assets/TangoSDK/Core/Scripts/TangoWrappers/PoseProvider.cs index b619e33a..39473e36 100644 --- a/UnityExamples/Assets/TangoSDK/Core/Scripts/TangoWrappers/PoseProvider.cs +++ b/UnityExamples/Assets/TangoSDK/Core/Scripts/TangoWrappers/PoseProvider.cs @@ -1,65 +1,87 @@ -/* - * Copyright 2014 Google Inc. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +//----------------------------------------------------------------------- +// +// +// Copyright 2015 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// +//----------------------------------------------------------------------- +using System; using System.Collections; +using System.Collections.Generic; using System.Runtime.InteropServices; using UnityEngine; -using System; namespace Tango { /// - /// Provide pose related functionality. + /// C API wrapper for the Tango pose interface. /// public class PoseProvider - { - + { + /// + /// Tango pose C callback function signature. + /// + /// Callback context. + /// Pose data. [UnmanagedFunctionPointer(CallingConvention.Cdecl)] - public delegate void TangoService_onPoseAvailable(IntPtr callbackContext, [In,Out] TangoPoseData pose); - - private static readonly string CLASS_NAME = "PoseProvider"; + internal delegate void TangoService_onPoseAvailable(IntPtr callbackContext, [In, Out] TangoPoseData pose); + private const float MOUSE_LOOK_SENSITIVITY = 100.0f; private const float TRANSLATION_SPEED = 2.0f; + private static readonly string CLASS_NAME = "PoseProvider"; // Keeps track of all the ADFs on the device. private static UUID_list m_adfList = new UUID_list(); +#if UNITY_EDITOR /// - /// Sets the callback to be used when a new Pose is - /// presented by the Tango Service. + /// The emulated pose position. Used for Tango emulation on PC. /// - /// Callback. - public static void SetCallback(TangoCoordinateFramePair[] framePairs, TangoService_onPoseAvailable callback) - { - int returnValue = PoseProviderAPI.TangoService_connectOnPoseAvailable(framePairs.Length, framePairs, callback); - if (returnValue != Common.ErrorType.TANGO_SUCCESS) - { - Debug.Log(CLASS_NAME + ".SetCallback() Callback was not set!"); - } - else - { - Debug.Log(CLASS_NAME + ".SetCallback() OnPose callback was set!"); - } - } + private static Vector3 m_emulatedPosePosition; + + /// + /// The emulated pose euler angles from forward. Used for Tango emulation on PC. + /// + /// This is not the pure rotation for Tango, when it is Identity, you are facing forward, not down. + /// + private static Vector3 m_emulatedPoseAnglesFromForward; +#endif /// - /// Gets the pose at a given time. + /// Get a pose at a given timestamp from the base to the target frame. + /// + /// All poses returned are marked as TANGO_POSE_VALID (in the status_code field on TangoPoseData ) even if + /// they were marked as TANGO_POSE_INITIALIZING in the callback poses. + /// + /// If no pose can be returned, the status_code of the returned pose will be TANGO_POSE_INVALID. /// - /// Pose data. - /// Time stamp. - public static void GetPoseAtTime([In,Out] TangoPoseData poseData, + /// The pose to return. + /// + /// Time specified in seconds. + /// + /// If not set to 0.0, GetPoseAtTime retrieves the interpolated pose closest to this timestamp. If set to 0.0, + /// the most recent pose estimate for the target-base pair is returned. The time of the returned pose is + /// contained in the pose output structure and may differ from the queried timestamp. + /// + /// + /// A pair of coordinate frames specifying the transformation to be queried for. + /// + /// For example, typical device motion is given by a target frame of TANGO_COORDINATE_FRAME_DEVICE and a base + /// frame of TANGO_COORDINATE_FRAME_START_OF_SERVICE . + /// + public static void GetPoseAtTime([In, Out] TangoPoseData poseData, double timeStamp, TangoCoordinateFramePair framePair) { @@ -69,32 +91,41 @@ public static void GetPoseAtTime([In,Out] TangoPoseData poseData, Debug.Log(CLASS_NAME + ".GetPoseAtTime() Could not get pose at time : " + timeStamp); } } - + /// - /// Sets the listener coordinate frame pairs. + /// DEPRECATED: Sets the listener coordinate frame pairs. /// /// Count. /// Frames. public static void SetListenerCoordinateFramePairs(int count, ref TangoCoordinateFramePair frames) { - int returnValue = PoseProviderAPI.TangoService_setPoseListenerFrames (count, ref frames); + int returnValue = PoseProviderAPI.TangoService_setPoseListenerFrames(count, ref frames); if (returnValue != Common.ErrorType.TANGO_SUCCESS) { Debug.Log(CLASS_NAME + ".SetListenerCoordinateFramePairs() Could not set frame pairs"); } } - + /// - /// Resets the motion tracking. + /// Resets the motion tracking system. + /// + /// This reinitializes the TANGO_COORDINATE_FRAME_START_OF_SERVICE coordinate frame to where the + /// device is when you call this function; afterwards, if you ask for the pose with relation to start of + /// service, it uses this as the new origin. You can call this function at any time. + /// + /// If you are using Area Learning, the TANGO_COORDINATE_FRAME_AREA_DESCRIPTION coordinate frame + /// is not affected by calling this function; however, the device needs to localize again before you can use + /// the area description. /// public static void ResetMotionTracking() { PoseProviderAPI.TangoService_resetMotionTracking(); } +#if UNITY_EDITOR /// - /// Gets the mouse emulation. + /// DEPRECATED: Legacy function that gets mouse / keyboard PoseEmulation data. /// /// Controller postion. /// Controller rotation. @@ -129,10 +160,13 @@ public static void GetMouseEmulation(ref Vector3 controllerPostion, ref Quaterni controllerRotation = rotation; controllerPostion = position; } +#endif #region ADF Functionality /// - /// Helper method to retrieve a list of saved area description files. + /// Gets the full list of unique area description IDs available on a device. + /// + /// This is updated by calling RefreshADFList. /// /// The cached ADF list. public static UUID_list GetCachedADFList() @@ -141,46 +175,51 @@ public static UUID_list GetCachedADFList() } /// - /// Returns the UUID of the most recent ADF file. + /// Gets the latest area description ID available on a device. /// - /// A string object encoded in UTF-8 format containing the UUID of the requested ADF. + /// The most recent area description ID. public static UUIDUnityHolder GetLatestADFUUID() { - if(m_adfList == null) + if (m_adfList == null) { return null; } - return (m_adfList.GetLatestADFUUID()); + return m_adfList.GetLatestADFUUID(); } + /// + /// Check if an area description ID is valid. + /// + /// true if the ID is valid; otherwise, false. + /// Area description ID to check. public static bool IsUUIDValid(UUIDUnityHolder toCheck) { return toCheck != null && toCheck.IsObjectValid(); } /// - /// Gets the UUID of the ADF at the specified index. It will be encoded in UTF-8. + /// Gets the area description ID at the specified index as a string. /// - /// The ADF UUID as string. - /// The ADF format that we want to know the UUID of. + /// The area description ID as a string. + /// The index of the area description ID. public static string GetUUIDAsString(int index) { - if(m_adfList == null) + if (m_adfList == null) { return string.Empty; } return m_adfList.GetUUIDAsString(index); } - + /// - /// Gets the UUID of the ADF at the specified index. It will be encoded in UTF-8. + /// Gets the area description ID at the specified index as a char array. /// - /// The ADF UUID as a char array. - /// The ADF format that we want to know the UUID of. + /// The area description ID as a char array. + /// The index of the area description ID. public static char[] GetUUIDAsCharArray(int index) { string uuidString = GetUUIDAsString(index); - if(String.IsNullOrEmpty(uuidString)) + if (String.IsNullOrEmpty(uuidString)) { return null; } @@ -188,27 +227,23 @@ public static char[] GetUUIDAsCharArray(int index) } /// - /// This method is used to make sure that we have the most up to date information about ADF - /// that are stored on device. It will make sure to cache it in a UUID_list object - /// for easier access without querying the device API again. This method will also - /// retrieve the UUID of each ADF by performing a Marshal.Copy and store the information - /// in a UUID object list. + /// Update the list returned by GetCachedADFList. /// - /// The ADF list. + /// Returns TANGO_SUCCESS on success, or TANGO_ERROR on failure to retrieve the list. public static int RefreshADFList() { int returnValue = Common.ErrorType.TANGO_ERROR; IntPtr tempData = IntPtr.Zero; returnValue = PoseProviderAPI.TangoService_getAreaDescriptionUUIDList(ref tempData); - - if(returnValue != Common.ErrorType.TANGO_SUCCESS) + + if (returnValue != Common.ErrorType.TANGO_SUCCESS) { Debug.Log(CLASS_NAME + ".RefreshADFList() Could not get ADF list from device."); } else { byte[] charBuffer = new byte[sizeof(char)]; - System.Collections.Generic.List dataHolder = new System.Collections.Generic.List(); + List dataHolder = new List(); Marshal.Copy(tempData, charBuffer, 0, 1); while (charBuffer[0] != 0 && charBuffer[0] != '\n') { @@ -218,9 +253,8 @@ public static int RefreshADFList() } string uuidList = System.Text.Encoding.UTF8.GetString(dataHolder.ToArray()); m_adfList.PopulateUUIDList(uuidList); - if(!m_adfList.HasEntries()) + if (!m_adfList.HasEntries()) { - Debug.Log(CLASS_NAME + ".RefreshADFList() No area description files found on device."); } } @@ -228,16 +262,22 @@ public static int RefreshADFList() } /// - /// Saves an area description to device based on the UUID object contained in the adfID object holder. + /// Saves the area description, returning the unique ID associated with the saved map. + /// + /// You can only save an area description while connected to the Tango Service and if you have enabled Area + /// Learning mode. If you loaded an ADF before connecting, then calling this method appends any new learned + /// areas to that ADF and returns the same UUID. If you did not load an ADF, this method creates a new ADF and + /// a new UUID for that ADF. /// - /// Common.ErrorType.TANGO_SUCCESS if saving was successfull. - /// The UUIDUnityHolder object that contains the desired UUID object. + /// + /// Returns TANGO_SUCCESS on success, and TANGO_ERROR if a failure occurred when saving, or if the service + /// needs to be initialized, or TANGO_INVALID if uuid is NULL, or of incorrect length, or if Area Learning Mode + /// was not set (see logcat for details). + /// + /// Upon saving, the TangoUUID to refer to this ADF is returned here. public static int SaveAreaDescription(UUIDUnityHolder adfUnityHolder) { - // is learning mode on - // are we localized? - - if(adfUnityHolder == null) + if (adfUnityHolder == null) { Debug.Log(CLASS_NAME + ".SaveAreaDescription() Could not save area description. UUID Holder object specified is not initialized"); return Common.ErrorType.TANGO_ERROR; @@ -246,7 +286,7 @@ public static int SaveAreaDescription(UUIDUnityHolder adfUnityHolder) int returnValue = PoseProviderAPI.TangoService_saveAreaDescription(idData); if (returnValue != Common.ErrorType.TANGO_SUCCESS) { - Debug.Log(CLASS_NAME + ".SaveAreaDescripton() Could not save area description with ID: "+ adfUnityHolder.GetStringDataUUID()); + Debug.Log(CLASS_NAME + ".SaveAreaDescripton() Could not save area description with ID: " + adfUnityHolder.GetStringDataUUID()); } else { @@ -258,30 +298,33 @@ public static int SaveAreaDescription(UUIDUnityHolder adfUnityHolder) } /// - /// Saves the area description meta data with whatever metadata is set inside the adfUnityHolder object + /// Saves the metadata associated with a single area description unique ID. /// - /// The area description meta data. - /// Adf unity holder. + /// + /// Returns TANGO_SUCCESS on successful save, or TANGO_ERROR on failure, or if the service needs to be + /// initialized. + /// + /// The metadata and associated UUID to save. public static int SaveAreaDescriptionMetaData(UUIDUnityHolder adfUnityHolder) { - if(adfUnityHolder == null) + if (adfUnityHolder == null) { Debug.Log(CLASS_NAME + ".SaveAreaDescription() Could not save area description. UUID Holder object specified is not initialized"); return Common.ErrorType.TANGO_ERROR; } - if(string.IsNullOrEmpty(adfUnityHolder.GetStringDataUUID())) + if (string.IsNullOrEmpty(adfUnityHolder.GetStringDataUUID())) { Debug.Log(CLASS_NAME + ".MetaData cannot be retrived for the area description as UUIDUnityHolder object was empty or null."); return Common.ErrorType.TANGO_ERROR; } - if(adfUnityHolder.uuidMetaData.meta_data_pointer == IntPtr.Zero) + if (adfUnityHolder.uuidMetaData.meta_data_pointer == IntPtr.Zero) { Debug.Log(CLASS_NAME + "metadata pointer is null, cannot save metadata to this ADF!"); return Common.ErrorType.TANGO_ERROR; } Debug.Log("UUID being saved is: " + adfUnityHolder.GetStringDataUUID()); int returnValue = PoseProviderAPI.TangoService_saveAreaDescriptionMetadata(adfUnityHolder.GetStringDataUUID(), adfUnityHolder.uuidMetaData.meta_data_pointer); - if(returnValue!=Common.ErrorType.TANGO_SUCCESS) + if (returnValue != Common.ErrorType.TANGO_SUCCESS) { Debug.Log(CLASS_NAME + "Could not save metadata to the ADF!"); } @@ -289,51 +332,51 @@ public static int SaveAreaDescriptionMetaData(UUIDUnityHolder adfUnityHolder) } /// - /// Takes care of saving a ADF file to the specified folder. + /// Export an area with the UUID from the default area storage location to the destination file directory with + /// the UUID as its name. /// - /// Common.ErrorType.TANGO_SUCCESS if the ADF file was exported successfully. - /// The UUID of the ADF file we want to export. - /// File path where we want to export the ADF. - public static int ExportAreaDescriptionToFile(string UUID, string filePath) + /// Returns TANGO_SUCCESS if the file was exported, or TANGO_ERROR if the export failed. + /// The UUID of the area. + /// The destination file directory. + public static int ExportAreaDescriptionToFile(string uuid, string filePath) { - if(string.IsNullOrEmpty(UUID)) + if (string.IsNullOrEmpty(uuid)) { Debug.Log("Can't export an empty UUID. Please define one."); return Common.ErrorType.TANGO_ERROR; } - if(string.IsNullOrEmpty(filePath)) + if (string.IsNullOrEmpty(filePath)) { Debug.Log("Missing file path for exporting area description. Please define one."); return Common.ErrorType.TANGO_ERROR; } - int returnValue = PoseProviderAPI.TangoService_exportAreaDescription(UUID, filePath); - if(returnValue != Common.ErrorType.TANGO_SUCCESS) + int returnValue = PoseProviderAPI.TangoService_exportAreaDescription(uuid, filePath); + if (returnValue != Common.ErrorType.TANGO_SUCCESS) { - Debug.Log(CLASS_NAME + ".ExportAreaDescription() Could not export area description: " + UUID + - " with path: " + filePath); + Debug.Log(CLASS_NAME + ".ExportAreaDescription() Could not export area description: " + uuid + + " with path: " + filePath); } return returnValue; - } - + /// - /// Takes care of importing a adf file from the specified path. Important: make sure that the filepath - /// does not contain ADF files already present on device, otherwise it will return an error, as duplicates - /// can't be imported. + /// Import an area description from a file path to the default area storage location. + /// + /// The new area description will get a new ID, which will be stored in adfID. /// /// Common.ErrorType.TANGO_SUCCESS if the UUID was imported successfully. - /// The UUIDUnityHolder object that will contain information about the retrieved ADF. - /// File path containing the ADF we want to export. + /// Upon successful return, this will have the new ID. + /// File path of the area descrption to be imported. public static int ImportAreaDescriptionFromFile(UUIDUnityHolder adfID, string filePath) { - if(adfID == null) + if (adfID == null) { Debug.Log(CLASS_NAME + ".ImportAreaDescription() Could not import area description. UUID Holder object specified is not initialized"); return Common.ErrorType.TANGO_ERROR; } IntPtr uuidHolder = Marshal.AllocHGlobal(Common.UUID_LENGTH); int returnValue = PoseProviderAPI.TangoService_importAreaDescription(filePath, uuidHolder); - if(returnValue != Common.ErrorType.TANGO_SUCCESS) + if (returnValue != Common.ErrorType.TANGO_SUCCESS) { Debug.Log(CLASS_NAME + ".ImportAreaDescription() Could not import area description at path: " + filePath); } @@ -347,20 +390,21 @@ public static int ImportAreaDescriptionFromFile(UUIDUnityHolder adfID, string fi } /// - /// Deletes the area description with the specified UUID from the default folder where ADF maps are stored. - /// This needs to be called before trying to import a ADF that is already present in the default ADF maps folder. + /// Deletes an area description with the specified unique ID. /// - /// Common.ErrorType.TANGO_SUCCESS if the UUID was deleted successfully. - /// The UUID of the ADF we want to delete. + /// + /// Returns TANGO_SUCCESS if area description file with specified unique ID is found and can be removed. + /// + /// The area description to delete. public static int DeleteAreaDescription(string toDeleteUUID) { - if(string.IsNullOrEmpty(toDeleteUUID)) + if (string.IsNullOrEmpty(toDeleteUUID)) { Debug.Log(CLASS_NAME + ".DeleteAreaDescription() Could not delete area description, UUID was empty or null."); return Common.ErrorType.TANGO_ERROR; } int returnValue = PoseProviderAPI.TangoService_deleteAreaDescription(toDeleteUUID); - if(returnValue != Common.ErrorType.TANGO_SUCCESS) + if (returnValue != Common.ErrorType.TANGO_SUCCESS) { Debug.Log(CLASS_NAME + ".DeleteAreaDescription() Could not delete area description, API returned invalid."); } @@ -369,89 +413,90 @@ public static int DeleteAreaDescription(string toDeleteUUID) #endregion // ADF Functionality #region ADF Metadata Functionality - - /// - /// This function sets the pointer to metadatapointer in UUIDUnityHolder Object. - /// UUIDObjectHolder needs to be initialized and UUID data needs to be filled in before passing in to this - /// function. + /// Gets the metadata handle associated with a single area description unique ID. /// - /// The area description meta data. - /// Adf unity holder with UUID data only should be passed into this function. If the data is valid, - /// this function sets the pointer to raw UUID metadata which can then be parsed using AreaDescriptionMetaData_get or set functions + /// + /// Returns TANGO_SUCCESS on successful load of metadata, or TANGO_ERROR if the service needs to be initialized + /// or if the metadata could not be loaded. + /// + /// + /// The TangoUUID for which to load the metadata. On success, this function sets the pointer to raw UUID + /// metadata which can then be extracted using AreaDescriptionMetaData_get, AreaDescriptionMetaData_get, or + /// PopulateAreaDescriptionMetaDataKeyValues. + /// public static int GetAreaDescriptionMetaData(UUIDUnityHolder adfUnityHolder) { - if(string.IsNullOrEmpty(adfUnityHolder.GetStringDataUUID())) + if (string.IsNullOrEmpty(adfUnityHolder.GetStringDataUUID())) { Debug.Log(CLASS_NAME + ".MetaData cannot be retrived for the area description as UUIDUnityHolder object was empty or null."); return Common.ErrorType.TANGO_ERROR; } int returnValue = PoseProviderAPI.TangoService_getAreaDescriptionMetadata(adfUnityHolder.GetStringDataUUID(), ref adfUnityHolder.uuidMetaData.meta_data_pointer); - if(returnValue != Common.ErrorType.TANGO_SUCCESS) + if (returnValue != Common.ErrorType.TANGO_SUCCESS) { Debug.Log(CLASS_NAME + "Meta Data could not be loaded"); } - Debug.Log("GetAreaDescription return value is: "+ returnValue.ToString()); + Debug.Log("GetAreaDescription return value is: " + returnValue.ToString()); return returnValue; } /// - /// /Populates the Metadata values of a given metadataPointer into a Dictionary object which can - /// then be used by application for listing the ADF's information. metaDataPointer should be initialized to - /// a valid MetaData by calling the getAreaDescriptionMetaData(). + /// Populates the Metadata key/value pairs of a given metadataPointer. + /// + /// metaDataPointer should be initialized to a valid Metadata by calling the getAreaDescriptionMetaData(). /// - /// Tango Success if successful, else returns Invalid or Tango_Error type. + /// TANGO_SUCCESS if successful, else TANGO_INVALID or TANGO_ERROR. /// Metadata pointer. - /// M_ key value pairs. - public static int PopulateAreaDescriptionMetaDataKeyValues(IntPtr metadataPointer, ref System.Collections.Generic.Dictionary m_KeyValuePairs) + /// Dictionary of key/value pairs stored in the metadata. + public static int PopulateAreaDescriptionMetaDataKeyValues(IntPtr metadataPointer, ref Dictionary keyValuePairs) { IntPtr keyList = IntPtr.Zero; - if(metadataPointer == IntPtr.Zero) + if (metadataPointer == IntPtr.Zero) { Debug.Log(CLASS_NAME + "metadata pointer is null, cannot save metadata to this ADF!"); return Common.ErrorType.TANGO_ERROR; } - int returnValue = PoseProviderAPI.TangoAreaDescriptionMetadata_listKeys(metadataPointer,ref keyList); - if(returnValue != Tango.Common.ErrorType.TANGO_SUCCESS) + int returnValue = PoseProviderAPI.TangoAreaDescriptionMetadata_listKeys(metadataPointer, ref keyList); + if (returnValue != Tango.Common.ErrorType.TANGO_SUCCESS) { Debug.Log("Could not read metadata keys list"); } string metadataKeys = Marshal.PtrToStringAuto(keyList); - string[] keys = metadataKeys.Split(new char[]{','}); + string[] keys = metadataKeys.Split(new char[] { ',' }); string[] values = new string[keys.Length]; - for(int i =0; i< values.Length; i++) + for (int i = 0; i < values.Length; i++) { uint valuesize = 0; IntPtr valuePointer = IntPtr.Zero; - PoseProviderAPI.TangoAreaDescriptionMetadata_get(metadataPointer,keys[i], ref valuesize,ref valuePointer); + PoseProviderAPI.TangoAreaDescriptionMetadata_get(metadataPointer, keys[i], ref valuesize, ref valuePointer); byte[] valueByteArray = new byte[valuesize]; - Marshal.Copy(valuePointer,valueByteArray,0,(int)valuesize); + Marshal.Copy(valuePointer, valueByteArray, 0, (int)valuesize); values[i] = System.Text.Encoding.UTF8.GetString(valueByteArray); - Debug.Log("Key Values are- " + keys[i]+": "+values[i]); - m_KeyValuePairs.Add(keys[i],values[i]); + Debug.Log("Key Values are- " + keys[i] + ": " + values[i]); + keyValuePairs.Add(keys[i], values[i]); } return returnValue; } /// - /// Gets the value of a key and populates into the "value" string object. adfUnitHolderObject - /// should be initialized with valid UUID before calling this function. + /// Get the value of a key from a metadata. /// - /// The description meta data_get. - /// Key. - /// Value. - /// Adf unity holder. + /// TANGO_SUCCESS if successful, else TANGO_INVALID or TANGO_ERROR. + /// Key to lookup. + /// On success, the value for that key. + /// Area description + metadata holder. public static int AreaDescriptionMetaData_get(String key, ref String value, UUIDUnityHolder adfUnityHolder) { - if(string.IsNullOrEmpty(adfUnityHolder.GetStringDataUUID())) + if (string.IsNullOrEmpty(adfUnityHolder.GetStringDataUUID())) { Debug.Log(CLASS_NAME + ".MetaData cannot be retrived for the area description as UUIDUnityHolder object was empty or null."); return Common.ErrorType.TANGO_ERROR; } uint valuesize = 0; IntPtr valuePointer = IntPtr.Zero; - int returnValue = PoseProviderAPI.TangoAreaDescriptionMetadata_get(adfUnityHolder.uuidMetaData.meta_data_pointer, key, ref valuesize,ref valuePointer); - if(returnValue != Tango.Common.ErrorType.TANGO_SUCCESS) + int returnValue = PoseProviderAPI.TangoAreaDescriptionMetadata_get(adfUnityHolder.uuidMetaData.meta_data_pointer, key, ref valuesize, ref valuePointer); + if (returnValue != Tango.Common.ErrorType.TANGO_SUCCESS) { Debug.Log("Could not read metadata key, Error return value is: " + returnValue); return returnValue; @@ -459,63 +504,152 @@ public static int AreaDescriptionMetaData_get(String key, ref String value, UUID else { byte[] valueByteArray = new byte[valuesize]; - Marshal.Copy(valuePointer,valueByteArray,0,(int)valuesize); + Marshal.Copy(valuePointer, valueByteArray, 0, (int)valuesize); value = System.Text.Encoding.UTF8.GetString(valueByteArray); return returnValue; } } /// - /// Sets the AreaDescription MetaData to the UUID in the adfUnityHolder Object.Make sure adfUnityHolder already has - /// a pointer to the Metadata of the specified UUID by calling GetAreaDescriptionMetaData(). + /// Set the value of a key in a metadata. /// - /// Returns Tango Success on successful set, else Returns Invalid or TangoError - /// Key. - /// Value. - /// Adf unity holder in which the metadata is cointained. + /// TANGO_SUCCESS if successful, else TANGO_INVALID or TANGO_ERROR. + /// Key to set the value of. + /// Value to set. + /// Area description + metadata holder. public static int AreaDescriptionMetaData_set(String key, String value, UUIDUnityHolder adfUnityHolder) { - if(string.IsNullOrEmpty(adfUnityHolder.GetStringDataUUID())) + if (string.IsNullOrEmpty(adfUnityHolder.GetStringDataUUID())) { Debug.Log(CLASS_NAME + ".MetaData cannot be retrived for the area description as UUIDUnityHolder object was empty or null."); return Common.ErrorType.TANGO_ERROR; } - int returnValue = PoseProviderAPI.TangoAreaDescriptionMetadata_set(adfUnityHolder.uuidMetaData.meta_data_pointer, key, (uint) value.Length, value); - if(returnValue != Tango.Common.ErrorType.TANGO_SUCCESS) + int returnValue = PoseProviderAPI.TangoAreaDescriptionMetadata_set(adfUnityHolder.uuidMetaData.meta_data_pointer, key, (uint)value.Length, value); + if (returnValue != Tango.Common.ErrorType.TANGO_SUCCESS) { Debug.Log("Could not set Metadata Key, Error return value is: " + returnValue); return returnValue; } else - { - Debug.Log("Metadata Set succesful, Key set is: "+ key+" Value set is: " + value); + { + Debug.Log("Metadata Set succesful, Key set is: " + key + " Value set is: " + value); return returnValue; } } - #endregion // ADF Metadata Functionality - #region API_Functions + /// + /// Set the C callback for the Tango pose interface. + /// + /// Passed in to the C API. + /// Callback. + internal static void SetCallback(TangoCoordinateFramePair[] framePairs, TangoService_onPoseAvailable callback) + { + int returnValue = PoseProviderAPI.TangoService_connectOnPoseAvailable(framePairs.Length, framePairs, callback); + if (returnValue != Common.ErrorType.TANGO_SUCCESS) + { + Debug.Log(CLASS_NAME + ".SetCallback() Callback was not set!"); + } + else + { + Debug.Log(CLASS_NAME + ".SetCallback() OnPose callback was set!"); + } + } + +#if UNITY_EDITOR + /// + /// INTERNAL USE: Update the Tango emulation state for pose data. + /// + /// Make this this is only called once per frame. + /// + internal static void UpdateTangoEmulation() + { + // Update the emulated rotation (do this first to make sure the position is rotated) + // + // Note: We need to use Input.GetAxis here because Unity3D does not provide a way to get the underlying + // mouse delta. + if (!Input.GetKey(KeyCode.LeftShift)) + { + m_emulatedPoseAnglesFromForward.y -= Input.GetAxis("Mouse X") * MOUSE_LOOK_SENSITIVITY * Time.deltaTime; + m_emulatedPoseAnglesFromForward.x += Input.GetAxis("Mouse Y") * MOUSE_LOOK_SENSITIVITY * Time.deltaTime; + } + else + { + m_emulatedPoseAnglesFromForward.z -= Input.GetAxis("Mouse X") * MOUSE_LOOK_SENSITIVITY * Time.deltaTime; + } + + // Update the emulated position + Quaternion emulatedPoseRotation = Quaternion.Euler(90, 0, 0) * Quaternion.Euler(m_emulatedPoseAnglesFromForward); + Vector3 directionRight = emulatedPoseRotation * new Vector3(1, 0, 0); + Vector3 directionForward = emulatedPoseRotation * new Vector3(0, 0, -1); + Vector3 directionUp = emulatedPoseRotation * new Vector3(0, 1, 0); + + if (Input.GetKey(KeyCode.W)) + { + // Forward + m_emulatedPosePosition += directionForward * TRANSLATION_SPEED * Time.deltaTime; + } + if (Input.GetKey(KeyCode.S)) + { + // Backward + m_emulatedPosePosition -= directionForward * TRANSLATION_SPEED * Time.deltaTime; + } + if (Input.GetKey(KeyCode.A)) + { + // Left + m_emulatedPosePosition -= directionRight * TRANSLATION_SPEED * Time.deltaTime; + } + if (Input.GetKey(KeyCode.D)) + { + // Right + m_emulatedPosePosition += directionRight * TRANSLATION_SPEED * Time.deltaTime; + } + if (Input.GetKey(KeyCode.R)) + { + // Up + m_emulatedPosePosition += directionUp * TRANSLATION_SPEED * Time.deltaTime; + } + if (Input.GetKey(KeyCode.F)) + { + // Down + m_emulatedPosePosition -= directionUp * TRANSLATION_SPEED * Time.deltaTime; + } + } + + /// + /// INTERNAL USE: Get the most recent values for Tango emulation. + /// + /// The new Tango emulation position. + /// The new Tango emulation rotation. + internal static void GetTangoEmulation(out Vector3 posePosition, out Quaternion poseRotation) + { + posePosition = m_emulatedPosePosition; + poseRotation = Quaternion.Euler(90, 0, 0) * Quaternion.Euler(m_emulatedPoseAnglesFromForward); + } +#endif + + #region API_Functions + [System.Diagnostics.CodeAnalysis.SuppressMessage("StyleCop.CSharp.DocumentationRules", + "SA1600:ElementsMustBeDocumented", + Justification = "C API Wrapper.")] private struct PoseProviderAPI { - #if UNITY_ANDROID && !UNITY_EDITOR - +#if UNITY_ANDROID && !UNITY_EDITOR [DllImport(Common.TANGO_UNITY_DLL)] public static extern int TangoService_connectOnPoseAvailable(int count, TangoCoordinateFramePair[] framePairs, TangoService_onPoseAvailable onPoseAvailable); - - + [DllImport(Common.TANGO_UNITY_DLL)] - public static extern int TangoService_getPoseAtTime (double timestamp, - TangoCoordinateFramePair framePair, - [In, Out] TangoPoseData pose); + public static extern int TangoService_getPoseAtTime(double timestamp, + TangoCoordinateFramePair framePair, + [In, Out] TangoPoseData pose); [DllImport(Common.TANGO_UNITY_DLL)] public static extern int TangoService_setPoseListenerFrames(int count, ref TangoCoordinateFramePair frames); - + [DllImport(Common.TANGO_UNITY_DLL)] public static extern void TangoService_resetMotionTracking(); @@ -555,7 +689,7 @@ public static extern int TangoAreaDescriptionMetadata_set(IntPtr metadata, [Mars [DllImport(Common.TANGO_UNITY_DLL)] public static extern int TangoAreaDescriptionMetadata_listKeys(IntPtr metadata, ref IntPtr key_list); - #else +#else public static int TangoService_connectOnPoseAvailable(int count, TangoCoordinateFramePair[] framePairs, TangoService_onPoseAvailable onPoseAvailable) @@ -563,9 +697,9 @@ public static int TangoService_connectOnPoseAvailable(int count, return Common.ErrorType.TANGO_SUCCESS; } - public static int TangoService_getPoseAtTime (double timestamp, - TangoCoordinateFramePair framePair, - [In, Out] TangoPoseData pose) + public static int TangoService_getPoseAtTime(double timestamp, + TangoCoordinateFramePair framePair, + [In, Out] TangoPoseData pose) { return Common.ErrorType.TANGO_SUCCESS; } @@ -602,18 +736,18 @@ public static int TangoService_saveAreaDescriptionMetadata([MarshalAs(UnmanagedT return Common.ErrorType.TANGO_SUCCESS; } - public static int TangoService_importAreaDescription([MarshalAs(UnmanagedType.LPStr)] string source_file_path, IntPtr UUID) + public static int TangoService_importAreaDescription([MarshalAs(UnmanagedType.LPStr)] string source_file_path, IntPtr uuid) { return Common.ErrorType.TANGO_SUCCESS; } - public static int TangoService_exportAreaDescription([MarshalAs(UnmanagedType.LPStr)] string UUID, + public static int TangoService_exportAreaDescription([MarshalAs(UnmanagedType.LPStr)] string uuid, [MarshalAs(UnmanagedType.LPStr)] string dst_file_path) { return Common.ErrorType.TANGO_SUCCESS; } - public static int TangoService_deleteAreaDescription([MarshalAs(UnmanagedType.LPStr)] string UUID) + public static int TangoService_deleteAreaDescription([MarshalAs(UnmanagedType.LPStr)] string uuid) { return Common.ErrorType.TANGO_SUCCESS; } @@ -639,7 +773,7 @@ public static int TangoAreaDescriptionMetadata_listKeys(IntPtr metadata, ref Int { return Common.ErrorType.TANGO_SUCCESS; } - #endif +#endif } #endregion } diff --git a/UnityExamples/Assets/TangoSDK/Core/Scripts/TangoWrappers/TangoApplication.cs b/UnityExamples/Assets/TangoSDK/Core/Scripts/TangoWrappers/TangoApplication.cs index e9205325..7965d18c 100644 --- a/UnityExamples/Assets/TangoSDK/Core/Scripts/TangoWrappers/TangoApplication.cs +++ b/UnityExamples/Assets/TangoSDK/Core/Scripts/TangoWrappers/TangoApplication.cs @@ -1,38 +1,63 @@ -/* - * Copyright 2014 Google Inc. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +//----------------------------------------------------------------------- +// +// +// Copyright 2015 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// +//----------------------------------------------------------------------- using System; using System.Collections; using System.Runtime.InteropServices; using System.IO; using System.Linq; using UnityEngine; -using System.Reflection; namespace Tango { - public delegate void PermissionsEvent(bool permissionsGranted); + /// + /// Delegate for permission callbacks. + /// + /// true if permissions were granted, otherwise false. + public delegate void PermissionsEvent(bool permissionsGranted); + + /// + /// Delegate for service connection. + /// public delegate void OnTangoConnectEventHandler(); + + /// + /// Delegate for service disconnection. + /// public delegate void OnTangoDisconnectEventHandler(); /// - /// Entry point of Tango applications, maintain the application handler. + /// Main entry point for the Tango Service. + /// + /// This component handles nearly all communication with the underlying TangoService. You must have one of these + /// in your scene for Tango to work. Customization of the Tango connection can be done in the Unity editor or by + /// programatically setting the member flags. + /// + /// This sends out events to Components that derive from the ITangoPose, ITangoDepth, etc. interfaces and + /// register themselves via Register. This also sends out events to callbacks passed in through + /// RegisterOnTangoConnect, RegisterOnTangoDisconnect, and RegisterPermissionsCallback. + /// + /// Note: To connect to the Tango Service, you should call InitApplication after properly registering everything. /// public class TangoApplication : MonoBehaviour { - /// + /// /// Permission types used by Tango applications. /// [Flags] @@ -52,7 +77,9 @@ private enum PermissionsTypes public bool m_enableAreaLearning = false; public bool m_useExperimentalVideoOverlay = true; public bool m_useExperimentalADF = false; - private static string m_tangoServiceVersion = string.Empty; +#if UNITY_EDITOR + public static bool m_mouseEmulationViaPoseUpdates = false; +#endif private const string CLASS_NAME = "TangoApplication"; private const string ANDROID_PRO_LABEL_TEXT = "Tango plugin requires Unity Android Pro!"; private const float ANDROID_PRO_LABEL_PERCENT_X = 0.5f; @@ -62,10 +89,22 @@ private enum PermissionsTypes private const string DEFAULT_AREA_DESCRIPTION = "/sdcard/defaultArea"; private const string MOTION_TRACKING_LOG_PREFIX = "Motion tracking mode : "; private const int MINIMUM_API_VERSION = 1978; + private static string m_tangoServiceVersion = string.Empty; + + /// + /// Occurs when permission event. + /// + private event PermissionsEvent PermissionEvent; + + /// + /// Occurs when on tango connect. + /// + private event OnTangoConnectEventHandler OnTangoConnect; - private event PermissionsEvent m_permissionEvent; - private event OnTangoConnectEventHandler m_onTangoConnect; - private event OnTangoDisconnectEventHandler m_onTangoDisconnect; + /// + /// Occurs when on tango disconnect. + /// + private event OnTangoDisconnectEventHandler OnTangoDisconnect; private PermissionsTypes m_requiredPermissions = 0; private static bool m_isValidTangoAPIVersion = false; @@ -83,37 +122,40 @@ private enum PermissionsTypes private YUVTexture m_yuvTexture; /// - /// Gets the video overlay texture. - /// - /// The video overlay texture. - public YUVTexture GetVideoOverlayTextureYUV() - { - return m_yuvTexture; - } - - /// - /// Gets the tango service version. + /// Get the Tango service version name. /// - /// The tango service version. + /// String for the version name. public static string GetTangoServiceVersion() { if (m_tangoServiceVersion == string.Empty) { m_tangoServiceVersion = AndroidHelper.GetVersionName("com.projecttango.tango"); } - + return m_tangoServiceVersion; } /// - /// Register the specified tangoObject. + /// Get the video overlay texture. + /// + /// The video overlay texture. + public YUVTexture GetVideoOverlayTextureYUV() + { + return m_yuvTexture; + } + + /// + /// Register to get Tango callbacks. + /// + /// The object should derive from one of ITangoDepth, ITangoEvent, ITangoPos, ITangoVideoOverlay, or + /// ITangoExperimentalTangoVideoOverlay. You will get callback during Update until you unregister. /// - /// Tango object. + /// Object to get Tango callbacks from. public void Register(System.Object tangoObject) { ITangoEvent tangoEvent = tangoObject as ITangoEvent; - if(tangoEvent != null) + if (tangoEvent != null) { RegisterOnTangoEvent(tangoEvent.OnTangoEventAvailableEventHandler); } @@ -149,7 +191,7 @@ public void Register(System.Object tangoObject) RegisterOnExperimentalTangoVideoOverlay(videoOverlayHandler.OnExperimentalTangoImageAvailable); } } - else + else { ITangoVideoOverlay videoOverlayHandler = tangoObject as ITangoVideoOverlay; @@ -162,14 +204,16 @@ public void Register(System.Object tangoObject) } /// - /// Unregister the specified tangoObject. + /// Unregister from Tango callbacks. + /// + /// See TangoApplication.Register for more details. /// - /// Tango object. + /// Object to stop getting Tango callbacks from. public void Unregister(System.Object tangoObject) { ITangoEvent tangoEvent = tangoObject as ITangoEvent; - if(tangoEvent != null) + if (tangoEvent != null) { UnregisterOnTangoEvent(tangoEvent.OnTangoEventAvailableEventHandler); } @@ -204,7 +248,8 @@ public void Unregister(System.Object tangoObject) { UnregisterOnExperimentalTangoVideoOverlay(videoOverlayHandler.OnExperimentalTangoImageAvailable); } - } else + } + else { ITangoVideoOverlay videoOverlayHandler = tangoObject as ITangoVideoOverlay; @@ -215,284 +260,356 @@ public void Unregister(System.Object tangoObject) } } } - + /// - /// Registers the on tango pose event. + /// Check if all requested permissions have been granted. /// - /// Handler. - public void RegisterOnTangoPoseEvent(OnTangoPoseAvailableEventHandler handler) + /// true if all requested permissions were granted; otherwise, false. + public bool HasRequestedPermissions() { - if (m_poseListener != null) + return m_requiredPermissions == PermissionsTypes.NONE; + } + + /// + /// Register to get an event callback when all permissions are granted. + /// + /// The passed event will get called once all Tango permissions have been granted. Registering + /// after all permissions have already been granted will cause the event to never fire. + /// + /// Event to call. + public void RegisterPermissionsCallback(PermissionsEvent permissionsEventHandler) + { + if (permissionsEventHandler != null) { - m_poseListener.RegisterTangoPoseAvailable(handler); + PermissionEvent += permissionsEventHandler; } } /// - /// Registers the on tango depth event. + /// Unregister from the permission callbacks. + /// + /// See TangoApplication.RegisterPermissionsCallback for more details. /// - /// Handler. - public void RegisterOnTangoDepthEvent(OnTangoDepthAvailableEventHandler handler) + /// Event to remove. + public void UnregisterPermissionsCallback(PermissionsEvent permissionsEventHandler) { - if (m_depthListener != null) + if (permissionsEventHandler != null) { - m_depthListener.RegisterOnTangoDepthAvailable(handler); + PermissionEvent -= permissionsEventHandler; } } /// - /// Registers the on tango event. + /// DEPRECATED: Unregister from the permission callbacks. + /// + /// See TangoApplication.RegisterPermissionsCallback for more details. /// - /// Handler. - public void RegisterOnTangoEvent(OnTangoEventAvailableEventHandler handler) + /// Event to remove. + public void RemovePermissionsCallback(PermissionsEvent permissionsEventHandler) { - if (m_tangoEventListener != null) + if (permissionsEventHandler != null) { - m_tangoEventListener.RegisterOnTangoEventAvailable(handler); + PermissionEvent -= permissionsEventHandler; } } /// - /// Registers the on tango video overlay. + /// Register to get an event callback when connected to the Tango service. + /// + /// The passed event will get called once connected to the Tango service. Registering + /// after already connected will cause the event to not fire until disconnected and then + /// connecting again. /// - /// Handler. - public void RegisterOnTangoVideoOverlay(OnTangoImageAvailableEventHandler handler) + /// Event to call. + public void RegisterOnTangoConnect(OnTangoConnectEventHandler handler) { - if (m_videoOverlayListener != null) + if (handler != null) { - m_videoOverlayListener.RegisterOnTangoImageAvailable(handler); + OnTangoConnect += handler; } } /// - /// Registers the on experimental tango video overlay. + /// Unregister from the callback when connected to the Tango service. + /// + /// See TangoApplication.RegisterOnTangoConnect for more details. /// - /// Handler. - public void RegisterOnExperimentalTangoVideoOverlay(OnExperimentalTangoImageAvailableEventHandler handler) + /// Event to remove. + public void UnregisterOnTangoConnect(OnTangoConnectEventHandler handler) { - if (m_videoOverlayListener != null) + if (handler != null) { - m_videoOverlayListener.RegisterOnExperimentalTangoImageAvailable(handler); + OnTangoConnect -= handler; } } /// - /// Determines if has requested permissions. + /// Register to get an event callback when disconnected from the Tango service. + /// + /// The passed event will get called when disconnected from the Tango service. /// - /// true if has requested permissions; otherwise, false. - public bool HasRequestedPermissions() + /// Event to remove. + public void RegisterOnTangoDisconnect(OnTangoDisconnectEventHandler handler) { - return (m_requiredPermissions == PermissionsTypes.NONE); + if (handler != null) + { + OnTangoDisconnect += handler; + } } /// - /// Registers the permissions callback. + /// Unregister from the callback when disconnected from the Tango service. + /// + /// See TangoApplication.RegisterOnTangoDisconnect for more details. /// - /// Permissions event handler. - public void RegisterPermissionsCallback(PermissionsEvent permissionsEventHandler) + /// Event to remove. + public void UnregisterOnTangoDisconnect(OnTangoDisconnectEventHandler handler) { - if (permissionsEventHandler != null) + if (handler != null) { - m_permissionEvent += permissionsEventHandler; - } - } - - /// - /// Unregisters the permissions callback. - /// - /// Permissions event handler. - public void UnregisterPermissionsCallback(PermissionsEvent permissionsEventHandler) - { - if (permissionsEventHandler != null) - { - m_permissionEvent -= permissionsEventHandler; - } - } + OnTangoDisconnect -= handler; + } + } + + /// + /// Init step 1. Call this to request Tango permissions. + /// + /// After setting up the necessary permissions and callbacks, call this to request each of + /// the permissions in order. Once all the permissions are granted, the permission callback + /// will get called to do the next step. + /// + /// Also see TangoApplication.InitApplication, TangoApplication.InitProviders, and + /// TangoApplication.ConnectToService. + /// + public void RequestNecessaryPermissionsAndConnect() + { + _ResetPermissionsFlags(); + _RequestNextPermission(); + } - /// - /// Registers the on tango connect. - /// - /// Handler. - public void RegisterOnTangoConnect(OnTangoConnectEventHandler handler) + /// + /// Init step 2. Call this to initialize interal state on TangoApplication. + /// + /// Call this in the permissions callback if all permissions have been granted. + /// + /// Also see TangoApplication.RequestNecessaryPermissionsandConnect, TangoApplication.InitProviders, and + /// TangoApplication.ConnectToService. + /// + public void InitApplication() { - if(handler != null) + Debug.Log("-----------------------------------Initializing Tango"); + _TangoInitialize(); + TangoConfig.InitConfig(TangoEnums.TangoConfigType.TANGO_CONFIG_DEFAULT); + + if (m_enableVideoOverlay && m_useExperimentalVideoOverlay) { - m_onTangoConnect += handler; + int yTextureWidth = 0; + int yTextureHeight = 0; + int uvTextureWidth = 0; + int uvTextureHeight = 0; + + TangoConfig.GetInt32(TangoConfig.Keys.EXPERIMENTAL_Y_TEXTURE_WIDTH, ref yTextureWidth); + TangoConfig.GetInt32(TangoConfig.Keys.EXPERIMENTAL_Y_TEXTURE_HEIGHT, ref yTextureHeight); + TangoConfig.GetInt32(TangoConfig.Keys.EXPERIMENTAL_UV_TEXTURE_WIDTH, ref uvTextureWidth); + TangoConfig.GetInt32(TangoConfig.Keys.EXPERIMENTAL_UV_TEXTURE_HEIGHT, ref uvTextureHeight); + + if (yTextureWidth == 0 || yTextureHeight == 0 || uvTextureWidth == 0 || uvTextureHeight == 0) + { + Debug.Log("Video overlay texture sizes were not set properly"); + } + + m_yuvTexture.ResizeAll(yTextureWidth, yTextureHeight, uvTextureWidth, uvTextureHeight); } } - /// - /// Registers the on tango disconnect. - /// - /// Handler. - public void RegisterOnTangoDisconnect(OnTangoDisconnectEventHandler handler) + /// + /// Init step 3. Call this to choose what area description ID to use, if any. + /// + /// Call this in the permissions callback after calling TangoApplication.InitApplication. + /// + /// Also see TangoApplication.RequestNecessaryPermissionsAndConnect, TangoApplication.InitApplication, and + /// TangoApplication.ConnectToService. + /// + /// Area description ID to load, or string.Empty to not use any. + public void InitProviders(string uuid) { - if(handler != null) - { - m_onTangoDisconnect += handler; - } + _InitializeMotionTracking(uuid); + _InitializeDepth(); + _InitializeOverlay(); + _SetEventCallbacks(); } - + /// - /// Unregisters the on tango pose event. + /// Init step 4. Call this to connect to the Tango service. + /// + /// Also see TangoApplication.RequestNecessaryPermissionsAndConnect, TangoApplication.InitApplication, + /// and TangoApplication.InitProviders. /// - /// Handler. - public void UnregisterOnTangoPoseEvent(OnTangoPoseAvailableEventHandler handler) + public void ConnectToService() { - if (m_poseListener != null) - { - m_poseListener.UnregisterTangoPoseAvailable(handler); - } + Debug.Log("TangoApplication.ConnectToService()"); + _TangoConnect(); } /// - /// Unregisters the on tango depth event. + /// Disconnect from the Tango service. + /// + /// This is called automatically when the TangoApplication goes away. You only need + /// to call this to disconnect from the Tango service before the TangoApplication goes + /// away. /// - /// Handler. - public void UnregisterOnTangoDepthEvent(OnTangoDepthAvailableEventHandler handler) + public void Shutdown() { - if (m_depthListener != null) - { - m_depthListener.UnregisterOnTangoDepthAvailable(handler); - } + Debug.Log("Tango Shutdown"); + TangoConfig.Free(); + _TangoDisconnect(); } - + /// - /// Unregisters the on tango event. + /// Register to get Tango pose callbacks. + /// + /// See TangoApplication.Register for more details. /// /// Handler. - public void UnregisterOnTangoEvent(OnTangoEventAvailableEventHandler handler) + internal void RegisterOnTangoPoseEvent(OnTangoPoseAvailableEventHandler handler) { - if (m_tangoEventListener != null) + if (m_poseListener != null) { - m_tangoEventListener.UnregisterOnTangoEventAvailable(handler); + m_poseListener.RegisterTangoPoseAvailable(handler); } } - public void UnregisterOnTangoConnect(OnTangoConnectEventHandler handler) + /// + /// Unregister from the Tango pose callbacks. + /// + /// See TangoApplication.Register for more details. + /// + /// Event to remove. + internal void UnregisterOnTangoPoseEvent(OnTangoPoseAvailableEventHandler handler) { - if(handler != null) + if (m_poseListener != null) { - m_onTangoConnect -= handler; + m_poseListener.UnregisterTangoPoseAvailable(handler); } } - - public void UnregisterOnTangoDisconnect(OnTangoDisconnectEventHandler handler) + + /// + /// Register to get Tango depth callbacks. + /// + /// See TangoApplication.Register for more details. + /// + /// Object to stop getting Tango callbacks from. + internal void RegisterOnTangoDepthEvent(OnTangoDepthAvailableEventHandler handler) { - if(handler != null) + if (m_depthListener != null) { - m_onTangoDisconnect -= handler; + m_depthListener.RegisterOnTangoDepthAvailable(handler); } } /// - /// Unregisters the on tango video overlay. + /// Unregister from the Tango depth callbacks. + /// + /// See TangoApplication.Register for more details. /// - /// Handler. - public void UnregisterOnTangoVideoOverlay(OnTangoImageAvailableEventHandler handler) + /// Event to remove. + internal void UnregisterOnTangoDepthEvent(OnTangoDepthAvailableEventHandler handler) { - if (m_videoOverlayListener != null) + if (m_depthListener != null) { - m_videoOverlayListener.UnregisterOnTangoImageAvailable(handler); + m_depthListener.UnregisterOnTangoDepthAvailable(handler); } } - + /// - /// Unregisters the on experimental tango video overlay. + /// Register to get Tango event callbacks. + /// + /// See TangoApplication.Register for details. /// - /// Handler. - public void UnregisterOnExperimentalTangoVideoOverlay(OnExperimentalTangoImageAvailableEventHandler handler) + /// Object to stop getting Tango callbacks from. + internal void RegisterOnTangoEvent(OnTangoEventAvailableEventHandler handler) { - if (m_videoOverlayListener != null) + if (m_tangoEventListener != null) { - m_videoOverlayListener.UnregisterOnExperimentalTangoImageAvailable(handler); + m_tangoEventListener.RegisterOnTangoEventAvailable(handler); } } /// - /// Removes the permissions callback. + /// Unregister from the Tango event callbacks. + /// + /// See TangoApplication.Register for more details. /// - /// Permissions event handler. - public void RemovePermissionsCallback(PermissionsEvent permissionsEventHandler) + /// Event to remove. + internal void UnregisterOnTangoEvent(OnTangoEventAvailableEventHandler handler) { - if (permissionsEventHandler != null) + if (m_tangoEventListener != null) { - m_permissionEvent -= permissionsEventHandler; + m_tangoEventListener.UnregisterOnTangoEventAvailable(handler); } } - /// - /// Requests the necessary permissions for Tango functionality. + /// Register to get Tango video overlay callbacks. + /// + /// See TangoApplication.Register for details. /// - public void RequestNecessaryPermissionsAndConnect() + /// Object to stop getting Tango callbacks from. + internal void RegisterOnTangoVideoOverlay(OnTangoImageAvailableEventHandler handler) { - _ResetPermissionsFlags(); - _RequestNextPermission(); + if (m_videoOverlayListener != null) + { + m_videoOverlayListener.RegisterOnTangoImageAvailable(handler); + } } - + /// - /// Initialize Tango Service and Config. + /// Unregister from the Tango video overlay callbacks. + /// + /// See TangoApplication.Register for more details. /// - public void InitApplication() + /// Event to remove. + internal void UnregisterOnTangoVideoOverlay(OnTangoImageAvailableEventHandler handler) { - Debug.Log("-----------------------------------Initializing Tango"); - _TangoInitialize(); - TangoConfig.InitConfig(TangoEnums.TangoConfigType.TANGO_CONFIG_DEFAULT); - - if(m_enableVideoOverlay && m_useExperimentalVideoOverlay) + if (m_videoOverlayListener != null) { - int yTextureWidth = 0; - int yTextureHeight = 0; - int uvTextureWidth = 0; - int uvTextureHeight = 0; - - TangoConfig.GetInt32(TangoConfig.Keys.EXPERIMENTAL_Y_TEXTURE_WIDTH, ref yTextureWidth); - TangoConfig.GetInt32(TangoConfig.Keys.EXPERIMENTAL_Y_TEXTURE_HEIGHT, ref yTextureHeight); - TangoConfig.GetInt32(TangoConfig.Keys.EXPERIMENTAL_UV_TEXTURE_WIDTH, ref uvTextureWidth); - TangoConfig.GetInt32(TangoConfig.Keys.EXPERIMENTAL_UV_TEXTURE_HEIGHT, ref uvTextureHeight); - - if(yTextureWidth == 0 || - yTextureHeight == 0 || - uvTextureWidth == 0 || - uvTextureHeight == 0) - { - Debug.Log("Video overlay texture sizes were not set properly"); - } - - m_yuvTexture.ResizeAll(yTextureWidth, yTextureHeight, uvTextureWidth, uvTextureHeight); + m_videoOverlayListener.UnregisterOnTangoImageAvailable(handler); } } - + /// - /// Initialize the providers. + /// Experimental API only, subject to change. Register to get Tango video overlay callbacks. /// - /// UUID to be loaded, if any. - public void InitProviders(string UUID) + /// Object to stop getting Tango callbacks from. + internal void RegisterOnExperimentalTangoVideoOverlay(OnExperimentalTangoImageAvailableEventHandler handler) { - _InitializeMotionTracking(UUID); - _InitializeDepth(); - _InitializeOverlay(); - _SetEventCallbacks(); + if (m_videoOverlayListener != null) + { + m_videoOverlayListener.RegisterOnExperimentalTangoImageAvailable(handler); + } } - + /// - /// Connects to Tango Service. + /// Experimental API only, subject to change. Unregister from the Tango video overlay callbacks. + /// + /// See TangoApplication.Register for more details. /// - public void ConnectToService() + /// Event to remove. + internal void UnregisterOnExperimentalTangoVideoOverlay(OnExperimentalTangoImageAvailableEventHandler handler) { - Debug.Log("TangoApplication.ConnectToService()"); - _TangoConnect(); + if (m_videoOverlayListener != null) + { + m_videoOverlayListener.UnregisterOnExperimentalTangoImageAvailable(handler); + } } /// - /// Shutdown this instance. + /// Gets the get tango API version code. /// - public void Shutdown() + /// The get tango API version code. + private static int _GetTangoAPIVersion() { - Debug.Log("Tango Shutdown"); - TangoConfig.Free(); - _TangoDisconnect(); + return AndroidHelper.GetVersionCode("com.projecttango.tango"); } /// @@ -563,7 +680,8 @@ private void _SetVideoOverlayCallbacks() /// /// Initialize motion tracking. /// - private void _InitializeMotionTracking(string UUID) + /// ADF UUID to load. + private void _InitializeMotionTracking(string uuid) { System.Collections.Generic.List framePairs = new System.Collections.Generic.List(); @@ -577,10 +695,10 @@ private void _InitializeMotionTracking(string UUID) if (TangoConfig.SetBool(TangoConfig.Keys.ENABLE_AREA_LEARNING_BOOL, m_enableAreaLearning) && m_enableAreaLearning) { Debug.Log("Area Learning is enabled."); - if (!string.IsNullOrEmpty(UUID)) + if (!string.IsNullOrEmpty(uuid)) { TangoConfig.SetBool("config_experimental_high_accuracy_small_scale_adf", m_useExperimentalADF); - TangoConfig.SetString(TangoConfig.Keys.LOAD_AREA_DESCRIPTION_UUID_STRING, UUID); + TangoConfig.SetString(TangoConfig.Keys.LOAD_AREA_DESCRIPTION_UUID_STRING, uuid); } TangoCoordinateFramePair areaDescription; @@ -638,11 +756,13 @@ private void _TangoInitialize() { Debug.Log("-------------------Tango initialize status : " + status); Debug.Log(CLASS_NAME + ".Initialize() The service has not been initialized!"); - } else + } + else { Debug.Log(CLASS_NAME + ".Initialize() Tango was initialized!"); } - } else + } + else { Debug.Log(CLASS_NAME + ".Initialize() Invalid API version. please update to minimul API version."); } @@ -660,14 +780,15 @@ private void _TangoConnect() if (TangoServiceAPI.TangoService_connect(m_callbackContext, TangoConfig.GetConfig()) != Common.ErrorType.TANGO_SUCCESS) { Debug.Log(CLASS_NAME + ".Connect() Could not connect to the Tango Service!"); - } else + } + else { AndroidHelper.PerformanceLog("Unity _TangoConnect end"); Debug.Log(CLASS_NAME + ".Connect() Tango client connected to service!"); - if (m_onTangoConnect != null) + if (OnTangoConnect != null) { - m_onTangoConnect(); + OnTangoConnect(); } } } @@ -683,13 +804,14 @@ private void _TangoDisconnect() if (TangoServiceAPI.TangoService_disconnect() != Common.ErrorType.TANGO_SUCCESS) { Debug.Log(CLASS_NAME + ".Disconnect() Could not disconnect from the Tango Service!"); - } else + } + else { Debug.Log(CLASS_NAME + ".Disconnect() Tango client disconnected from service!"); - if (m_onTangoDisconnect != null) + if (OnTangoDisconnect != null) { - m_onTangoDisconnect(); + OnTangoDisconnect(); } } } @@ -707,9 +829,10 @@ private bool _IsValidTangoAPIVersion() if (versionCode < 0) { m_isValidTangoAPIVersion = false; - } else + } + else { - m_isValidTangoAPIVersion = (versionCode >= MINIMUM_API_VERSION); + m_isValidTangoAPIVersion = versionCode >= MINIMUM_API_VERSION; } m_hasVersionBeenChecked = true; @@ -718,15 +841,6 @@ private bool _IsValidTangoAPIVersion() return m_isValidTangoAPIVersion; } - /// - /// Gets the get tango API version code. - /// - /// The get tango API version code. - private static int _GetTangoAPIVersion() - { - return AndroidHelper.GetVersionCode("com.projecttango.tango"); - } - /// /// Android on pause. /// @@ -768,31 +882,33 @@ private void _androidOnActivityResult(int requestCode, int resultCode, AndroidJa switch (requestCode) { case Common.TANGO_MOTION_TRACKING_PERMISSIONS_REQUEST_CODE: + { + if (resultCode == (int)Common.AndroidResult.SUCCESS) + { + _FlipBitAndCheckPermissions(PermissionsTypes.MOTION_TRACKING); + } + else { - if (resultCode == (int)Common.AndroidResult.SUCCESS) - { - _FlipBitAndCheckPermissions(PermissionsTypes.MOTION_TRACKING); - } else - { - _PermissionWasDenied(); - } - break; + _PermissionWasDenied(); } + break; + } case Common.TANGO_ADF_LOAD_SAVE_PERMISSIONS_REQUEST_CODE: + { + if (resultCode == (int)Common.AndroidResult.SUCCESS) { - if (resultCode == (int)Common.AndroidResult.SUCCESS) - { - _FlipBitAndCheckPermissions(PermissionsTypes.AREA_LEARNING); - } else - { - _PermissionWasDenied(); - } - break; + _FlipBitAndCheckPermissions(PermissionsTypes.AREA_LEARNING); } - default: + else { - break; + _PermissionWasDenied(); } + break; + } + default: + { + break; + } } Debug.Log("Activity returned result end"); } @@ -850,11 +966,13 @@ private void _FlipBitAndCheckPermissions(PermissionsTypes permission) { m_requiredPermissions ^= permission; - if (m_requiredPermissions == 0) // all permissions are good! + if (m_requiredPermissions == 0) { + // all permissions are good! Debug.Log("All permissions have been accepted!"); _SendPermissionEvent(true); - } else + } + else { _RequestNextPermission(); } @@ -866,7 +984,7 @@ private void _FlipBitAndCheckPermissions(PermissionsTypes permission) private void _PermissionWasDenied() { m_requiredPermissions = PermissionsTypes.NONE; - if (m_permissionEvent != null) + if (PermissionEvent != null) { _SendPermissionEvent(false); } @@ -890,16 +1008,19 @@ private void _RequestNextPermission() if (AndroidHelper.ApplicationHasTangoPermissions(Common.TANGO_MOTION_TRACKING_PERMISSIONS)) { _androidOnActivityResult(Common.TANGO_MOTION_TRACKING_PERMISSIONS_REQUEST_CODE, -1, null); - } else + } + else { AndroidHelper.StartTangoPermissionsActivity(Common.TANGO_MOTION_TRACKING_PERMISSIONS); } - } else if ((m_requiredPermissions & PermissionsTypes.AREA_LEARNING) == PermissionsTypes.AREA_LEARNING) + } + else if ((m_requiredPermissions & PermissionsTypes.AREA_LEARNING) == PermissionsTypes.AREA_LEARNING) { if (AndroidHelper.ApplicationHasTangoPermissions(Common.TANGO_ADF_LOAD_SAVE_PERMISSIONS)) { _androidOnActivityResult(Common.TANGO_ADF_LOAD_SAVE_PERMISSIONS_REQUEST_CODE, -1, null); - } else + } + else { AndroidHelper.StartTangoPermissionsActivity(Common.TANGO_ADF_LOAD_SAVE_PERMISSIONS); } @@ -923,9 +1044,9 @@ private void Update() { if (m_sendPermissions) { - if (m_permissionEvent != null) + if (PermissionEvent != null) { - m_permissionEvent(m_permissionsSuccessful); + PermissionEvent(m_permissionsSuccessful); } m_sendPermissions = false; } @@ -963,24 +1084,27 @@ private void OnDestroy() /// /// Interface for native function calls to Tango Service. /// + [System.Diagnostics.CodeAnalysis.SuppressMessage("StyleCop.CSharp.DocumentationRules", + "SA1600:ElementsMustBeDocumented", + Justification = "C API Wrapper.")] private struct TangoServiceAPI { #if UNITY_ANDROID && !UNITY_EDITOR [DllImport(Common.TANGO_UNITY_DLL)] - public static extern int TangoService_initialize (IntPtr JNIEnv, IntPtr appContext); + public static extern int TangoService_initialize(IntPtr jniEnv, IntPtr appContext); [DllImport(Common.TANGO_UNITY_DLL)] - public static extern int TangoService_connect (IntPtr callbackContext, IntPtr config); + public static extern int TangoService_connect(IntPtr callbackContext, IntPtr config); [DllImport(Common.TANGO_UNITY_DLL)] - public static extern int TangoService_disconnect (); + public static extern int TangoService_disconnect(); #else - public static int TangoService_initialize(IntPtr JNIEnv, IntPtr appContext) + public static int TangoService_initialize(IntPtr jniEnv, IntPtr appContext) { return Common.ErrorType.TANGO_SUCCESS; } - public static int TangoService_connect(IntPtr callbackContext, IntPtr config) + public static int TangoService_connect(IntPtr callbackContext, IntPtr config) { return Common.ErrorType.TANGO_SUCCESS; } diff --git a/UnityExamples/Assets/TangoSDK/Core/Scripts/TangoWrappers/TangoConfig.cs b/UnityExamples/Assets/TangoSDK/Core/Scripts/TangoWrappers/TangoConfig.cs index b2c0bb3a..e50ae856 100644 --- a/UnityExamples/Assets/TangoSDK/Core/Scripts/TangoWrappers/TangoConfig.cs +++ b/UnityExamples/Assets/TangoSDK/Core/Scripts/TangoWrappers/TangoConfig.cs @@ -1,18 +1,22 @@ -/* - * Copyright 2014 Google Inc. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +//----------------------------------------------------------------------- +// +// +// Copyright 2015 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// +//----------------------------------------------------------------------- using System; using System.Collections; using System.Text; @@ -23,16 +27,15 @@ namespace Tango { /// - /// Functionality for interacting with the Tango Service - /// configuration. + /// C API wrapper for Tango Configuration Parameters. /// - public class TangoConfig + internal class TangoConfig { -#region Attributes + #region Attributes /// /// Key/Value pairs supported by the Tango Service. - /// - public struct Keys + /// + internal struct Keys { // Motion Tracking public static readonly string ENABLE_MOTION_TRACKING_BOOL = "config_enable_motion_tracking"; @@ -65,29 +68,45 @@ public struct Keys private static IntPtr m_tangoConfig = IntPtr.Zero; /// - /// Delegate definition for setting API callbacks when setting values in the Tango Config. + /// Delegate for internal API call that sets a config option. + /// + /// This matches the signature of TangoConfig_setBool, TangoConfig_Double, etc. /// - /// The IntPtr object, usually the tango config reference. - /// Usually the key that we want to modify in the tango config file. - /// Usually the value that we want to modify for the key in the tango config file. - /// Common.ErrorType.TANGO_SUCCESS if API call was successfull, - /// Common.ErrorType.TANGO_ERROR otherwise. - public delegate int ConfigAPIDelegate(IntPtr obj1,string obj2,T obj3); -#endregion + /// C pointer to a TangoConfig. + /// Key we want to modify. + /// Value to set, of the correct type. + /// + /// Returns TANGO_SUCCESS on success or TANGO_INVALID if config or key is NULL, or key is not found or could + /// not be set. + /// + private delegate int ConfigAPIDelegate(IntPtr obj1, string obj2, T obj3); + #endregion /// - /// Gets the handle to the current Tango configuration. + /// Gets the cached C pointer to a TangoConfig. + /// + /// This pointer is updated by calling InitConfig. /// - /// Handle to the Tango configuration. - public static IntPtr GetConfig() + /// C pointer to a Tango config. + internal static IntPtr GetConfig() { return m_tangoConfig; } /// - /// Fills out a given Tango configuration with the currently set configuration settings. + /// Update the cached C pointer to a TangoConfig. + /// + /// This should be used to initialize a Config object for setting the configuration that TangoService should + /// be run in. The Config handle is passed to TangoService_connect() which starts the service running with + /// the parameters set at that time in that TangoConfig handle. This function can be used to find the current + /// configuration of the service (i.e. what would be run if no config is specified on TangoService_connect()), + /// or to create one of a few "template" TangoConfigs. The returned TangoConfig can be further modified by + /// TangoConfig_set function calls. The handle should be freed with Free(). The handle is needed + /// only at the time of TangoService_connect() where it is used to configure the service, and can safely be + /// freed after it has been used in TangoService_connect(). /// - public static void InitConfig(TangoEnums.TangoConfigType configType) + /// The requested configuration type. + internal static void InitConfig(TangoEnums.TangoConfigType configType) { m_tangoConfig = TangoConfigAPI.TangoService_getConfig(configType); @@ -95,9 +114,11 @@ public static void InitConfig(TangoEnums.TangoConfigType configType) } /// - /// Deallocate a Tango configuration object. + /// Free a TangoConfig object. + /// + /// Frees the TangoConfig object for the cached handle. /// - public static void Free() + internal static void Free() { if (m_tangoConfig != IntPtr.Zero) { @@ -110,12 +131,13 @@ public static void Free() } /// - /// Gets a string representing the current settings - /// of the Tango configuration. + /// Gets a string of key-value pairs of all the configuration values of TangoService. + /// + /// The string is separated into lines such that each line is one key-value pair, with format "key=value\n". + /// Note that many of these config values are read-only, unless otherwise documented. /// - /// String representing the current settings. - /// Null if no configuration is found. - public static string GetSettings() + /// String representation of the cached configuration. + internal static string GetSettings() { if (m_tangoConfig != IntPtr.Zero) { @@ -128,67 +150,67 @@ public static string GetSettings() } /// - /// Sets the value of a boolean key/value pair. + /// Set a boolean configuration parameter. /// - /// true, if bool was set, false otherwise. - /// Key. - /// If set to true value. - public static bool SetBool(string key, bool value) + /// true on success, false otherwise. + /// The string key value of the configuration parameter to set. + /// The value to set the configuration key to. + internal static bool SetBool(string key, bool value) { return _ConfigHelperSet(new ConfigAPIDelegate(TangoConfigAPI.TangoConfig_setBool), m_tangoConfig, key, value, "SetBool"); } /// - /// Sets the value of an int32 key/value pair. + /// Set an Int32 configuration parameter. /// - /// true, if int32 was set, false otherwise. - /// Key. - /// Value. - public static bool SetInt32(string key, Int32 value) + /// true on success, false otherwise. + /// The string key value of the configuration parameter to set. + /// The value to set the configuration key to. + internal static bool SetInt32(string key, Int32 value) { return _ConfigHelperSet(new ConfigAPIDelegate(TangoConfigAPI.TangoConfig_setInt32), m_tangoConfig, key, value, "SetInt32"); } /// - /// Sets the value of an int64 key/value pair. + /// Set an Int64 configuration parameter. /// - /// true, if int64 was set, false otherwise. - /// Key. - /// Value. - public static bool SetInt64(string key, Int64 value) + /// true on success, false otherwise. + /// The string key value of the configuration parameter to set. + /// The value to set the configuration key to. + internal static bool SetInt64(string key, Int64 value) { return _ConfigHelperSet(new ConfigAPIDelegate(TangoConfigAPI.TangoConfig_setInt64), m_tangoConfig, key, value, "SetInt64"); } - + /// - /// Sets the value of a double key/value pair. + /// Set a double configuration parameter. /// - /// true, if double was set, false otherwise. - /// Key. - /// Value. - public static bool SetDouble(string key, double value) + /// true on success, false otherwise. + /// The string key value of the configuration parameter to set. + /// The value to set the configuration key to. + internal static bool SetDouble(string key, double value) { return _ConfigHelperSet(new ConfigAPIDelegate(TangoConfigAPI.TangoConfig_setDouble), m_tangoConfig, key, value, "SetDouble"); } - + /// - /// Sets the value of a string key/value pair. + /// Set a string configuration parameter. /// - /// true, if string was set, false otherwise. - /// Key. - /// Value. - public static bool SetString(string key, string value) + /// true on success, false otherwise. + /// The string key value of the configuration parameter to set. + /// The value to set the configuration key to. + internal static bool SetString(string key, string value) { return _ConfigHelperSet(new ConfigAPIDelegate(TangoConfigAPI.TangoConfig_setString), m_tangoConfig, key, value, "SetString"); } /// - /// Gets the value of a bool key/value pair. + /// Get a boolean configuration parameter. /// - /// true, if bool was gotten, false otherwise. - /// Key. - /// Value. - public static bool GetBool(string key, ref bool value) + /// true, if the value was retrieved, false otherwise. + /// The string key value of the configuration parameter to get. + /// On successful return, the value of the configuration key. + internal static bool GetBool(string key, ref bool value) { bool wasSuccess = false; if (m_tangoConfig != IntPtr.Zero) @@ -198,19 +220,19 @@ public static bool GetBool(string key, ref bool value) if (!wasSuccess) { #if UNITY_ANDROID && !UNITY_EDITOR - Debug.LogWarning(string.Format(m_ErrorLogFormat, "GetBool", key, false)); + Debug.LogWarning(string.Format(m_ErrorLogFormat, "GetBool", key, false)); #endif } return wasSuccess; } - + /// - /// Gets the value of an int32 kay/value pair. + /// Get an Int32 configuration parameter. /// - /// true, if int32 was gotten, false otherwise. - /// Key. - /// Value. - public static bool GetInt32(string key, ref Int32 value) + /// true, if the value was retrieved, false otherwise. + /// The string key value of the configuration parameter to get. + /// On successful return, the value of the configuration key. + internal static bool GetInt32(string key, ref Int32 value) { bool wasSuccess = false; if (m_tangoConfig != IntPtr.Zero) @@ -223,14 +245,14 @@ public static bool GetInt32(string key, ref Int32 value) } return wasSuccess; } - + /// - /// Gets the value of an int64 key/value pair. + /// Get an Int64 configuration parameter. /// - /// true, if int64 was gotten, false otherwise. - /// Key. - /// Value. - public static bool GetInt64(string key, ref Int64 value) + /// true, if the value was retrieved, false otherwise. + /// The string key value of the configuration parameter to get. + /// On successful return, the value of the configuration key. + internal static bool GetInt64(string key, ref Int64 value) { bool wasSuccess = false; if (m_tangoConfig != IntPtr.Zero) @@ -243,14 +265,14 @@ public static bool GetInt64(string key, ref Int64 value) } return wasSuccess; } - + /// - /// Gets the value of a double key/value pair. + /// Get a double configuration parameter. /// - /// true, if double was gotten, false otherwise. - /// Key. - /// Value. - public static bool GetDouble(string key, ref double value) + /// true, if the value was retrieved, false otherwise. + /// The string key value of the configuration parameter to get. + /// On successful return, the value of the configuration key. + internal static bool GetDouble(string key, ref double value) { bool wasSuccess = false; if (m_tangoConfig != IntPtr.Zero) @@ -263,14 +285,14 @@ public static bool GetDouble(string key, ref double value) } return wasSuccess; } - + /// - /// Gets the value of a string key/value pair. + /// Get a string configuration parameter. /// - /// true, if string was gotten, false otherwise. - /// Key. - /// Value. - public static bool GetString(string key, ref string value) + /// true, if the value was retrieved, false otherwise. + /// The string key value of the configuration parameter to get. + /// On successful return, the value of the configuration key. + internal static bool GetString(string key, ref string value) { bool wasSuccess = false; if (m_tangoConfig != IntPtr.Zero) @@ -292,17 +314,17 @@ public static bool GetString(string key, ref string value) } /// - /// Helper method for setting values in the Tango Config file. + /// Helper method for setting a configuration parameter. /// /// true if the API call returned success, false otherwise. /// The API call we want to perform. - /// Ptr to the current active Tango Config. - /// The key of the config file we want to modify the value of. - /// The new value we want to set. - /// String representing the name of the method we are trying to call. Used for logging purposes. + /// Handle to a Tango Config. + /// The string key value of the configuration parameter to set. + /// The value to set the configuration key to. + /// Name of the method we are calling. Used for logging purposes. /// The type of object we are trying to set. - internal static bool _ConfigHelperSet(ConfigAPIDelegate apiCall, IntPtr tangoConfig, string configKey, object configValue, - string tangoMethodName) + private static bool _ConfigHelperSet(ConfigAPIDelegate apiCall, IntPtr tangoConfig, string configKey, object configValue, + string tangoMethodName) { if (tangoConfig == IntPtr.Zero) { @@ -329,137 +351,150 @@ internal static bool _ConfigHelperSet(ConfigAPIDelegate apiCall, IntPtr ta } /// - /// Interface for the Tango Service API. + /// DEPRECATED: Internal API, should be private. /// + [System.Diagnostics.CodeAnalysis.SuppressMessage("StyleCop.CSharp.DocumentationRules", + "SA1600:ElementsMustBeDocumented", + Justification = "C API Wrapper.")] internal struct TangoConfigAPI { #if UNITY_ANDROID && !UNITY_EDITOR - [DllImport(Common.TANGO_UNITY_DLL)] - public static extern void TangoConfig_free(IntPtr tangoConfig); - - [DllImport(Common.TANGO_UNITY_DLL)] - public static extern string TangoConfig_toString(IntPtr TangoConfig); - - [DllImport(Common.TANGO_UNITY_DLL)] - public static extern int TangoConfig_setBool(IntPtr tangoConfig, - [MarshalAs(UnmanagedType.LPStr)] string key, - bool value); - [DllImport(Common.TANGO_UNITY_DLL)] - public static extern IntPtr TangoService_getConfig(TangoEnums.TangoConfigType config_type); - - [DllImport(Common.TANGO_UNITY_DLL)] - public static extern int TangoConfig_setInt32(IntPtr tangoConfig, - [MarshalAs(UnmanagedType.LPStr)] string key, - Int32 value); - - [DllImport(Common.TANGO_UNITY_DLL)] - public static extern int TangoConfig_setInt64(IntPtr tangoConfig, - [MarshalAs(UnmanagedType.LPStr)] string key, - Int64 value); - - [DllImport(Common.TANGO_UNITY_DLL)] - public static extern int TangoConfig_setDouble(IntPtr tangoConfig, - [MarshalAs(UnmanagedType.LPStr)] string key, - double value); - - [DllImport(Common.TANGO_UNITY_DLL)] - public static extern int TangoConfig_setString(IntPtr tangoConfig, - [MarshalAs(UnmanagedType.LPStr)] string key, - [MarshalAs(UnmanagedType.LPStr)] string value); - - [DllImport(Common.TANGO_UNITY_DLL)] - public static extern int TangoConfig_getBool(IntPtr tangoConfig, - [MarshalAs(UnmanagedType.LPStr)] string key, - ref bool value); - - [DllImport(Common.TANGO_UNITY_DLL)] - public static extern int TangoConfig_getInt32(IntPtr tangoConfig, - [MarshalAs(UnmanagedType.LPStr)] string key, - ref Int32 value); - - [DllImport(Common.TANGO_UNITY_DLL)] - public static extern int TangoConfig_getInt64(IntPtr tangoConfig, - [MarshalAs(UnmanagedType.LPStr)] string key, - ref Int64 value); - - [DllImport(Common.TANGO_UNITY_DLL)] - public static extern int TangoConfig_getDouble(IntPtr tangoConfig, - [MarshalAs(UnmanagedType.LPStr)] string key, - ref double value); - - [DllImport(Common.TANGO_UNITY_DLL)] - public static extern int TangoConfig_getString(IntPtr tangoConfig, - [MarshalAs(UnmanagedType.LPStr)] string key, - [In, Out] StringBuilder value, - UInt32 size); + [DllImport(Common.TANGO_UNITY_DLL)] + public static extern void TangoConfig_free(IntPtr tangoConfig); + + [DllImport(Common.TANGO_UNITY_DLL)] + public static extern string TangoConfig_toString(IntPtr tangoConfig); + + [DllImport(Common.TANGO_UNITY_DLL)] + public static extern int TangoConfig_setBool(IntPtr tangoConfig, + [MarshalAs(UnmanagedType.LPStr)] string key, + bool value); + [DllImport(Common.TANGO_UNITY_DLL)] + public static extern IntPtr TangoService_getConfig(TangoEnums.TangoConfigType config_type); + + [DllImport(Common.TANGO_UNITY_DLL)] + public static extern int TangoConfig_setInt32(IntPtr tangoConfig, + [MarshalAs(UnmanagedType.LPStr)] string key, + Int32 value); + + [DllImport(Common.TANGO_UNITY_DLL)] + public static extern int TangoConfig_setInt64(IntPtr tangoConfig, + [MarshalAs(UnmanagedType.LPStr)] string key, + Int64 value); + + [DllImport(Common.TANGO_UNITY_DLL)] + public static extern int TangoConfig_setDouble(IntPtr tangoConfig, + [MarshalAs(UnmanagedType.LPStr)] string key, + double value); + + [DllImport(Common.TANGO_UNITY_DLL)] + public static extern int TangoConfig_setString(IntPtr tangoConfig, + [MarshalAs(UnmanagedType.LPStr)] string key, + [MarshalAs(UnmanagedType.LPStr)] string value); + + [DllImport(Common.TANGO_UNITY_DLL)] + public static extern int TangoConfig_getBool(IntPtr tangoConfig, + [MarshalAs(UnmanagedType.LPStr)] string key, + ref bool value); + + [DllImport(Common.TANGO_UNITY_DLL)] + public static extern int TangoConfig_getInt32(IntPtr tangoConfig, + [MarshalAs(UnmanagedType.LPStr)] string key, + ref Int32 value); + + [DllImport(Common.TANGO_UNITY_DLL)] + public static extern int TangoConfig_getInt64(IntPtr tangoConfig, + [MarshalAs(UnmanagedType.LPStr)] string key, + ref Int64 value); + + [DllImport(Common.TANGO_UNITY_DLL)] + public static extern int TangoConfig_getDouble(IntPtr tangoConfig, + [MarshalAs(UnmanagedType.LPStr)] string key, + ref double value); + + [DllImport(Common.TANGO_UNITY_DLL)] + public static extern int TangoConfig_getString(IntPtr tangoConfig, + [MarshalAs(UnmanagedType.LPStr)] string key, + [In, Out] StringBuilder value, + UInt32 size); #else public static void TangoConfig_free(IntPtr tangoConfig) { - } public static IntPtr TangoService_getConfig(TangoEnums.TangoConfigType config_type) { return IntPtr.Zero; } - public static string TangoConfig_toString(IntPtr TangoConfig) + + public static string TangoConfig_toString(IntPtr tangoConfig) { return "Editor Mode"; } + public static int TangoConfig_setBool(IntPtr tangoConfig, - [MarshalAs(UnmanagedType.LPStr)] string key, - bool value) + [MarshalAs(UnmanagedType.LPStr)] string key, + bool value) { return Common.ErrorType.TANGO_SUCCESS; } + public static int TangoConfig_setInt32(IntPtr tangoConfig, - [MarshalAs(UnmanagedType.LPStr)] string key, - Int32 value) + [MarshalAs(UnmanagedType.LPStr)] string key, + Int32 value) { return Common.ErrorType.TANGO_SUCCESS; } + public static int TangoConfig_setInt64(IntPtr tangoConfig, - [MarshalAs(UnmanagedType.LPStr)] string key, - Int64 value) + [MarshalAs(UnmanagedType.LPStr)] string key, + Int64 value) { return Common.ErrorType.TANGO_SUCCESS; } + public static int TangoConfig_setDouble(IntPtr tangoConfig, - [MarshalAs(UnmanagedType.LPStr)] string key, - double value) + [MarshalAs(UnmanagedType.LPStr)] string key, + double value) { return Common.ErrorType.TANGO_SUCCESS; } + public static int TangoConfig_setString(IntPtr tangoConfig, - [MarshalAs(UnmanagedType.LPStr)] string key, - string value) + [MarshalAs(UnmanagedType.LPStr)] string key, + string value) { return Common.ErrorType.TANGO_SUCCESS; } + public static int TangoConfig_getBool(IntPtr tangoConfig, - [MarshalAs(UnmanagedType.LPStr)] string key, - ref bool value) + [MarshalAs(UnmanagedType.LPStr)] string key, + ref bool value) { return Common.ErrorType.TANGO_SUCCESS; } + public static int TangoConfig_getInt32(IntPtr tangoConfig, - [MarshalAs(UnmanagedType.LPStr)] string key, - ref Int32 value) + [MarshalAs(UnmanagedType.LPStr)] string key, + ref Int32 value) { return Common.ErrorType.TANGO_SUCCESS; } + public static int TangoConfig_getInt64(IntPtr tangoConfig, - [MarshalAs(UnmanagedType.LPStr)] string key, - ref Int64 value) + [MarshalAs(UnmanagedType.LPStr)] string key, + ref Int64 value) { return Common.ErrorType.TANGO_SUCCESS; } + public static int TangoConfig_getDouble(IntPtr tangoConfig, - [MarshalAs(UnmanagedType.LPStr)] string key, - ref double value) + [MarshalAs(UnmanagedType.LPStr)] string key, + ref double value) { return Common.ErrorType.TANGO_SUCCESS; } + public static int TangoConfig_getString(IntPtr tangoConfig, [MarshalAs(UnmanagedType.LPStr)] string key, [In, Out] StringBuilder value, diff --git a/UnityExamples/Assets/TangoSDK/Core/Scripts/TangoWrappers/TangoEvents.cs b/UnityExamples/Assets/TangoSDK/Core/Scripts/TangoWrappers/TangoEvents.cs index 7c295be9..3af6fc60 100644 --- a/UnityExamples/Assets/TangoSDK/Core/Scripts/TangoWrappers/TangoEvents.cs +++ b/UnityExamples/Assets/TangoSDK/Core/Scripts/TangoWrappers/TangoEvents.cs @@ -1,18 +1,22 @@ -/* - * Copyright 2014 Google Inc. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +//----------------------------------------------------------------------- +// +// +// Copyright 2015 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// +//----------------------------------------------------------------------- using System; using System.Runtime.InteropServices; using UnityEngine; @@ -20,33 +24,38 @@ namespace Tango { /// - /// Wraps the interface from Tango Service to register - /// for callbacks that are fired on new events. + /// C API wrapper for the Tango events interface. /// - public class TangoEvents + internal class TangoEvents { - // Signature used by the onTangoEvent callback. + /// + /// Tango video overlay C callback function signature. + /// + /// The callback context. + /// Tango event. [UnmanagedFunctionPointer(CallingConvention.Cdecl)] - public delegate void TangoService_onEventAvailable(IntPtr callbackContext, [In,Out] TangoEvent tangoEvent); + internal delegate void TangoService_onEventAvailable(IntPtr callbackContext, [In, Out] TangoEvent tangoEvent); /// - /// Sets the callback that is called when a new tango - /// event has been issued by the Tango Service. + /// Attach an onTangoEvent callback. The callback is called each time a Tango event happens. /// /// Callback. - public static void SetCallback(TangoService_onEventAvailable callback) + internal static void SetCallback(TangoService_onEventAvailable callback) { int returnValue = EventsAPI.TangoService_connectOnTangoEvent(callback); if (returnValue != Common.ErrorType.TANGO_SUCCESS) { - Debug.Log("TangoEvents.SetCallback() Callback was not set!"); + Debug.Log("TangoEvents.SetCallback() Callback was not set!"); } else { - Debug.Log("TangoEvents.SetCallback() Callback was set!"); + Debug.Log("TangoEvents.SetCallback() Callback was set!"); } } + [System.Diagnostics.CodeAnalysis.SuppressMessage("StyleCop.CSharp.DocumentationRules", + "SA1600:ElementsMustBeDocumented", + Justification = "C API Wrapper.")] private struct EventsAPI { #if UNITY_ANDROID && !UNITY_EDITOR diff --git a/UnityExamples/Assets/TangoSDK/Core/Scripts/TangoWrappers/VideoOverlayProvider.cs b/UnityExamples/Assets/TangoSDK/Core/Scripts/TangoWrappers/VideoOverlayProvider.cs index 1de7dbd3..3d3ecfb2 100644 --- a/UnityExamples/Assets/TangoSDK/Core/Scripts/TangoWrappers/VideoOverlayProvider.cs +++ b/UnityExamples/Assets/TangoSDK/Core/Scripts/TangoWrappers/VideoOverlayProvider.cs @@ -1,18 +1,22 @@ -/* - * Copyright 2014 Google Inc. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +//----------------------------------------------------------------------- +// +// +// Copyright 2015 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// +//----------------------------------------------------------------------- using System; using System.Collections; using System.Collections.Generic; @@ -22,90 +26,46 @@ namespace Tango { - /// - /// Wraps separate textures for Y, U, and V planes. + /// C API wrapper for the Tango video overlay interface. /// - public class YUVTexture + public class VideoOverlayProvider { /// - /// The m_video overlay texture y. - /// Columns 1280/4 [bytes packed in RGBA channels] - /// Rows 720 - /// - public Texture2D m_videoOverlayTextureY; - - /// - /// The m_video overlay texture cb. - /// Columns 640/4 [bytes packed in RGBA channels] - /// Rows 360 - /// - public Texture2D m_videoOverlayTextureCb; - - /// - /// The m_video overlay texture cr. - /// Columns 640 * 2 / 4 [bytes packed in RGBA channels] - /// Rows 360 - /// - public Texture2D m_videoOverlayTextureCr; - - /// - /// Initializes a new instance of the class. - /// NOTE : Texture resolutions will be reset by the API. The sizes passed - /// into the constructor are not guaranteed to persist when running on device. + /// Tango video overlay C callback function signature. /// - /// Width. - /// Height. - /// Format. - /// If set to true mipmap. - public YUVTexture(int yPlaneWidth, int yPlaneHeight, - int uvPlaneWidth, int uvPlaneHeight, - TextureFormat format, bool mipmap) - { - m_videoOverlayTextureY = new Texture2D(yPlaneWidth, yPlaneHeight, format, mipmap); - m_videoOverlayTextureY.filterMode = FilterMode.Point; - m_videoOverlayTextureCb = new Texture2D(uvPlaneWidth, uvPlaneHeight, format, mipmap); - m_videoOverlayTextureCb.filterMode = FilterMode.Point; - m_videoOverlayTextureCr = new Texture2D(uvPlaneWidth, uvPlaneHeight, format, mipmap); - m_videoOverlayTextureCr.filterMode = FilterMode.Point; - } + /// Callback context. + /// Camera ID. + /// Image. + [UnmanagedFunctionPointer(CallingConvention.Cdecl)] + internal delegate void TangoService_onImageAvailable(IntPtr callbackContext, Tango.TangoEnums.TangoCameraId cameraId, [In, Out] TangoImageBuffer image); /// - /// Resizes all yuv texture planes. + /// Experimental API only, subject to change. Tango depth C callback function signature. /// - /// Y plane width. - /// Y plane height. - /// Uv plane width. - /// Uv plane height. - public void ResizeAll(int yPlaneWidth, int yPlaneHeight, - int uvPlaneWidth, int uvPlaneHeight) - { - m_videoOverlayTextureY.Resize(yPlaneWidth, yPlaneHeight); - m_videoOverlayTextureCb.Resize(uvPlaneWidth, uvPlaneHeight); - m_videoOverlayTextureCr.Resize(uvPlaneWidth, uvPlaneHeight); - } - } - - /// - /// Video Overlay Provider class provide video functions - /// to get frame textures. - /// - public class VideoOverlayProvider - { + /// Callback context. + /// Camera ID. [UnmanagedFunctionPointer(CallingConvention.Cdecl)] - public delegate void TangoService_onImageAvailable(IntPtr callbackContext, Tango.TangoEnums.TangoCameraId cameraId, [In,Out] TangoImageBuffer image); - - [UnmanagedFunctionPointer(CallingConvention.Cdecl)] - public delegate void TangoService_onUnityFrameAvailable(IntPtr callbackContext, Tango.TangoEnums.TangoCameraId cameraId); + internal delegate void TangoService_onUnityFrameAvailable(IntPtr callbackContext, Tango.TangoEnums.TangoCameraId cameraId); private static readonly string CLASS_NAME = "VideoOverlayProvider"; private static IntPtr callbackContext = IntPtr.Zero; /// - /// Connects the texture. + /// Connect a Texture ID to a camera; the camera is selected by specifying a TangoCameraId. + /// + /// Currently only TANGO_CAMERA_COLOR and TANGO_CAMERA_FISHEYE are supported. The texture must be the ID of a + /// texture that has been allocated and initialized by the calling application. + /// + /// The first scan-line of the color image is reserved for metadata instead of image pixels. /// - /// Camera identifier. - /// Texture identifier. + /// + /// The ID of the camera to connect this texture to. Only TANGO_CAMERA_COLOR and TANGO_CAMERA_FISHEYE are + /// supported. + /// + /// + /// The texture ID of the texture to connect the camera to. Must be a valid texture in the applicaton. + /// public static void ConnectTexture(TangoEnums.TangoCameraId cameraId, int textureId) { int returnValue = VideoOverlayAPI.TangoService_connectTextureId(cameraId, textureId); @@ -115,8 +75,29 @@ public static void ConnectTexture(TangoEnums.TangoCameraId cameraId, int texture Debug.Log("VideoOverlayProvider.ConnectTexture() Texture was not connected to camera!"); } } - - public static void ExperimentalConnectTexture(TangoEnums.TangoCameraId cameraId, YUVTexture textures, TangoService_onUnityFrameAvailable onUnityFrameAvailable) + + /// + /// Experimental API only, subject to change. Connect a Texture IDs to a camera. + /// + /// The camera is selected via TangoCameraId. Currently only TANGO_CAMERA_COLOR is supported. The texture + /// handles will be regenerated by the API on startup after which the application can use them, and will be + /// packed RGBA8888 data containing bytes of the image (so a single RGBA8888 will pack 4 neighbouring pixels). + /// If the config flag experimental_image_pixel_format is set to HAL_PIXEL_FORMAT_YCrCb_420_SP, texture_y will + /// pack 1280x720 pixels into a 320x720 RGBA8888 texture. texture_Cb and texture_Cr will contain copies of + /// the 2x2 downsampled interleaved UV planes packed similarly. If experimental_image_pixel_format is set to + /// HAL_PIXEL_FORMAT_YV12 then texture_y will have a stride of 1536 containing 1280 columns of data, packed + /// similarly in a RGBA8888 texture. texture_Cb and texture_Cr will be 2x2 downsampled versions of the same. + /// See YV12 and NV21 formats for details. + /// + /// Note: The first scan-line of the color image is reserved for metadata instead of image pixels. + /// + /// + /// The ID of the camera to connect this texture to. Only TANGO_CAMERA_COLOR and TANGO_CAMERA_FISHEYE are + /// supported. + /// + /// The texture IDs to use for the Y, Cb, and Cr planes. + /// Callback. + internal static void ExperimentalConnectTexture(TangoEnums.TangoCameraId cameraId, YUVTexture textures, TangoService_onUnityFrameAvailable onUnityFrameAvailable) { int returnValue = VideoOverlayAPI.TangoService_Experimental_connectTextureIdUnity(cameraId, (uint)textures.m_videoOverlayTextureY.GetNativeTextureID(), @@ -130,12 +111,16 @@ public static void ExperimentalConnectTexture(TangoEnums.TangoCameraId cameraId, Debug.Log("VideoOverlayProvider.ConnectTexture() Texture was not connected to camera!"); } } - + /// - /// Renders the latest frame. + /// Update the texture that has been connected to camera referenced by TangoCameraId with the latest image + /// from the camera. /// - /// The latest frame timestamp. - /// Camera identifier. + /// The timestamp of the image that has been pushed to the connected texture. + /// + /// The ID of the camera to connect this texture to. Only TANGO_CAMERA_COLOR and + /// TANGO_CAMERA_FISHEYE are supported. + /// public static double RenderLatestFrame(TangoEnums.TangoCameraId cameraId) { double timestamp = 0.0; @@ -149,10 +134,15 @@ public static double RenderLatestFrame(TangoEnums.TangoCameraId cameraId) } /// - /// Get the camera/sensor intrinsics. + /// Get the intrinsic calibration parameters for a given camera. + /// + /// The intrinsics are as specified by the TangoCameraIntrinsics struct. Intrinsics are read from the + /// on-device intrinsics file (typically /sdcard/config/calibration.xml, but to ensure + /// compatibility applications should only access these parameters via the API), or default internal model + /// parameters corresponding to the device are used if the calibration.xml file is not found. /// - /// Camera identifier. - /// Camera intrinsics data. + /// The camera ID to retrieve the calibration intrinsics for. + /// A TangoCameraIntrinsics filled with calibration intrinsics for the camera. public static void GetIntrinsics(TangoEnums.TangoCameraId cameraId, [Out] TangoCameraIntrinsics intrinsics) { int returnValue = VideoOverlayAPI.TangoService_getCameraIntrinsics(cameraId, intrinsics); @@ -162,16 +152,28 @@ public static void GetIntrinsics(TangoEnums.TangoCameraId cameraId, [Out] TangoC Debug.Log("IntrinsicsProviderAPI.TangoService_getCameraIntrinsics() failed!"); } } - + /// - /// Sets the callback for notifications when image data is ready. + /// Connect a callback to a camera for access to the pixels. + /// + /// This is not recommended for display but for applications requiring access to the + /// HAL_PIXEL_FORMAT_YV12 pixel data. The camera is selected via TangoCameraId. Currently only + /// TANGO_CAMERA_COLOR and TANGO_CAMERA_FISHEYE are supported. + /// + /// The onImageAvailable callback will be called when a new frame is available from the camera. The + /// Enable Video Overlay option must be enabled for this to succeed. + /// + /// Note: The first scan-line of the color image is reserved for metadata instead of image pixels. /// - /// Camera identifier. - /// On image available callback handler. - public static void SetCallback(TangoEnums.TangoCameraId cameraId, TangoService_onImageAvailable onImageAvailable) + /// + /// The ID of the camera to connect this texture to. Only TANGO_CAMERA_COLOR and + /// TANGO_CAMERA_FISHEYE are supported. + /// + /// Function called when a new frame is available from the camera. + internal static void SetCallback(TangoEnums.TangoCameraId cameraId, TangoService_onImageAvailable onImageAvailable) { int returnValue = VideoOverlayAPI.TangoService_connectOnFrameAvailable(cameraId, callbackContext, onImageAvailable); - if(returnValue == Tango.Common.ErrorType.TANGO_SUCCESS) + if (returnValue == Tango.Common.ErrorType.TANGO_SUCCESS) { Debug.Log(CLASS_NAME + ".SetCallback() Callback was set."); } @@ -182,9 +184,9 @@ public static void SetCallback(TangoEnums.TangoCameraId cameraId, TangoService_o } #region NATIVE_FUNCTIONS - /// - /// Video overlay native function import. - /// + [System.Diagnostics.CodeAnalysis.SuppressMessage("StyleCop.CSharp.DocumentationRules", + "SA1600:ElementsMustBeDocumented", + Justification = "C API Wrapper.")] private struct VideoOverlayAPI { #if UNITY_ANDROID && !UNITY_EDITOR @@ -195,7 +197,7 @@ private struct VideoOverlayAPI [DllImport(Common.TANGO_UNITY_DLL)] public static extern int TangoService_connectOnFrameAvailable(TangoEnums.TangoCameraId cameraId, IntPtr context, - [In,Out] TangoService_onImageAvailable onImageAvailable); + [In, Out] TangoService_onImageAvailable onImageAvailable); [DllImport(Common.TANGO_UNITY_DLL)] public static extern int TangoService_updateTexture(TangoEnums.TangoCameraId cameraId, ref double timestamp); @@ -228,7 +230,7 @@ public static int TangoService_getCameraIntrinsics(TangoEnums.TangoCameraId came public static int TangoService_connectOnFrameAvailable(TangoEnums.TangoCameraId cameraId, IntPtr context, - [In,Out] TangoService_onImageAvailable onImageAvailable) + [In, Out] TangoService_onImageAvailable onImageAvailable) { return Tango.Common.ErrorType.TANGO_SUCCESS; } @@ -246,4 +248,69 @@ public static int TangoService_Experimental_connectTextureIdUnity(TangoEnums.Tan #endregion } } + + /// + /// Wraps separate textures for Y, U, and V planes. + /// + public class YUVTexture + { + /// + /// The m_video overlay texture y. + /// Columns 1280/4 [bytes packed in RGBA channels] + /// Rows 720 + /// This size is for a 1280x720 screen. + /// + public Texture2D m_videoOverlayTextureY; + + /// + /// The m_video overlay texture cb. + /// Columns 640/4 [bytes packed in RGBA channels] + /// Rows 360 + /// This size is for a 1280x720 screen. + /// + public Texture2D m_videoOverlayTextureCb; + + /// + /// The m_video overlay texture cr. + /// Columns 640 * 2 / 4 [bytes packed in RGBA channels] + /// Rows 360 + /// This size is for a 1280x720 screen. + /// + public Texture2D m_videoOverlayTextureCr; + + /// + /// Initializes a new instance of the class. + /// NOTE : Texture resolutions will be reset by the API. The sizes passed + /// into the constructor are not guaranteed to persist when running on device. + /// + /// Y plane width. + /// Y plane height. + /// UV plane width. + /// UV plane height. + /// Format. + /// If set to true mipmap. + public YUVTexture(int yPlaneWidth, int yPlaneHeight, + int uvPlaneWidth, int uvPlaneHeight, + TextureFormat format, bool mipmap) + { + m_videoOverlayTextureY = new Texture2D(yPlaneWidth, yPlaneHeight, format, mipmap); + m_videoOverlayTextureCb = new Texture2D(uvPlaneWidth, uvPlaneHeight, format, mipmap); + m_videoOverlayTextureCr = new Texture2D(uvPlaneWidth, uvPlaneHeight, format, mipmap); + } + + /// + /// Resizes all yuv texture planes. + /// + /// Y plane width. + /// Y plane height. + /// Uv plane width. + /// Uv plane height. + public void ResizeAll(int yPlaneWidth, int yPlaneHeight, + int uvPlaneWidth, int uvPlaneHeight) + { + m_videoOverlayTextureY.Resize(yPlaneWidth, yPlaneHeight); + m_videoOverlayTextureCb.Resize(uvPlaneWidth, uvPlaneHeight); + m_videoOverlayTextureCr.Resize(uvPlaneWidth, uvPlaneHeight); + } + } } \ No newline at end of file diff --git a/UnityExamples/Assets/TangoSDK/Core/Tango.dat b/UnityExamples/Assets/TangoSDK/Core/Tango.dat index e4cb58ad..80235af0 100644 --- a/UnityExamples/Assets/TangoSDK/Core/Tango.dat +++ b/UnityExamples/Assets/TangoSDK/Core/Tango.dat @@ -1 +1 @@ - undefined7f7a462release-vonmises \ No newline at end of file + undefined400af05 release-weyl \ No newline at end of file diff --git a/UnityExamples/Assets/TangoSDK/Core/Tango.dat.meta b/UnityExamples/Assets/TangoSDK/Core/Tango.dat.meta index 17288c6e..fddac95d 100644 --- a/UnityExamples/Assets/TangoSDK/Core/Tango.dat.meta +++ b/UnityExamples/Assets/TangoSDK/Core/Tango.dat.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 4c32e35ac7ec74461a887d63a617d537 +guid: ea270c395b242406694304142de3d5a9 DefaultImporter: userData: assetBundleName: diff --git a/UnityExamples/Assets/TangoSDK/Editor.meta b/UnityExamples/Assets/TangoSDK/Editor.meta index c5ac9dc2..066a5fba 100644 --- a/UnityExamples/Assets/TangoSDK/Editor.meta +++ b/UnityExamples/Assets/TangoSDK/Editor.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 78f7df302e5d14d179d4c2a81857cab4 folderAsset: yes -timeCreated: 1440434026 +timeCreated: 1441729896 licenseType: Pro DefaultImporter: userData: diff --git a/UnityExamples/Assets/TangoSDK/Editor/TangoInspector.cs b/UnityExamples/Assets/TangoSDK/Editor/TangoInspector.cs index 0730ca1b..ef88ba1d 100644 --- a/UnityExamples/Assets/TangoSDK/Editor/TangoInspector.cs +++ b/UnityExamples/Assets/TangoSDK/Editor/TangoInspector.cs @@ -1,35 +1,34 @@ -/* - * Copyright 2014 Google Inc. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +//----------------------------------------------------------------------- +// +// +// Copyright 2015 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// +//----------------------------------------------------------------------- using System.Collections; using UnityEditor; using UnityEngine; using Tango; +/// +/// Custom editor for the TangoApplication. +/// [CustomEditor(typeof(TangoApplication))] public class TangoInspector : Editor { - TangoApplication m_tangoApplication; - - /// - /// Raises the enable event. - /// - private void OnEnable() - { - m_tangoApplication = (TangoApplication)target; - } + private TangoApplication m_tangoApplication; /// /// Raises the inspector GUI event. @@ -46,6 +45,14 @@ public override void OnInspectorGUI() } } + /// + /// Raises the enable event. + /// + private void OnEnable() + { + m_tangoApplication = (TangoApplication)target; + } + /// /// Draw motion tracking options. /// @@ -59,7 +66,7 @@ private void _DrawMotionTrackingOptions(TangoApplication tangoApplication) EditorGUI.indentLevel++; tangoApplication.m_motionTrackingAutoReset = EditorGUILayout.Toggle("Auto Reset", tangoApplication.m_motionTrackingAutoReset); - + tangoApplication.m_enableAreaLearning = EditorGUILayout.Toggle("Area Learning", tangoApplication.m_enableAreaLearning); if (tangoApplication.m_enableAreaLearning) diff --git a/UnityExamples/Assets/TangoSDK/Editor/TangoMenu.cs b/UnityExamples/Assets/TangoSDK/Editor/TangoMenu.cs index e97da219..145827a4 100644 --- a/UnityExamples/Assets/TangoSDK/Editor/TangoMenu.cs +++ b/UnityExamples/Assets/TangoSDK/Editor/TangoMenu.cs @@ -1,34 +1,38 @@ -/* - * Copyright 2014 Google Inc. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +//----------------------------------------------------------------------- +// +// +// Copyright 2015 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// +//----------------------------------------------------------------------- +using System.Collections; using UnityEngine; using UnityEditor; -using System.Collections; /// /// Tango developer tools menu. /// public class TangoMenu { - /// - /// Opens the default web browser and navigates to the - /// Tango developer page. - /// - [MenuItem("Tango/Documentation")] - public static void ShowDocumentation() - { - Application.OpenURL("https://developers.google.com/project-tango/developer-overview"); - } + /// + /// Opens the default web browser and navigates to the + /// Tango developer page. + /// + [MenuItem("Tango/Documentation")] + public static void ShowDocumentation() + { + Application.OpenURL("https://developers.google.com/project-tango/developer-overview"); + } } diff --git a/UnityExamples/Assets/TangoSDK/Editor/TangoSDKAbout.cs b/UnityExamples/Assets/TangoSDK/Editor/TangoSDKAbout.cs index c3819c81..bed0d45e 100644 --- a/UnityExamples/Assets/TangoSDK/Editor/TangoSDKAbout.cs +++ b/UnityExamples/Assets/TangoSDK/Editor/TangoSDKAbout.cs @@ -1,74 +1,78 @@ -/* - * Copyright 2014 Google Inc. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ +//----------------------------------------------------------------------- +// +// +// Copyright 2015 Google Inc. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// +//----------------------------------------------------------------------- using System.Collections; +using System.IO; using UnityEditor; using UnityEngine; -using System.IO; /// /// Tango SDK about window. /// public class TangoSDKAbout : EditorWindow { - public static readonly string TANGO_VERSION_DATA_PATH = "/TangoSDK/Core/Tango.dat"; - public string m_branch = string.Empty; - public string m_versionTag = string.Empty; - public string m_gitHash = string.Empty; - public bool m_validData = false; + public static readonly string TANGO_VERSION_DATA_PATH = "/TangoSDK/Core/Tango.dat"; + public string m_branch = string.Empty; + public string m_versionTag = string.Empty; + public string m_gitHash = string.Empty; + public bool m_validData = false; - /// - /// Show the About Tango Window - /// - [MenuItem("Tango/About SDK")] - public static void GetSDKVersion() - { - EditorWindow thisWindow = EditorWindow.GetWindow(typeof(TangoSDKAbout)); + /// + /// Show the About Tango Window. + /// + [MenuItem("Tango/About SDK")] + public static void GetSDKVersion() + { + EditorWindow thisWindow = EditorWindow.GetWindow(typeof(TangoSDKAbout)); - ((TangoSDKAbout)thisWindow).ReadVersionFile(); - } + ((TangoSDKAbout)thisWindow).ReadVersionFile(); + } - /// - /// Reads the version file. - /// - public void ReadVersionFile() - { - if(File.Exists(Application.dataPath + TANGO_VERSION_DATA_PATH)) - { - BinaryReader binaryReader = new BinaryReader(File.Open(Application.dataPath + TANGO_VERSION_DATA_PATH, FileMode.Open)); - m_versionTag = binaryReader.ReadString(); - m_gitHash = binaryReader.ReadString(); - m_branch = binaryReader.ReadString(); - m_validData = true; + /// + /// Reads the version file. + /// + public void ReadVersionFile() + { + if (File.Exists(Application.dataPath + TANGO_VERSION_DATA_PATH)) + { + BinaryReader binaryReader = new BinaryReader(File.Open(Application.dataPath + TANGO_VERSION_DATA_PATH, FileMode.Open)); + m_versionTag = binaryReader.ReadString(); + m_gitHash = binaryReader.ReadString(); + m_branch = binaryReader.ReadString(); + m_validData = true; } } - /// - /// Raises the GU event. - /// - void OnGUI() - { - if(m_validData) - { - EditorGUILayout.LabelField("Version: ", m_versionTag); - EditorGUILayout.LabelField("Branch: ", m_branch); - EditorGUILayout.LabelField("Hash: ", m_gitHash); - } - else - { - EditorGUILayout.LabelField("Version data not found"); - } - } + /// + /// Raises the GU event. + /// + public void OnGUI() + { + if (m_validData) + { + EditorGUILayout.LabelField("Version: ", m_versionTag); + EditorGUILayout.LabelField("Branch: ", m_branch); + EditorGUILayout.LabelField("Hash: ", m_gitHash); + } + else + { + EditorGUILayout.LabelField("Version data not found"); + } + } } diff --git a/UnityExamples/Assets/TangoSDK/TangoUX.meta b/UnityExamples/Assets/TangoSDK/TangoUX.meta index 1099a9f4..4204139c 100644 --- a/UnityExamples/Assets/TangoSDK/TangoUX.meta +++ b/UnityExamples/Assets/TangoSDK/TangoUX.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: ab41d32a0a64440748e605a044b13387 folderAsset: yes -timeCreated: 1440434055 +timeCreated: 1442017923 licenseType: Pro DefaultImporter: userData: diff --git a/UnityExamples/Assets/TangoSDK/TangoUX/Scripts.meta b/UnityExamples/Assets/TangoSDK/TangoUX/Scripts.meta index b2e9da75..36d5e584 100644 --- a/UnityExamples/Assets/TangoSDK/TangoUX/Scripts.meta +++ b/UnityExamples/Assets/TangoSDK/TangoUX/Scripts.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: dd9505c88c48745c8bc7a16f712938f5 folderAsset: yes -timeCreated: 1440434055 +timeCreated: 1442017923 licenseType: Pro DefaultImporter: userData: diff --git a/UnityExamples/Assets/TangoSDK/TangoUX/Scripts/Common.meta b/UnityExamples/Assets/TangoSDK/TangoUX/Scripts/Common.meta index 49267f5f..7378c305 100644 --- a/UnityExamples/Assets/TangoSDK/TangoUX/Scripts/Common.meta +++ b/UnityExamples/Assets/TangoSDK/TangoUX/Scripts/Common.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: e29d70e17a9154895b257ee30b296791 folderAsset: yes -timeCreated: 1440434055 +timeCreated: 1442017923 licenseType: Pro DefaultImporter: userData: diff --git a/UnityExamples/Assets/TangoSDK/TangoUX/Scripts/Interfaces.meta b/UnityExamples/Assets/TangoSDK/TangoUX/Scripts/Interfaces.meta index d18ee6fe..91c58181 100644 --- a/UnityExamples/Assets/TangoSDK/TangoUX/Scripts/Interfaces.meta +++ b/UnityExamples/Assets/TangoSDK/TangoUX/Scripts/Interfaces.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: 8c7c0ebacfab24a0cbe5503a4bc5fa07 folderAsset: yes -timeCreated: 1440434055 +timeCreated: 1442017923 licenseType: Pro DefaultImporter: userData: diff --git a/UnityExamples/Assets/TangoSDK/TangoUX/Scripts/Listeners.meta b/UnityExamples/Assets/TangoSDK/TangoUX/Scripts/Listeners.meta index 42701a6c..e063e8f4 100644 --- a/UnityExamples/Assets/TangoSDK/TangoUX/Scripts/Listeners.meta +++ b/UnityExamples/Assets/TangoSDK/TangoUX/Scripts/Listeners.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 guid: acb9e1dbfe50d40808cb4061f03790d9 folderAsset: yes -timeCreated: 1440434055 +timeCreated: 1442017923 licenseType: Pro DefaultImporter: userData: diff --git a/UnityExamples/ProjectSettings/ProjectSettings.asset b/UnityExamples/ProjectSettings/ProjectSettings.asset index 6c3613c5..444914a0 100644 --- a/UnityExamples/ProjectSettings/ProjectSettings.asset +++ b/UnityExamples/ProjectSettings/ProjectSettings.asset @@ -72,14 +72,14 @@ PlayerSettings: 16:9: 1 Others: 1 bundleIdentifier: com.projecttango.unityexamples - bundleVersion: 1.21 + bundleVersion: 1.22 preloadedAssets: [] metroEnableIndependentInputSource: 0 metroEnableLowLatencyPresentationAPI: 0 xboxOneDisableKinectGpuReservation: 0 virtualRealitySupported: 0 productGUID: c6391136f507d40acbbba7382166aeb8 - AndroidBundleVersionCode: 21 + AndroidBundleVersionCode: 22 AndroidMinSdkVersion: 17 AndroidPreferredInstallLocation: 1 aotOptions: @@ -151,7 +151,10 @@ PlayerSettings: m_Size: 48 - m_Icon: {fileID: 2800000, guid: 87944d11c2cdb43679e685502eff846c, type: 3} m_Size: 36 - m_BuildTargetBatching: [] + m_BuildTargetBatching: + - m_BuildTarget: Android + m_StaticBatching: 1 + m_DynamicBatching: 0 m_BuildTargetGraphicsAPIs: - m_BuildTarget: AndroidPlayer m_APIs: 08000000