├── .github
├── screenshot.png
└── workflows
│ └── package.yml
├── .gitignore
├── LICENSE
├── Plugins
├── IndoorAtlas.meta
└── IndoorAtlas
│ ├── Android.meta
│ ├── Android
│ ├── AndroidManifest.xml
│ ├── AndroidManifest.xml.meta
│ ├── androidwrapper.aar
│ ├── androidwrapper.aar.meta
│ ├── indooratlas-android-sdk-3.6.0.aar
│ └── indooratlas-android-sdk-3.6.0.aar.meta
│ ├── Editor.meta
│ ├── Editor
│ ├── IndoorAtlasGameObjects.cs
│ └── IndoorAtlasGameObjects.cs.meta
│ ├── IndoorAtlasARWayfinding.cs
│ ├── IndoorAtlasARWayfinding.cs.meta
│ ├── IndoorAtlasApi.cs
│ ├── IndoorAtlasApi.cs.meta
│ ├── IndoorAtlasSession.cs
│ ├── IndoorAtlasSession.cs.meta
│ ├── IndoorAtlasUIInformationProvider.cs
│ ├── IndoorAtlasUIInformationProvider.cs.meta
│ ├── IndoorAtlasVRCamera.cs
│ ├── IndoorAtlasVRCamera.cs.meta
│ ├── IndoorAtlasWGSConversion.cs
│ ├── IndoorAtlasWGSConversion.cs.meta
│ ├── iOS.meta
│ └── iOS
│ ├── Editor.meta
│ ├── Editor
│ ├── XcodeFixes.cs
│ └── XcodeFixes.cs.meta
│ ├── IndoorAtlas.framework.meta
│ ├── IndoorAtlas.framework
│ ├── Headers.meta
│ ├── Headers
│ │ ├── IAFloor.h
│ │ ├── IAFloor.h.meta
│ │ ├── IAFloorPlan.h
│ │ ├── IAFloorPlan.h.meta
│ │ ├── IALocationManager.h
│ │ ├── IALocationManager.h.meta
│ │ ├── IndoorAtlas.h
│ │ └── IndoorAtlas.h.meta
│ ├── IndoorAtlas
│ ├── IndoorAtlas.meta
│ ├── Info.plist
│ ├── Info.plist.meta
│ ├── Modules.meta
│ └── Modules
│ │ ├── module.modulemap
│ │ └── module.modulemap.meta
│ ├── NativeBridge.m
│ └── NativeBridge.m.meta
├── README.md
├── androidwrapper
├── build.gradle
├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── libs
│ └── classes.jar
└── src
│ └── main
│ ├── AndroidManifest.xml
│ └── java
│ └── com
│ └── indooratlas
│ └── android
│ └── unity
│ └── Plugin.java
└── example
├── .gitignore
├── Assets
├── Plugins
├── Plugins.meta
├── StreamingAssets.meta
├── XR.meta
├── XR
│ ├── Loaders.meta
│ ├── Loaders
│ │ ├── AR Core Loader.asset
│ │ ├── AR Core Loader.asset.meta
│ │ ├── AR Kit Loader.asset
│ │ └── AR Kit Loader.asset.meta
│ ├── Settings.meta
│ ├── Settings
│ │ ├── AR Core Loader Settings.asset
│ │ ├── AR Core Loader Settings.asset.meta
│ │ ├── AR Core Settings.asset
│ │ ├── AR Core Settings.asset.meta
│ │ ├── AR Kit Loader Settings.asset
│ │ ├── AR Kit Loader Settings.asset.meta
│ │ ├── AR Kit Settings.asset
│ │ └── AR Kit Settings.asset.meta
│ ├── XRGeneralSettings.asset
│ └── XRGeneralSettings.asset.meta
├── arrow.obj
├── arrow.obj.meta
├── arrow_stylish.obj
├── arrow_stylish.obj.meta
├── compass material.mat
├── compass material.mat.meta
├── examplescene.unity
├── examplescene.unity.meta
├── finish material.mat
├── finish material.mat.meta
├── finish texture.png
├── finish texture.png.meta
├── finish.obj
├── finish.obj.meta
├── template.mat
├── template.mat.meta
├── turn material.mat
└── turn material.mat.meta
├── Packages
├── manifest.json
└── packages-lock.json
├── ProjectSettings
├── AudioManager.asset
├── ClusterInputManager.asset
├── DynamicsManager.asset
├── EditorBuildSettings.asset
├── EditorSettings.asset
├── GraphicsSettings.asset
├── InputManager.asset
├── MemorySettings.asset
├── NavMeshAreas.asset
├── NetworkManager.asset
├── PackageManagerSettings.asset
├── Physics2DSettings.asset
├── PresetManager.asset
├── ProjectSettings.asset
├── ProjectVersion.txt
├── QualitySettings.asset
├── SceneTemplateSettings.json
├── TagManager.asset
├── TimeManager.asset
├── UnityConnectSettings.asset
├── VFXManager.asset
├── VersionControlSettings.asset
├── XRPackageSettings.asset
├── XRSettings.asset
└── boot.config
└── UserSettings
├── EditorUserSettings.asset
├── Layouts
└── default-2021.dwlt
├── Search.index
└── Search.settings
/.github/screenshot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IndoorAtlas/unity-plugin/4c6659bce5ee936bdb2c4393010fc852ba640289/.github/screenshot.png
--------------------------------------------------------------------------------
/.github/workflows/package.yml:
--------------------------------------------------------------------------------
1 | name: Create Unity Package
2 | on: push
3 |
4 | jobs:
5 | package-private:
6 | if: ${{ github.repository == 'IndoorAtlas/unity-plugin-private-new' }}
7 | runs-on: [self-hosted, Linux]
8 | steps:
9 | - uses: actions/checkout@v2
10 | - run: |
11 | mkdir Assets pkg
12 | mv Plugins Assets/
13 | cp example/Assets/Plugins.meta Assets/
14 | find Assets -name \*.meta > metaList
15 | cat metaList
16 | - uses: pCYSl5EDgo/create-unitypackage@master
17 | with:
18 | package-path: pkg/indooratlas.unitypackage
19 | include-files: metaList
20 | - uses: actions/upload-artifact@master
21 | with:
22 | path: pkg
23 | name: indooratlas
24 |
25 | package-public:
26 | if: ${{ github.repository == 'IndoorAtlas/unity-plugin' }}
27 | runs-on: [ubuntu-latest]
28 | steps:
29 | - uses: actions/checkout@v2
30 | - run: |
31 | mkdir Assets pkg
32 | mv Plugins Assets/
33 | cp example/Assets/Plugins.meta Assets/
34 | find Assets -name \*.meta > metaList
35 | cat metaList
36 | - uses: pCYSl5EDgo/create-unitypackage@master
37 | with:
38 | package-path: pkg/indooratlas.unitypackage
39 | include-files: metaList
40 | - uses: actions/upload-artifact@master
41 | with:
42 | path: pkg
43 | name: indooratlas
44 | - uses: softprops/action-gh-release@v1
45 | if: startsWith(github.ref, 'refs/tags/')
46 | with:
47 | files: pkg/indooratlas.unitypackage
48 | fail_on_unmatched_files: true
49 | env:
50 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
51 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | .idea/
3 | androidwrapper/*.iml
4 | androidwrapper/.gradle/
5 | androidwrapper/build/
6 | androidwrapper/local.properties
7 | example/Logs/
8 | example/ios
9 | example/android
10 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Apache License
2 | Version 2.0, January 2004
3 | http://www.apache.org/licenses/
4 |
5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6 |
7 | 1. Definitions.
8 |
9 | "License" shall mean the terms and conditions for use, reproduction,
10 | and distribution as defined by Sections 1 through 9 of this document.
11 |
12 | "Licensor" shall mean the copyright owner or entity authorized by
13 | the copyright owner that is granting the License.
14 |
15 | "Legal Entity" shall mean the union of the acting entity and all
16 | other entities that control, are controlled by, or are under common
17 | control with that entity. For the purposes of this definition,
18 | "control" means (i) the power, direct or indirect, to cause the
19 | direction or management of such entity, whether by contract or
20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
21 | outstanding shares, or (iii) beneficial ownership of such entity.
22 |
23 | "You" (or "Your") shall mean an individual or Legal Entity
24 | exercising permissions granted by this License.
25 |
26 | "Source" form shall mean the preferred form for making modifications,
27 | including but not limited to software source code, documentation
28 | source, and configuration files.
29 |
30 | "Object" form shall mean any form resulting from mechanical
31 | transformation or translation of a Source form, including but
32 | not limited to compiled object code, generated documentation,
33 | and conversions to other media types.
34 |
35 | "Work" shall mean the work of authorship, whether in Source or
36 | Object form, made available under the License, as indicated by a
37 | copyright notice that is included in or attached to the work
38 | (an example is provided in the Appendix below).
39 |
40 | "Derivative Works" shall mean any work, whether in Source or Object
41 | form, that is based on (or derived from) the Work and for which the
42 | editorial revisions, annotations, elaborations, or other modifications
43 | represent, as a whole, an original work of authorship. For the purposes
44 | of this License, Derivative Works shall not include works that remain
45 | separable from, or merely link (or bind by name) to the interfaces of,
46 | the Work and Derivative Works thereof.
47 |
48 | "Contribution" shall mean any work of authorship, including
49 | the original version of the Work and any modifications or additions
50 | to that Work or Derivative Works thereof, that is intentionally
51 | submitted to Licensor for inclusion in the Work by the copyright owner
52 | or by an individual or Legal Entity authorized to submit on behalf of
53 | the copyright owner. For the purposes of this definition, "submitted"
54 | means any form of electronic, verbal, or written communication sent
55 | to the Licensor or its representatives, including but not limited to
56 | communication on electronic mailing lists, source code control systems,
57 | and issue tracking systems that are managed by, or on behalf of, the
58 | Licensor for the purpose of discussing and improving the Work, but
59 | excluding communication that is conspicuously marked or otherwise
60 | designated in writing by the copyright owner as "Not a Contribution."
61 |
62 | "Contributor" shall mean Licensor and any individual or Legal Entity
63 | on behalf of whom a Contribution has been received by Licensor and
64 | subsequently incorporated within the Work.
65 |
66 | 2. Grant of Copyright License. Subject to the terms and conditions of
67 | this License, each Contributor hereby grants to You a perpetual,
68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69 | copyright license to reproduce, prepare Derivative Works of,
70 | publicly display, publicly perform, sublicense, and distribute the
71 | Work and such Derivative Works in Source or Object form.
72 |
73 | 3. Grant of Patent License. Subject to the terms and conditions of
74 | this License, each Contributor hereby grants to You a perpetual,
75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76 | (except as stated in this section) patent license to make, have made,
77 | use, offer to sell, sell, import, and otherwise transfer the Work,
78 | where such license applies only to those patent claims licensable
79 | by such Contributor that are necessarily infringed by their
80 | Contribution(s) alone or by combination of their Contribution(s)
81 | with the Work to which such Contribution(s) was submitted. If You
82 | institute patent litigation against any entity (including a
83 | cross-claim or counterclaim in a lawsuit) alleging that the Work
84 | or a Contribution incorporated within the Work constitutes direct
85 | or contributory patent infringement, then any patent licenses
86 | granted to You under this License for that Work shall terminate
87 | as of the date such litigation is filed.
88 |
89 | 4. Redistribution. You may reproduce and distribute copies of the
90 | Work or Derivative Works thereof in any medium, with or without
91 | modifications, and in Source or Object form, provided that You
92 | meet the following conditions:
93 |
94 | (a) You must give any other recipients of the Work or
95 | Derivative Works a copy of this License; and
96 |
97 | (b) You must cause any modified files to carry prominent notices
98 | stating that You changed the files; and
99 |
100 | (c) You must retain, in the Source form of any Derivative Works
101 | that You distribute, all copyright, patent, trademark, and
102 | attribution notices from the Source form of the Work,
103 | excluding those notices that do not pertain to any part of
104 | the Derivative Works; and
105 |
106 | (d) If the Work includes a "NOTICE" text file as part of its
107 | distribution, then any Derivative Works that You distribute must
108 | include a readable copy of the attribution notices contained
109 | within such NOTICE file, excluding those notices that do not
110 | pertain to any part of the Derivative Works, in at least one
111 | of the following places: within a NOTICE text file distributed
112 | as part of the Derivative Works; within the Source form or
113 | documentation, if provided along with the Derivative Works; or,
114 | within a display generated by the Derivative Works, if and
115 | wherever such third-party notices normally appear. The contents
116 | of the NOTICE file are for informational purposes only and
117 | do not modify the License. You may add Your own attribution
118 | notices within Derivative Works that You distribute, alongside
119 | or as an addendum to the NOTICE text from the Work, provided
120 | that such additional attribution notices cannot be construed
121 | as modifying the License.
122 |
123 | You may add Your own copyright statement to Your modifications and
124 | may provide additional or different license terms and conditions
125 | for use, reproduction, or distribution of Your modifications, or
126 | for any such Derivative Works as a whole, provided Your use,
127 | reproduction, and distribution of the Work otherwise complies with
128 | the conditions stated in this License.
129 |
130 | 5. Submission of Contributions. Unless You explicitly state otherwise,
131 | any Contribution intentionally submitted for inclusion in the Work
132 | by You to the Licensor shall be under the terms and conditions of
133 | this License, without any additional terms or conditions.
134 | Notwithstanding the above, nothing herein shall supersede or modify
135 | the terms of any separate license agreement you may have executed
136 | with Licensor regarding such Contributions.
137 |
138 | 6. Trademarks. This License does not grant permission to use the trade
139 | names, trademarks, service marks, or product names of the Licensor,
140 | except as required for reasonable and customary use in describing the
141 | origin of the Work and reproducing the content of the NOTICE file.
142 |
143 | 7. Disclaimer of Warranty. Unless required by applicable law or
144 | agreed to in writing, Licensor provides the Work (and each
145 | Contributor provides its Contributions) on an "AS IS" BASIS,
146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147 | implied, including, without limitation, any warranties or conditions
148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149 | PARTICULAR PURPOSE. You are solely responsible for determining the
150 | appropriateness of using or redistributing the Work and assume any
151 | risks associated with Your exercise of permissions under this License.
152 |
153 | 8. Limitation of Liability. In no event and under no legal theory,
154 | whether in tort (including negligence), contract, or otherwise,
155 | unless required by applicable law (such as deliberate and grossly
156 | negligent acts) or agreed to in writing, shall any Contributor be
157 | liable to You for damages, including any direct, indirect, special,
158 | incidental, or consequential damages of any character arising as a
159 | result of this License or out of the use or inability to use the
160 | Work (including but not limited to damages for loss of goodwill,
161 | work stoppage, computer failure or malfunction, or any and all
162 | other commercial damages or losses), even if such Contributor
163 | has been advised of the possibility of such damages.
164 |
165 | 9. Accepting Warranty or Additional Liability. While redistributing
166 | the Work or Derivative Works thereof, You may choose to offer,
167 | and charge a fee for, acceptance of support, warranty, indemnity,
168 | or other liability obligations and/or rights consistent with this
169 | License. However, in accepting such obligations, You may act only
170 | on Your own behalf and on Your sole responsibility, not on behalf
171 | of any other Contributor, and only if You agree to indemnify,
172 | defend, and hold each Contributor harmless for any liability
173 | incurred by, or claims asserted against, such Contributor by reason
174 | of your accepting any such warranty or additional liability.
175 |
176 | END OF TERMS AND CONDITIONS
177 |
178 | APPENDIX: How to apply the Apache License to your work.
179 |
180 | To apply the Apache License to your work, attach the following
181 | boilerplate notice, with the fields enclosed by brackets "{}"
182 | replaced with your own identifying information. (Don't include
183 | the brackets!) The text should be enclosed in the appropriate
184 | comment syntax for the file format. We also recommend that a
185 | file or class name and description of purpose be included on the
186 | same "printed page" as the copyright notice for easier
187 | identification within third-party archives.
188 |
189 | Copyright 2016 IndoorAtlas
190 |
191 | Licensed under the Apache License, Version 2.0 (the "License");
192 | you may not use this file except in compliance with the License.
193 | You may obtain a copy of the License at
194 |
195 | http://www.apache.org/licenses/LICENSE-2.0
196 |
197 | Unless required by applicable law or agreed to in writing, software
198 | distributed under the License is distributed on an "AS IS" BASIS,
199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200 | See the License for the specific language governing permissions and
201 | limitations under the License.
202 |
--------------------------------------------------------------------------------
/Plugins/IndoorAtlas.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 53423f5911e25452895ea9d4548830e7
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Plugins/IndoorAtlas/Android.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 2e8965de6622c4c90aadbf64a0b920b6
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Plugins/IndoorAtlas/Android/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
32 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/Plugins/IndoorAtlas/Android/AndroidManifest.xml.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 12c5c67c787e0493b9d212b933647d86
3 | TextScriptImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Plugins/IndoorAtlas/Android/androidwrapper.aar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IndoorAtlas/unity-plugin/4c6659bce5ee936bdb2c4393010fc852ba640289/Plugins/IndoorAtlas/Android/androidwrapper.aar
--------------------------------------------------------------------------------
/Plugins/IndoorAtlas/Android/androidwrapper.aar.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 9b3f6b915fe024924bd7e7262b193f46
3 | PluginImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | iconMap: {}
7 | executionOrder: {}
8 | defineConstraints: []
9 | isPreloaded: 0
10 | isOverridable: 0
11 | isExplicitlyReferenced: 0
12 | validateReferences: 1
13 | platformData:
14 | - first:
15 | Android: Android
16 | second:
17 | enabled: 1
18 | settings: {}
19 | - first:
20 | Any:
21 | second:
22 | enabled: 0
23 | settings: {}
24 | - first:
25 | Editor: Editor
26 | second:
27 | enabled: 0
28 | settings:
29 | DefaultValueInitialized: true
30 | userData:
31 | assetBundleName:
32 | assetBundleVariant:
33 |
--------------------------------------------------------------------------------
/Plugins/IndoorAtlas/Android/indooratlas-android-sdk-3.6.0.aar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IndoorAtlas/unity-plugin/4c6659bce5ee936bdb2c4393010fc852ba640289/Plugins/IndoorAtlas/Android/indooratlas-android-sdk-3.6.0.aar
--------------------------------------------------------------------------------
/Plugins/IndoorAtlas/Android/indooratlas-android-sdk-3.6.0.aar.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 98d7d0d79d1f24df68e5e06df0eb4c7e
3 | PluginImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | iconMap: {}
7 | executionOrder: {}
8 | defineConstraints: []
9 | isPreloaded: 0
10 | isOverridable: 0
11 | isExplicitlyReferenced: 0
12 | validateReferences: 1
13 | platformData:
14 | - first:
15 | Android: Android
16 | second:
17 | enabled: 1
18 | settings: {}
19 | - first:
20 | Any:
21 | second:
22 | enabled: 0
23 | settings: {}
24 | - first:
25 | Editor: Editor
26 | second:
27 | enabled: 0
28 | settings:
29 | DefaultValueInitialized: true
30 | userData:
31 | assetBundleName:
32 | assetBundleVariant:
33 |
--------------------------------------------------------------------------------
/Plugins/IndoorAtlas/Editor.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 96a6a0b265ea04949a93b3fb5265ee1f
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Plugins/IndoorAtlas/Editor/IndoorAtlasGameObjects.cs:
--------------------------------------------------------------------------------
1 | using UnityEditor;
2 | using UnityEngine;
3 | using IndoorAtlas;
4 |
5 | public class IndoorAtlasGameObjects {
6 | [MenuItem("GameObject/IndoorAtlas/Session", false, 10)]
7 | public static void CreateSession(MenuCommand menuCommand) {
8 | GameObject go = new GameObject("IndoorAtlas Session");
9 | GameObjectUtility.SetParentAndAlign(go, menuCommand.context as GameObject);
10 | go.AddComponent(typeof(IndoorAtlasSession));
11 | Undo.RegisterCreatedObjectUndo(go, "Create " + go.name);
12 | Selection.activeObject = go;
13 | }
14 |
15 | [MenuItem("GameObject/IndoorAtlas/VR Camera", false, 10)]
16 | public static void CreateVRCamera(MenuCommand menuCommand) {
17 | GameObject go = new GameObject("IndoorAtlas VR Camera");
18 | GameObjectUtility.SetParentAndAlign(go, menuCommand.context as GameObject);
19 | go.AddComponent(typeof(IndoorAtlasVRCamera));
20 | Undo.RegisterCreatedObjectUndo(go, "Create " + go.name);
21 | Selection.activeObject = go;
22 | }
23 |
24 | [MenuItem("GameObject/IndoorAtlas/AR Wayfinding", false, 10)]
25 | public static void CreateARSessionOrigin(MenuCommand menuCommand) {
26 | GameObject go = new GameObject("IndoorAtlas AR Wayfinding");
27 | go.AddComponent(typeof(IndoorAtlasARWayfinding));
28 | GameObjectUtility.SetParentAndAlign(go, menuCommand.context as GameObject);
29 | Undo.RegisterCreatedObjectUndo(go, "Create " + go.name);
30 | Selection.activeObject = go;
31 | }
32 |
33 | [MenuItem("GameObject/IndoorAtlas/UI Information Provider", false, 10)]
34 | public static void CreateTraceIdProvider(MenuCommand menuCommand) {
35 | GameObject go = new GameObject("IndoorAtlas UI Information Provider");
36 | go.AddComponent(typeof(IndoorAtlasUIInformationProvider));
37 | GameObjectUtility.SetParentAndAlign(go, menuCommand.context as GameObject);
38 | Undo.RegisterCreatedObjectUndo(go, "Create " + go.name);
39 | Selection.activeObject = go;
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/Plugins/IndoorAtlas/Editor/IndoorAtlasGameObjects.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 6650693a0c26347e98978e5283260fad
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Plugins/IndoorAtlas/IndoorAtlasARWayfinding.cs:
--------------------------------------------------------------------------------
1 | using UnityEngine;
2 | using UnityEngine.XR.ARFoundation;
3 | using UnityEngine.XR.ARSubsystems;
4 |
5 | namespace IndoorAtlas {
6 |
7 | [DisallowMultipleComponent]
8 | [AddComponentMenu("IndoorAtlas/IndoorAtlas AR Wayfinding")]
9 | public class IndoorAtlasARWayfinding : MonoBehaviour {
10 | LocationManager manager = null;
11 |
12 | [Header("IndoorAtlas AR wayfinding configuration")]
13 |
14 | [SerializeField]
15 | [Tooltip("The LatLngFloor that marks the target for navigation.")]
16 | LatLngFloor m_target;
17 |
18 | ///
19 | /// The LatLngFloor that marks the target for navigation.
20 | ///
21 | public LatLngFloor target
22 | {
23 | get { return m_target; }
24 | set {
25 | m_target = value;
26 | if (manager != null && m_wayfinding) {
27 | InstantiateTurns();
28 | manager.StopMonitoringForWayfinding();
29 | manager.StartMonitoringForWayfinding(m_target);
30 | }
31 | }
32 | }
33 |
34 | [SerializeField]
35 | [Tooltip("Enable wayfinding?")]
36 | bool m_wayfinding = true;
37 |
38 | public bool wayfinding
39 | {
40 | get { return m_wayfinding; }
41 | set {
42 | if (m_wayfinding == value) return;
43 | if (manager != null) InstantiateTurns();
44 | if ((m_wayfinding = value)) {
45 | if (manager != null) {
46 | manager.StartMonitoringForWayfinding(m_target);
47 | }
48 | } else {
49 | if (manager != null) {
50 | manager.StopMonitoringForWayfinding();
51 | }
52 | }
53 | }
54 | }
55 |
56 | [SerializeField]
57 | [Tooltip("The ARPlaneManager for capturing horizontal planes")]
58 | ARPlaneManager m_planeManager;
59 |
60 | ///
61 | /// The LatLngFloor that marks the target for navigation.
62 | ///
63 | public ARPlaneManager planeManager
64 | {
65 | get { return m_planeManager; }
66 | set { m_planeManager = value; }
67 | }
68 |
69 | [SerializeField]
70 | [Tooltip("The Camera to associate with the AR device.")]
71 | Camera m_camera;
72 | ARCameraManager m_cameraManager;
73 |
74 | bool IsTracking() {
75 | switch(ARSession.notTrackingReason)
76 | {
77 | case NotTrackingReason.None:
78 | return true;
79 | case NotTrackingReason.Initializing:
80 | break;
81 | case NotTrackingReason.Relocalizing:
82 | break;
83 | case NotTrackingReason.InsufficientLight:
84 | break;
85 | case NotTrackingReason.InsufficientFeatures:
86 | break;
87 | case NotTrackingReason.ExcessiveMotion:
88 | break;
89 | case NotTrackingReason.Unsupported:
90 | break;
91 | }
92 | return false;
93 | }
94 |
95 | void OnArFrame(ARCameraFrameEventArgs eventArgs) {
96 | if (manager == null || !IsTracking()) return;
97 | foreach (ARPlane plane in m_planeManager.trackables) {
98 | if (plane.alignment != PlaneAlignment.HorizontalUp) continue;
99 | manager.AddArPlane(plane.center.x, plane.center.y, plane.center.z, plane.extents.x, plane.extents.y);
100 | }
101 | manager.SetArPoseMatrix(m_camera.transform.localToWorldMatrix);
102 | }
103 |
104 | void RegisterFrameEvent() {
105 | if (manager == null) return;
106 | m_cameraManager.frameReceived += OnArFrame;
107 | }
108 |
109 | ///
110 | /// The Camera to associate with the AR device.
111 | ///
112 | #if UNITY_EDITOR
113 | public new Camera camera
114 | #else
115 | public Camera camera
116 | #endif
117 | {
118 | get { return m_camera; }
119 | set {
120 | m_camera = value;
121 | if (m_cameraManager != null) m_cameraManager.frameReceived -= OnArFrame;
122 | m_cameraManager = m_camera.GetComponent();
123 | RegisterFrameEvent();
124 | }
125 | }
126 |
127 | [SerializeField]
128 | [Tooltip("The GameObject that points to the navigation direction.")]
129 | GameObject m_compass;
130 |
131 | ///
132 | /// The GameObject that points to the navigation direction.
133 | ///
134 | public GameObject compass
135 | {
136 | get { return m_compass; }
137 | set { m_compass = value; }
138 | }
139 |
140 | [SerializeField]
141 | [Tooltip("The GameObject that represents the navigation goal.")]
142 | GameObject m_goal;
143 |
144 | ///
145 | /// The GameObject that represents the navigation goal.
146 | ///
147 | public GameObject goal
148 | {
149 | get { return m_goal; }
150 | set { m_goal = value; }
151 | }
152 |
153 | [SerializeField]
154 | [Tooltip("The GameObject that represents a navigation turn instruction.")]
155 | GameObject m_turn;
156 | GameObject[] turns = null;
157 |
158 | POI[] pois = null;
159 | GameObject[] poi_objects = null;
160 |
161 | void SetObjectsActive(bool active) {
162 | if (m_compass) m_compass.SetActive(active);
163 | if (m_goal) m_goal.SetActive(active);
164 | if (turns != null) foreach (GameObject turn in turns) turn.SetActive(active);
165 | if (poi_objects != null) foreach (GameObject poi in poi_objects) poi.SetActive(active);
166 | }
167 |
168 | void DestroyTurns() {
169 | if (turns != null) {
170 | for (int i = 1; i < turns.Length; ++i) Destroy(turns[i]);
171 | m_turn.SetActive(false);
172 | turns = null;
173 | }
174 | }
175 |
176 | void InstantiateTurns() {
177 | DestroyTurns();
178 | if (m_turn) {
179 | m_turn.SetActive(false);
180 | turns = new GameObject[16]; // pool of 16 maximum turns (pretty optimistic)
181 | turns[0] = m_turn;
182 | for (int i = 1; i < turns.Length; ++i) turns[i] = Instantiate(m_turn);
183 | }
184 | }
185 |
186 | void DestroyPOIObjects() {
187 | if (poi_objects != null) {
188 | for (int i = 0; i < poi_objects.Length; ++i) Destroy(poi_objects[i]);
189 | poi_objects = null;
190 | }
191 | }
192 |
193 | void InstantiatePOIObjects() {
194 | DestroyPOIObjects();
195 | if (pois != null) {
196 | poi_objects = new GameObject[pois.Length];
197 | for (int i = 0; i < pois.Length; ++i) {
198 | var text = new GameObject(pois[i].id);
199 | var mesh = text.AddComponent();
200 | text.transform.localScale = new Vector3(0.1f, 0.1f, 0.1f);
201 | mesh.text = pois[i].name;
202 | text.SetActive(false);
203 | poi_objects[i] = text;
204 | }
205 | }
206 | }
207 |
208 | ///
209 | /// The GameObject that represents a navigation turn instruction.
210 | ///
211 | public GameObject turn
212 | {
213 | get { return m_turn; }
214 | set { m_turn = value; InstantiateTurns(); }
215 | }
216 |
217 | void Awake() {
218 | m_cameraManager = m_camera.GetComponent();
219 | }
220 |
221 | void OnEnable() {
222 | if (manager != null) return;
223 | manager = new LocationManager();
224 | manager.GetArIsConverged(); // ensures that the ar session is created
225 | if (m_wayfinding) {
226 | manager.StopMonitoringForWayfinding();
227 | manager.StartMonitoringForWayfinding(m_target);
228 | }
229 | InstantiateTurns();
230 | Application.onBeforeRender += OnBeforeRender;
231 | RegisterFrameEvent();
232 | }
233 |
234 | void OnDisable() {
235 | if (manager == null) return;
236 | m_cameraManager.frameReceived -= OnArFrame;
237 | Application.onBeforeRender -= OnBeforeRender;
238 | manager.StopMonitoringForWayfinding();
239 | manager.ReleaseArSession();
240 | manager = null;
241 | DestroyTurns();
242 | SetObjectsActive(false);
243 | }
244 |
245 | void OnBeforeRender() {
246 | if (manager == null) return;
247 |
248 | manager.SetArCameraToWorldMatrix(m_camera.cameraToWorldMatrix);
249 | if (!m_wayfinding || !manager.GetArIsConverged() || !IsTracking()) {
250 | SetObjectsActive(false);
251 | return;
252 | }
253 |
254 | Matrix4x4 matrix;
255 | if (m_compass) {
256 | if ((matrix = manager.GetArCompassMatrix()) != Matrix4x4.identity) {
257 | m_compass.transform.rotation = Quaternion.LookRotation(matrix.GetColumn(2), matrix.GetColumn(1));
258 | m_compass.transform.position = matrix.GetColumn(3);
259 | m_compass.SetActive(true);
260 | } else {
261 | m_compass.SetActive(false);
262 | }
263 | }
264 |
265 | if (m_goal) {
266 | if ((matrix = manager.GetArGoalMatrix()) != Matrix4x4.identity) {
267 | m_goal.transform.rotation = Quaternion.LookRotation(matrix.GetColumn(2), matrix.GetColumn(1));
268 | m_goal.transform.position = matrix.GetColumn(3);
269 | m_goal.SetActive(true);
270 | } else {
271 | m_goal.SetActive(false);
272 | }
273 | }
274 |
275 | if (turns != null) {
276 | int t = 0;
277 | int count = manager.GetArTurnCount();
278 | for (int i = 0; i < count && t < turns.Length; ++i) {
279 | if ((matrix = manager.GetArTurnMatrix(i)) != Matrix4x4.identity) {
280 | turns[t].transform.rotation = Quaternion.LookRotation(matrix.GetColumn(2), matrix.GetColumn(1));
281 | turns[t].transform.position = matrix.GetColumn(3);
282 | turns[t].SetActive(true);
283 | ++t;
284 | }
285 | }
286 | for (; t < turns.Length; ++t) turns[t].SetActive(false);
287 | }
288 |
289 | if (pois != null) {
290 | for (int i = 0; i < pois.Length; ++i) {
291 | matrix = manager.GeoToAr(pois[i].position.coordinate.latitude, pois[i].position.coordinate.longitude, pois[i].position.floor, 0, 0.2f);
292 | poi_objects[i].transform.rotation = Quaternion.LookRotation(matrix.GetColumn(2), matrix.GetColumn(1));
293 | poi_objects[i].transform.position = matrix.GetColumn(3);
294 | poi_objects[i].transform.LookAt(m_camera.transform);
295 | poi_objects[i].transform.Rotate(0, 180, 0);
296 | poi_objects[i].SetActive(true);
297 | }
298 | }
299 | }
300 |
301 | void IndoorAtlasOnEnterRegion(Region region) {
302 | if (region.type == Region.Type.Venue) {
303 | pois = region.venue.pois;
304 | InstantiatePOIObjects();
305 | }
306 | }
307 |
308 | void IndoorAtlasOnExitRegion(Region region) {
309 | if (region.type == Region.Type.Venue) {
310 | DestroyPOIObjects();
311 | pois = null;
312 | }
313 | }
314 | }
315 |
316 | }
317 |
--------------------------------------------------------------------------------
/Plugins/IndoorAtlas/IndoorAtlasARWayfinding.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: d4ce401af64e34204b6332a6b58c2834
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Plugins/IndoorAtlas/IndoorAtlasApi.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: fd01e5d0d31834c3cb4c1cb6991ddf37
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Plugins/IndoorAtlas/IndoorAtlasSession.cs:
--------------------------------------------------------------------------------
1 | using UnityEngine;
2 |
3 | namespace IndoorAtlas {
4 |
5 | [DisallowMultipleComponent]
6 | [DefaultExecutionOrder(-1)]
7 | [AddComponentMenu("IndoorAtlas/IndoorAtlas Session")]
8 | public class IndoorAtlasSession : MonoBehaviour {
9 | LocationManager manager = null;
10 |
11 | [Header("IndoorAtlas API credentials")]
12 |
13 | [SerializeField]
14 | [Tooltip("IndoorAtlas API key.")]
15 | string apiKey;
16 |
17 | [SerializeField]
18 | [Tooltip("IndoorAtlas API secret.")]
19 | string apiSecret;
20 |
21 | [SerializeField]
22 | [Tooltip("IndoorAtlas API endpoint (blank for default).")]
23 | string apiEndpoint;
24 |
25 | [Header("IndoorAtlas session configuration")]
26 |
27 | [SerializeField]
28 | [Tooltip("The minimum distance measured in meters that the device must move horizontally before an update event is generated.")]
29 | double m_distanceFilter = 0.7;
30 |
31 | public double distanceFilter
32 | {
33 | get { return m_distanceFilter; }
34 | set {
35 | m_distanceFilter = value;
36 | if (manager != null) manager.SetDistanceFilter(value);
37 | }
38 | }
39 |
40 | [SerializeField]
41 | [Tooltip("The minimum amount of time measured in seconds that must be elapsed before an update event is generated.")]
42 | double m_timeFilter = 2.0;
43 |
44 | public double timeFilter
45 | {
46 | get { return m_timeFilter; }
47 | set {
48 | m_timeFilter = value;
49 | if (manager != null) manager.SetTimeFilter(value);
50 | }
51 | }
52 |
53 | [SerializeField]
54 | [Tooltip("The minimum angular change in degrees required to generate a new heading event.")]
55 | double m_headingFilter = 1.0;
56 |
57 | public double headingFilter
58 | {
59 | get { return m_headingFilter; }
60 | set {
61 | m_headingFilter = value;
62 | if (manager != null) manager.SetHeadingFilter(value);
63 | }
64 | }
65 |
66 | [SerializeField]
67 | [Tooltip("The minimum angular change in degrees required to generate a new attitude event.")]
68 | double m_attitudeFilter = 1.0;
69 |
70 | public double attitudeFilter
71 | {
72 | get { return m_attitudeFilter; }
73 | set {
74 | m_attitudeFilter = value;
75 | if (manager != null) manager.SetAttitudeFilter(value);
76 | }
77 | }
78 |
79 | void WarnIfMultipleSessions() {
80 | var sessions = FindObjectsOfType();
81 | if (sessions.Length > 1) {
82 | // Compile a list of session names
83 | string sessionNames = "";
84 | foreach (var session in sessions) {
85 | sessionNames += string.Format("\t{0}\n", session.name);
86 | }
87 | Debug.LogWarningFormat(
88 | "Multiple active IndoorAtlas Sessions found. " +
89 | "These will conflict with each other, so " +
90 | "you should only have one active IndoorAtlas Session at a time. " +
91 | "Found these active sessions:\n{0}", sessionNames);
92 | }
93 | }
94 |
95 | void OnEnable() {
96 | if (manager != null) return;
97 | #if DEVELOPMENT_BUILD || UNITY_EDITOR
98 | WarnIfMultipleSessions();
99 | #endif
100 | manager = new LocationManager();
101 | manager.Init(apiKey, apiSecret, apiEndpoint, name);
102 | manager.SetDistanceFilter(m_distanceFilter);
103 | manager.SetTimeFilter(m_timeFilter);
104 | manager.SetHeadingFilter(m_headingFilter);
105 | manager.SetAttitudeFilter(m_attitudeFilter);
106 | manager.StartUpdatingLocation();
107 | }
108 |
109 | void OnDisable() {
110 | if (manager == null) return;
111 | manager.StopUpdatingLocation();
112 | manager.Close();
113 | manager = null;
114 | }
115 |
116 | void NativeIndoorAtlasOnLocationChanged(string data) {
117 | #if DEVELOPMENT_BUILD
118 | Debug.Log("IndoorAtlas: IndoorAtlasOnLocationChanged()");
119 | #endif
120 | IndoorAtlas.Location location = JsonUtility.FromJson(data);
121 | BroadcastMessage("IndoorAtlasOnLocationChanged", location, SendMessageOptions.DontRequireReceiver);
122 | }
123 |
124 | void NativeIndoorAtlasOnStatusChanged(string data) {
125 | #if DEVELOPMENT_BUILD
126 | Debug.Log("IndoorAtlas: IndoorAtlasOnStatusChanged()");
127 | #endif
128 | IndoorAtlas.Status serviceStatus = JsonUtility.FromJson (data);
129 | BroadcastMessage("IndoorAtlasOnStatusChanged", serviceStatus, SendMessageOptions.DontRequireReceiver);
130 | }
131 |
132 | void NativeIndoorAtlasOnHeadingChanged(string data) {
133 | #if DEVELOPMENT_BUILD
134 | Debug.Log("IndoorAtlas: IndoorAtlasOnHeadingChanged()");
135 | #endif
136 | IndoorAtlas.Heading heading = JsonUtility.FromJson(data);
137 | BroadcastMessage("IndoorAtlasOnHeadingChanged", heading, SendMessageOptions.DontRequireReceiver);
138 | }
139 |
140 | void NativeIndoorAtlasOnOrientationChanged(string data) {
141 | #if DEVELOPMENT_BUILD
142 | Debug.Log("IndoorAtlas: IndoorAtlasOnOrientationChanged()");
143 | #endif
144 | Quaternion orientation = JsonUtility.FromJson(data).getQuaternion();
145 | Quaternion rot = Quaternion.Inverse(new Quaternion(orientation.x, orientation.y, -orientation.z, orientation.w));
146 | Quaternion unityRot = Quaternion.Euler(new Vector3(90.0f, 0.0f, 0.0f)) * rot;
147 | BroadcastMessage("IndoorAtlasOnOrientationChanged", unityRot, SendMessageOptions.DontRequireReceiver);
148 | }
149 |
150 | void NativeIndoorAtlasOnEnterRegion(string data) {
151 | #if DEVELOPMENT_BUILD
152 | Debug.Log("IndoorAtlas: IndoorAtlasOnEnterRegion()");
153 | #endif
154 | IndoorAtlas.Region region = JsonUtility.FromJson(data);
155 | BroadcastMessage("IndoorAtlasOnEnterRegion", region, SendMessageOptions.DontRequireReceiver);
156 | }
157 |
158 | void NativeIndoorAtlasOnExitRegion(string data) {
159 | #if DEVELOPMENT_BUILD
160 | Debug.Log("IndoorAtlas: IndoorAtlasOnExitRegion()");
161 | #endif
162 | IndoorAtlas.Region region = JsonUtility.FromJson(data);
163 | BroadcastMessage("IndoorAtlasOnExitRegion", region, SendMessageOptions.DontRequireReceiver);
164 | }
165 |
166 | void NativeIndoorAtlasOnRoute(string data) {
167 | #if DEVELOPMENT_BUILD
168 | Debug.Log("IndoorAtlas: IndoorAtlasOnRoute()");
169 | #endif
170 | IndoorAtlas.Route route = JsonUtility.FromJson(data);
171 | BroadcastMessage("IndoorAtlasOnRoute", route, SendMessageOptions.DontRequireReceiver);
172 | }
173 | }
174 |
175 | }
176 |
--------------------------------------------------------------------------------
/Plugins/IndoorAtlas/IndoorAtlasSession.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 14b0be713f5f4450e83f94857a97873e
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Plugins/IndoorAtlas/IndoorAtlasUIInformationProvider.cs:
--------------------------------------------------------------------------------
1 | using UnityEngine;
2 | using UnityEngine.UI;
3 | using UnityEngine.Events;
4 | using System.Collections.Generic;
5 |
6 | namespace IndoorAtlas {
7 |
8 | [AddComponentMenu("IndoorAtlas/IndoorAtlas UI Information Provider")]
9 | public class IndoorAtlasUIInformationProvider : MonoBehaviour {
10 | LocationManager manager = null;
11 | Region currentVenue = null;
12 | UnityAction poiAction = null;
13 |
14 | [Header("IndoorAtlas information provider configuration")]
15 |
16 | [SerializeField]
17 | [Tooltip("The Text widget for traceId.")]
18 | public Text m_traceId;
19 |
20 | ///
21 | /// The Text widget for traceId.
22 | ///
23 | public Text traceId {
24 | get { return m_traceId; }
25 | set { m_traceId = value; }
26 | }
27 |
28 | [SerializeField]
29 | [Tooltip("The Text widget for current region.")]
30 | public Text m_region;
31 |
32 | ///
33 | /// The Text widget for current region.
34 | ///
35 | public Text region {
36 | get { return m_region; }
37 | set { m_region = value; }
38 | }
39 |
40 | [SerializeField]
41 | [Tooltip("The AR Wayfinding component for changing wayfinding target.")]
42 | public IndoorAtlasARWayfinding m_wayfinder;
43 |
44 | ///
45 | /// The AR Wayfinding Component for changing wayfinding target.
46 | ///
47 | public IndoorAtlasARWayfinding wayfinder {
48 | get { return m_wayfinder; }
49 | set { m_wayfinder = value; }
50 | }
51 |
52 | [SerializeField]
53 | [Tooltip("The Dropdown widget for pois.")]
54 | public Dropdown m_poi;
55 |
56 | void onPoiChanged() {
57 | if (m_poi && m_wayfinder) {
58 | if (m_poi.value == 0) {
59 | m_wayfinder.wayfinding = false;
60 | return;
61 | }
62 | if (currentVenue == null) return;
63 | m_wayfinder.target = currentVenue.venue.pois[m_poi.value - 1].position;
64 | m_wayfinder.wayfinding = true;
65 | }
66 | }
67 |
68 | ///
69 | /// The Dropdown widget for pois.
70 | ///
71 | public Dropdown poi {
72 | get { return m_poi; }
73 | set {
74 | if (poiAction != null) {
75 | if (m_poi) m_poi.onValueChanged.RemoveListener(poiAction);
76 | }
77 | m_poi = value;
78 | if (m_poi) {
79 | poiAction = delegate{onPoiChanged();};
80 | m_poi.onValueChanged.AddListener(poiAction);
81 | } else if (poiAction != null) {
82 | poiAction = null;
83 | }
84 | }
85 | }
86 |
87 | void IndoorAtlasOnEnterRegion(Region region) {
88 | if (m_region) m_region.text = region.name;
89 | if (region.type == Region.Type.Venue) {
90 | currentVenue = region;
91 | if (m_poi) {
92 | m_poi.ClearOptions();
93 | List options = new List{"None"};
94 | foreach (POI poi in currentVenue.venue.pois) options.Add(poi.name);
95 | m_poi.AddOptions(options);
96 | }
97 | }
98 | }
99 |
100 | void IndoorAtlasOnExitRegion(Region region) {
101 | if (region.type == Region.Type.FloorPlan && currentVenue != null) {
102 | if (m_region) m_region.text = currentVenue.name;
103 | } else if (region.type == Region.Type.Venue) {
104 | currentVenue = null;
105 | if (m_poi) {
106 | m_poi.ClearOptions();
107 | List options = new List{"None"};
108 | m_poi.AddOptions(options);
109 | }
110 | }
111 | }
112 |
113 | void UpdateText() {
114 | if (m_traceId) m_traceId.text = manager.GetTraceId();
115 | }
116 |
117 | void Awake() {
118 | if (m_poi) {
119 | m_poi.ClearOptions();
120 | List options = new List{"None"};
121 | m_poi.AddOptions(options);
122 | if (poiAction != null) m_poi.onValueChanged.RemoveListener(poiAction);
123 | poiAction = delegate{onPoiChanged();};
124 | m_poi.onValueChanged.AddListener(poiAction);
125 | }
126 | }
127 |
128 | void OnEnable() {
129 | manager = new LocationManager();
130 | if (m_traceId) InvokeRepeating("UpdateText", 0.0f, 1.0f);
131 | }
132 |
133 | void OnDisable() {
134 | CancelInvoke();
135 | manager = null;
136 | }
137 | }
138 |
139 | }
140 |
--------------------------------------------------------------------------------
/Plugins/IndoorAtlas/IndoorAtlasUIInformationProvider.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: de8fb9dfdd2524dd1843933af20b53d6
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Plugins/IndoorAtlas/IndoorAtlasVRCamera.cs:
--------------------------------------------------------------------------------
1 | using UnityEngine;
2 |
3 | namespace IndoorAtlas {
4 |
5 | [RequireComponent(typeof(Camera))]
6 | [AddComponentMenu("IndoorAtlas/IndoorAtlas VR Camera")]
7 | public class IndoorAtlasVRCamera : MonoBehaviour {
8 | Camera m_camera;
9 |
10 | void Awake() {
11 | m_camera = GetComponent();
12 | }
13 |
14 | void IndoorAtlasOnOrientationChanged(Quaternion orientation) {
15 | m_camera.transform.rotation = orientation;
16 | }
17 | }
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/Plugins/IndoorAtlas/IndoorAtlasVRCamera.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 6086a8dfd5e744c1aa271b590856e7a8
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Plugins/IndoorAtlas/IndoorAtlasWGSConversion.cs:
--------------------------------------------------------------------------------
1 | using System.Collections;
2 | using System.Collections.Generic;
3 | using UnityEngine;
4 |
5 | namespace IndoorAtlas {
6 | ///
7 | /// A utility class which converts IndoorAtlas SDK's location coordinates to metric
8 | /// (east, north) coordinates. This is achieved with a linear approximation around
9 | /// a fixed "linearization point" (origin). This point can be any fixed point
10 | /// in the 3D world whose (latitude, longitude) and (x, y, z) relation can be
11 | /// determined accurately.
12 | /// The origin has to be updated if the movement is "great" with respect to Earth's
13 | /// curvature (e.g. moving to another side of the world in a simulated environment).
14 | ///
15 | public class WGSConversion {
16 | private double lat0;
17 | private double lon0;
18 | private double deltaX;
19 | private double deltaY;
20 | private bool hasLinearizationPoint = false;
21 |
22 | ///
23 | /// Sets the origin in metric coordinates to (latitude, longitude) location.
24 | ///
25 | /// The latitude of origin in degrees
26 | /// The longitude of origin in degrees
27 | public void SetOrigin(double latitude, double longitude) {
28 | lat0 = latitude;
29 | lon0 = longitude;
30 | const double a = 6378137.0; // Earth's semimajor axis in meters in WGS84
31 | const double f = 1.0 / 298.257223563; // Earth's flattening in WGS84
32 | const double b = a * (1.0 - f);
33 | const double a2 = a * a;
34 | const double b2 = b * b;
35 | double sinlat = System.Math.Sin(System.Math.PI / 180.0 * latitude);
36 | double coslat = System.Math.Cos(System.Math.PI / 180.0 * latitude);
37 | double tmp = System.Math.Sqrt(a2 * coslat * coslat + b2 * sinlat * sinlat);
38 | deltaX = (System.Math.PI / 180.0) * (a2 / tmp) * coslat;
39 | deltaY = (System.Math.PI / 180.0) * (a2 * b2 / (tmp * tmp * tmp));
40 | hasLinearizationPoint = true;
41 | }
42 |
43 | ///
44 | /// Converts a (latitude, longitude) pair to (east, north) metric coordinates
45 | /// with respect to the (previously set) origin. That is, what is the translation
46 | /// to east and north respectively from the origin to reach (latitude, longitude).
47 | ///
48 | /// Latitude in degrees
49 | /// Longitude in degrees
50 | /// Metric coordinates in a local (east, north) coordinate system.
51 | ///
52 | /// Thrown if setOrigin hasn't been called before this function call.
53 | ///
54 | public Vector2 WGStoEN(double latitude, double longitude) {
55 | if (!hasLinearizationPoint) throw new System.InvalidOperationException("Origin hasn't been set before the conversion.");
56 | return new Vector2((float)(deltaX * (longitude - lon0)), (float)(deltaY * (latitude - lat0)));
57 | }
58 |
59 | ///
60 | /// Checks if origin has been set successfully.
61 | ///
62 | /// True if converter has origin, false otherwise.
63 | public bool IsReady() {
64 | return hasLinearizationPoint;
65 | }
66 | }
67 | }
68 |
--------------------------------------------------------------------------------
/Plugins/IndoorAtlas/IndoorAtlasWGSConversion.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 89121d53048a949028b38960066b8f36
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Plugins/IndoorAtlas/iOS.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 20b8341a0ac084d76a13a8df0bbe0bf5
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Plugins/IndoorAtlas/iOS/Editor.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 2db25366c7f81476787b37950e0e0837
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Plugins/IndoorAtlas/iOS/Editor/XcodeFixes.cs:
--------------------------------------------------------------------------------
1 | #if UNITY_IOS
2 | using System.Diagnostics;
3 | using System.Collections.Generic;
4 | using System.Linq;
5 | using System.IO;
6 | using UnityEditor;
7 | using UnityEditor.Callbacks;
8 | using UnityEditor.iOS.Xcode;
9 | using UnityEditor.iOS.Xcode.Extensions;
10 |
11 | // Utility class which provides automation mechanisms to import IndoorAtlas SDK
12 | // to the Unity generated Xcode project in the post build phase. The tasks are:
13 | // - Disabling bitcode
14 | // - Adding IndoorAtlas SDK dependency
15 | // - Add the neccessary plist keys
16 | public class XcodeFixes {
17 | [PostProcessBuildAttribute(1)]
18 | public int callbackOrder { get { return 999; } }
19 |
20 | [PostProcessBuild]
21 | public static void OnPostprocessBuild(BuildTarget target, string path)
22 | {
23 | if (target != BuildTarget.iOS) return;
24 |
25 | string projectPath = PBXProject.GetPBXProjectPath(path);
26 | PBXProject proj = new PBXProject();
27 | proj.ReadFromString(File.ReadAllText(projectPath));
28 |
29 | // Disable bitcode
30 | UnityEngine.Debug.Log("Bitcode will be disabled. IndoorAtlas.framework uses processor optimized assembly functions, so it is not possible to enable Bitcode.");
31 | #if UNITY_2019_3_OR_NEWER
32 | string mainGUID = proj.GetUnityMainTargetGuid();
33 | proj.AddBuildProperty(proj.GetUnityFrameworkTargetGuid(), "ENABLE_BITCODE", "false");
34 | proj.AddFrameworkToProject(proj.GetUnityFrameworkTargetGuid(), "CoreLocation.framework", false);
35 | #else
36 | string mainGUID = proj.TargetGuidByName(PBXProject.GetUnityTargetName());
37 | proj.AddBuildProperty(proj.TargetGuidByName("UnityFramework"), "ENABLE_BITCODE", "false");
38 | proj.AddFrameworkToProject(proj.TargetGuidByName("UnityFramework"), "CoreLocation.framework", false);
39 | #endif
40 | proj.AddBuildProperty(mainGUID, "ENABLE_BITCODE", "false");
41 |
42 | // Add IndoorAtlas.framework
43 | // proj.AddFrameworkToProject(mainGUID, "Plugins/IndoorAtlas/iOS/IndoorAtlas.framework", false);
44 | string frameworkGUID = proj.FindFileGuidByProjectPath("Frameworks/Plugins/IndoorAtlas/iOS/IndoorAtlas.framework");
45 | PBXProjectExtensions.AddFileToEmbedFrameworks(proj, mainGUID, frameworkGUID);
46 | proj.WriteToFile(projectPath);
47 |
48 | // Add NSLocationAlwaysUsageDescription and NSLocationWhenInUseUsageDescription
49 | string plistPath = path + "/Info.plist";
50 | string locationUsageDescription = "IndoorAtlas demo project needs access to device location";
51 | PlistDocument plist = new PlistDocument();
52 | plist.ReadFromString(File.ReadAllText(plistPath));
53 | plist.root.SetString("NSLocationAlwaysUsageDescription", locationUsageDescription);
54 | plist.root.SetString("NSLocationWhenInUseUsageDescription", locationUsageDescription);
55 | plist.root.SetString("NSLocationAlwaysAndWhenInUseUsageDescription", locationUsageDescription);
56 | plist.root.SetString("NSBluetoothAlwaysUsageDescription", "Needed for accurate positioning");
57 | plist.root.SetString("NSBluetoothPeripheralUsageDescription", "Needed for accurate positioning");
58 | plist.root.SetString("NSMotionUsageDescription", "Needed for accurate positioning");
59 | File.WriteAllText(plistPath, plist.WriteToString());
60 | }
61 | }
62 | #endif
63 |
--------------------------------------------------------------------------------
/Plugins/IndoorAtlas/iOS/Editor/XcodeFixes.cs.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 1d384a2b8566a4949a314662891a6056
3 | MonoImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | defaultReferences: []
7 | executionOrder: 0
8 | icon: {instanceID: 0}
9 | userData:
10 | assetBundleName:
11 | assetBundleVariant:
12 |
--------------------------------------------------------------------------------
/Plugins/IndoorAtlas/iOS/IndoorAtlas.framework.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 82c1528abaf1442abbbcf1ebc6250df0
3 | folderAsset: yes
4 | PluginImporter:
5 | externalObjects: {}
6 | serializedVersion: 2
7 | iconMap: {}
8 | executionOrder: {}
9 | defineConstraints: []
10 | isPreloaded: 0
11 | isOverridable: 0
12 | isExplicitlyReferenced: 0
13 | validateReferences: 1
14 | platformData:
15 | - first:
16 | Any:
17 | second:
18 | enabled: 1
19 | settings: {}
20 | - first:
21 | Editor: Editor
22 | second:
23 | enabled: 0
24 | settings:
25 | DefaultValueInitialized: true
26 | userData:
27 | assetBundleName:
28 | assetBundleVariant:
29 |
--------------------------------------------------------------------------------
/Plugins/IndoorAtlas/iOS/IndoorAtlas.framework/Headers.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 67b6e91cb444f423391fc7a0363d77f8
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Plugins/IndoorAtlas/iOS/IndoorAtlas.framework/Headers/IAFloor.h:
--------------------------------------------------------------------------------
1 | // IndoorAtlas iOS SDK
2 | // IAFloor.h
3 |
4 | #import
5 | #define INDOORATLAS_API __attribute__((visibility("default")))
6 |
7 | /**
8 | * IACertainty
9 | *
10 | * Discussion:
11 | * Type used for representing the certainty that something is true.
12 | * Has a value from 0.0 to 1.0, inclusive. A negative value indicates an invalid certainty.
13 | */
14 | typedef double IACertainty;
15 |
16 | /**
17 | * IAFloor specifies the floor of the building on which the user is located.
18 | * It is a replacement for CoreLocation's CLFloor as the interface for that is not open.
19 | */
20 | INDOORATLAS_API
21 | @interface IAFloor : NSObject
22 |
23 | /**
24 | * Initializes and returns a floor object with the specified level information.
25 | * @param level initializes level value
26 | */
27 | + (nonnull IAFloor*)floorWithLevel:(NSInteger)level;
28 |
29 | /**
30 | * Floor level values correspond to the floor numbers assigned by the user in the mapping phase.
31 | *
32 | * It is erroneous to use the user's level in a building as an estimate of altitude.
33 | */
34 | @property (nonatomic, readonly) NSInteger level;
35 |
36 | /**
37 | * Certainty that `IALocation` floor has the correct value.
38 | */
39 | @property (nonatomic, readonly) IACertainty certainty;
40 |
41 | @end
42 |
43 | #undef INDOORATLAS_API
44 |
--------------------------------------------------------------------------------
/Plugins/IndoorAtlas/iOS/IndoorAtlas.framework/Headers/IAFloor.h.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: a38cfd8ec54dd4f1e90cbea46707a024
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Plugins/IndoorAtlas/iOS/IndoorAtlas.framework/Headers/IAFloorPlan.h:
--------------------------------------------------------------------------------
1 | // IndoorAtlas iOS SDK
2 | // IAFloorPlan.h
3 |
4 | #import
5 | #import
6 | #import
7 | #import
8 | #define INDOORATLAS_API __attribute__((visibility("default")))
9 |
10 | /**
11 | * IAFloorPlan represents floor plan data received from service.
12 | */
13 | INDOORATLAS_API
14 | @interface IAFloorPlan : NSObject
15 |
16 | /**
17 | * @name Floor plan information
18 | */
19 |
20 | /**
21 | * Identifier of the floor plan.
22 | */
23 | @property (nonatomic, readonly, nullable) NSString *floorPlanId;
24 |
25 | /**
26 | * Name of the floor plan.
27 | */
28 | @property (nonatomic, readonly, nullable) NSString *name;
29 |
30 | /**
31 | * Image URL of the floor plan.
32 | */
33 | @property (nonatomic, readonly, nullable) NSURL *imageUrl;
34 |
35 | /**
36 | * Width of the image bitmap in pixels.
37 | */
38 | @property (nonatomic, readonly) NSUInteger width;
39 |
40 | /**
41 | * Height of the image bitmap in pixels.
42 | */
43 | @property (nonatomic, readonly) NSUInteger height;
44 |
45 | /**
46 | * Conversion multiplier from pixels to meters.
47 | */
48 | @property (nonatomic, readonly) float pixelToMeterConversion;
49 |
50 | /**
51 | * Conversion multiplier from meters to pixels.
52 | */
53 | @property (nonatomic, readonly) float meterToPixelConversion;
54 |
55 | /**
56 | * Width of floor plan in meters.
57 | */
58 | @property (nonatomic, readonly) float widthMeters;
59 |
60 | /**
61 | * Height of floor plan in meters.
62 | */
63 | @property (nonatomic, readonly) float heightMeters;
64 |
65 | /**
66 | * Object containing the floor of floor plan.
67 | * If the object is nil, the floor is unspecified.
68 | */
69 | @property (nonatomic, readonly, nullable) IAFloor *floor;
70 |
71 | /**
72 | * The approximate bearing of left side of floor plan in
73 | * degrees east of true north.
74 | */
75 | @property (nonatomic, readonly) double bearing;
76 |
77 | /**
78 | * Corresponding WGS84 coordinate of center of floor plan bitmap placed
79 | * on the surface of Earth.
80 | */
81 | @property (nonatomic, readonly) CLLocationCoordinate2D center;
82 |
83 | /**
84 | * Corresponding WGS84 coordinate of top left of floor plan bitmap placed
85 | * on the surface of Earth.
86 | */
87 | @property (nonatomic, readonly) CLLocationCoordinate2D topLeft;
88 |
89 | /**
90 | * Corresponding WGS84 coordinate of top right of floor plan bitmap placed
91 | * on the surface of Earth.
92 | */
93 | @property (nonatomic, readonly) CLLocationCoordinate2D topRight;
94 |
95 | /**
96 | * Corresponding WGS84 coordinate of bottom left of floor plan bitmap placed
97 | * on the surface of Earth.
98 | */
99 | @property (nonatomic, readonly) CLLocationCoordinate2D bottomLeft;
100 |
101 | /**
102 | * Corresponding WGS84 coordinate of bottom right of floor plan bitmap placed
103 | * on the surface of Earth.
104 | */
105 | @property (nonatomic, readonly) CLLocationCoordinate2D bottomRight;
106 |
107 | /**
108 | * Converts coordinate to corresponding point.
109 | *
110 | * @param coord WGS84 coordinate
111 | * @return corresponding pixel point on floor plan bitmap
112 | */
113 | - (CGPoint)coordinateToPoint:(CLLocationCoordinate2D)coord;
114 |
115 | /**
116 | * Converts point to corresponding coordinate.
117 | *
118 | * @param point pixel point of floor plan bitmap
119 | * @return corresponding WGS84 coordinate
120 | */
121 | - (CLLocationCoordinate2D)pointToCoordinate:(CGPoint)point;
122 |
123 | @end
124 |
125 | #undef INDOORATLAS_API
126 |
--------------------------------------------------------------------------------
/Plugins/IndoorAtlas/iOS/IndoorAtlas.framework/Headers/IAFloorPlan.h.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 23ea63c0fbb394bce9dfa3b60a61b2ab
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Plugins/IndoorAtlas/iOS/IndoorAtlas.framework/Headers/IALocationManager.h.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 3fa08d797c1b04ec6acad9b13a5fbf47
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Plugins/IndoorAtlas/iOS/IndoorAtlas.framework/Headers/IndoorAtlas.h:
--------------------------------------------------------------------------------
1 | // IndoorAtlas iOS SDK
2 | // IndoorAtlas.h
3 |
4 | #import
5 | #import
6 | #import
7 |
--------------------------------------------------------------------------------
/Plugins/IndoorAtlas/iOS/IndoorAtlas.framework/Headers/IndoorAtlas.h.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 6f21300041cf4429aa071ac4fcf4edd9
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Plugins/IndoorAtlas/iOS/IndoorAtlas.framework/IndoorAtlas:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IndoorAtlas/unity-plugin/4c6659bce5ee936bdb2c4393010fc852ba640289/Plugins/IndoorAtlas/iOS/IndoorAtlas.framework/IndoorAtlas
--------------------------------------------------------------------------------
/Plugins/IndoorAtlas/iOS/IndoorAtlas.framework/IndoorAtlas.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 2f29ed47e19c74fc58754234f80c2615
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Plugins/IndoorAtlas/iOS/IndoorAtlas.framework/Info.plist:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IndoorAtlas/unity-plugin/4c6659bce5ee936bdb2c4393010fc852ba640289/Plugins/IndoorAtlas/iOS/IndoorAtlas.framework/Info.plist
--------------------------------------------------------------------------------
/Plugins/IndoorAtlas/iOS/IndoorAtlas.framework/Info.plist.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: fc2952e659ee945ce9b24d2348282005
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Plugins/IndoorAtlas/iOS/IndoorAtlas.framework/Modules.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 33637f99c612a40d288fbab2da3f4111
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/Plugins/IndoorAtlas/iOS/IndoorAtlas.framework/Modules/module.modulemap:
--------------------------------------------------------------------------------
1 | framework module IndoorAtlas {
2 | umbrella header "IndoorAtlas.h"
3 | header "IALocationManager.h"
4 | header "IAFloorPlan.h"
5 | header "IAFloor.h"
6 | export * module * { export * }
7 | }
8 |
--------------------------------------------------------------------------------
/Plugins/IndoorAtlas/iOS/IndoorAtlas.framework/Modules/module.modulemap.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 2e262a01f9f1e49fcbd07fe290faa521
3 | DefaultImporter:
4 | externalObjects: {}
5 | userData:
6 | assetBundleName:
7 | assetBundleVariant:
8 |
--------------------------------------------------------------------------------
/Plugins/IndoorAtlas/iOS/NativeBridge.m:
--------------------------------------------------------------------------------
1 | #import
2 | #import
3 |
4 | @interface IAUnityPlugin : NSObject
5 | @property (nonatomic, strong) IALocationManager *manager;
6 | @property (nonatomic, copy) NSString *key, *secret;
7 | @property (nonatomic, copy) NSString *gameObject;
8 | @end
9 |
10 | @interface IALocationManager ()
11 | - (void)setObject:(id)object forKey:(NSString*)key;
12 | @end
13 |
14 | static NSString*
15 | dict_to_json(NSDictionary *dictionary) {
16 | NSError *error;
17 | NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dictionary options:0 error:&error];
18 | NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
19 | if (error) {
20 | NSException *serializationError = [NSException
21 | exceptionWithName:@"unableToSerializeDictionaryException"
22 | reason:@"Unable to serialize NSDictionary"
23 | userInfo:nil];
24 | [serializationError raise];
25 | }
26 | return jsonString;
27 | }
28 |
29 | static NSDictionary*
30 | geofence_to_dict(IAGeofence *geofence) {
31 | if (!geofence) return @{};
32 | if (![geofence isKindOfClass:[IAGeofence class]]) return @{};
33 | NSString *payload = (geofence.payload ? dict_to_json(geofence.payload) : @"{}");
34 | NSMutableArray *points = [NSMutableArray array];
35 | for (NSInteger i = 0; i < geofence.points.count; i += 2) {
36 | [points addObject:@{
37 | @"latitude": geofence.points[i],
38 | @"longitude": geofence.points[i + 1]
39 | }];
40 | }
41 | return @{
42 | @"id": geofence.identifier,
43 | @"name": geofence.name,
44 | @"payload": payload,
45 | @"position": @{
46 | @"coordinate": @{
47 | @"latitude": @(geofence.coordinate.latitude),
48 | @"longitude": @(geofence.coordinate.longitude)
49 | },
50 | @"floor": @(geofence.floor.level)
51 | },
52 | @"points": points
53 | };
54 | }
55 |
56 | static NSDictionary*
57 | poi_to_dict(IAPOI *poi) {
58 | if (!poi) return @{};
59 | NSString *payload = (poi.payload ? dict_to_json(poi.payload) : @"{}");
60 | return @{
61 | @"id": poi.identifier,
62 | @"name": poi.name,
63 | @"payload": payload ? payload : @"{}",
64 | @"position": @{
65 | @"coordinate": @{
66 | @"latitude": @(poi.coordinate.latitude),
67 | @"longitude": @(poi.coordinate.longitude)
68 | },
69 | @"floor": @(poi.floor.level)
70 | }
71 | };
72 | }
73 |
74 | static NSDictionary*
75 | floorplan_to_dict(IAFloorPlan *plan) {
76 | if (!plan) return @{};
77 | return @{
78 | @"id": plan.floorPlanId,
79 | @"name": plan.name,
80 | @"imageUrl": plan.imageUrl.absoluteString,
81 | @"width": @(plan.width),
82 | @"height": @(plan.height),
83 | @"pixelToMeterConversion": @(plan.pixelToMeterConversion),
84 | @"meterToPixelConversion": @(plan.meterToPixelConversion),
85 | @"widthMeters": @(plan.widthMeters),
86 | @"heightMeters": @(plan.heightMeters),
87 | @"floor": @(plan.floor.level),
88 | };
89 | }
90 |
91 | static NSDictionary*
92 | venue_to_dict(IAVenue *venue) {
93 | if (!venue) return @{};
94 | NSMutableArray *floorplans = [NSMutableArray array];
95 | for (IAFloorPlan *plan in venue.floorplans) [floorplans addObject:floorplan_to_dict(plan)];
96 | NSMutableArray *geofences = [NSMutableArray array];
97 | for (IAGeofence *geo in venue.geofences) [geofences addObject:geofence_to_dict(geo)];
98 | NSMutableArray *pois = [NSMutableArray array];
99 | for (IAPOI *poi in venue.pois) [pois addObject:poi_to_dict(poi)];
100 | return @{
101 | @"id": venue.id,
102 | @"name": venue.name,
103 | @"floorplans": floorplans,
104 | @"geofences": geofences,
105 | @"pois": pois
106 | };
107 | }
108 |
109 | static NSString*
110 | region_to_json(IARegion *region) {
111 | return dict_to_json(@{
112 | @"id": region.identifier,
113 | @"name": region.name,
114 | @"type": @(region.type),
115 | @"timestamp": region.timestamp ? @(region.timestamp.timeIntervalSince1970) : @(-1),
116 | @"venue": venue_to_dict(region.venue),
117 | @"floorplan": floorplan_to_dict(region.floorplan),
118 | @"geofence": geofence_to_dict((IAGeofence*)region)
119 | });
120 | }
121 |
122 | static NSDictionary*
123 | route_point_to_dict(IARoutePoint *point) {
124 | return @{
125 | @"position": @{
126 | @"coordinate": @{
127 | @"latitude": @(point.coordinate.latitude),
128 | @"longitude": @(point.coordinate.longitude)
129 | },
130 | @"floor": @(point.floor),
131 | },
132 | @"nodeIndex": @(point.nodeIndex)
133 | };
134 |
135 | }
136 |
137 | static NSDictionary*
138 | route_leg_to_dict(IARouteLeg *leg) {
139 | return @{
140 | @"begin": route_point_to_dict(leg.begin),
141 | @"end": route_point_to_dict(leg.end),
142 | @"length": @(leg.length),
143 | @"direction": @(leg.direction),
144 | @"edgeIndex": @(leg.edgeIndex),
145 | };
146 | }
147 |
148 | static NSString*
149 | route_to_json(IARoute *route) {
150 | NSMutableArray *legs = [NSMutableArray array];
151 | NSString *error = @"NO_ERROR";
152 | switch (route.error) {
153 | case kIARouteErrorNoError: error = @"NO_ERROR"; break;
154 | case kIARouteErrorRoutingFailed: error = @"ROUTING_FAILED"; break;
155 | case kIARouteErrorGraphNotAvailable: error = @"GRAPH_NOT_AVAILABLE"; break;
156 | }
157 | for (IARouteLeg *leg in route.legs) [legs addObject:route_leg_to_dict(leg)];
158 | return dict_to_json(@{
159 | @"legs": legs,
160 | @"isSuccessful": @(route.isSuccessful),
161 | @"error": error
162 | });
163 | }
164 |
165 | static NSString*
166 | location_to_json(IALocation *location) {
167 | if (!location) return @"";
168 | CLLocation *l = location.location;
169 | return dict_to_json(@{
170 | @"accuracy": @(l.horizontalAccuracy),
171 | @"altitude": @(l.altitude),
172 | @"bearing": @(l.course),
173 | @"position": @{
174 | @"coordinate": @{
175 | @"latitude": @(l.coordinate.latitude),
176 | @"longitude": @(l.coordinate.longitude)
177 | },
178 | @"floor": @(l.floor.level),
179 | },
180 | @"timestamp": @([l.timestamp timeIntervalSince1970])
181 | });
182 | }
183 |
184 | @implementation IAUnityPlugin
185 | - (id)initWithObject:(NSString *)gameObjectName apiKey:(NSString *)apiKey apiSecret:(NSString *)apiSecret apiEndpoint:(NSString*)apiEndpoint {
186 | self = [super init];
187 | self.gameObject = gameObjectName;
188 | self.manager = [IALocationManager sharedInstance];
189 | self.manager.delegate = self;
190 | // TODO: get version from saner place
191 | [self.manager setObject:@{@"name": @"unity", @"version": @"0.0.1"} forKey:@"IAWrapper"];
192 | if (apiEndpoint.length) [self.manager setObject:apiEndpoint forKey:@"IACustomEndpoint"];
193 | [self.manager setApiKey:apiKey andSecret:apiSecret];
194 | return self;
195 | }
196 |
197 | - (void)close {
198 | [self.manager stopUpdatingLocation];
199 | }
200 |
201 | - (void)indoorLocationManager:(IALocationManager*)manager didUpdateLocations:(NSArray*)locations {
202 | (void)manager;
203 | NSString *json = location_to_json(locations.lastObject);
204 | UnitySendMessage(self.gameObject.UTF8String, "NativeIndoorAtlasOnLocationChanged", json.UTF8String);
205 | }
206 |
207 | - (void)indoorLocationManager:(IALocationManager *)manager didUpdateAttitude:(nonnull IAAttitude *)newAttitude {
208 | (void)manager;
209 | NSString *json = dict_to_json(@{
210 | @"x": @(newAttitude.quaternion.x),
211 | @"y": @(newAttitude.quaternion.y),
212 | @"z": @(newAttitude.quaternion.z),
213 | @"w": @(newAttitude.quaternion.w),
214 | @"timestamp": @((long)([newAttitude.timestamp timeIntervalSince1970] * 1000.0))
215 | });
216 | UnitySendMessage(self.gameObject.UTF8String, "NativeIndoorAtlasOnOrientationChanged", json.UTF8String);
217 | }
218 |
219 | - (void)indoorLocationManager:(nonnull IALocationManager *)manager didUpdateHeading:(nonnull IAHeading *)newHeading {
220 | (void)manager;
221 | NSString *json = dict_to_json(@{
222 | @"heading": @(newHeading.trueHeading),
223 | @"timestamp": @((long)(newHeading.timestamp.timeIntervalSince1970 * 1000.0))
224 | });
225 | UnitySendMessage(self.gameObject.UTF8String, "NativeIndoorAtlasOnHeadingChanged", json.UTF8String);
226 | }
227 |
228 | - (void)indoorLocationManager:(nonnull IALocationManager *)manager statusChanged:(nonnull IAStatus *)status {
229 | (void)manager;
230 | NSString *json = dict_to_json(@{@"status": @(status.type)});
231 | UnitySendMessage(self.gameObject.UTF8String, "NativeIndoorAtlasOnStatusChanged", json.UTF8String);
232 | }
233 |
234 | - (void)indoorLocationManager:(IALocationManager *)manager didEnterRegion:(IARegion *)region {
235 | (void)manager;
236 | NSString *json = region_to_json(region);
237 | UnitySendMessage(self.gameObject.UTF8String, "NativeIndoorAtlasOnEnterRegion", json.UTF8String);
238 | }
239 |
240 | - (void)indoorLocationManager:(IALocationManager *)manager didExitRegion:(IARegion *)region {
241 | (void)manager;
242 | NSString *json = region_to_json(region);
243 | UnitySendMessage(self.gameObject.UTF8String, "NativeIndoorAtlasOnExitRegion", json.UTF8String);
244 | }
245 |
246 | - (void)indoorLocationManager:(IALocationManager *)manager didUpdateRoute:(IARoute *)route {
247 | (void)manager;
248 | NSString *json = route_to_json(route);
249 | UnitySendMessage(self.gameObject.UTF8String, "NativeIndoorAtlasOnRoute", json.UTF8String);
250 | }
251 | @end
252 |
253 | static IAUnityPlugin *_plugin;
254 |
255 | static NSDictionary*
256 | cstr_to_dict(const char *str) {
257 | NSData *data = [[NSData alloc] initWithBytesNoCopy:str length:strlen(str) freeWhenDone:false];
258 | return [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
259 | }
260 |
261 | static IAWayfindingRequest*
262 | cstr_to_wayfinding_request(const char *str) {
263 | NSDictionary *dict = cstr_to_dict(str);
264 | IAWayfindingRequest *request = [IAWayfindingRequest new];
265 | request.coordinate = CLLocationCoordinate2DMake([dict[@"coordinate"][@"latitude"] doubleValue], [dict[@"coordinate"][@"longitude"] doubleValue]);
266 | request.floor = [dict[@"floor"] integerValue];
267 | return request;
268 | }
269 |
270 | static IALocation*
271 | cstr_to_location(const char *str) {
272 | NSDictionary *dict = cstr_to_dict(str);
273 | CLLocationCoordinate2D coord = {
274 | .latitude = [dict[@"position"][@"coordinate"][@"latitude"] doubleValue],
275 | .longitude = [dict[@"position"][@"coordinate"][@"longitude"] doubleValue],
276 | };
277 | CLLocation *clLoc = [CLLocation initWithCoordinate:coord altitude:0 horizontalAccuracy:[dict[@"accuracy"] floatValue] verticalAccuracy:-1 timestamp:[NSDate date]];
278 | return [IALocation locationWithCLLocation:clLoc andFloor:[IAFloor floorWithLevel:[dict[@"position"][@"floor"] intValue]]];
279 | }
280 |
281 | static const char*
282 | nsstring_to_unity_string(NSString *str) {
283 | NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];
284 | char *cpy = calloc(1, data.length + 1); // calloc initalizes with zero, thus zero terminates as well
285 | assert(cpy && "calloc failed");
286 | memcpy(cpy, data.bytes, data.length);
287 | return cpy;
288 | }
289 |
290 | static void
291 | simd_float4x4_to_unity_matrix(const simd_float4x4 *in, float out[16]) {
292 | for (int i = 0; i < 4; ++i) {
293 | out[i * 4 + 0] = in->columns[i].x;
294 | out[i * 4 + 1] = in->columns[i].y;
295 | out[i * 4 + 2] = in->columns[i].z;
296 | out[i * 4 + 3] = in->columns[i].w;
297 | }
298 | }
299 |
300 | static void
301 | unity_matrix_to_simd_float4x4(const float in[16], simd_float4x4 *out) {
302 | for (int i = 0; i < 4; ++i) {
303 | out->columns[i].x = in[i * 4 + 0];
304 | out->columns[i].y = in[i * 4 + 1];
305 | out->columns[i].z = in[i * 4 + 2];
306 | out->columns[i].w = in[i * 4 + 3];
307 | }
308 | }
309 |
310 | bool
311 | indooratlas_close(void) {
312 | const bool ret = !!_plugin;
313 | [_plugin close];
314 | _plugin = nil;
315 | return ret;
316 | }
317 |
318 | bool
319 | indooratlas_init(const char *apiKey, const char *apiSecret, const char *apiEndpoint, const char *gameObjectName) {
320 | if (_plugin) return false;
321 | NSString *key = [NSString stringWithUTF8String:apiKey];
322 | NSString *secret = [NSString stringWithUTF8String:apiSecret];
323 | NSString *endpoint = [NSString stringWithUTF8String:apiEndpoint];
324 | NSString *object = [NSString stringWithUTF8String:gameObjectName];
325 | _plugin = [[IAUnityPlugin alloc] initWithObject:object apiKey:key apiSecret:secret apiEndpoint:endpoint];
326 | return !!_plugin;
327 | }
328 |
329 | const char*
330 | indooratlas_versionString(void) {
331 | return nsstring_to_unity_string([IALocationManager versionString]);
332 | }
333 |
334 | void
335 | indooratlas_setDistanceFilter(double filter) {
336 | [_plugin.manager setDistanceFilter:filter];
337 | }
338 |
339 | double
340 | indooratlas_getDistanceFilter(void) {
341 | return [_plugin.manager distanceFilter];
342 | }
343 |
344 | void
345 | indooratlas_setTimeFilter(double filter) {
346 | [_plugin.manager setTimeFilter:filter];
347 | }
348 |
349 | double
350 | indooratlas_getTimeFilter(void) {
351 | return [_plugin.manager timeFilter];
352 | }
353 |
354 | void
355 | indooratlas_setHeadingFilter(double filter) {
356 | [_plugin.manager setHeadingFilter:filter];
357 | }
358 |
359 | double
360 | indooratlas_getHeadingFilter(void) {
361 | return [_plugin.manager headingFilter];
362 | }
363 |
364 | void
365 | indooratlas_setAttitudeFilter(double filter) {
366 | [_plugin.manager setAttitudeFilter:filter];
367 | }
368 |
369 | double
370 | indooratlas_getAttitudeFilter(void) {
371 | return [_plugin.manager attitudeFilter];
372 | }
373 |
374 | void
375 | indooratlas_lockFloor(int floor) {
376 | [_plugin.manager lockFloor:floor];
377 | }
378 |
379 | void
380 | indooratlas_unlockFloor(void) {
381 | [_plugin.manager unlockFloor];
382 | }
383 |
384 | void
385 | indooratlas_lockIndoors(bool lock) {
386 | [_plugin.manager lockIndoors:lock];
387 | }
388 |
389 | void
390 | indooratlas_startUpdatingLocation(void) {
391 | [_plugin.manager startUpdatingLocation];
392 | }
393 |
394 | void
395 | indooratlas_stopUpdatingLocation(void) {
396 | [_plugin.manager stopUpdatingLocation];
397 | }
398 |
399 | void
400 | indooratlas_startMonitoringForWayfinding(const char *to) {
401 | [_plugin.manager startMonitoringForWayfinding:cstr_to_wayfinding_request(to)];
402 | }
403 |
404 | void
405 | indooratlas_stopMonitoringForWayfinding(void) {
406 | [_plugin.manager stopMonitoringForWayfinding];
407 | }
408 |
409 | const char*
410 | indooratlas_traceID(void) {
411 | return nsstring_to_unity_string(_plugin.manager.extraInfo[kIATraceId]);
412 | }
413 |
414 | void
415 | indooratlas_releaseArSession(void) {
416 | [_plugin.manager releaseArSession];
417 | }
418 |
419 | void
420 | indooratlas_setArPoseMatrix(const float matrix[16]) {
421 | simd_float4x4 simd;
422 | unity_matrix_to_simd_float4x4(matrix, &simd);
423 | [_plugin.manager.arSession setPoseMatrix:simd];
424 | }
425 |
426 | void
427 | indooratlas_setArCameraToWorldMatrix(const float matrix[16]) {
428 | simd_float4x4 simd;
429 | unity_matrix_to_simd_float4x4(matrix, &simd);
430 | [_plugin.manager.arSession setCameraToWorldMatrix:simd];
431 | }
432 |
433 | bool
434 | indooratlas_getArIsConverged(void) {
435 | return _plugin.manager.arSession.converged;
436 | }
437 |
438 | bool
439 | indooratlas_getArCompassMatrix(float matrix[16]) {
440 | simd_float4x4 simd = matrix_identity_float4x4;
441 | const bool ret = [_plugin.manager.arSession.wayfindingCompassArrow updateModelMatrix:&simd];
442 | simd_float4x4_to_unity_matrix(&simd, matrix);
443 | return ret;
444 | }
445 |
446 | bool
447 | indooratlas_getArGoalMatrix(float matrix[16]) {
448 | simd_float4x4 simd = matrix_identity_float4x4;
449 | const bool ret = [_plugin.manager.arSession.wayfindingTarget updateModelMatrix:&simd];
450 | simd_float4x4_to_unity_matrix(&simd, matrix);
451 | return ret;
452 | }
453 |
454 | int
455 | indooratlas_getArTurnCount(void) {
456 | return (int)_plugin.manager.arSession.wayfindingTurnArrows.count;
457 | }
458 |
459 | bool
460 | indooratlas_getArTurnMatrix(int index, float matrix[16]) {
461 | simd_float4x4 simd = matrix_identity_float4x4;
462 | const bool ret = [_plugin.manager.arSession.wayfindingTurnArrows[index] updateModelMatrix:&simd];
463 | simd_float4x4_to_unity_matrix(&simd, matrix);
464 | return ret;
465 | }
466 |
467 | void
468 | indooratlas_addArPlane(float cx, float cy, float cz, float ex, float ez) {
469 | [_plugin.manager.arSession addPlaneWithCenterX:cx withCenterY:cy withCenterZ:cz withExtentX:ex withExtentZ:ez];
470 | }
471 |
472 | void
473 | indooratlas_geoToAr(double lat, double lon, int floor, float heading, float zOffset, float matrix[16]) {
474 | CLLocationCoordinate2D coord = { lat, lon };
475 | simd_float4x4 simd = [_plugin.manager.arSession geoToAr:coord floorNumber:floor heading:heading zOffset:zOffset];
476 | simd_float4x4_to_unity_matrix(&simd, matrix);
477 | }
478 |
479 | const char*
480 | indooratlas_arToGeo(double x, double y, double z) {
481 | IALocation *l = [_plugin.manager.arSession arToGeo:x Y:y Z:z];
482 | return nsstring_to_unity_string(location_to_json(l));
483 | }
484 |
485 | void
486 | indooratlas_setLocation(const char *location) {
487 | [_plugin.manager setLocation:cstr_to_location(location)];
488 | }
489 |
--------------------------------------------------------------------------------
/Plugins/IndoorAtlas/iOS/NativeBridge.m.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: ae1107116df8f47e1ad58a434e46e23e
3 | PluginImporter:
4 | externalObjects: {}
5 | serializedVersion: 2
6 | iconMap: {}
7 | executionOrder: {}
8 | defineConstraints: []
9 | isPreloaded: 0
10 | isOverridable: 0
11 | isExplicitlyReferenced: 0
12 | validateReferences: 1
13 | platformData:
14 | - first:
15 | Any:
16 | second:
17 | enabled: 0
18 | settings: {}
19 | - first:
20 | Editor: Editor
21 | second:
22 | enabled: 0
23 | settings:
24 | DefaultValueInitialized: true
25 | - first:
26 | iPhone: iOS
27 | second:
28 | enabled: 1
29 | settings: {}
30 | - first:
31 | tvOS: tvOS
32 | second:
33 | enabled: 1
34 | settings: {}
35 | userData:
36 | assetBundleName:
37 | assetBundleVariant:
38 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # IndoorAtlas Unity Plugin
2 |
3 | [IndoorAtlas](https://www.indooratlas.com/) provides a unique Platform-as-a-Service (PaaS) solution that runs a disruptive geomagnetic positioning in its full-stack hybrid technology for accurately pinpointing a location inside a building. The IndoorAtlas SDK enables app developers to use high-accuracy indoor positioning in venues that have been fingerprinted.
4 |
5 | Getting started requires you to set up a free developer account and fingerprint your indoor venue using the [IndoorAtlas MapCreator 2](https://play.google.com/store/apps/details?id=com.indooratlas.android.apps.jaywalker).
6 |
7 | ## Getting Started
8 |
9 | * Set up your [free developer account](https://app.indooratlas.com) in the IndoorAtlas developer portal. Help with getting started is available in the [Quick Start Guide](http://docs.indooratlas.com/quick-start-guide.html).
10 | * To enable IndoorAtlas indoor positioning in a venue, the venue needs to be fingerprinted with the [IndoorAtlas MapCreator 2](https://play.google.com/store/apps/details?id=com.indooratlas.android.apps.jaywalker) tool.
11 | * To start developing your own app, create an [API key](https://app.indooratlas.com/apps).
12 | * An example Unity project is included in the example folder.
13 |
14 | It's recommended you use Unity version 2021.3.17f1 or higher.
15 |
16 | ## How to Use
17 |
18 | * IndoorAtlas API key and secret. You can generate credentials from [our website](https://app.indooratlas.com/apps).
19 |
20 | ## Example
21 |
22 | There's an example Unity project which implements basic AR wayfinding functionality using the `IndoorAtlas AR Wayfinding` component.
23 | To build and run it on a real device, you may have to change the bundle identifier field in the Player Settings and fill
24 | your IndoorAtlas credentials to `IndoorAtlas Session` component. You'll need a location with POIs so you can choose a POI from the drop-down list to navigate to.
25 |
26 | NOTE: For the AR functionality you will need a API key with AR support enabled. Please contact IndoorAtlas sales for this!
27 |
28 | 
29 |
30 | ## Scripting
31 |
32 | There is a `IndoorAtlasApi.cs` included that wraps most of our Android and iOS SDK functionality to C#.
33 | You may use this api in your own components. To get callbacks from the Android and iOS SDK, your component should be children of `IndoorAtlas Session` component,
34 | and implement onei or more of the following methods:
35 |
36 | * IndoorAtlasOnLocationChanged
37 | * IndoorAtlasOnStatusChanged
38 | * IndoorAtlasOnHeadingChanged
39 | * IndoorAtlasOnOrientationChanged
40 | * IndoorAtlasOnEnterRegion
41 | * IndoorAtlasOnExitRegion
42 | * IndoorAtlasOnRoute
43 |
44 | To get better idea of how these callbacks work and what are their arguments, check the `IndoorAtlasSession.cs` source file.
45 |
46 | ### Coodinate systems
47 |
48 | This repository contains `WGSConversion` class (in `IndoorAtlasWGSConversion.cs` file) which can be used to convert IndoorAtlas SDK's (latitude, longitude) coordinates to metric (east, north) coordinates.
49 |
50 | #### A numerical example
51 |
52 | Set first a fixed point ("origin") to your 3D scene with `SetOrigin` method, for example:
53 |
54 | ```C#
55 | IndoorAtlas.WGSConversion temp = new IndoorAtlas.WGSConversion ();
56 | temp.SetOrigin (63.357219, 27.403592);
57 | ```
58 |
59 | Relative (east, north) transitions can be computed with `WGStoEN` method after the origin has been set, for example:
60 | ```C#
61 | Vector2 eastNorth = temp.WGStoEN (63.357860, 27.402245);
62 | Debug.Log ("East-North transition: " + eastNorth.x + ", " + eastNorth.y);
63 | ```
64 |
65 | This gives a transition of (-67.42091, 71.45055) _from origin_, that is, a transition of ~67 meters to west and ~71 meters to north _from origin_.
66 |
67 | ## License
68 |
69 | Copyright 2021 IndoorAtlas Ltd. The Unity Plugin is released under the Apache License. See the LICENSE file for details.
70 |
--------------------------------------------------------------------------------
/androidwrapper/build.gradle:
--------------------------------------------------------------------------------
1 | buildscript {
2 | repositories {
3 | mavenCentral()
4 | jcenter()
5 | google()
6 | }
7 | dependencies {
8 | classpath 'com.android.tools.build:gradle:3.5.0'
9 | }
10 | }
11 |
12 | allprojects {
13 | repositories {
14 | mavenCentral()
15 | jcenter()
16 | google()
17 | }
18 | }
19 |
20 | apply plugin: 'com.android.library'
21 |
22 | android {
23 | compileSdkVersion 33
24 |
25 | defaultConfig {
26 | minSdkVersion 21
27 | targetSdkVersion 30
28 | versionCode 1
29 | versionName "1.0"
30 | }
31 |
32 | buildTypes {
33 | debug {
34 | debuggable true
35 | }
36 | release {
37 | }
38 | }
39 | lintOptions {
40 | abortOnError false
41 | }
42 |
43 | sourceSets {
44 | main {
45 | java {
46 | srcDir 'src/main/java'
47 | }
48 | }
49 | }
50 | }
51 |
52 | dependencies {
53 | // Add UnityPlayer classes from the libs directory
54 | compileOnly fileTree(include: ['*.jar'], dir: 'libs')
55 |
56 | api 'com.indooratlas.android:indooratlas-android-sdk:3.6.0@aar'
57 | api 'com.android.support:support-v4:26.1.0'
58 | api 'com.android.support:appcompat-v7:26.1.0'
59 | }
60 |
61 | repositories{
62 | maven {
63 | url "https://dl.cloudsmith.io/public/indooratlas/mvn-public/maven/"
64 | }
65 | }
66 |
--------------------------------------------------------------------------------
/androidwrapper/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IndoorAtlas/unity-plugin/4c6659bce5ee936bdb2c4393010fc852ba640289/androidwrapper/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/androidwrapper/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Wed Sep 11 14:36:28 EEST 2019
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.2-all.zip
7 |
--------------------------------------------------------------------------------
/androidwrapper/gradlew:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | #
4 | # Copyright 2015 the original author or authors.
5 | #
6 | # Licensed under the Apache License, Version 2.0 (the "License");
7 | # you may not use this file except in compliance with the License.
8 | # You may obtain a copy of the License at
9 | #
10 | # https://www.apache.org/licenses/LICENSE-2.0
11 | #
12 | # Unless required by applicable law or agreed to in writing, software
13 | # distributed under the License is distributed on an "AS IS" BASIS,
14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | # See the License for the specific language governing permissions and
16 | # limitations under the License.
17 | #
18 |
19 | ##############################################################################
20 | ##
21 | ## Gradle start up script for UN*X
22 | ##
23 | ##############################################################################
24 |
25 | # Attempt to set APP_HOME
26 | # Resolve links: $0 may be a link
27 | PRG="$0"
28 | # Need this for relative symlinks.
29 | while [ -h "$PRG" ] ; do
30 | ls=`ls -ld "$PRG"`
31 | link=`expr "$ls" : '.*-> \(.*\)$'`
32 | if expr "$link" : '/.*' > /dev/null; then
33 | PRG="$link"
34 | else
35 | PRG=`dirname "$PRG"`"/$link"
36 | fi
37 | done
38 | SAVED="`pwd`"
39 | cd "`dirname \"$PRG\"`/" >/dev/null
40 | APP_HOME="`pwd -P`"
41 | cd "$SAVED" >/dev/null
42 |
43 | APP_NAME="Gradle"
44 | APP_BASE_NAME=`basename "$0"`
45 |
46 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
47 | DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
48 |
49 | # Use the maximum available, or set MAX_FD != -1 to use that value.
50 | MAX_FD="maximum"
51 |
52 | warn () {
53 | echo "$*"
54 | }
55 |
56 | die () {
57 | echo
58 | echo "$*"
59 | echo
60 | exit 1
61 | }
62 |
63 | # OS specific support (must be 'true' or 'false').
64 | cygwin=false
65 | msys=false
66 | darwin=false
67 | nonstop=false
68 | case "`uname`" in
69 | CYGWIN* )
70 | cygwin=true
71 | ;;
72 | Darwin* )
73 | darwin=true
74 | ;;
75 | MINGW* )
76 | msys=true
77 | ;;
78 | NONSTOP* )
79 | nonstop=true
80 | ;;
81 | esac
82 |
83 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
84 |
85 | # Determine the Java command to use to start the JVM.
86 | if [ -n "$JAVA_HOME" ] ; then
87 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
88 | # IBM's JDK on AIX uses strange locations for the executables
89 | JAVACMD="$JAVA_HOME/jre/sh/java"
90 | else
91 | JAVACMD="$JAVA_HOME/bin/java"
92 | fi
93 | if [ ! -x "$JAVACMD" ] ; then
94 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
95 |
96 | Please set the JAVA_HOME variable in your environment to match the
97 | location of your Java installation."
98 | fi
99 | else
100 | JAVACMD="java"
101 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
102 |
103 | Please set the JAVA_HOME variable in your environment to match the
104 | location of your Java installation."
105 | fi
106 |
107 | # Increase the maximum file descriptors if we can.
108 | if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
109 | MAX_FD_LIMIT=`ulimit -H -n`
110 | if [ $? -eq 0 ] ; then
111 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
112 | MAX_FD="$MAX_FD_LIMIT"
113 | fi
114 | ulimit -n $MAX_FD
115 | if [ $? -ne 0 ] ; then
116 | warn "Could not set maximum file descriptor limit: $MAX_FD"
117 | fi
118 | else
119 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
120 | fi
121 | fi
122 |
123 | # For Darwin, add options to specify how the application appears in the dock
124 | if $darwin; then
125 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
126 | fi
127 |
128 | # For Cygwin or MSYS, switch paths to Windows format before running java
129 | if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
130 | APP_HOME=`cygpath --path --mixed "$APP_HOME"`
131 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
132 | JAVACMD=`cygpath --unix "$JAVACMD"`
133 |
134 | # We build the pattern for arguments to be converted via cygpath
135 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
136 | SEP=""
137 | for dir in $ROOTDIRSRAW ; do
138 | ROOTDIRS="$ROOTDIRS$SEP$dir"
139 | SEP="|"
140 | done
141 | OURCYGPATTERN="(^($ROOTDIRS))"
142 | # Add a user-defined pattern to the cygpath arguments
143 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then
144 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
145 | fi
146 | # Now convert the arguments - kludge to limit ourselves to /bin/sh
147 | i=0
148 | for arg in "$@" ; do
149 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
150 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
151 |
152 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
153 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
154 | else
155 | eval `echo args$i`="\"$arg\""
156 | fi
157 | i=$((i+1))
158 | done
159 | case $i in
160 | (0) set -- ;;
161 | (1) set -- "$args0" ;;
162 | (2) set -- "$args0" "$args1" ;;
163 | (3) set -- "$args0" "$args1" "$args2" ;;
164 | (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
165 | (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
166 | (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
167 | (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
168 | (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
169 | (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
170 | esac
171 | fi
172 |
173 | # Escape application args
174 | save () {
175 | for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
176 | echo " "
177 | }
178 | APP_ARGS=$(save "$@")
179 |
180 | # Collect all arguments for the java command, following the shell quoting and substitution rules
181 | eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
182 |
183 | # by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
184 | if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
185 | cd "$(dirname "$0")"
186 | fi
187 |
188 | exec "$JAVACMD" "$@"
189 |
--------------------------------------------------------------------------------
/androidwrapper/gradlew.bat:
--------------------------------------------------------------------------------
1 | @rem
2 | @rem Copyright 2015 the original author or authors.
3 | @rem
4 | @rem Licensed under the Apache License, Version 2.0 (the "License");
5 | @rem you may not use this file except in compliance with the License.
6 | @rem You may obtain a copy of the License at
7 | @rem
8 | @rem https://www.apache.org/licenses/LICENSE-2.0
9 | @rem
10 | @rem Unless required by applicable law or agreed to in writing, software
11 | @rem distributed under the License is distributed on an "AS IS" BASIS,
12 | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | @rem See the License for the specific language governing permissions and
14 | @rem limitations under the License.
15 | @rem
16 |
17 | @if "%DEBUG%" == "" @echo off
18 | @rem ##########################################################################
19 | @rem
20 | @rem Gradle startup script for Windows
21 | @rem
22 | @rem ##########################################################################
23 |
24 | @rem Set local scope for the variables with windows NT shell
25 | if "%OS%"=="Windows_NT" setlocal
26 |
27 | set DIRNAME=%~dp0
28 | if "%DIRNAME%" == "" set DIRNAME=.
29 | set APP_BASE_NAME=%~n0
30 | set APP_HOME=%DIRNAME%
31 |
32 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
33 | set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
34 |
35 | @rem Find java.exe
36 | if defined JAVA_HOME goto findJavaFromJavaHome
37 |
38 | set JAVA_EXE=java.exe
39 | %JAVA_EXE% -version >NUL 2>&1
40 | if "%ERRORLEVEL%" == "0" goto init
41 |
42 | echo.
43 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
44 | echo.
45 | echo Please set the JAVA_HOME variable in your environment to match the
46 | echo location of your Java installation.
47 |
48 | goto fail
49 |
50 | :findJavaFromJavaHome
51 | set JAVA_HOME=%JAVA_HOME:"=%
52 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe
53 |
54 | if exist "%JAVA_EXE%" goto init
55 |
56 | echo.
57 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
58 | echo.
59 | echo Please set the JAVA_HOME variable in your environment to match the
60 | echo location of your Java installation.
61 |
62 | goto fail
63 |
64 | :init
65 | @rem Get command-line arguments, handling Windows variants
66 |
67 | if not "%OS%" == "Windows_NT" goto win9xME_args
68 |
69 | :win9xME_args
70 | @rem Slurp the command line arguments.
71 | set CMD_LINE_ARGS=
72 | set _SKIP=2
73 |
74 | :win9xME_args_slurp
75 | if "x%~1" == "x" goto execute
76 |
77 | set CMD_LINE_ARGS=%*
78 |
79 | :execute
80 | @rem Setup the command line
81 |
82 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
83 |
84 | @rem Execute Gradle
85 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
86 |
87 | :end
88 | @rem End local scope for the variables with windows NT shell
89 | if "%ERRORLEVEL%"=="0" goto mainEnd
90 |
91 | :fail
92 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
93 | rem the _cmd.exe /c_ return code!
94 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
95 | exit /b 1
96 |
97 | :mainEnd
98 | if "%OS%"=="Windows_NT" endlocal
99 |
100 | :omega
101 |
--------------------------------------------------------------------------------
/androidwrapper/libs/classes.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IndoorAtlas/unity-plugin/4c6659bce5ee936bdb2c4393010fc852ba640289/androidwrapper/libs/classes.jar
--------------------------------------------------------------------------------
/androidwrapper/src/main/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/example/.gitignore:
--------------------------------------------------------------------------------
1 | # Unity generated files
2 | # Source: https://github.com/github/gitignore/blob/master/Unity.gitignore
3 | [Ll]ibrary/
4 | [Tt]emp/
5 | [Oo]bj/
6 | [Bb]uild/
7 | [Bb]uilds/
8 | Assets/AssetStoreTools*
9 |
10 | # Visual Studio 2015 cache directory
11 | .vs/
12 |
13 | # Autogenerated VS/MD/Consulo solution and project files
14 | ExportedObj/
15 | .consulo/
16 | *.csproj
17 | *.unityproj
18 | *.sln
19 | *.suo
20 | *.tmp
21 | *.user
22 | *.userprefs
23 | *.pidb
24 | *.booproj
25 | *.svd
26 | *.pdb
27 |
28 | # Unity3D generated meta files
29 | *.pidb.meta
30 |
31 | # Unity3D Generated File On Crash Reports
32 | sysinfo.txt
33 |
34 | # Builds
35 | *.apk
36 | *.unitypackage
37 |
--------------------------------------------------------------------------------
/example/Assets/Plugins:
--------------------------------------------------------------------------------
1 | ../../Plugins/
--------------------------------------------------------------------------------
/example/Assets/Plugins.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: dcf3d868e734b4a939c036b5d30efdf0
3 | folderAsset: yes
4 | timeCreated: 1504697473
5 | licenseType: Pro
6 | DefaultImporter:
7 | userData:
8 | assetBundleName:
9 | assetBundleVariant:
10 |
--------------------------------------------------------------------------------
/example/Assets/StreamingAssets.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: df9b2cdea894c418e9af2f90ebc5442b
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/example/Assets/XR.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 53f00e22e87d84213b3c1d0bb8fb9170
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/example/Assets/XR/Loaders.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 9f670f45ec4364c9aae6dda1ec7bbda8
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/example/Assets/XR/Loaders/AR Core Loader.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_GameObject: {fileID: 0}
10 | m_Enabled: 1
11 | m_EditorHideFlags: 0
12 | m_Script: {fileID: 11500000, guid: 06042c85f885b4d1886f3ca5a1074eca, type: 3}
13 | m_Name: AR Core Loader
14 | m_EditorClassIdentifier:
15 |
--------------------------------------------------------------------------------
/example/Assets/XR/Loaders/AR Core Loader.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: b9727c9278aa748a6a2b0fea3fceda4c
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 0
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/example/Assets/XR/Loaders/AR Kit Loader.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_GameObject: {fileID: 0}
10 | m_Enabled: 1
11 | m_EditorHideFlags: 0
12 | m_Script: {fileID: 11500000, guid: a18c4d6661b404073b154020b9e2d993, type: 3}
13 | m_Name: AR Kit Loader
14 | m_EditorClassIdentifier:
15 |
--------------------------------------------------------------------------------
/example/Assets/XR/Loaders/AR Kit Loader.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 8121879a57a0348f1bd72288f7a36754
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 0
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/example/Assets/XR/Settings.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: f9bb48bcc0f674d7d8ac7a139cdb951f
3 | folderAsset: yes
4 | DefaultImporter:
5 | externalObjects: {}
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/example/Assets/XR/Settings/AR Core Loader Settings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_GameObject: {fileID: 0}
10 | m_Enabled: 1
11 | m_EditorHideFlags: 0
12 | m_Script: {fileID: 11500000, guid: 00cb13c61b2744fd786f9f969ce96149, type: 3}
13 | m_Name: AR Core Loader Settings
14 | m_EditorClassIdentifier:
15 | m_StartAndStopSubsystems: 0
16 |
--------------------------------------------------------------------------------
/example/Assets/XR/Settings/AR Core Loader Settings.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 6e335361e41924207bd2e459d68db2ff
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 0
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/example/Assets/XR/Settings/AR Core Settings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_GameObject: {fileID: 0}
10 | m_Enabled: 1
11 | m_EditorHideFlags: 0
12 | m_Script: {fileID: 11500000, guid: 9dae4501572e1418791be3e3bf1f7faa, type: 3}
13 | m_Name: AR Core Settings
14 | m_EditorClassIdentifier:
15 | m_Requirement: 0
16 | m_Depth: 0
17 | m_IgnoreGradleVersion: 0
18 |
--------------------------------------------------------------------------------
/example/Assets/XR/Settings/AR Core Settings.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: b5fdb627fe96040a58c94277289a6790
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 11400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/example/Assets/XR/Settings/AR Kit Loader Settings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_GameObject: {fileID: 0}
10 | m_Enabled: 1
11 | m_EditorHideFlags: 0
12 | m_Script: {fileID: 11500000, guid: 9cac560dd573c4c5088432b9d202f3e7, type: 3}
13 | m_Name: AR Kit Loader Settings
14 | m_EditorClassIdentifier:
15 | m_StartAndStopSubsystems: 0
16 |
--------------------------------------------------------------------------------
/example/Assets/XR/Settings/AR Kit Loader Settings.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 814ff512ce88d41eabce8cac5d724ea3
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 0
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/example/Assets/XR/Settings/AR Kit Settings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &11400000
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_GameObject: {fileID: 0}
10 | m_Enabled: 1
11 | m_EditorHideFlags: 0
12 | m_Script: {fileID: 11500000, guid: 7a3c2811d41034e52a6d6c33ac73a207, type: 3}
13 | m_Name: AR Kit Settings
14 | m_EditorClassIdentifier:
15 | m_Requirement: 0
16 |
--------------------------------------------------------------------------------
/example/Assets/XR/Settings/AR Kit Settings.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 13697a1c871294a5fa7dc2cb1ee9a591
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 11400000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/example/Assets/XR/XRGeneralSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &-6573352588750502918
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 0
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_GameObject: {fileID: 0}
10 | m_Enabled: 1
11 | m_EditorHideFlags: 0
12 | m_Script: {fileID: 11500000, guid: f4c3631f5e58749a59194e0cf6baf6d5, type: 3}
13 | m_Name: iOS Providers
14 | m_EditorClassIdentifier:
15 | m_RequiresSettingsUpdate: 0
16 | m_AutomaticLoading: 0
17 | m_AutomaticRunning: 0
18 | m_Loaders:
19 | - {fileID: 11400000, guid: 8121879a57a0348f1bd72288f7a36754, type: 2}
20 | --- !u!114 &11400000
21 | MonoBehaviour:
22 | m_ObjectHideFlags: 0
23 | m_CorrespondingSourceObject: {fileID: 0}
24 | m_PrefabInstance: {fileID: 0}
25 | m_PrefabAsset: {fileID: 0}
26 | m_GameObject: {fileID: 0}
27 | m_Enabled: 1
28 | m_EditorHideFlags: 0
29 | m_Script: {fileID: 11500000, guid: d2dc886499c26824283350fa532d087d, type: 3}
30 | m_Name: XRGeneralSettings
31 | m_EditorClassIdentifier:
32 | Keys: 0400000007000000
33 | Values:
34 | - {fileID: 7393501260922848161}
35 | - {fileID: 5811244143092264058}
36 | --- !u!114 &5811244143092264058
37 | MonoBehaviour:
38 | m_ObjectHideFlags: 0
39 | m_CorrespondingSourceObject: {fileID: 0}
40 | m_PrefabInstance: {fileID: 0}
41 | m_PrefabAsset: {fileID: 0}
42 | m_GameObject: {fileID: 0}
43 | m_Enabled: 1
44 | m_EditorHideFlags: 0
45 | m_Script: {fileID: 11500000, guid: d236b7d11115f2143951f1e14045df39, type: 3}
46 | m_Name: Android Settings
47 | m_EditorClassIdentifier:
48 | m_LoaderManagerInstance: {fileID: 6963159894050900061}
49 | m_InitManagerOnStart: 1
50 | --- !u!114 &6963159894050900061
51 | MonoBehaviour:
52 | m_ObjectHideFlags: 0
53 | m_CorrespondingSourceObject: {fileID: 0}
54 | m_PrefabInstance: {fileID: 0}
55 | m_PrefabAsset: {fileID: 0}
56 | m_GameObject: {fileID: 0}
57 | m_Enabled: 1
58 | m_EditorHideFlags: 0
59 | m_Script: {fileID: 11500000, guid: f4c3631f5e58749a59194e0cf6baf6d5, type: 3}
60 | m_Name: Android Providers
61 | m_EditorClassIdentifier:
62 | m_RequiresSettingsUpdate: 0
63 | m_AutomaticLoading: 0
64 | m_AutomaticRunning: 0
65 | m_Loaders:
66 | - {fileID: 11400000, guid: b9727c9278aa748a6a2b0fea3fceda4c, type: 2}
67 | --- !u!114 &7393501260922848161
68 | MonoBehaviour:
69 | m_ObjectHideFlags: 0
70 | m_CorrespondingSourceObject: {fileID: 0}
71 | m_PrefabInstance: {fileID: 0}
72 | m_PrefabAsset: {fileID: 0}
73 | m_GameObject: {fileID: 0}
74 | m_Enabled: 1
75 | m_EditorHideFlags: 0
76 | m_Script: {fileID: 11500000, guid: d236b7d11115f2143951f1e14045df39, type: 3}
77 | m_Name: iOS Settings
78 | m_EditorClassIdentifier:
79 | m_LoaderManagerInstance: {fileID: -6573352588750502918}
80 | m_InitManagerOnStart: 1
81 |
--------------------------------------------------------------------------------
/example/Assets/XR/XRGeneralSettings.asset.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 333d873be676d43348857333b9b2424f
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 0
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/example/Assets/arrow.obj:
--------------------------------------------------------------------------------
1 | # Blender v2.83.1 OBJ File: 'arrow.blend'
2 | # www.blender.org
3 | o Curve.001
4 | v -0.051080 -0.287953 0.037420
5 | v -0.051080 0.009798 0.037420
6 | v -0.173824 0.009798 0.037420
7 | v -0.003112 0.304726 0.037420
8 | v 0.170422 0.009798 0.037420
9 | v 0.047679 0.009798 0.037420
10 | v 0.047679 -0.287953 0.037420
11 | v -0.051080 -0.287953 -0.037580
12 | v -0.051080 0.009798 -0.037580
13 | v -0.173824 0.009798 -0.037580
14 | v -0.003112 0.304726 -0.037580
15 | v 0.170422 0.009798 -0.037580
16 | v 0.047679 0.009798 -0.037580
17 | v 0.047679 -0.287953 -0.037580
18 | vt 0.166667 0.000000
19 | vt 0.500000 0.000000
20 | vt 0.333333 0.000000
21 | vt 1.000000 0.000000
22 | vt 0.000000 0.000000
23 | vt 0.833333 0.000000
24 | vt 0.666667 0.000000
25 | vt 0.166667 0.000000
26 | vt 0.333333 0.000000
27 | vt 0.500000 0.000000
28 | vt 1.000000 0.000000
29 | vt 0.000000 0.000000
30 | vt 0.833333 0.000000
31 | vt 0.666667 0.000000
32 | vn 0.0000 -0.0000 1.0000
33 | vn -0.0000 0.0000 -1.0000
34 | vn 0.0000 -1.0000 0.0000
35 | vn -0.8655 0.5010 0.0000
36 | vn -1.0000 0.0000 0.0000
37 | vn 1.0000 0.0000 0.0000
38 | vn 0.8619 0.5071 0.0000
39 | usemtl Material.002
40 | s off
41 | f 2/1/1 4/2/1 3/3/1
42 | f 7/4/1 2/1/1 1/5/1
43 | f 7/4/1 4/2/1 2/1/1
44 | f 7/4/1 6/6/1 4/2/1
45 | f 6/6/1 5/7/1 4/2/1
46 | f 9/8/2 10/9/2 11/10/2
47 | f 14/11/2 8/12/2 9/8/2
48 | f 14/11/2 9/8/2 11/10/2
49 | f 14/11/2 11/10/2 13/13/2
50 | f 13/13/2 11/10/2 12/14/2
51 | f 2/1/3 3/3/3 10/9/3 9/8/3
52 | f 3/3/4 4/2/4 11/10/4 10/9/4
53 | f 7/4/3 1/5/3 8/12/3 14/11/3
54 | f 1/5/5 2/1/5 9/8/5 8/12/5
55 | f 6/6/6 7/4/6 14/11/6 13/13/6
56 | f 5/7/3 6/6/3 13/13/3 12/14/3
57 | f 4/2/7 5/7/7 12/14/7 11/10/7
58 |
--------------------------------------------------------------------------------
/example/Assets/arrow.obj.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: cb5d654324f42494d9a9f6086f740b77
3 | ModelImporter:
4 | serializedVersion: 19301
5 | internalIDToNameTable: []
6 | externalObjects: {}
7 | materials:
8 | materialImportMode: 1
9 | materialName: 0
10 | materialSearch: 1
11 | materialLocation: 1
12 | animations:
13 | legacyGenerateAnimations: 4
14 | bakeSimulation: 0
15 | resampleCurves: 1
16 | optimizeGameObjects: 0
17 | motionNodeName:
18 | rigImportErrors:
19 | rigImportWarnings:
20 | animationImportErrors:
21 | animationImportWarnings:
22 | animationRetargetingWarnings:
23 | animationDoRetargetingWarnings: 0
24 | importAnimatedCustomProperties: 0
25 | importConstraints: 0
26 | animationCompression: 1
27 | animationRotationError: 0.5
28 | animationPositionError: 0.5
29 | animationScaleError: 0.5
30 | animationWrapMode: 0
31 | extraExposedTransformPaths: []
32 | extraUserProperties: []
33 | clipAnimations: []
34 | isReadable: 0
35 | meshes:
36 | lODScreenPercentages: []
37 | globalScale: 1
38 | meshCompression: 0
39 | addColliders: 0
40 | useSRGBMaterialColor: 1
41 | sortHierarchyByName: 1
42 | importVisibility: 1
43 | importBlendShapes: 1
44 | importCameras: 1
45 | importLights: 1
46 | fileIdsGeneration: 2
47 | swapUVChannels: 0
48 | generateSecondaryUV: 0
49 | useFileUnits: 1
50 | keepQuads: 0
51 | weldVertices: 1
52 | preserveHierarchy: 0
53 | skinWeightsMode: 0
54 | maxBonesPerVertex: 4
55 | minBoneWeight: 0.001
56 | meshOptimizationFlags: -1
57 | indexFormat: 0
58 | secondaryUVAngleDistortion: 8
59 | secondaryUVAreaDistortion: 15.000001
60 | secondaryUVHardAngle: 88
61 | secondaryUVPackMargin: 4
62 | useFileScale: 1
63 | tangentSpace:
64 | normalSmoothAngle: 60
65 | normalImportMode: 0
66 | tangentImportMode: 3
67 | normalCalculationMode: 4
68 | legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
69 | blendShapeNormalImportMode: 1
70 | normalSmoothingSource: 0
71 | referencedClips: []
72 | importAnimation: 1
73 | humanDescription:
74 | serializedVersion: 3
75 | human: []
76 | skeleton: []
77 | armTwist: 0.5
78 | foreArmTwist: 0.5
79 | upperLegTwist: 0.5
80 | legTwist: 0.5
81 | armStretch: 0.05
82 | legStretch: 0.05
83 | feetSpacing: 0
84 | globalScale: 1
85 | rootMotionBoneName:
86 | hasTranslationDoF: 0
87 | hasExtraRoot: 0
88 | skeletonHasParents: 1
89 | lastHumanDescriptionAvatarSource: {instanceID: 0}
90 | autoGenerateAvatarMappingIfUnspecified: 1
91 | animationType: 2
92 | humanoidOversampling: 1
93 | avatarSetup: 0
94 | additionalBone: 0
95 | userData:
96 | assetBundleName:
97 | assetBundleVariant:
98 |
--------------------------------------------------------------------------------
/example/Assets/arrow_stylish.obj:
--------------------------------------------------------------------------------
1 | # Blender v2.91.0 OBJ File: 'arrow-yellow.blend'
2 | # www.blender.org
3 | mtllib arrow-yellow1.mtl
4 | o icon_positionArrow.001_icon_positionArrow
5 | v -0.151619 -0.191035 -0.000000
6 | v -0.151619 -0.194138 -0.000000
7 | v -0.150474 -0.198154 -0.000000
8 | v -0.135433 -0.206733 -0.000000
9 | v -0.147368 -0.202717 -0.000000
10 | v -0.131019 -0.205090 -0.000000
11 | v -0.124970 -0.202352 -0.000000
12 | v -0.105352 -0.191583 -0.000000
13 | v -0.134289 -0.139379 -0.000000
14 | v 0.140371 -0.164021 -0.000000
15 | v 0.084948 -0.006133 -0.000000
16 | v 0.086746 -0.182274 -0.000000
17 | v 0.007946 0.209069 0.000000
18 | v -0.008730 0.207609 0.000000
19 | v 0.009907 0.207061 0.000000
20 | v -0.001373 0.212902 0.000000
21 | v -0.004153 0.211625 0.000000
22 | v 0.001406 0.212537 0.000000
23 | v 0.012196 0.203228 0.000000
24 | v -0.012490 0.201403 0.000000
25 | v 0.015302 0.196292 0.000000
26 | v -0.015597 0.194649 0.000000
27 | v -0.019357 0.185523 0.000000
28 | v 0.025275 0.168547 0.000000
29 | v -0.029657 0.158509 0.000000
30 | v -0.087695 -0.005038 -0.000000
31 | v 0.144621 -0.176981 -0.000000
32 | v 0.108327 -0.194686 -0.000000
33 | v 0.148381 -0.191035 -0.000000
34 | v 0.124185 -0.203082 -0.000000
35 | v 0.131215 -0.206368 -0.000000
36 | v 0.148381 -0.193956 -0.000000
37 | v 0.138899 -0.206368 -0.000000
38 | v 0.147237 -0.199067 -0.000000
39 | v 0.143967 -0.203812 -0.000000
40 | v 0.133995 -0.206915 -0.000000
41 | v -0.000883 -0.128975 -0.000000
42 | v -0.143117 -0.205820 -0.000000
43 | v -0.139520 -0.207098 -0.000000
44 | v -0.150474 -0.198154 -0.060000
45 | v -0.151619 -0.194138 -0.060000
46 | v -0.151619 -0.191035 -0.060000
47 | v -0.147368 -0.202717 -0.060000
48 | v -0.135433 -0.206733 -0.060000
49 | v -0.131019 -0.205090 -0.060000
50 | v -0.134289 -0.139379 -0.060000
51 | v -0.105352 -0.191583 -0.060000
52 | v -0.124970 -0.202352 -0.060000
53 | v 0.086746 -0.182274 -0.060000
54 | v 0.084948 -0.006133 -0.060000
55 | v 0.140371 -0.164021 -0.060000
56 | v 0.009907 0.207061 -0.060000
57 | v -0.008730 0.207609 -0.060000
58 | v 0.007946 0.209069 -0.060000
59 | v 0.001406 0.212537 -0.060000
60 | v -0.004153 0.211625 -0.060000
61 | v -0.001373 0.212902 -0.060000
62 | v 0.012196 0.203228 -0.060000
63 | v -0.012490 0.201403 -0.060000
64 | v 0.015302 0.196292 -0.060000
65 | v -0.015597 0.194649 -0.060000
66 | v -0.019357 0.185523 -0.060000
67 | v 0.025275 0.168547 -0.060000
68 | v -0.029657 0.158509 -0.060000
69 | v -0.087695 -0.005038 -0.060000
70 | v 0.108327 -0.194686 -0.060000
71 | v 0.144621 -0.176981 -0.060000
72 | v 0.131215 -0.206368 -0.060000
73 | v 0.124185 -0.203082 -0.060000
74 | v 0.148381 -0.191035 -0.060000
75 | v 0.147237 -0.199067 -0.060000
76 | v 0.138899 -0.206368 -0.060000
77 | v 0.148381 -0.193956 -0.060000
78 | v 0.143967 -0.203812 -0.060000
79 | v 0.133995 -0.206915 -0.060000
80 | v -0.000883 -0.128975 -0.060000
81 | v -0.143117 -0.205820 -0.060000
82 | v -0.139520 -0.207098 -0.060000
83 | vn 0.0000 -0.0000 1.0000
84 | vn -0.0000 0.0000 -1.0000
85 | vn -0.5896 -0.8077 0.0000
86 | vn -0.8267 -0.5627 0.0000
87 | vn -0.9617 -0.2741 0.0000
88 | vn -1.0000 0.0000 0.0000
89 | vn -0.9481 0.3181 0.0000
90 | vn -0.9448 0.3277 0.0000
91 | vn -0.9424 0.3344 0.0000
92 | vn -0.9344 0.3563 0.0000
93 | vn -0.9246 0.3809 0.0000
94 | vn -0.9085 0.4179 0.0000
95 | vn -0.8553 0.5182 0.0000
96 | vn -0.6594 0.7518 0.0000
97 | vn -0.4177 0.9086 0.0000
98 | vn 0.1302 0.9915 0.0000
99 | vn 0.4685 0.8835 0.0000
100 | vn 0.7153 0.6989 0.0000
101 | vn 0.8586 0.5127 0.0000
102 | vn 0.9127 0.4087 0.0000
103 | vn 0.9411 0.3383 0.0000
104 | vn 0.9463 0.3233 0.0000
105 | vn 0.9436 0.3312 0.0000
106 | vn 0.9502 0.3117 0.0000
107 | vn 0.9660 0.2585 0.0000
108 | vn 0.9660 0.2584 0.0000
109 | vn 1.0000 0.0000 0.0000
110 | vn 0.9758 -0.2185 0.0000
111 | vn 0.8235 -0.5674 0.0000
112 | vn 0.4502 -0.8929 0.0000
113 | vn 0.1110 -0.9938 0.0000
114 | vn -0.1934 -0.9811 0.0000
115 | vn -0.4234 -0.9059 0.0000
116 | vn -0.4679 -0.8838 0.0000
117 | vn -0.4986 -0.8668 0.0000
118 | vn -0.5197 -0.8544 0.0000
119 | vn 0.5141 -0.8578 0.0000
120 | vn 0.4812 -0.8766 0.0000
121 | vn 0.4123 -0.9110 0.0000
122 | vn 0.3488 -0.9372 0.0000
123 | vn 0.0890 -0.9960 0.0000
124 | vn -0.3347 -0.9423 0.0000
125 | usemtl dfff00
126 | s 1
127 | f 1//1 2//1 3//1
128 | f 4//1 1//1 5//1
129 | f 1//1 3//1 5//1
130 | f 4//1 6//1 1//1
131 | f 7//1 8//1 9//1
132 | f 10//1 11//1 12//1
133 | f 13//1 14//1 15//1
134 | f 16//1 17//1 18//1
135 | f 18//1 17//1 13//1
136 | f 13//1 17//1 14//1
137 | f 15//1 14//1 19//1
138 | f 19//1 14//1 20//1
139 | f 21//1 19//1 20//1
140 | f 22//1 21//1 20//1
141 | f 22//1 23//1 21//1
142 | f 21//1 23//1 24//1
143 | f 24//1 23//1 25//1
144 | f 11//1 24//1 25//1
145 | f 26//1 11//1 25//1
146 | f 27//1 10//1 28//1
147 | f 29//1 30//1 31//1
148 | f 32//1 33//1 34//1
149 | f 34//1 33//1 35//1
150 | f 32//1 29//1 33//1
151 | f 33//1 29//1 36//1
152 | f 36//1 29//1 31//1
153 | f 29//1 27//1 30//1
154 | f 9//1 8//1 37//1
155 | f 30//1 27//1 28//1
156 | f 28//1 10//1 12//1
157 | f 12//1 11//1 37//1
158 | f 9//1 37//1 26//1
159 | f 37//1 11//1 26//1
160 | f 7//1 9//1 1//1
161 | f 6//1 7//1 1//1
162 | f 4//1 5//1 38//1
163 | f 39//1 4//1 38//1
164 | f 40//2 41//2 42//2
165 | f 43//2 42//2 44//2
166 | f 43//2 40//2 42//2
167 | f 42//2 45//2 44//2
168 | f 46//2 47//2 48//2
169 | f 49//2 50//2 51//2
170 | f 52//2 53//2 54//2
171 | f 55//2 56//2 57//2
172 | f 54//2 56//2 55//2
173 | f 53//2 56//2 54//2
174 | f 58//2 53//2 52//2
175 | f 59//2 53//2 58//2
176 | f 59//2 58//2 60//2
177 | f 59//2 60//2 61//2
178 | f 60//2 62//2 61//2
179 | f 63//2 62//2 60//2
180 | f 64//2 62//2 63//2
181 | f 64//2 63//2 50//2
182 | f 64//2 50//2 65//2
183 | f 66//2 51//2 67//2
184 | f 68//2 69//2 70//2
185 | f 71//2 72//2 73//2
186 | f 74//2 72//2 71//2
187 | f 72//2 70//2 73//2
188 | f 75//2 70//2 72//2
189 | f 68//2 70//2 75//2
190 | f 69//2 67//2 70//2
191 | f 76//2 47//2 46//2
192 | f 66//2 67//2 69//2
193 | f 49//2 51//2 66//2
194 | f 76//2 50//2 49//2
195 | f 65//2 76//2 46//2
196 | f 65//2 50//2 76//2
197 | f 42//2 46//2 48//2
198 | f 42//2 48//2 45//2
199 | f 77//2 43//2 44//2
200 | f 77//2 44//2 78//2
201 | f 5//3 77//3 38//3
202 | f 5//3 43//3 77//3
203 | f 3//4 43//4 5//4
204 | f 3//4 40//4 43//4
205 | f 2//5 40//5 3//5
206 | f 2//5 41//5 40//5
207 | f 1//6 41//6 2//6
208 | f 1//6 42//6 41//6
209 | f 9//7 42//7 1//7
210 | f 9//7 46//7 42//7
211 | f 26//8 46//8 9//8
212 | f 26//8 65//8 46//8
213 | f 25//9 65//9 26//9
214 | f 25//9 64//9 65//9
215 | f 23//10 64//10 25//10
216 | f 23//10 62//10 64//10
217 | f 22//11 62//11 23//11
218 | f 22//11 61//11 62//11
219 | f 20//12 61//12 22//12
220 | f 20//12 59//12 61//12
221 | f 14//13 59//13 20//13
222 | f 14//13 53//13 59//13
223 | f 17//14 53//14 14//14
224 | f 17//14 56//14 53//14
225 | f 16//15 56//15 17//15
226 | f 16//15 57//15 56//15
227 | f 18//16 57//16 16//16
228 | f 18//16 55//16 57//16
229 | f 13//17 55//17 18//17
230 | f 13//17 54//17 55//17
231 | f 15//18 54//18 13//18
232 | f 15//18 52//18 54//18
233 | f 19//19 52//19 15//19
234 | f 19//19 58//19 52//19
235 | f 21//20 58//20 19//20
236 | f 21//20 60//20 58//20
237 | f 24//21 60//21 21//21
238 | f 24//21 63//21 60//21
239 | f 11//22 63//22 24//22
240 | f 11//22 50//22 63//22
241 | f 10//23 50//23 11//23
242 | f 10//23 51//23 50//23
243 | f 27//24 51//24 10//24
244 | f 27//24 67//24 51//24
245 | f 29//25 67//26 27//25
246 | f 29//25 70//26 67//26
247 | f 32//27 70//27 29//27
248 | f 32//27 73//27 70//27
249 | f 34//28 73//28 32//28
250 | f 34//28 71//28 73//28
251 | f 35//29 71//29 34//29
252 | f 35//29 74//29 71//29
253 | f 33//30 74//30 35//30
254 | f 33//30 72//30 74//30
255 | f 36//31 72//31 33//31
256 | f 36//31 75//31 72//31
257 | f 31//32 75//32 36//32
258 | f 31//32 68//32 75//32
259 | f 30//33 68//33 31//33
260 | f 30//33 69//33 68//33
261 | f 28//34 69//34 30//34
262 | f 28//34 66//34 69//34
263 | f 12//35 66//35 28//35
264 | f 12//35 49//35 66//35
265 | f 37//36 49//36 12//36
266 | f 37//36 76//36 49//36
267 | f 8//37 76//37 37//37
268 | f 8//37 47//37 76//37
269 | f 7//38 47//38 8//38
270 | f 7//38 48//38 47//38
271 | f 6//39 48//39 7//39
272 | f 6//39 45//39 48//39
273 | f 4//40 45//40 6//40
274 | f 4//40 44//40 45//40
275 | f 39//41 44//41 4//41
276 | f 39//41 78//41 44//41
277 | f 38//42 78//42 39//42
278 | f 38//42 77//42 78//42
279 |
--------------------------------------------------------------------------------
/example/Assets/arrow_stylish.obj.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: bbcbc7a02c8d2412db311923574a960c
3 | ModelImporter:
4 | serializedVersion: 20200
5 | internalIDToNameTable: []
6 | externalObjects: {}
7 | materials:
8 | materialImportMode: 2
9 | materialName: 0
10 | materialSearch: 1
11 | materialLocation: 1
12 | animations:
13 | legacyGenerateAnimations: 4
14 | bakeSimulation: 0
15 | resampleCurves: 1
16 | optimizeGameObjects: 0
17 | motionNodeName:
18 | rigImportErrors:
19 | rigImportWarnings:
20 | animationImportErrors:
21 | animationImportWarnings:
22 | animationRetargetingWarnings:
23 | animationDoRetargetingWarnings: 0
24 | importAnimatedCustomProperties: 0
25 | importConstraints: 0
26 | animationCompression: 1
27 | animationRotationError: 0.5
28 | animationPositionError: 0.5
29 | animationScaleError: 0.5
30 | animationWrapMode: 0
31 | extraExposedTransformPaths: []
32 | extraUserProperties: []
33 | clipAnimations: []
34 | isReadable: 0
35 | meshes:
36 | lODScreenPercentages: []
37 | globalScale: 1
38 | meshCompression: 0
39 | addColliders: 0
40 | useSRGBMaterialColor: 1
41 | sortHierarchyByName: 1
42 | importVisibility: 1
43 | importBlendShapes: 1
44 | importCameras: 1
45 | importLights: 1
46 | fileIdsGeneration: 2
47 | swapUVChannels: 0
48 | generateSecondaryUV: 0
49 | useFileUnits: 1
50 | keepQuads: 0
51 | weldVertices: 1
52 | bakeAxisConversion: 0
53 | preserveHierarchy: 0
54 | skinWeightsMode: 0
55 | maxBonesPerVertex: 4
56 | minBoneWeight: 0.001
57 | meshOptimizationFlags: -1
58 | indexFormat: 0
59 | secondaryUVAngleDistortion: 8
60 | secondaryUVAreaDistortion: 15.000001
61 | secondaryUVHardAngle: 88
62 | secondaryUVMarginMethod: 1
63 | secondaryUVMinLightmapResolution: 40
64 | secondaryUVMinObjectScale: 1
65 | secondaryUVPackMargin: 4
66 | useFileScale: 1
67 | tangentSpace:
68 | normalSmoothAngle: 60
69 | normalImportMode: 0
70 | tangentImportMode: 3
71 | normalCalculationMode: 4
72 | legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
73 | blendShapeNormalImportMode: 1
74 | normalSmoothingSource: 0
75 | referencedClips: []
76 | importAnimation: 1
77 | humanDescription:
78 | serializedVersion: 3
79 | human: []
80 | skeleton: []
81 | armTwist: 0.5
82 | foreArmTwist: 0.5
83 | upperLegTwist: 0.5
84 | legTwist: 0.5
85 | armStretch: 0.05
86 | legStretch: 0.05
87 | feetSpacing: 0
88 | globalScale: 1
89 | rootMotionBoneName:
90 | hasTranslationDoF: 0
91 | hasExtraRoot: 0
92 | skeletonHasParents: 1
93 | lastHumanDescriptionAvatarSource: {instanceID: 0}
94 | autoGenerateAvatarMappingIfUnspecified: 1
95 | animationType: 2
96 | humanoidOversampling: 1
97 | avatarSetup: 0
98 | addHumanoidExtraRootOnlyWhenUsingAvatar: 1
99 | additionalBone: 0
100 | userData:
101 | assetBundleName:
102 | assetBundleVariant:
103 |
--------------------------------------------------------------------------------
/example/Assets/compass material.mat:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!21 &2100000
4 | Material:
5 | serializedVersion: 6
6 | m_ObjectHideFlags: 0
7 | m_CorrespondingSourceObject: {fileID: 0}
8 | m_PrefabInstance: {fileID: 0}
9 | m_PrefabAsset: {fileID: 0}
10 | m_Name: compass material
11 | m_Shader: {fileID: 10755, guid: 0000000000000000f000000000000000, type: 0}
12 | m_ShaderKeywords:
13 | m_LightmapFlags: 4
14 | m_EnableInstancingVariants: 0
15 | m_DoubleSidedGI: 0
16 | m_CustomRenderQueue: -1
17 | stringTagMap: {}
18 | disabledShaderPasses: []
19 | m_SavedProperties:
20 | serializedVersion: 3
21 | m_TexEnvs:
22 | - _BumpMap:
23 | m_Texture: {fileID: 0}
24 | m_Scale: {x: 1, y: 1}
25 | m_Offset: {x: 0, y: 0}
26 | - _DetailAlbedoMap:
27 | m_Texture: {fileID: 0}
28 | m_Scale: {x: 1, y: 1}
29 | m_Offset: {x: 0, y: 0}
30 | - _DetailMask:
31 | m_Texture: {fileID: 0}
32 | m_Scale: {x: 1, y: 1}
33 | m_Offset: {x: 0, y: 0}
34 | - _DetailNormalMap:
35 | m_Texture: {fileID: 0}
36 | m_Scale: {x: 1, y: 1}
37 | m_Offset: {x: 0, y: 0}
38 | - _EmissionMap:
39 | m_Texture: {fileID: 0}
40 | m_Scale: {x: 1, y: 1}
41 | m_Offset: {x: 0, y: 0}
42 | - _MainTex:
43 | m_Texture: {fileID: 0}
44 | m_Scale: {x: 1, y: 1}
45 | m_Offset: {x: 0, y: 0}
46 | - _MetallicGlossMap:
47 | m_Texture: {fileID: 0}
48 | m_Scale: {x: 1, y: 1}
49 | m_Offset: {x: 0, y: 0}
50 | - _OcclusionMap:
51 | m_Texture: {fileID: 0}
52 | m_Scale: {x: 1, y: 1}
53 | m_Offset: {x: 0, y: 0}
54 | - _ParallaxMap:
55 | m_Texture: {fileID: 0}
56 | m_Scale: {x: 1, y: 1}
57 | m_Offset: {x: 0, y: 0}
58 | m_Floats:
59 | - _BumpScale: 1
60 | - _Cutoff: 0.5
61 | - _DetailNormalMapScale: 1
62 | - _DstBlend: 0
63 | - _GlossMapScale: 1
64 | - _Glossiness: 0.5
65 | - _GlossyReflections: 1
66 | - _Metallic: 0
67 | - _Mode: 0
68 | - _OcclusionStrength: 1
69 | - _Parallax: 0.02
70 | - _SmoothnessTextureChannel: 0
71 | - _SpecularHighlights: 1
72 | - _SrcBlend: 1
73 | - _UVSec: 0
74 | - _ZWrite: 1
75 | m_Colors:
76 | - _Color: {r: 0, g: 0.49019608, b: 1, a: 1}
77 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
78 | m_BuildTextureStacks: []
79 |
--------------------------------------------------------------------------------
/example/Assets/compass material.mat.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 03f0b7088a12e4e16b9a4ec65757aec9
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 2100000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/example/Assets/examplescene.unity.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 019c77a6f1122477097d179919314747
3 | timeCreated: 1504697561
4 | licenseType: Pro
5 | DefaultImporter:
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/example/Assets/finish material.mat:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!21 &2100000
4 | Material:
5 | serializedVersion: 6
6 | m_ObjectHideFlags: 0
7 | m_CorrespondingSourceObject: {fileID: 0}
8 | m_PrefabInstance: {fileID: 0}
9 | m_PrefabAsset: {fileID: 0}
10 | m_Name: finish material
11 | m_Shader: {fileID: 10752, guid: 0000000000000000f000000000000000, type: 0}
12 | m_ShaderKeywords:
13 | m_LightmapFlags: 4
14 | m_EnableInstancingVariants: 0
15 | m_DoubleSidedGI: 0
16 | m_CustomRenderQueue: -1
17 | stringTagMap: {}
18 | disabledShaderPasses: []
19 | m_SavedProperties:
20 | serializedVersion: 3
21 | m_TexEnvs:
22 | - _BumpMap:
23 | m_Texture: {fileID: 0}
24 | m_Scale: {x: 1, y: 1}
25 | m_Offset: {x: 0, y: 0}
26 | - _DetailAlbedoMap:
27 | m_Texture: {fileID: 0}
28 | m_Scale: {x: 1, y: 1}
29 | m_Offset: {x: 0, y: 0}
30 | - _DetailMask:
31 | m_Texture: {fileID: 0}
32 | m_Scale: {x: 1, y: 1}
33 | m_Offset: {x: 0, y: 0}
34 | - _DetailNormalMap:
35 | m_Texture: {fileID: 0}
36 | m_Scale: {x: 1, y: 1}
37 | m_Offset: {x: 0, y: 0}
38 | - _EmissionMap:
39 | m_Texture: {fileID: 0}
40 | m_Scale: {x: 1, y: 1}
41 | m_Offset: {x: 0, y: 0}
42 | - _MainTex:
43 | m_Texture: {fileID: 2800000, guid: 3d45effa5567c4d9183bc5ecac8ec8bb, type: 3}
44 | m_Scale: {x: 1, y: 1}
45 | m_Offset: {x: 0, y: 0}
46 | - _MetallicGlossMap:
47 | m_Texture: {fileID: 0}
48 | m_Scale: {x: 1, y: 1}
49 | m_Offset: {x: 0, y: 0}
50 | - _OcclusionMap:
51 | m_Texture: {fileID: 0}
52 | m_Scale: {x: 1, y: 1}
53 | m_Offset: {x: 0, y: 0}
54 | - _ParallaxMap:
55 | m_Texture: {fileID: 0}
56 | m_Scale: {x: 1, y: 1}
57 | m_Offset: {x: 0, y: 0}
58 | m_Floats:
59 | - _BumpScale: 1
60 | - _Cutoff: 0.5
61 | - _DetailNormalMapScale: 1
62 | - _DstBlend: 0
63 | - _GlossMapScale: 1
64 | - _Glossiness: 0.5
65 | - _GlossyReflections: 1
66 | - _Metallic: 0
67 | - _Mode: 0
68 | - _OcclusionStrength: 1
69 | - _Parallax: 0.02
70 | - _SmoothnessTextureChannel: 0
71 | - _SpecularHighlights: 1
72 | - _SrcBlend: 1
73 | - _UVSec: 0
74 | - _ZWrite: 1
75 | m_Colors:
76 | - _Color: {r: 0.7686275, g: 0.7686275, b: 0.7686275, a: 1}
77 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
78 |
--------------------------------------------------------------------------------
/example/Assets/finish material.mat.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 00c9aa637b75d4495bb0cfc6ef291e6d
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 0
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/example/Assets/finish texture.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IndoorAtlas/unity-plugin/4c6659bce5ee936bdb2c4393010fc852ba640289/example/Assets/finish texture.png
--------------------------------------------------------------------------------
/example/Assets/finish texture.png.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 3d45effa5567c4d9183bc5ecac8ec8bb
3 | TextureImporter:
4 | internalIDToNameTable: []
5 | externalObjects: {}
6 | serializedVersion: 11
7 | mipmaps:
8 | mipMapMode: 0
9 | enableMipMap: 1
10 | sRGBTexture: 1
11 | linearTexture: 0
12 | fadeOut: 0
13 | borderMipMap: 0
14 | mipMapsPreserveCoverage: 0
15 | alphaTestReferenceValue: 0.5
16 | mipMapFadeDistanceStart: 1
17 | mipMapFadeDistanceEnd: 3
18 | bumpmap:
19 | convertToNormalMap: 0
20 | externalNormalMap: 0
21 | heightScale: 0.25
22 | normalMapFilter: 0
23 | isReadable: 0
24 | streamingMipmaps: 0
25 | streamingMipmapsPriority: 0
26 | grayScaleToAlpha: 0
27 | generateCubemap: 6
28 | cubemapConvolution: 0
29 | seamlessCubemap: 0
30 | textureFormat: 1
31 | maxTextureSize: 2048
32 | textureSettings:
33 | serializedVersion: 2
34 | filterMode: -1
35 | aniso: -1
36 | mipBias: -100
37 | wrapU: -1
38 | wrapV: -1
39 | wrapW: -1
40 | nPOTScale: 1
41 | lightmap: 0
42 | compressionQuality: 50
43 | spriteMode: 0
44 | spriteExtrude: 1
45 | spriteMeshType: 1
46 | alignment: 0
47 | spritePivot: {x: 0.5, y: 0.5}
48 | spritePixelsToUnits: 100
49 | spriteBorder: {x: 0, y: 0, z: 0, w: 0}
50 | spriteGenerateFallbackPhysicsShape: 1
51 | alphaUsage: 1
52 | alphaIsTransparency: 0
53 | spriteTessellationDetail: -1
54 | textureType: 0
55 | textureShape: 1
56 | singleChannelComponent: 0
57 | maxTextureSizeSet: 0
58 | compressionQualitySet: 0
59 | textureFormatSet: 0
60 | applyGammaDecoding: 0
61 | platformSettings:
62 | - serializedVersion: 3
63 | buildTarget: DefaultTexturePlatform
64 | maxTextureSize: 2048
65 | resizeAlgorithm: 0
66 | textureFormat: -1
67 | textureCompression: 1
68 | compressionQuality: 50
69 | crunchedCompression: 0
70 | allowsAlphaSplitting: 0
71 | overridden: 0
72 | androidETC2FallbackOverride: 0
73 | forceMaximumCompressionQuality_BC6H_BC7: 0
74 | spriteSheet:
75 | serializedVersion: 2
76 | sprites: []
77 | outline: []
78 | physicsShape: []
79 | bones: []
80 | spriteID:
81 | internalID: 0
82 | vertices: []
83 | indices:
84 | edges: []
85 | weights: []
86 | secondaryTextures: []
87 | spritePackingTag:
88 | pSDRemoveMatte: 0
89 | pSDShowRemoveMatteOption: 0
90 | userData:
91 | assetBundleName:
92 | assetBundleVariant:
93 |
--------------------------------------------------------------------------------
/example/Assets/finish.obj:
--------------------------------------------------------------------------------
1 | # Blender v2.83.1 OBJ File: 'finish.blend'
2 | # www.blender.org
3 | mtllib finish.mtl
4 | o Finish_Cylinder.001
5 | v -0.054288 -0.379301 -0.030486
6 | v -0.054288 0.248064 -0.030486
7 | v -0.032731 -0.379301 -0.021557
8 | v -0.032731 0.248064 -0.021557
9 | v -0.023802 -0.379301 0.000000
10 | v -0.023802 0.248064 0.000000
11 | v -0.032731 -0.379301 0.021557
12 | v -0.032731 0.248064 0.021557
13 | v -0.054288 -0.379301 0.030486
14 | v -0.054288 0.248064 0.030486
15 | v -0.075845 -0.379301 0.021557
16 | v -0.075845 0.248064 0.021557
17 | v -0.084775 -0.379301 -0.000000
18 | v -0.084775 0.248064 -0.000000
19 | v -0.075845 -0.379301 -0.021557
20 | v -0.075845 0.248064 -0.021557
21 | v 0.032251 -0.026142 -0.015110
22 | v 0.032251 -0.026142 0.015110
23 | v -0.032251 0.049276 -0.015110
24 | v -0.032251 -0.015226 -0.015110
25 | v -0.032251 -0.015226 0.015110
26 | v 0.096752 -0.024267 -0.015110
27 | v 0.161254 0.051666 -0.015110
28 | v 0.161254 -0.012836 -0.015110
29 | v 0.161254 -0.012836 0.015110
30 | v 0.096752 0.040235 -0.015110
31 | v 0.096752 -0.024267 0.015110
32 | v 0.225756 0.051770 -0.015110
33 | v 0.225756 -0.012731 -0.015110
34 | v 0.225756 0.051770 0.015110
35 | v 0.225756 -0.012731 0.015110
36 | v 0.290257 -0.024227 -0.015110
37 | v 0.354759 0.032251 -0.015110
38 | v 0.290257 0.040275 0.015110
39 | v 0.290257 -0.024227 0.015110
40 | v 0.419261 0.032251 -0.015110
41 | v 0.419261 -0.032251 -0.015110
42 | v 0.419261 0.032251 0.015110
43 | v 0.419261 -0.032251 0.015110
44 | v 0.354759 -0.032251 -0.015110
45 | v 0.354759 0.032251 0.015110
46 | v 0.354759 -0.032251 0.015110
47 | v 0.032251 0.038359 0.015110
48 | v -0.032251 0.113778 -0.015110
49 | v -0.032251 0.049276 0.015110
50 | v 0.096752 0.104736 -0.015110
51 | v 0.032251 0.038359 -0.015110
52 | v 0.032251 0.102861 0.015110
53 | v 0.161254 0.051666 0.015110
54 | v 0.096752 0.040235 0.015110
55 | v 0.161254 0.116167 -0.015110
56 | v 0.290257 0.104776 -0.015110
57 | v 0.290257 0.040275 -0.015110
58 | v 0.419261 0.096752 -0.015110
59 | v 0.032251 0.102861 -0.015110
60 | v -0.032251 0.178279 0.015110
61 | v -0.032251 0.113778 0.015110
62 | v 0.096752 0.104736 0.015110
63 | v 0.161254 0.180669 0.015110
64 | v 0.161254 0.116167 0.015110
65 | v 0.096752 0.169238 0.015110
66 | v 0.225756 0.180773 -0.015110
67 | v 0.225756 0.116272 -0.015110
68 | v 0.290257 0.104776 0.015110
69 | v 0.225756 0.180773 0.015110
70 | v 0.225756 0.116272 0.015110
71 | v 0.354759 0.096752 -0.015110
72 | v 0.419261 0.096752 0.015110
73 | v 0.354759 0.096752 0.015110
74 | v 0.032251 0.231864 0.015110
75 | v -0.032251 0.242781 -0.015110
76 | v -0.032251 0.178279 -0.015110
77 | v -0.032251 0.242781 0.015110
78 | v 0.032251 0.231864 -0.015110
79 | v 0.032251 0.167363 -0.015110
80 | v 0.032251 0.167363 0.015110
81 | v 0.161254 0.180669 -0.015110
82 | v 0.161254 0.245171 0.015110
83 | v 0.096752 0.233740 -0.015110
84 | v 0.096752 0.169238 -0.015110
85 | v 0.096752 0.233740 0.015110
86 | v 0.225756 0.245275 -0.015110
87 | v 0.161254 0.245171 -0.015110
88 | v 0.290257 0.169278 -0.015110
89 | v 0.290257 0.233780 0.015110
90 | v 0.225756 0.245275 0.015110
91 | v 0.354759 0.225756 -0.015110
92 | v 0.290257 0.233780 -0.015110
93 | v 0.290257 0.169278 0.015110
94 | v 0.419261 0.225756 -0.015110
95 | v 0.419261 0.161254 -0.015110
96 | v 0.419261 0.225756 0.015110
97 | v 0.419261 0.161254 0.015110
98 | v 0.354759 0.161254 -0.015110
99 | v 0.354759 0.225756 0.015110
100 | v 0.354759 0.161254 0.015110
101 | vt 0.274485 0.452109
102 | vt 0.284538 0.452109
103 | vt 0.291647 0.454553
104 | vt 0.291647 0.458009
105 | vt 0.284538 0.460453
106 | vt 0.274485 0.460453
107 | vt 0.267376 0.458009
108 | vt 0.267376 0.454553
109 | vt 0.274485 0.443766
110 | vt 0.284538 0.443766
111 | vt 0.291647 0.446209
112 | vt 0.291647 0.449665
113 | vt 0.284538 0.452109
114 | vt 0.274485 0.452109
115 | vt 0.267376 0.449665
116 | vt 0.267376 0.446209
117 | vt 0.054191 0.470609
118 | vt 0.062103 0.423862
119 | vt 0.110188 0.423862
120 | vt 0.102277 0.470609
121 | vt 0.000000 0.000000
122 | vt 0.000000 0.249926
123 | vt 0.142954 0.249989
124 | vt 0.142933 0.000000
125 | vt 0.102277 0.492822
126 | vt 0.054191 0.492822
127 | vt 0.110188 0.539568
128 | vt 0.062103 0.539568
129 | vt 0.749732 0.468727
130 | vt 0.748127 0.413546
131 | vt 0.803355 0.413546
132 | vt 0.804959 0.468727
133 | vt 0.804959 0.494591
134 | vt 0.749732 0.494591
135 | vt 0.803355 0.549772
136 | vt 0.748127 0.549772
137 | vt 0.192040 0.498917
138 | vt 0.145356 0.507190
139 | vt 0.145356 0.459040
140 | vt 0.192040 0.450767
141 | vt 0.214253 0.450767
142 | vt 0.214253 0.498917
143 | vt 0.260936 0.459040
144 | vt 0.260936 0.507190
145 | vt 0.860451 0.494614
146 | vt 0.860540 0.549818
147 | vt 0.805336 0.549818
148 | vt 0.805247 0.494614
149 | vt 0.805247 0.468750
150 | vt 0.860451 0.468750
151 | vt 0.805336 0.413546
152 | vt 0.860540 0.413546
153 | vt 0.145356 0.381631
154 | vt 0.153675 0.334956
155 | vt 0.201833 0.334956
156 | vt 0.193514 0.381631
157 | vt 0.193514 0.403844
158 | vt 0.145356 0.403844
159 | vt 0.201833 0.450520
160 | vt 0.153675 0.450520
161 | vt 0.744524 0.494174
162 | vt 0.737710 0.548955
163 | vt 0.682080 0.548955
164 | vt 0.688895 0.494174
165 | vt 0.688895 0.468309
166 | vt 0.744524 0.468309
167 | vt 0.682080 0.413527
168 | vt 0.737710 0.413527
169 | vt 0.105212 0.371360
170 | vt 0.088280 0.334956
171 | vt 0.145109 0.334956
172 | vt 0.145109 0.391785
173 | vt 0.122839 0.415033
174 | vt 0.098697 0.380461
175 | vt 0.063077 0.353752
176 | vt 0.054191 0.423616
177 | vt 0.748127 0.550059
178 | vt 0.802557 0.559271
179 | vt 0.802557 0.615261
180 | vt 0.748127 0.606049
181 | vt 0.680431 0.130727
182 | vt 0.680431 0.380660
183 | vt 0.823661 0.380714
184 | vt 0.823385 0.130789
185 | vt 0.859677 0.606095
186 | vt 0.805247 0.615307
187 | vt 0.805247 0.559318
188 | vt 0.859677 0.550106
189 | vt 0.310969 0.565058
190 | vt 0.358360 0.563681
191 | vt 0.358360 0.611112
192 | vt 0.310969 0.612489
193 | vt 0.101582 0.645294
194 | vt 0.054191 0.643916
195 | vt 0.054191 0.596485
196 | vt 0.101582 0.597863
197 | vt 0.736437 0.605307
198 | vt 0.682080 0.614940
199 | vt 0.682080 0.558876
200 | vt 0.736437 0.549243
201 | vt 0.630288 0.582910
202 | vt 0.575931 0.573277
203 | vt 0.575931 0.517213
204 | vt 0.630288 0.526846
205 | vt 0.358380 0.660147
206 | vt 0.310969 0.660224
207 | vt 0.310969 0.612813
208 | vt 0.358380 0.612736
209 | vt 0.239698 0.665044
210 | vt 0.192287 0.664968
211 | vt 0.192287 0.617557
212 | vt 0.239698 0.617633
213 | vt 0.868460 0.410487
214 | vt 0.814112 0.400801
215 | vt 0.814112 0.344728
216 | vt 0.868460 0.354413
217 | vt 0.868460 0.334754
218 | vt 0.814112 0.344440
219 | vt 0.814112 0.288366
220 | vt 0.868460 0.278680
221 | vt 0.296050 0.388585
222 | vt 0.249002 0.382732
223 | vt 0.249002 0.334956
224 | vt 0.296050 0.340808
225 | vt 0.343346 0.382732
226 | vt 0.296297 0.388585
227 | vt 0.296297 0.340808
228 | vt 0.343346 0.334956
229 | vt 0.860828 0.494615
230 | vt 0.916032 0.494615
231 | vt 0.916032 0.549819
232 | vt 0.860828 0.549819
233 | vt 0.860828 0.468750
234 | vt 0.916032 0.468750
235 | vt 0.860828 0.413546
236 | vt 0.916032 0.413546
237 | vt 0.192287 0.561313
238 | vt 0.239033 0.569224
239 | vt 0.239033 0.617310
240 | vt 0.192287 0.609398
241 | vt 0.000000 0.499859
242 | vt 0.000000 0.749661
243 | vt 0.143428 0.749666
244 | vt 0.143230 0.499913
245 | vt 0.357715 0.555522
246 | vt 0.310969 0.563434
247 | vt 0.310969 0.515348
248 | vt 0.357715 0.507437
249 | vt 0.737261 0.670455
250 | vt 0.682080 0.672059
251 | vt 0.682080 0.616832
252 | vt 0.737261 0.615228
253 | vt 0.631111 0.640029
254 | vt 0.575931 0.638425
255 | vt 0.575931 0.583198
256 | vt 0.631111 0.584802
257 | vt 0.054191 0.548088
258 | vt 0.100875 0.539815
259 | vt 0.100875 0.587965
260 | vt 0.054191 0.596238
261 | vt 0.192040 0.617736
262 | vt 0.145356 0.609463
263 | vt 0.145356 0.561313
264 | vt 0.192040 0.569586
265 | vt 0.805247 0.670799
266 | vt 0.805247 0.615595
267 | vt 0.860451 0.615684
268 | vt 0.860451 0.670888
269 | vt 0.803331 0.670842
270 | vt 0.748127 0.670752
271 | vt 0.748127 0.615548
272 | vt 0.803331 0.615637
273 | vt 0.248755 0.448156
274 | vt 0.202080 0.439837
275 | vt 0.202080 0.391679
276 | vt 0.248755 0.399998
277 | vt 0.202080 0.343274
278 | vt 0.248755 0.334956
279 | vt 0.248755 0.383114
280 | vt 0.202080 0.391432
281 | vt 0.923529 0.403856
282 | vt 0.868748 0.397042
283 | vt 0.868748 0.341412
284 | vt 0.923529 0.348227
285 | vt 0.868748 0.285495
286 | vt 0.923529 0.278680
287 | vt 0.923529 0.334310
288 | vt 0.868748 0.341125
289 | vt 0.356329 0.437566
290 | vt 0.308918 0.437566
291 | vt 0.308918 0.390155
292 | vt 0.356329 0.390155
293 | vt 0.356329 0.459779
294 | vt 0.308918 0.459779
295 | vt 0.356329 0.507190
296 | vt 0.308918 0.507190
297 | vt 0.631920 0.462495
298 | vt 0.575931 0.462495
299 | vt 0.575931 0.436631
300 | vt 0.631920 0.436631
301 | vt 0.641132 0.382201
302 | vt 0.585143 0.382201
303 | vt 0.680431 0.630462
304 | vt 0.680431 0.880538
305 | vt 0.824000 0.880538
306 | vt 0.823858 0.630467
307 | vt 0.585143 0.516925
308 | vt 0.641132 0.516925
309 | vt 0.261913 0.554828
310 | vt 0.309344 0.554828
311 | vt 0.309344 0.577041
312 | vt 0.261913 0.577041
313 | vt 0.263291 0.624432
314 | vt 0.310722 0.624432
315 | vt 0.310722 0.507437
316 | vt 0.263291 0.507437
317 | vt 0.748127 0.333037
318 | vt 0.804192 0.333037
319 | vt 0.804192 0.358902
320 | vt 0.748127 0.358902
321 | vt 0.757761 0.413259
322 | vt 0.813825 0.413259
323 | vt 0.813825 0.278680
324 | vt 0.757761 0.278680
325 | vt 0.261183 0.437566
326 | vt 0.308594 0.437566
327 | vt 0.308594 0.459779
328 | vt 0.261183 0.459779
329 | vt 0.261260 0.507190
330 | vt 0.308671 0.507190
331 | vt 0.308671 0.390155
332 | vt 0.261260 0.390155
333 | vt 0.738154 0.358892
334 | vt 0.682080 0.358892
335 | vt 0.682080 0.333028
336 | vt 0.738154 0.333028
337 | vt 0.747840 0.278680
338 | vt 0.691766 0.278680
339 | vt 0.691766 0.413240
340 | vt 0.747840 0.413240
341 | vt 0.192404 0.555213
342 | vt 0.192404 0.507437
343 | vt 0.214618 0.507437
344 | vt 0.214618 0.555213
345 | vt 0.261666 0.561066
346 | vt 0.261666 0.513290
347 | vt 0.145356 0.513290
348 | vt 0.145356 0.561066
349 | vt 0.635338 0.321068
350 | vt 0.681793 0.344851
351 | vt 0.655863 0.371920
352 | vt 0.627752 0.331666
353 | vt 0.586277 0.300566
354 | vt 0.575931 0.381913
355 | vt 0.615622 0.278680
356 | vt 0.681793 0.278680
357 | vt 0.267376 0.443766
358 | vt 0.267376 0.536687
359 | vt 0.257322 0.536687
360 | vt 0.257322 0.443766
361 | vt 0.222997 0.443766
362 | vt 0.222997 0.536687
363 | vt 0.215888 0.536687
364 | vt 0.215888 0.443766
365 | vt 0.205834 0.536687
366 | vt 0.205834 0.443766
367 | vt 0.198725 0.536687
368 | vt 0.198725 0.443766
369 | vt 0.257322 0.443766
370 | vt 0.257322 0.536687
371 | vt 0.247269 0.536687
372 | vt 0.247269 0.443766
373 | vt 0.240160 0.536687
374 | vt 0.240160 0.443766
375 | vt 0.222997 0.536687
376 | vt 0.222997 0.443766
377 | vt 0.233051 0.443766
378 | vt 0.233051 0.536687
379 | vt 0.240159 0.443766
380 | vt 0.240160 0.536687
381 | vn 0.0000 1.0000 -0.0000
382 | vn 0.0000 -1.0000 0.0000
383 | vn 0.0000 0.0000 1.0000
384 | vn -1.0000 0.0000 0.0000
385 | vn -0.1669 -0.9860 0.0000
386 | vn 0.0000 0.0000 -1.0000
387 | vn 0.0291 -0.9996 0.0000
388 | vn 0.1745 -0.9847 0.0000
389 | vn 0.0016 -1.0000 0.0000
390 | vn -0.1755 -0.9845 0.0000
391 | vn -0.1234 -0.9924 0.0000
392 | vn 1.0000 0.0000 0.0000
393 | vn 0.1669 0.9860 0.0000
394 | vn -0.0291 0.9996 0.0000
395 | vn -0.1745 0.9847 0.0000
396 | vn -0.0016 1.0000 0.0000
397 | vn 0.1755 0.9845 0.0000
398 | vn 0.1234 0.9924 0.0000
399 | vn 0.0000 -0.6302 -0.7764
400 | vn 0.0000 0.6302 -0.7764
401 | vn 0.5490 0.6302 -0.5490
402 | vn 0.5490 -0.6302 -0.5490
403 | vn 0.7764 0.6302 0.0000
404 | vn 0.7764 -0.6302 0.0000
405 | vn 0.5490 0.6302 0.5490
406 | vn 0.5490 -0.6302 0.5490
407 | vn 0.0000 0.6302 0.7764
408 | vn 0.0000 -0.6302 0.7764
409 | vn -0.5490 0.6302 0.5490
410 | vn -0.5490 -0.6302 0.5490
411 | vn -0.7764 0.6302 0.0000
412 | vn -0.7764 -0.6302 0.0000
413 | vn -0.5490 0.6302 -0.5490
414 | vn -0.5490 -0.6302 -0.5490
415 | g Finish_Cylinder.001_Texture
416 | usemtl Texture
417 | s off
418 | f 4/1/1 2/2/1 16/3/1 14/4/1 12/5/1 10/6/1 8/7/1 6/8/1
419 | f 1/9/2 3/10/2 5/11/2 7/12/2 9/13/2 11/14/2 13/15/2 15/16/2
420 | f 18/17/3 43/18/3 45/19/3 21/20/3
421 | f 21/21/4 45/22/4 19/23/4 20/24/4
422 | f 20/25/5 17/26/5 18/17/5 21/20/5
423 | f 20/25/6 19/27/6 47/28/6 17/26/6
424 | f 27/29/3 50/30/3 43/31/3 18/32/3
425 | f 17/33/7 22/34/7 27/29/7 18/32/7
426 | f 17/33/6 47/35/6 26/36/6 22/34/6
427 | f 25/37/3 49/38/3 50/39/3 27/40/3
428 | f 22/41/8 24/42/8 25/37/8 27/40/8
429 | f 22/41/6 26/43/6 23/44/6 24/42/6
430 | f 31/45/3 30/46/3 49/47/3 25/48/3
431 | f 24/49/9 29/50/9 31/45/9 25/48/9
432 | f 24/49/6 23/51/6 28/52/6 29/50/6
433 | f 35/53/3 34/54/3 30/55/3 31/56/3
434 | f 29/57/10 32/58/10 35/53/10 31/56/10
435 | f 29/57/6 28/59/6 53/60/6 32/58/6
436 | f 42/61/3 41/62/3 34/63/3 35/64/3
437 | f 32/65/11 40/66/11 42/61/11 35/64/11
438 | f 32/65/6 53/67/6 33/68/6 40/66/6
439 | f 39/69/3 38/70/3 41/71/3 42/72/3
440 | f 40/73/2 37/74/2 39/69/2 42/72/2
441 | f 37/74/12 36/75/12 38/70/12 39/69/12
442 | f 40/73/6 33/76/6 36/75/6 37/74/6
443 | f 43/77/3 48/78/3 57/79/3 45/80/3
444 | f 45/81/4 57/82/4 44/83/4 19/84/4
445 | f 19/85/6 44/86/6 55/87/6 47/88/6
446 | f 50/89/3 58/90/3 48/91/3 43/92/3
447 | f 47/93/6 55/94/6 46/95/6 26/96/6
448 | f 49/97/3 60/98/3 58/99/3 50/100/3
449 | f 26/101/6 46/102/6 51/103/6 23/104/6
450 | f 30/105/3 66/106/3 60/107/3 49/108/3
451 | f 23/109/6 51/110/6 63/111/6 28/112/6
452 | f 34/113/3 64/114/3 66/115/3 30/116/3
453 | f 28/117/6 63/118/6 52/119/6 53/120/6
454 | f 41/121/3 69/122/3 64/123/3 34/124/3
455 | f 53/125/6 52/126/6 67/127/6 33/128/6
456 | f 38/129/3 68/130/3 69/131/3 41/132/3
457 | f 36/133/12 54/134/12 68/130/12 38/129/12
458 | f 33/135/6 67/136/6 54/134/6 36/133/6
459 | f 48/137/3 76/138/3 56/139/3 57/140/3
460 | f 57/141/4 56/142/4 72/143/4 44/144/4
461 | f 44/145/6 72/146/6 75/147/6 55/148/6
462 | f 58/149/3 61/150/3 76/151/3 48/152/3
463 | f 55/153/6 75/154/6 80/155/6 46/156/6
464 | f 60/157/3 59/158/3 61/159/3 58/160/3
465 | f 46/161/6 80/162/6 77/163/6 51/164/6
466 | f 66/165/3 65/166/3 59/167/3 60/168/3
467 | f 51/169/6 77/170/6 62/171/6 63/172/6
468 | f 64/173/3 89/174/3 65/175/3 66/176/3
469 | f 63/177/6 62/178/6 84/179/6 52/180/6
470 | f 69/181/3 96/182/3 89/183/3 64/184/3
471 | f 52/185/6 84/186/6 94/187/6 67/188/6
472 | f 68/189/3 93/190/3 96/191/3 69/192/3
473 | f 54/193/12 91/194/12 93/190/12 68/189/12
474 | f 67/195/6 94/196/6 91/194/6 54/193/6
475 | f 74/197/13 71/198/13 73/199/13 70/200/13
476 | f 76/201/3 70/200/3 73/199/3 56/202/3
477 | f 56/203/4 73/204/4 71/205/4 72/206/4
478 | f 72/207/6 71/198/6 74/197/6 75/208/6
479 | f 79/209/14 74/210/14 70/211/14 81/212/14
480 | f 61/213/3 81/212/3 70/211/3 76/214/3
481 | f 75/215/6 74/210/6 79/209/6 80/216/6
482 | f 83/217/15 79/218/15 81/219/15 78/220/15
483 | f 59/221/3 78/220/3 81/219/3 61/222/3
484 | f 80/223/6 79/218/6 83/217/6 77/224/6
485 | f 82/225/16 83/226/16 78/227/16 86/228/16
486 | f 65/229/3 86/228/3 78/227/3 59/230/3
487 | f 77/231/6 83/226/6 82/225/6 62/232/6
488 | f 88/233/17 82/234/17 86/235/17 85/236/17
489 | f 89/237/3 85/236/3 86/235/3 65/238/3
490 | f 62/239/6 82/234/6 88/233/6 84/240/6
491 | f 87/241/18 88/242/18 85/243/18 95/244/18
492 | f 96/245/3 95/244/3 85/243/3 89/246/3
493 | f 84/247/6 88/242/6 87/241/6 94/248/6
494 | f 90/249/1 87/250/1 95/251/1 92/252/1
495 | f 93/253/3 92/252/3 95/251/3 96/254/3
496 | f 91/255/12 90/249/12 92/252/12 93/253/12
497 | f 94/256/6 87/250/6 90/249/6 91/255/6
498 | s 1
499 | f 1/257/19 2/258/20 4/259/21 3/260/22
500 | f 3/261/22 4/262/21 6/263/23 5/264/24
501 | f 5/264/24 6/263/23 8/265/25 7/266/26
502 | f 7/266/26 8/265/25 10/267/27 9/268/28
503 | f 9/269/28 10/270/27 12/271/29 11/272/30
504 | f 11/272/30 12/271/29 14/273/31 13/274/32
505 | f 13/275/32 14/276/31 16/277/33 15/278/34
506 | f 15/278/34 16/277/33 2/279/20 1/280/19
507 |
--------------------------------------------------------------------------------
/example/Assets/finish.obj.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 7f03c4f8152a84ca1922df2d21a49594
3 | ModelImporter:
4 | serializedVersion: 19301
5 | internalIDToNameTable: []
6 | externalObjects:
7 | - first:
8 | type: UnityEngine:Material
9 | assembly: UnityEngine.CoreModule
10 | name: Finish_Cylinder.001_TextureMat
11 | second: {fileID: -2583296935827431017, guid: 7f03c4f8152a84ca1922df2d21a49594,
12 | type: 3}
13 | materials:
14 | materialImportMode: 1
15 | materialName: 0
16 | materialSearch: 1
17 | materialLocation: 1
18 | animations:
19 | legacyGenerateAnimations: 4
20 | bakeSimulation: 0
21 | resampleCurves: 1
22 | optimizeGameObjects: 0
23 | motionNodeName:
24 | rigImportErrors:
25 | rigImportWarnings:
26 | animationImportErrors:
27 | animationImportWarnings:
28 | animationRetargetingWarnings:
29 | animationDoRetargetingWarnings: 0
30 | importAnimatedCustomProperties: 0
31 | importConstraints: 0
32 | animationCompression: 1
33 | animationRotationError: 0.5
34 | animationPositionError: 0.5
35 | animationScaleError: 0.5
36 | animationWrapMode: 0
37 | extraExposedTransformPaths: []
38 | extraUserProperties: []
39 | clipAnimations: []
40 | isReadable: 0
41 | meshes:
42 | lODScreenPercentages: []
43 | globalScale: 1
44 | meshCompression: 0
45 | addColliders: 0
46 | useSRGBMaterialColor: 1
47 | sortHierarchyByName: 1
48 | importVisibility: 1
49 | importBlendShapes: 1
50 | importCameras: 1
51 | importLights: 1
52 | fileIdsGeneration: 2
53 | swapUVChannels: 0
54 | generateSecondaryUV: 0
55 | useFileUnits: 1
56 | keepQuads: 0
57 | weldVertices: 1
58 | preserveHierarchy: 0
59 | skinWeightsMode: 0
60 | maxBonesPerVertex: 4
61 | minBoneWeight: 0.001
62 | meshOptimizationFlags: -1
63 | indexFormat: 0
64 | secondaryUVAngleDistortion: 8
65 | secondaryUVAreaDistortion: 15.000001
66 | secondaryUVHardAngle: 88
67 | secondaryUVPackMargin: 4
68 | useFileScale: 1
69 | tangentSpace:
70 | normalSmoothAngle: 60
71 | normalImportMode: 0
72 | tangentImportMode: 3
73 | normalCalculationMode: 4
74 | legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
75 | blendShapeNormalImportMode: 1
76 | normalSmoothingSource: 0
77 | referencedClips: []
78 | importAnimation: 1
79 | humanDescription:
80 | serializedVersion: 3
81 | human: []
82 | skeleton: []
83 | armTwist: 0.5
84 | foreArmTwist: 0.5
85 | upperLegTwist: 0.5
86 | legTwist: 0.5
87 | armStretch: 0.05
88 | legStretch: 0.05
89 | feetSpacing: 0
90 | globalScale: 1
91 | rootMotionBoneName:
92 | hasTranslationDoF: 0
93 | hasExtraRoot: 0
94 | skeletonHasParents: 1
95 | lastHumanDescriptionAvatarSource: {instanceID: 0}
96 | autoGenerateAvatarMappingIfUnspecified: 1
97 | animationType: 2
98 | humanoidOversampling: 1
99 | avatarSetup: 0
100 | additionalBone: 0
101 | userData:
102 | assetBundleName:
103 | assetBundleVariant:
104 |
--------------------------------------------------------------------------------
/example/Assets/template.mat:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!21 &2100000
4 | Material:
5 | serializedVersion: 6
6 | m_ObjectHideFlags: 0
7 | m_PrefabParentObject: {fileID: 0}
8 | m_PrefabInternal: {fileID: 0}
9 | m_Name: template
10 | m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
11 | m_ShaderKeywords: _EMISSION
12 | m_LightmapFlags: 1
13 | m_EnableInstancingVariants: 0
14 | m_DoubleSidedGI: 0
15 | m_CustomRenderQueue: -1
16 | stringTagMap: {}
17 | disabledShaderPasses: []
18 | m_SavedProperties:
19 | serializedVersion: 3
20 | m_TexEnvs:
21 | - _BumpMap:
22 | m_Texture: {fileID: 0}
23 | m_Scale: {x: 1, y: 1}
24 | m_Offset: {x: 0, y: 0}
25 | - _DetailAlbedoMap:
26 | m_Texture: {fileID: 0}
27 | m_Scale: {x: 1, y: 1}
28 | m_Offset: {x: 0, y: 0}
29 | - _DetailMask:
30 | m_Texture: {fileID: 0}
31 | m_Scale: {x: 1, y: 1}
32 | m_Offset: {x: 0, y: 0}
33 | - _DetailNormalMap:
34 | m_Texture: {fileID: 0}
35 | m_Scale: {x: 1, y: 1}
36 | m_Offset: {x: 0, y: 0}
37 | - _EmissionMap:
38 | m_Texture: {fileID: 0}
39 | m_Scale: {x: 1, y: 1}
40 | m_Offset: {x: 0, y: 0}
41 | - _MainTex:
42 | m_Texture: {fileID: 0}
43 | m_Scale: {x: 1, y: 1}
44 | m_Offset: {x: 0, y: 0}
45 | - _MetallicGlossMap:
46 | m_Texture: {fileID: 0}
47 | m_Scale: {x: 1, y: 1}
48 | m_Offset: {x: 0, y: 0}
49 | - _OcclusionMap:
50 | m_Texture: {fileID: 0}
51 | m_Scale: {x: 1, y: 1}
52 | m_Offset: {x: 0, y: 0}
53 | - _ParallaxMap:
54 | m_Texture: {fileID: 0}
55 | m_Scale: {x: 1, y: 1}
56 | m_Offset: {x: 0, y: 0}
57 | m_Floats:
58 | - _BumpScale: 1
59 | - _Cutoff: 0.5
60 | - _DetailNormalMapScale: 1
61 | - _DstBlend: 0
62 | - _GlossMapScale: 1
63 | - _Glossiness: 0.965
64 | - _GlossyReflections: 1
65 | - _Metallic: 0.041
66 | - _Mode: 0
67 | - _OcclusionStrength: 1
68 | - _Parallax: 0.02
69 | - _SmoothnessTextureChannel: 0
70 | - _SpecularHighlights: 1
71 | - _SrcBlend: 1
72 | - _UVSec: 0
73 | - _ZWrite: 1
74 | m_Colors:
75 | - _Color: {r: 0, g: 0, b: 0, a: 1}
76 | - _EmissionColor: {r: 0.037, g: 0.05, b: 0.013, a: 1}
77 |
--------------------------------------------------------------------------------
/example/Assets/template.mat.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 8136b0bf3458e4ef7a0c0da1328129ac
3 | timeCreated: 1505125267
4 | licenseType: Pro
5 | NativeFormatImporter:
6 | mainObjectFileID: 2100000
7 | userData:
8 | assetBundleName:
9 | assetBundleVariant:
10 |
--------------------------------------------------------------------------------
/example/Assets/turn material.mat:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!21 &2100000
4 | Material:
5 | serializedVersion: 6
6 | m_ObjectHideFlags: 0
7 | m_CorrespondingSourceObject: {fileID: 0}
8 | m_PrefabInstance: {fileID: 0}
9 | m_PrefabAsset: {fileID: 0}
10 | m_Name: turn material
11 | m_Shader: {fileID: 10755, guid: 0000000000000000f000000000000000, type: 0}
12 | m_ShaderKeywords:
13 | m_LightmapFlags: 4
14 | m_EnableInstancingVariants: 0
15 | m_DoubleSidedGI: 0
16 | m_CustomRenderQueue: -1
17 | stringTagMap: {}
18 | disabledShaderPasses: []
19 | m_SavedProperties:
20 | serializedVersion: 3
21 | m_TexEnvs:
22 | - _BumpMap:
23 | m_Texture: {fileID: 0}
24 | m_Scale: {x: 1, y: 1}
25 | m_Offset: {x: 0, y: 0}
26 | - _DetailAlbedoMap:
27 | m_Texture: {fileID: 0}
28 | m_Scale: {x: 1, y: 1}
29 | m_Offset: {x: 0, y: 0}
30 | - _DetailMask:
31 | m_Texture: {fileID: 0}
32 | m_Scale: {x: 1, y: 1}
33 | m_Offset: {x: 0, y: 0}
34 | - _DetailNormalMap:
35 | m_Texture: {fileID: 0}
36 | m_Scale: {x: 1, y: 1}
37 | m_Offset: {x: 0, y: 0}
38 | - _EmissionMap:
39 | m_Texture: {fileID: 0}
40 | m_Scale: {x: 1, y: 1}
41 | m_Offset: {x: 0, y: 0}
42 | - _MainTex:
43 | m_Texture: {fileID: 0}
44 | m_Scale: {x: 1, y: 1}
45 | m_Offset: {x: 0, y: 0}
46 | - _MetallicGlossMap:
47 | m_Texture: {fileID: 0}
48 | m_Scale: {x: 1, y: 1}
49 | m_Offset: {x: 0, y: 0}
50 | - _OcclusionMap:
51 | m_Texture: {fileID: 0}
52 | m_Scale: {x: 1, y: 1}
53 | m_Offset: {x: 0, y: 0}
54 | - _ParallaxMap:
55 | m_Texture: {fileID: 0}
56 | m_Scale: {x: 1, y: 1}
57 | m_Offset: {x: 0, y: 0}
58 | m_Floats:
59 | - _BumpScale: 1
60 | - _Cutoff: 0.5
61 | - _DetailNormalMapScale: 1
62 | - _DstBlend: 0
63 | - _GlossMapScale: 1
64 | - _Glossiness: 0.5
65 | - _GlossyReflections: 1
66 | - _Metallic: 0
67 | - _Mode: 0
68 | - _OcclusionStrength: 1
69 | - _Parallax: 0.02
70 | - _SmoothnessTextureChannel: 0
71 | - _SpecularHighlights: 1
72 | - _SrcBlend: 1
73 | - _UVSec: 0
74 | - _ZWrite: 1
75 | m_Colors:
76 | - _Color: {r: 1, g: 0.78115857, b: 0, a: 1}
77 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
78 | m_BuildTextureStacks: []
79 |
--------------------------------------------------------------------------------
/example/Assets/turn material.mat.meta:
--------------------------------------------------------------------------------
1 | fileFormatVersion: 2
2 | guid: 2f2c5125deae9446ca45c506d561deda
3 | NativeFormatImporter:
4 | externalObjects: {}
5 | mainObjectFileID: 2100000
6 | userData:
7 | assetBundleName:
8 | assetBundleVariant:
9 |
--------------------------------------------------------------------------------
/example/Packages/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "dependencies": {
3 | "com.unity.ugui": "1.0.0",
4 | "com.unity.xr.arcore": "4.2.7",
5 | "com.unity.xr.arfoundation": "4.2.7",
6 | "com.unity.xr.arkit": "4.2.7",
7 | "com.unity.xr.management": "4.2.0",
8 | "com.unity.modules.ai": "1.0.0",
9 | "com.unity.modules.androidjni": "1.0.0",
10 | "com.unity.modules.animation": "1.0.0",
11 | "com.unity.modules.assetbundle": "1.0.0",
12 | "com.unity.modules.audio": "1.0.0",
13 | "com.unity.modules.cloth": "1.0.0",
14 | "com.unity.modules.director": "1.0.0",
15 | "com.unity.modules.imageconversion": "1.0.0",
16 | "com.unity.modules.imgui": "1.0.0",
17 | "com.unity.modules.jsonserialize": "1.0.0",
18 | "com.unity.modules.particlesystem": "1.0.0",
19 | "com.unity.modules.physics": "1.0.0",
20 | "com.unity.modules.physics2d": "1.0.0",
21 | "com.unity.modules.screencapture": "1.0.0",
22 | "com.unity.modules.terrain": "1.0.0",
23 | "com.unity.modules.terrainphysics": "1.0.0",
24 | "com.unity.modules.tilemap": "1.0.0",
25 | "com.unity.modules.ui": "1.0.0",
26 | "com.unity.modules.uielements": "1.0.0",
27 | "com.unity.modules.umbra": "1.0.0",
28 | "com.unity.modules.unityanalytics": "1.0.0",
29 | "com.unity.modules.unitywebrequest": "1.0.0",
30 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0",
31 | "com.unity.modules.unitywebrequestaudio": "1.0.0",
32 | "com.unity.modules.unitywebrequesttexture": "1.0.0",
33 | "com.unity.modules.unitywebrequestwww": "1.0.0",
34 | "com.unity.modules.vehicles": "1.0.0",
35 | "com.unity.modules.video": "1.0.0",
36 | "com.unity.modules.vr": "1.0.0",
37 | "com.unity.modules.wind": "1.0.0",
38 | "com.unity.modules.xr": "1.0.0"
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/example/Packages/packages-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "dependencies": {
3 | "com.unity.editorcoroutines": {
4 | "version": "1.0.0",
5 | "depth": 1,
6 | "source": "registry",
7 | "dependencies": {},
8 | "url": "https://packages.unity.com"
9 | },
10 | "com.unity.subsystemregistration": {
11 | "version": "1.1.0",
12 | "depth": 1,
13 | "source": "registry",
14 | "dependencies": {
15 | "com.unity.modules.subsystems": "1.0.0"
16 | },
17 | "url": "https://packages.unity.com"
18 | },
19 | "com.unity.ugui": {
20 | "version": "1.0.0",
21 | "depth": 0,
22 | "source": "builtin",
23 | "dependencies": {
24 | "com.unity.modules.ui": "1.0.0",
25 | "com.unity.modules.imgui": "1.0.0"
26 | }
27 | },
28 | "com.unity.xr.arcore": {
29 | "version": "4.2.7",
30 | "depth": 0,
31 | "source": "registry",
32 | "dependencies": {
33 | "com.unity.xr.arsubsystems": "4.2.7",
34 | "com.unity.xr.management": "4.0.1",
35 | "com.unity.modules.androidjni": "1.0.0",
36 | "com.unity.modules.unitywebrequest": "1.0.0"
37 | },
38 | "url": "https://packages.unity.com"
39 | },
40 | "com.unity.xr.arfoundation": {
41 | "version": "4.2.7",
42 | "depth": 0,
43 | "source": "registry",
44 | "dependencies": {
45 | "com.unity.xr.arsubsystems": "4.2.7",
46 | "com.unity.xr.management": "4.0.1",
47 | "com.unity.modules.particlesystem": "1.0.0"
48 | },
49 | "url": "https://packages.unity.com"
50 | },
51 | "com.unity.xr.arkit": {
52 | "version": "4.2.7",
53 | "depth": 0,
54 | "source": "registry",
55 | "dependencies": {
56 | "com.unity.editorcoroutines": "1.0.0",
57 | "com.unity.xr.arsubsystems": "4.2.7",
58 | "com.unity.xr.management": "4.0.1"
59 | },
60 | "url": "https://packages.unity.com"
61 | },
62 | "com.unity.xr.arsubsystems": {
63 | "version": "4.2.7",
64 | "depth": 1,
65 | "source": "registry",
66 | "dependencies": {
67 | "com.unity.subsystemregistration": "1.1.0",
68 | "com.unity.xr.management": "4.0.1"
69 | },
70 | "url": "https://packages.unity.com"
71 | },
72 | "com.unity.xr.legacyinputhelpers": {
73 | "version": "2.1.10",
74 | "depth": 1,
75 | "source": "registry",
76 | "dependencies": {
77 | "com.unity.modules.vr": "1.0.0",
78 | "com.unity.modules.xr": "1.0.0"
79 | },
80 | "url": "https://packages.unity.com"
81 | },
82 | "com.unity.xr.management": {
83 | "version": "4.2.0",
84 | "depth": 0,
85 | "source": "registry",
86 | "dependencies": {
87 | "com.unity.modules.subsystems": "1.0.0",
88 | "com.unity.modules.vr": "1.0.0",
89 | "com.unity.modules.xr": "1.0.0",
90 | "com.unity.xr.legacyinputhelpers": "2.1.7",
91 | "com.unity.subsystemregistration": "1.0.6"
92 | },
93 | "url": "https://packages.unity.com"
94 | },
95 | "com.unity.modules.ai": {
96 | "version": "1.0.0",
97 | "depth": 0,
98 | "source": "builtin",
99 | "dependencies": {}
100 | },
101 | "com.unity.modules.androidjni": {
102 | "version": "1.0.0",
103 | "depth": 0,
104 | "source": "builtin",
105 | "dependencies": {}
106 | },
107 | "com.unity.modules.animation": {
108 | "version": "1.0.0",
109 | "depth": 0,
110 | "source": "builtin",
111 | "dependencies": {}
112 | },
113 | "com.unity.modules.assetbundle": {
114 | "version": "1.0.0",
115 | "depth": 0,
116 | "source": "builtin",
117 | "dependencies": {}
118 | },
119 | "com.unity.modules.audio": {
120 | "version": "1.0.0",
121 | "depth": 0,
122 | "source": "builtin",
123 | "dependencies": {}
124 | },
125 | "com.unity.modules.cloth": {
126 | "version": "1.0.0",
127 | "depth": 0,
128 | "source": "builtin",
129 | "dependencies": {
130 | "com.unity.modules.physics": "1.0.0"
131 | }
132 | },
133 | "com.unity.modules.director": {
134 | "version": "1.0.0",
135 | "depth": 0,
136 | "source": "builtin",
137 | "dependencies": {
138 | "com.unity.modules.audio": "1.0.0",
139 | "com.unity.modules.animation": "1.0.0"
140 | }
141 | },
142 | "com.unity.modules.imageconversion": {
143 | "version": "1.0.0",
144 | "depth": 0,
145 | "source": "builtin",
146 | "dependencies": {}
147 | },
148 | "com.unity.modules.imgui": {
149 | "version": "1.0.0",
150 | "depth": 0,
151 | "source": "builtin",
152 | "dependencies": {}
153 | },
154 | "com.unity.modules.jsonserialize": {
155 | "version": "1.0.0",
156 | "depth": 0,
157 | "source": "builtin",
158 | "dependencies": {}
159 | },
160 | "com.unity.modules.particlesystem": {
161 | "version": "1.0.0",
162 | "depth": 0,
163 | "source": "builtin",
164 | "dependencies": {}
165 | },
166 | "com.unity.modules.physics": {
167 | "version": "1.0.0",
168 | "depth": 0,
169 | "source": "builtin",
170 | "dependencies": {}
171 | },
172 | "com.unity.modules.physics2d": {
173 | "version": "1.0.0",
174 | "depth": 0,
175 | "source": "builtin",
176 | "dependencies": {}
177 | },
178 | "com.unity.modules.screencapture": {
179 | "version": "1.0.0",
180 | "depth": 0,
181 | "source": "builtin",
182 | "dependencies": {
183 | "com.unity.modules.imageconversion": "1.0.0"
184 | }
185 | },
186 | "com.unity.modules.subsystems": {
187 | "version": "1.0.0",
188 | "depth": 1,
189 | "source": "builtin",
190 | "dependencies": {
191 | "com.unity.modules.jsonserialize": "1.0.0"
192 | }
193 | },
194 | "com.unity.modules.terrain": {
195 | "version": "1.0.0",
196 | "depth": 0,
197 | "source": "builtin",
198 | "dependencies": {}
199 | },
200 | "com.unity.modules.terrainphysics": {
201 | "version": "1.0.0",
202 | "depth": 0,
203 | "source": "builtin",
204 | "dependencies": {
205 | "com.unity.modules.physics": "1.0.0",
206 | "com.unity.modules.terrain": "1.0.0"
207 | }
208 | },
209 | "com.unity.modules.tilemap": {
210 | "version": "1.0.0",
211 | "depth": 0,
212 | "source": "builtin",
213 | "dependencies": {
214 | "com.unity.modules.physics2d": "1.0.0"
215 | }
216 | },
217 | "com.unity.modules.ui": {
218 | "version": "1.0.0",
219 | "depth": 0,
220 | "source": "builtin",
221 | "dependencies": {}
222 | },
223 | "com.unity.modules.uielements": {
224 | "version": "1.0.0",
225 | "depth": 0,
226 | "source": "builtin",
227 | "dependencies": {
228 | "com.unity.modules.ui": "1.0.0",
229 | "com.unity.modules.imgui": "1.0.0",
230 | "com.unity.modules.jsonserialize": "1.0.0",
231 | "com.unity.modules.uielementsnative": "1.0.0"
232 | }
233 | },
234 | "com.unity.modules.uielementsnative": {
235 | "version": "1.0.0",
236 | "depth": 1,
237 | "source": "builtin",
238 | "dependencies": {
239 | "com.unity.modules.ui": "1.0.0",
240 | "com.unity.modules.imgui": "1.0.0",
241 | "com.unity.modules.jsonserialize": "1.0.0"
242 | }
243 | },
244 | "com.unity.modules.umbra": {
245 | "version": "1.0.0",
246 | "depth": 0,
247 | "source": "builtin",
248 | "dependencies": {}
249 | },
250 | "com.unity.modules.unityanalytics": {
251 | "version": "1.0.0",
252 | "depth": 0,
253 | "source": "builtin",
254 | "dependencies": {
255 | "com.unity.modules.unitywebrequest": "1.0.0",
256 | "com.unity.modules.jsonserialize": "1.0.0"
257 | }
258 | },
259 | "com.unity.modules.unitywebrequest": {
260 | "version": "1.0.0",
261 | "depth": 0,
262 | "source": "builtin",
263 | "dependencies": {}
264 | },
265 | "com.unity.modules.unitywebrequestassetbundle": {
266 | "version": "1.0.0",
267 | "depth": 0,
268 | "source": "builtin",
269 | "dependencies": {
270 | "com.unity.modules.assetbundle": "1.0.0",
271 | "com.unity.modules.unitywebrequest": "1.0.0"
272 | }
273 | },
274 | "com.unity.modules.unitywebrequestaudio": {
275 | "version": "1.0.0",
276 | "depth": 0,
277 | "source": "builtin",
278 | "dependencies": {
279 | "com.unity.modules.unitywebrequest": "1.0.0",
280 | "com.unity.modules.audio": "1.0.0"
281 | }
282 | },
283 | "com.unity.modules.unitywebrequesttexture": {
284 | "version": "1.0.0",
285 | "depth": 0,
286 | "source": "builtin",
287 | "dependencies": {
288 | "com.unity.modules.unitywebrequest": "1.0.0",
289 | "com.unity.modules.imageconversion": "1.0.0"
290 | }
291 | },
292 | "com.unity.modules.unitywebrequestwww": {
293 | "version": "1.0.0",
294 | "depth": 0,
295 | "source": "builtin",
296 | "dependencies": {
297 | "com.unity.modules.unitywebrequest": "1.0.0",
298 | "com.unity.modules.unitywebrequestassetbundle": "1.0.0",
299 | "com.unity.modules.unitywebrequestaudio": "1.0.0",
300 | "com.unity.modules.audio": "1.0.0",
301 | "com.unity.modules.assetbundle": "1.0.0",
302 | "com.unity.modules.imageconversion": "1.0.0"
303 | }
304 | },
305 | "com.unity.modules.vehicles": {
306 | "version": "1.0.0",
307 | "depth": 0,
308 | "source": "builtin",
309 | "dependencies": {
310 | "com.unity.modules.physics": "1.0.0"
311 | }
312 | },
313 | "com.unity.modules.video": {
314 | "version": "1.0.0",
315 | "depth": 0,
316 | "source": "builtin",
317 | "dependencies": {
318 | "com.unity.modules.audio": "1.0.0",
319 | "com.unity.modules.ui": "1.0.0",
320 | "com.unity.modules.unitywebrequest": "1.0.0"
321 | }
322 | },
323 | "com.unity.modules.vr": {
324 | "version": "1.0.0",
325 | "depth": 0,
326 | "source": "builtin",
327 | "dependencies": {
328 | "com.unity.modules.jsonserialize": "1.0.0",
329 | "com.unity.modules.physics": "1.0.0",
330 | "com.unity.modules.xr": "1.0.0"
331 | }
332 | },
333 | "com.unity.modules.wind": {
334 | "version": "1.0.0",
335 | "depth": 0,
336 | "source": "builtin",
337 | "dependencies": {}
338 | },
339 | "com.unity.modules.xr": {
340 | "version": "1.0.0",
341 | "depth": 0,
342 | "source": "builtin",
343 | "dependencies": {
344 | "com.unity.modules.physics": "1.0.0",
345 | "com.unity.modules.jsonserialize": "1.0.0",
346 | "com.unity.modules.subsystems": "1.0.0"
347 | }
348 | }
349 | }
350 | }
351 |
--------------------------------------------------------------------------------
/example/ProjectSettings/AudioManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!11 &1
4 | AudioManager:
5 | m_ObjectHideFlags: 0
6 | m_Volume: 1
7 | Rolloff Scale: 1
8 | Doppler Factor: 1
9 | Default Speaker Mode: 2
10 | m_SampleRate: 0
11 | m_DSPBufferSize: 0
12 | m_VirtualVoiceCount: 512
13 | m_RealVoiceCount: 32
14 | m_SpatializerPlugin:
15 | m_AmbisonicDecoderPlugin:
16 | m_DisableAudio: 0
17 | m_VirtualizeEffects: 1
18 |
--------------------------------------------------------------------------------
/example/ProjectSettings/ClusterInputManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!236 &1
4 | ClusterInputManager:
5 | m_ObjectHideFlags: 0
6 | m_Inputs: []
7 |
--------------------------------------------------------------------------------
/example/ProjectSettings/DynamicsManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!55 &1
4 | PhysicsManager:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 3
7 | m_Gravity: {x: 0, y: -9.81, z: 0}
8 | m_DefaultMaterial: {fileID: 0}
9 | m_BounceThreshold: 2
10 | m_SleepThreshold: 0.005
11 | m_DefaultContactOffset: 0.01
12 | m_DefaultSolverIterations: 6
13 | m_DefaultSolverVelocityIterations: 1
14 | m_QueriesHitBackfaces: 0
15 | m_QueriesHitTriggers: 1
16 | m_EnableAdaptiveForce: 0
17 | m_EnablePCM: 1
18 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
19 | m_AutoSimulation: 1
20 |
--------------------------------------------------------------------------------
/example/ProjectSettings/EditorBuildSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!1045 &1
4 | EditorBuildSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | m_Scenes: []
8 | m_configObjects:
9 | UnityEditor.XR.ARCore.ARCoreSettings: {fileID: 11400000, guid: b5fdb627fe96040a58c94277289a6790,
10 | type: 2}
11 | UnityEditor.XR.ARKit.ARKitSettings: {fileID: 11400000, guid: 13697a1c871294a5fa7dc2cb1ee9a591,
12 | type: 2}
13 | com.unity.xr.management.loader_settings: {fileID: 11400000, guid: 333d873be676d43348857333b9b2424f,
14 | type: 2}
15 |
--------------------------------------------------------------------------------
/example/ProjectSettings/EditorSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!159 &1
4 | EditorSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 9
7 | m_ExternalVersionControlSupport: Visible Meta Files
8 | m_SerializationMode: 2
9 | m_LineEndingsForNewScripts: 1
10 | m_DefaultBehaviorMode: 0
11 | m_PrefabRegularEnvironment: {fileID: 0}
12 | m_PrefabUIEnvironment: {fileID: 0}
13 | m_SpritePackerMode: 0
14 | m_SpritePackerPaddingPower: 1
15 | m_EtcTextureCompressorBehavior: 0
16 | m_EtcTextureFastCompressor: 2
17 | m_EtcTextureNormalCompressor: 2
18 | m_EtcTextureBestCompressor: 5
19 | m_ProjectGenerationIncludedExtensions: txt;xml;fnt;cd;asmref
20 | m_ProjectGenerationRootNamespace:
21 | m_CollabEditorSettings:
22 | inProgressEnabled: 1
23 | m_EnableTextureStreamingInEditMode: 1
24 | m_EnableTextureStreamingInPlayMode: 1
25 | m_AsyncShaderCompilation: 1
26 | m_EnterPlayModeOptionsEnabled: 0
27 | m_EnterPlayModeOptions: 3
28 | m_ShowLightmapResolutionOverlay: 1
29 | m_UseLegacyProbeSampleCount: 1
30 | m_AssetPipelineMode: 1
31 | m_CacheServerMode: 0
32 | m_CacheServerEndpoint:
33 | m_CacheServerNamespacePrefix: default
34 | m_CacheServerEnableDownload: 1
35 | m_CacheServerEnableUpload: 1
36 |
--------------------------------------------------------------------------------
/example/ProjectSettings/GraphicsSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!30 &1
4 | GraphicsSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 13
7 | m_Deferred:
8 | m_Mode: 1
9 | m_Shader: {fileID: 69, guid: 0000000000000000f000000000000000, type: 0}
10 | m_DeferredReflections:
11 | m_Mode: 1
12 | m_Shader: {fileID: 74, guid: 0000000000000000f000000000000000, type: 0}
13 | m_ScreenSpaceShadows:
14 | m_Mode: 1
15 | m_Shader: {fileID: 64, guid: 0000000000000000f000000000000000, type: 0}
16 | m_LegacyDeferred:
17 | m_Mode: 1
18 | m_Shader: {fileID: 63, guid: 0000000000000000f000000000000000, type: 0}
19 | m_DepthNormals:
20 | m_Mode: 1
21 | m_Shader: {fileID: 62, guid: 0000000000000000f000000000000000, type: 0}
22 | m_MotionVectors:
23 | m_Mode: 1
24 | m_Shader: {fileID: 75, guid: 0000000000000000f000000000000000, type: 0}
25 | m_LightHalo:
26 | m_Mode: 1
27 | m_Shader: {fileID: 105, guid: 0000000000000000f000000000000000, type: 0}
28 | m_LensFlare:
29 | m_Mode: 1
30 | m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0}
31 | m_AlwaysIncludedShaders:
32 | - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0}
33 | - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0}
34 | - {fileID: 15105, guid: 0000000000000000f000000000000000, type: 0}
35 | - {fileID: 15106, guid: 0000000000000000f000000000000000, type: 0}
36 | - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0}
37 | - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0}
38 | - {fileID: 16000, guid: 0000000000000000f000000000000000, type: 0}
39 | - {fileID: 16001, guid: 0000000000000000f000000000000000, type: 0}
40 | - {fileID: 17000, guid: 0000000000000000f000000000000000, type: 0}
41 | - {fileID: 16003, guid: 0000000000000000f000000000000000, type: 0}
42 | m_PreloadedShaders: []
43 | m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000,
44 | type: 0}
45 | m_CustomRenderPipeline: {fileID: 0}
46 | m_TransparencySortMode: 0
47 | m_TransparencySortAxis: {x: 0, y: 0, z: 1}
48 | m_DefaultRenderingPath: 1
49 | m_DefaultMobileRenderingPath: 1
50 | m_TierSettings: []
51 | m_LightmapStripping: 0
52 | m_FogStripping: 0
53 | m_InstancingStripping: 0
54 | m_LightmapKeepPlain: 1
55 | m_LightmapKeepDirCombined: 1
56 | m_LightmapKeepDynamicPlain: 1
57 | m_LightmapKeepDynamicDirCombined: 1
58 | m_LightmapKeepShadowMask: 1
59 | m_LightmapKeepSubtractive: 1
60 | m_FogKeepLinear: 1
61 | m_FogKeepExp: 1
62 | m_FogKeepExp2: 1
63 | m_AlbedoSwatchInfos: []
64 | m_LightsUseLinearIntensity: 0
65 | m_LightsUseColorTemperature: 0
66 | m_LogWhenShaderIsCompiled: 0
67 | m_AllowEnlightenSupportForUpgradedProject: 1
68 |
--------------------------------------------------------------------------------
/example/ProjectSettings/InputManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!13 &1
4 | InputManager:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | m_Axes:
8 | - serializedVersion: 3
9 | m_Name: Horizontal
10 | descriptiveName:
11 | descriptiveNegativeName:
12 | negativeButton: left
13 | positiveButton: right
14 | altNegativeButton: a
15 | altPositiveButton: d
16 | gravity: 3
17 | dead: 0.001
18 | sensitivity: 3
19 | snap: 1
20 | invert: 0
21 | type: 0
22 | axis: 0
23 | joyNum: 0
24 | - serializedVersion: 3
25 | m_Name: Vertical
26 | descriptiveName:
27 | descriptiveNegativeName:
28 | negativeButton: down
29 | positiveButton: up
30 | altNegativeButton: s
31 | altPositiveButton: w
32 | gravity: 3
33 | dead: 0.001
34 | sensitivity: 3
35 | snap: 1
36 | invert: 0
37 | type: 0
38 | axis: 0
39 | joyNum: 0
40 | - serializedVersion: 3
41 | m_Name: Fire1
42 | descriptiveName:
43 | descriptiveNegativeName:
44 | negativeButton:
45 | positiveButton: left ctrl
46 | altNegativeButton:
47 | altPositiveButton: mouse 0
48 | gravity: 1000
49 | dead: 0.001
50 | sensitivity: 1000
51 | snap: 0
52 | invert: 0
53 | type: 0
54 | axis: 0
55 | joyNum: 0
56 | - serializedVersion: 3
57 | m_Name: Fire2
58 | descriptiveName:
59 | descriptiveNegativeName:
60 | negativeButton:
61 | positiveButton: left alt
62 | altNegativeButton:
63 | altPositiveButton: mouse 1
64 | gravity: 1000
65 | dead: 0.001
66 | sensitivity: 1000
67 | snap: 0
68 | invert: 0
69 | type: 0
70 | axis: 0
71 | joyNum: 0
72 | - serializedVersion: 3
73 | m_Name: Fire3
74 | descriptiveName:
75 | descriptiveNegativeName:
76 | negativeButton:
77 | positiveButton: left shift
78 | altNegativeButton:
79 | altPositiveButton: mouse 2
80 | gravity: 1000
81 | dead: 0.001
82 | sensitivity: 1000
83 | snap: 0
84 | invert: 0
85 | type: 0
86 | axis: 0
87 | joyNum: 0
88 | - serializedVersion: 3
89 | m_Name: Jump
90 | descriptiveName:
91 | descriptiveNegativeName:
92 | negativeButton:
93 | positiveButton: space
94 | altNegativeButton:
95 | altPositiveButton:
96 | gravity: 1000
97 | dead: 0.001
98 | sensitivity: 1000
99 | snap: 0
100 | invert: 0
101 | type: 0
102 | axis: 0
103 | joyNum: 0
104 | - serializedVersion: 3
105 | m_Name: Mouse X
106 | descriptiveName:
107 | descriptiveNegativeName:
108 | negativeButton:
109 | positiveButton:
110 | altNegativeButton:
111 | altPositiveButton:
112 | gravity: 0
113 | dead: 0
114 | sensitivity: 0.1
115 | snap: 0
116 | invert: 0
117 | type: 1
118 | axis: 0
119 | joyNum: 0
120 | - serializedVersion: 3
121 | m_Name: Mouse Y
122 | descriptiveName:
123 | descriptiveNegativeName:
124 | negativeButton:
125 | positiveButton:
126 | altNegativeButton:
127 | altPositiveButton:
128 | gravity: 0
129 | dead: 0
130 | sensitivity: 0.1
131 | snap: 0
132 | invert: 0
133 | type: 1
134 | axis: 1
135 | joyNum: 0
136 | - serializedVersion: 3
137 | m_Name: Mouse ScrollWheel
138 | descriptiveName:
139 | descriptiveNegativeName:
140 | negativeButton:
141 | positiveButton:
142 | altNegativeButton:
143 | altPositiveButton:
144 | gravity: 0
145 | dead: 0
146 | sensitivity: 0.1
147 | snap: 0
148 | invert: 0
149 | type: 1
150 | axis: 2
151 | joyNum: 0
152 | - serializedVersion: 3
153 | m_Name: Horizontal
154 | descriptiveName:
155 | descriptiveNegativeName:
156 | negativeButton:
157 | positiveButton:
158 | altNegativeButton:
159 | altPositiveButton:
160 | gravity: 0
161 | dead: 0.19
162 | sensitivity: 1
163 | snap: 0
164 | invert: 0
165 | type: 2
166 | axis: 0
167 | joyNum: 0
168 | - serializedVersion: 3
169 | m_Name: Vertical
170 | descriptiveName:
171 | descriptiveNegativeName:
172 | negativeButton:
173 | positiveButton:
174 | altNegativeButton:
175 | altPositiveButton:
176 | gravity: 0
177 | dead: 0.19
178 | sensitivity: 1
179 | snap: 0
180 | invert: 1
181 | type: 2
182 | axis: 1
183 | joyNum: 0
184 | - serializedVersion: 3
185 | m_Name: Fire1
186 | descriptiveName:
187 | descriptiveNegativeName:
188 | negativeButton:
189 | positiveButton: joystick button 0
190 | altNegativeButton:
191 | altPositiveButton:
192 | gravity: 1000
193 | dead: 0.001
194 | sensitivity: 1000
195 | snap: 0
196 | invert: 0
197 | type: 0
198 | axis: 0
199 | joyNum: 0
200 | - serializedVersion: 3
201 | m_Name: Fire2
202 | descriptiveName:
203 | descriptiveNegativeName:
204 | negativeButton:
205 | positiveButton: joystick button 1
206 | altNegativeButton:
207 | altPositiveButton:
208 | gravity: 1000
209 | dead: 0.001
210 | sensitivity: 1000
211 | snap: 0
212 | invert: 0
213 | type: 0
214 | axis: 0
215 | joyNum: 0
216 | - serializedVersion: 3
217 | m_Name: Fire3
218 | descriptiveName:
219 | descriptiveNegativeName:
220 | negativeButton:
221 | positiveButton: joystick button 2
222 | altNegativeButton:
223 | altPositiveButton:
224 | gravity: 1000
225 | dead: 0.001
226 | sensitivity: 1000
227 | snap: 0
228 | invert: 0
229 | type: 0
230 | axis: 0
231 | joyNum: 0
232 | - serializedVersion: 3
233 | m_Name: Jump
234 | descriptiveName:
235 | descriptiveNegativeName:
236 | negativeButton:
237 | positiveButton: joystick button 3
238 | altNegativeButton:
239 | altPositiveButton:
240 | gravity: 1000
241 | dead: 0.001
242 | sensitivity: 1000
243 | snap: 0
244 | invert: 0
245 | type: 0
246 | axis: 0
247 | joyNum: 0
248 | - serializedVersion: 3
249 | m_Name: Submit
250 | descriptiveName:
251 | descriptiveNegativeName:
252 | negativeButton:
253 | positiveButton: return
254 | altNegativeButton:
255 | altPositiveButton: joystick button 0
256 | gravity: 1000
257 | dead: 0.001
258 | sensitivity: 1000
259 | snap: 0
260 | invert: 0
261 | type: 0
262 | axis: 0
263 | joyNum: 0
264 | - serializedVersion: 3
265 | m_Name: Submit
266 | descriptiveName:
267 | descriptiveNegativeName:
268 | negativeButton:
269 | positiveButton: enter
270 | altNegativeButton:
271 | altPositiveButton: space
272 | gravity: 1000
273 | dead: 0.001
274 | sensitivity: 1000
275 | snap: 0
276 | invert: 0
277 | type: 0
278 | axis: 0
279 | joyNum: 0
280 | - serializedVersion: 3
281 | m_Name: Cancel
282 | descriptiveName:
283 | descriptiveNegativeName:
284 | negativeButton:
285 | positiveButton: escape
286 | altNegativeButton:
287 | altPositiveButton: joystick button 1
288 | gravity: 1000
289 | dead: 0.001
290 | sensitivity: 1000
291 | snap: 0
292 | invert: 0
293 | type: 0
294 | axis: 0
295 | joyNum: 0
296 |
--------------------------------------------------------------------------------
/example/ProjectSettings/MemorySettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!387306366 &1
4 | MemorySettings:
5 | m_ObjectHideFlags: 0
6 | m_EditorMemorySettings:
7 | m_MainAllocatorBlockSize: -1
8 | m_ThreadAllocatorBlockSize: -1
9 | m_MainGfxBlockSize: -1
10 | m_ThreadGfxBlockSize: -1
11 | m_CacheBlockSize: -1
12 | m_TypetreeBlockSize: -1
13 | m_ProfilerBlockSize: -1
14 | m_ProfilerEditorBlockSize: -1
15 | m_BucketAllocatorGranularity: -1
16 | m_BucketAllocatorBucketsCount: -1
17 | m_BucketAllocatorBlockSize: -1
18 | m_BucketAllocatorBlockCount: -1
19 | m_ProfilerBucketAllocatorGranularity: -1
20 | m_ProfilerBucketAllocatorBucketsCount: -1
21 | m_ProfilerBucketAllocatorBlockSize: -1
22 | m_ProfilerBucketAllocatorBlockCount: -1
23 | m_TempAllocatorSizeMain: -1
24 | m_JobTempAllocatorBlockSize: -1
25 | m_BackgroundJobTempAllocatorBlockSize: -1
26 | m_JobTempAllocatorReducedBlockSize: -1
27 | m_TempAllocatorSizeGIBakingWorker: -1
28 | m_TempAllocatorSizeNavMeshWorker: -1
29 | m_TempAllocatorSizeAudioWorker: -1
30 | m_TempAllocatorSizeCloudWorker: -1
31 | m_TempAllocatorSizeGfx: -1
32 | m_TempAllocatorSizeJobWorker: -1
33 | m_TempAllocatorSizeBackgroundWorker: -1
34 | m_TempAllocatorSizePreloadManager: -1
35 | m_PlatformMemorySettings: {}
36 |
--------------------------------------------------------------------------------
/example/ProjectSettings/NavMeshAreas.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!126 &1
4 | NavMeshProjectSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 2
7 | areas:
8 | - name: Walkable
9 | cost: 1
10 | - name: Not Walkable
11 | cost: 1
12 | - name: Jump
13 | cost: 2
14 | - name:
15 | cost: 1
16 | - name:
17 | cost: 1
18 | - name:
19 | cost: 1
20 | - name:
21 | cost: 1
22 | - name:
23 | cost: 1
24 | - name:
25 | cost: 1
26 | - name:
27 | cost: 1
28 | - name:
29 | cost: 1
30 | - name:
31 | cost: 1
32 | - name:
33 | cost: 1
34 | - name:
35 | cost: 1
36 | - name:
37 | cost: 1
38 | - name:
39 | cost: 1
40 | - name:
41 | cost: 1
42 | - name:
43 | cost: 1
44 | - name:
45 | cost: 1
46 | - name:
47 | cost: 1
48 | - name:
49 | cost: 1
50 | - name:
51 | cost: 1
52 | - name:
53 | cost: 1
54 | - name:
55 | cost: 1
56 | - name:
57 | cost: 1
58 | - name:
59 | cost: 1
60 | - name:
61 | cost: 1
62 | - name:
63 | cost: 1
64 | - name:
65 | cost: 1
66 | - name:
67 | cost: 1
68 | - name:
69 | cost: 1
70 | - name:
71 | cost: 1
72 | m_LastAgentTypeID: -887442657
73 | m_Settings:
74 | - serializedVersion: 2
75 | agentTypeID: 0
76 | agentRadius: 0.5
77 | agentHeight: 2
78 | agentSlope: 45
79 | agentClimb: 0.75
80 | ledgeDropHeight: 0
81 | maxJumpAcrossDistance: 0
82 | minRegionArea: 2
83 | manualCellSize: 0
84 | cellSize: 0.16666667
85 | manualTileSize: 0
86 | tileSize: 256
87 | accuratePlacement: 0
88 | m_SettingNames:
89 | - Humanoid
90 |
--------------------------------------------------------------------------------
/example/ProjectSettings/NetworkManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!149 &1
4 | NetworkManager:
5 | m_ObjectHideFlags: 0
6 | m_DebugLevel: 0
7 | m_Sendrate: 15
8 | m_AssetToPrefab: {}
9 |
--------------------------------------------------------------------------------
/example/ProjectSettings/PackageManagerSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!114 &1
4 | MonoBehaviour:
5 | m_ObjectHideFlags: 61
6 | m_CorrespondingSourceObject: {fileID: 0}
7 | m_PrefabInstance: {fileID: 0}
8 | m_PrefabAsset: {fileID: 0}
9 | m_GameObject: {fileID: 0}
10 | m_Enabled: 1
11 | m_EditorHideFlags: 0
12 | m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0}
13 | m_Name:
14 | m_EditorClassIdentifier:
15 | m_ScopedRegistriesSettingsExpanded: 1
16 | oneTimeWarningShown: 0
17 | m_Registries:
18 | - m_Id: main
19 | m_Name:
20 | m_Url: https://packages.unity.com
21 | m_Scopes: []
22 | m_IsDefault: 1
23 | m_UserSelectedRegistryName:
24 | m_UserAddingNewScopedRegistry: 0
25 | m_RegistryInfoDraft:
26 | m_ErrorMessage:
27 | m_Original:
28 | m_Id:
29 | m_Name:
30 | m_Url:
31 | m_Scopes: []
32 | m_IsDefault: 0
33 | m_Modified: 0
34 | m_Name:
35 | m_Url:
36 | m_Scopes:
37 | -
38 | m_SelectedScopeIndex: 0
39 |
--------------------------------------------------------------------------------
/example/ProjectSettings/Physics2DSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!19 &1
4 | Physics2DSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 3
7 | m_Gravity: {x: 0, y: -9.81}
8 | m_DefaultMaterial: {fileID: 0}
9 | m_VelocityIterations: 8
10 | m_PositionIterations: 3
11 | m_VelocityThreshold: 1
12 | m_MaxLinearCorrection: 0.2
13 | m_MaxAngularCorrection: 8
14 | m_MaxTranslationSpeed: 100
15 | m_MaxRotationSpeed: 360
16 | m_BaumgarteScale: 0.2
17 | m_BaumgarteTimeOfImpactScale: 0.75
18 | m_TimeToSleep: 0.5
19 | m_LinearSleepTolerance: 0.01
20 | m_AngularSleepTolerance: 2
21 | m_DefaultContactOffset: 0.01
22 | m_AutoSimulation: 1
23 | m_QueriesHitTriggers: 1
24 | m_QueriesStartInColliders: 1
25 | m_ChangeStopsCallbacks: 0
26 | m_CallbacksOnDisable: 1
27 | m_AlwaysShowColliders: 0
28 | m_ShowColliderSleep: 1
29 | m_ShowColliderContacts: 0
30 | m_ShowColliderAABB: 0
31 | m_ContactArrowScale: 0.2
32 | m_ColliderAwakeColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.7529412}
33 | m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432}
34 | m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745}
35 | m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804}
36 | m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
37 |
--------------------------------------------------------------------------------
/example/ProjectSettings/PresetManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!1386491679 &1
4 | PresetManager:
5 | m_ObjectHideFlags: 0
6 | m_DefaultList: []
7 |
--------------------------------------------------------------------------------
/example/ProjectSettings/ProjectVersion.txt:
--------------------------------------------------------------------------------
1 | m_EditorVersion: 2021.3.17f1
2 | m_EditorVersionWithRevision: 2021.3.17f1 (3e8111cac19d)
3 |
--------------------------------------------------------------------------------
/example/ProjectSettings/QualitySettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!47 &1
4 | QualitySettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 5
7 | m_CurrentQuality: 5
8 | m_QualitySettings:
9 | - serializedVersion: 2
10 | name: Very Low
11 | pixelLightCount: 0
12 | shadows: 0
13 | shadowResolution: 0
14 | shadowProjection: 1
15 | shadowCascades: 1
16 | shadowDistance: 15
17 | shadowNearPlaneOffset: 3
18 | shadowCascade2Split: 0.33333334
19 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
20 | shadowmaskMode: 0
21 | blendWeights: 1
22 | textureQuality: 1
23 | anisotropicTextures: 0
24 | antiAliasing: 0
25 | softParticles: 0
26 | softVegetation: 0
27 | realtimeReflectionProbes: 0
28 | billboardsFaceCameraPosition: 0
29 | vSyncCount: 0
30 | lodBias: 0.3
31 | maximumLODLevel: 0
32 | particleRaycastBudget: 4
33 | asyncUploadTimeSlice: 2
34 | asyncUploadBufferSize: 4
35 | resolutionScalingFixedDPIFactor: 1
36 | excludedTargetPlatforms: []
37 | - serializedVersion: 2
38 | name: Low
39 | pixelLightCount: 0
40 | shadows: 0
41 | shadowResolution: 0
42 | shadowProjection: 1
43 | shadowCascades: 1
44 | shadowDistance: 20
45 | shadowNearPlaneOffset: 3
46 | shadowCascade2Split: 0.33333334
47 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
48 | shadowmaskMode: 0
49 | blendWeights: 2
50 | textureQuality: 0
51 | anisotropicTextures: 0
52 | antiAliasing: 0
53 | softParticles: 0
54 | softVegetation: 0
55 | realtimeReflectionProbes: 0
56 | billboardsFaceCameraPosition: 0
57 | vSyncCount: 0
58 | lodBias: 0.4
59 | maximumLODLevel: 0
60 | particleRaycastBudget: 16
61 | asyncUploadTimeSlice: 2
62 | asyncUploadBufferSize: 4
63 | resolutionScalingFixedDPIFactor: 1
64 | excludedTargetPlatforms: []
65 | - serializedVersion: 2
66 | name: Medium
67 | pixelLightCount: 1
68 | shadows: 1
69 | shadowResolution: 0
70 | shadowProjection: 1
71 | shadowCascades: 1
72 | shadowDistance: 20
73 | shadowNearPlaneOffset: 3
74 | shadowCascade2Split: 0.33333334
75 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
76 | shadowmaskMode: 0
77 | blendWeights: 2
78 | textureQuality: 0
79 | anisotropicTextures: 1
80 | antiAliasing: 0
81 | softParticles: 0
82 | softVegetation: 0
83 | realtimeReflectionProbes: 0
84 | billboardsFaceCameraPosition: 0
85 | vSyncCount: 1
86 | lodBias: 0.7
87 | maximumLODLevel: 0
88 | particleRaycastBudget: 64
89 | asyncUploadTimeSlice: 2
90 | asyncUploadBufferSize: 4
91 | resolutionScalingFixedDPIFactor: 1
92 | excludedTargetPlatforms: []
93 | - serializedVersion: 2
94 | name: High
95 | pixelLightCount: 2
96 | shadows: 2
97 | shadowResolution: 1
98 | shadowProjection: 1
99 | shadowCascades: 2
100 | shadowDistance: 40
101 | shadowNearPlaneOffset: 3
102 | shadowCascade2Split: 0.33333334
103 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
104 | shadowmaskMode: 1
105 | blendWeights: 2
106 | textureQuality: 0
107 | anisotropicTextures: 1
108 | antiAliasing: 0
109 | softParticles: 0
110 | softVegetation: 1
111 | realtimeReflectionProbes: 1
112 | billboardsFaceCameraPosition: 1
113 | vSyncCount: 1
114 | lodBias: 1
115 | maximumLODLevel: 0
116 | particleRaycastBudget: 256
117 | asyncUploadTimeSlice: 2
118 | asyncUploadBufferSize: 4
119 | resolutionScalingFixedDPIFactor: 1
120 | excludedTargetPlatforms: []
121 | - serializedVersion: 2
122 | name: Very High
123 | pixelLightCount: 3
124 | shadows: 2
125 | shadowResolution: 2
126 | shadowProjection: 1
127 | shadowCascades: 2
128 | shadowDistance: 70
129 | shadowNearPlaneOffset: 3
130 | shadowCascade2Split: 0.33333334
131 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
132 | shadowmaskMode: 1
133 | blendWeights: 4
134 | textureQuality: 0
135 | anisotropicTextures: 2
136 | antiAliasing: 2
137 | softParticles: 1
138 | softVegetation: 1
139 | realtimeReflectionProbes: 1
140 | billboardsFaceCameraPosition: 1
141 | vSyncCount: 1
142 | lodBias: 1.5
143 | maximumLODLevel: 0
144 | particleRaycastBudget: 1024
145 | asyncUploadTimeSlice: 2
146 | asyncUploadBufferSize: 4
147 | resolutionScalingFixedDPIFactor: 1
148 | excludedTargetPlatforms: []
149 | - serializedVersion: 2
150 | name: Ultra
151 | pixelLightCount: 4
152 | shadows: 2
153 | shadowResolution: 2
154 | shadowProjection: 1
155 | shadowCascades: 4
156 | shadowDistance: 150
157 | shadowNearPlaneOffset: 3
158 | shadowCascade2Split: 0.33333334
159 | shadowCascade4Split: {x: 0.06666667, y: 0.2, z: 0.46666667}
160 | shadowmaskMode: 1
161 | blendWeights: 4
162 | textureQuality: 0
163 | anisotropicTextures: 2
164 | antiAliasing: 2
165 | softParticles: 1
166 | softVegetation: 1
167 | realtimeReflectionProbes: 1
168 | billboardsFaceCameraPosition: 1
169 | vSyncCount: 1
170 | lodBias: 2
171 | maximumLODLevel: 0
172 | particleRaycastBudget: 4096
173 | asyncUploadTimeSlice: 2
174 | asyncUploadBufferSize: 4
175 | resolutionScalingFixedDPIFactor: 1
176 | excludedTargetPlatforms: []
177 | m_PerPlatformDefaultQuality:
178 | Android: 2
179 | Nintendo 3DS: 5
180 | Nintendo Switch: 5
181 | PS4: 5
182 | PSM: 5
183 | PSP2: 2
184 | Samsung TV: 2
185 | Standalone: 5
186 | Tizen: 2
187 | Web: 5
188 | WebGL: 3
189 | WiiU: 5
190 | Windows Store Apps: 5
191 | XboxOne: 5
192 | iPhone: 2
193 | tvOS: 2
194 |
--------------------------------------------------------------------------------
/example/ProjectSettings/SceneTemplateSettings.json:
--------------------------------------------------------------------------------
1 | {
2 | "templatePinStates": [],
3 | "dependencyTypeInfos": [
4 | {
5 | "userAdded": false,
6 | "type": "UnityEngine.AnimationClip",
7 | "ignore": false,
8 | "defaultInstantiationMode": 0,
9 | "supportsModification": true
10 | },
11 | {
12 | "userAdded": false,
13 | "type": "UnityEditor.Animations.AnimatorController",
14 | "ignore": false,
15 | "defaultInstantiationMode": 0,
16 | "supportsModification": true
17 | },
18 | {
19 | "userAdded": false,
20 | "type": "UnityEngine.AnimatorOverrideController",
21 | "ignore": false,
22 | "defaultInstantiationMode": 0,
23 | "supportsModification": true
24 | },
25 | {
26 | "userAdded": false,
27 | "type": "UnityEditor.Audio.AudioMixerController",
28 | "ignore": false,
29 | "defaultInstantiationMode": 0,
30 | "supportsModification": true
31 | },
32 | {
33 | "userAdded": false,
34 | "type": "UnityEngine.ComputeShader",
35 | "ignore": true,
36 | "defaultInstantiationMode": 1,
37 | "supportsModification": true
38 | },
39 | {
40 | "userAdded": false,
41 | "type": "UnityEngine.Cubemap",
42 | "ignore": false,
43 | "defaultInstantiationMode": 0,
44 | "supportsModification": true
45 | },
46 | {
47 | "userAdded": false,
48 | "type": "UnityEngine.GameObject",
49 | "ignore": false,
50 | "defaultInstantiationMode": 0,
51 | "supportsModification": true
52 | },
53 | {
54 | "userAdded": false,
55 | "type": "UnityEditor.LightingDataAsset",
56 | "ignore": false,
57 | "defaultInstantiationMode": 0,
58 | "supportsModification": false
59 | },
60 | {
61 | "userAdded": false,
62 | "type": "UnityEngine.LightingSettings",
63 | "ignore": false,
64 | "defaultInstantiationMode": 0,
65 | "supportsModification": true
66 | },
67 | {
68 | "userAdded": false,
69 | "type": "UnityEngine.Material",
70 | "ignore": false,
71 | "defaultInstantiationMode": 0,
72 | "supportsModification": true
73 | },
74 | {
75 | "userAdded": false,
76 | "type": "UnityEditor.MonoScript",
77 | "ignore": true,
78 | "defaultInstantiationMode": 1,
79 | "supportsModification": true
80 | },
81 | {
82 | "userAdded": false,
83 | "type": "UnityEngine.PhysicMaterial",
84 | "ignore": false,
85 | "defaultInstantiationMode": 0,
86 | "supportsModification": true
87 | },
88 | {
89 | "userAdded": false,
90 | "type": "UnityEngine.PhysicsMaterial2D",
91 | "ignore": false,
92 | "defaultInstantiationMode": 0,
93 | "supportsModification": true
94 | },
95 | {
96 | "userAdded": false,
97 | "type": "UnityEngine.Rendering.PostProcessing.PostProcessProfile",
98 | "ignore": false,
99 | "defaultInstantiationMode": 0,
100 | "supportsModification": true
101 | },
102 | {
103 | "userAdded": false,
104 | "type": "UnityEngine.Rendering.PostProcessing.PostProcessResources",
105 | "ignore": false,
106 | "defaultInstantiationMode": 0,
107 | "supportsModification": true
108 | },
109 | {
110 | "userAdded": false,
111 | "type": "UnityEngine.Rendering.VolumeProfile",
112 | "ignore": false,
113 | "defaultInstantiationMode": 0,
114 | "supportsModification": true
115 | },
116 | {
117 | "userAdded": false,
118 | "type": "UnityEditor.SceneAsset",
119 | "ignore": false,
120 | "defaultInstantiationMode": 0,
121 | "supportsModification": false
122 | },
123 | {
124 | "userAdded": false,
125 | "type": "UnityEngine.Shader",
126 | "ignore": true,
127 | "defaultInstantiationMode": 1,
128 | "supportsModification": true
129 | },
130 | {
131 | "userAdded": false,
132 | "type": "UnityEngine.ShaderVariantCollection",
133 | "ignore": true,
134 | "defaultInstantiationMode": 1,
135 | "supportsModification": true
136 | },
137 | {
138 | "userAdded": false,
139 | "type": "UnityEngine.Texture",
140 | "ignore": false,
141 | "defaultInstantiationMode": 0,
142 | "supportsModification": true
143 | },
144 | {
145 | "userAdded": false,
146 | "type": "UnityEngine.Texture2D",
147 | "ignore": false,
148 | "defaultInstantiationMode": 0,
149 | "supportsModification": true
150 | },
151 | {
152 | "userAdded": false,
153 | "type": "UnityEngine.Timeline.TimelineAsset",
154 | "ignore": false,
155 | "defaultInstantiationMode": 0,
156 | "supportsModification": true
157 | }
158 | ],
159 | "defaultDependencyTypeInfo": {
160 | "userAdded": false,
161 | "type": "",
162 | "ignore": false,
163 | "defaultInstantiationMode": 1,
164 | "supportsModification": true
165 | },
166 | "newSceneOverride": 0
167 | }
--------------------------------------------------------------------------------
/example/ProjectSettings/TagManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!78 &1
4 | TagManager:
5 | serializedVersion: 2
6 | tags: []
7 | layers:
8 | - Default
9 | - TransparentFX
10 | - Ignore Raycast
11 | -
12 | - Water
13 | - UI
14 | -
15 | -
16 | -
17 | -
18 | -
19 | -
20 | -
21 | -
22 | -
23 | -
24 | -
25 | -
26 | -
27 | -
28 | -
29 | -
30 | -
31 | -
32 | -
33 | -
34 | -
35 | -
36 | -
37 | -
38 | -
39 | -
40 | m_SortingLayers:
41 | - name: Default
42 | uniqueID: 0
43 | locked: 0
44 |
--------------------------------------------------------------------------------
/example/ProjectSettings/TimeManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!5 &1
4 | TimeManager:
5 | m_ObjectHideFlags: 0
6 | Fixed Timestep: 0.02
7 | Maximum Allowed Timestep: 0.33333334
8 | m_TimeScale: 1
9 | Maximum Particle Timestep: 0.03
10 |
--------------------------------------------------------------------------------
/example/ProjectSettings/UnityConnectSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!310 &1
4 | UnityConnectSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 1
7 | m_Enabled: 1
8 | m_TestMode: 0
9 | m_EventOldUrl: https://api.uca.cloud.unity3d.com/v1/events
10 | m_EventUrl: https://cdp.cloud.unity3d.com/v1/events
11 | m_ConfigUrl: https://config.uca.cloud.unity3d.com
12 | m_DashboardUrl: https://dashboard.unity3d.com
13 | m_TestInitMode: 0
14 | CrashReportingSettings:
15 | m_EventUrl: https://perf-events.cloud.unity3d.com
16 | m_Enabled: 0
17 | m_LogBufferSize: 10
18 | m_CaptureEditorExceptions: 1
19 | UnityPurchasingSettings:
20 | m_Enabled: 0
21 | m_TestMode: 0
22 | UnityAnalyticsSettings:
23 | m_Enabled: 1
24 | m_TestMode: 0
25 | m_InitializeOnStartup: 1
26 | m_PackageRequiringCoreStatsPresent: 0
27 | UnityAdsSettings:
28 | m_Enabled: 0
29 | m_InitializeOnStartup: 1
30 | m_TestMode: 0
31 | m_IosGameId:
32 | m_AndroidGameId:
33 | m_GameIds: {}
34 | m_GameId:
35 | PerformanceReportingSettings:
36 | m_Enabled: 0
37 |
--------------------------------------------------------------------------------
/example/ProjectSettings/VFXManager.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!937362698 &1
4 | VFXManager:
5 | m_ObjectHideFlags: 0
6 | m_IndirectShader: {fileID: 0}
7 | m_CopyBufferShader: {fileID: 0}
8 | m_SortShader: {fileID: 0}
9 | m_RenderPipeSettingsPath:
10 | m_FixedTimeStep: 0.016666668
11 | m_MaxDeltaTime: 0.05
12 |
--------------------------------------------------------------------------------
/example/ProjectSettings/VersionControlSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!890905787 &1
4 | VersionControlSettings:
5 | m_ObjectHideFlags: 0
6 | m_Mode: Visible Meta Files
7 | m_CollabEditorSettings:
8 | inProgressEnabled: 1
9 |
--------------------------------------------------------------------------------
/example/ProjectSettings/XRPackageSettings.asset:
--------------------------------------------------------------------------------
1 | {
2 | "m_Settings": [
3 | "RemoveLegacyInputHelpersForReload"
4 | ]
5 | }
--------------------------------------------------------------------------------
/example/ProjectSettings/XRSettings.asset:
--------------------------------------------------------------------------------
1 | {
2 | "m_SettingKeys": [
3 | "VR Device Disabled",
4 | "VR Device User Alert"
5 | ],
6 | "m_SettingValues": [
7 | "False",
8 | "False"
9 | ]
10 | }
--------------------------------------------------------------------------------
/example/ProjectSettings/boot.config:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/IndoorAtlas/unity-plugin/4c6659bce5ee936bdb2c4393010fc852ba640289/example/ProjectSettings/boot.config
--------------------------------------------------------------------------------
/example/UserSettings/EditorUserSettings.asset:
--------------------------------------------------------------------------------
1 | %YAML 1.1
2 | %TAG !u! tag:unity3d.com,2011:
3 | --- !u!162 &1
4 | EditorUserSettings:
5 | m_ObjectHideFlags: 0
6 | serializedVersion: 4
7 | m_ConfigSettings:
8 | RecentlyUsedSceneGuid-0:
9 | value: 53000d055202080d0b5f5d7042770847464e4f2e7d7f7f697c704e62b6b7606f
10 | flags: 0
11 | vcSharedLogLevel:
12 | value: 0d5e400f0650
13 | flags: 0
14 | m_VCAutomaticAdd: 1
15 | m_VCDebugCom: 0
16 | m_VCDebugCmd: 0
17 | m_VCDebugOut: 0
18 | m_SemanticMergeMode: 2
19 | m_DesiredImportWorkerCount: 2
20 | m_StandbyImportWorkerCount: 2
21 | m_IdleImportWorkerShutdownDelay: 60000
22 | m_VCShowFailedCheckout: 1
23 | m_VCOverwriteFailedCheckoutAssets: 1
24 | m_VCProjectOverlayIcons: 1
25 | m_VCHierarchyOverlayIcons: 1
26 | m_VCOtherOverlayIcons: 1
27 | m_VCAllowAsyncUpdate: 0
28 | m_ArtifactGarbageCollection: 1
29 |
--------------------------------------------------------------------------------
/example/UserSettings/Search.index:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Assets",
3 | "roots": ["Assets"],
4 | "includes": [],
5 | "excludes": [],
6 | "options": {
7 | "types": true,
8 | "properties": true,
9 | "extended": false,
10 | "dependencies": false
11 | },
12 | "baseScore": 999
13 | }
--------------------------------------------------------------------------------
/example/UserSettings/Search.settings:
--------------------------------------------------------------------------------
1 | trackSelection = true
2 | fetchPreview = true
3 | defaultFlags = 0
4 | keepOpen = false
5 | queryFolder = "Assets"
6 | onBoardingDoNotAskAgain = true
7 | showPackageIndexes = false
8 | showStatusBar = false
9 | scopes = {
10 | "last_search.DD5CDD96" = ""
11 | "OpenInspectorPreview.DD5CDD96" = "0"
12 | "currentGroup.DD5CDD96" = "scene"
13 | }
14 | providers = {
15 | find = {
16 | active = true
17 | priority = 25
18 | defaultAction = null
19 | }
20 | performance = {
21 | active = false
22 | priority = 100
23 | defaultAction = null
24 | }
25 | store = {
26 | active = true
27 | priority = 100
28 | defaultAction = null
29 | }
30 | packages = {
31 | active = true
32 | priority = 90
33 | defaultAction = null
34 | }
35 | adb = {
36 | active = false
37 | priority = 2500
38 | defaultAction = null
39 | }
40 | scene = {
41 | active = true
42 | priority = 50
43 | defaultAction = null
44 | }
45 | asset = {
46 | active = true
47 | priority = 25
48 | defaultAction = null
49 | }
50 | log = {
51 | active = false
52 | priority = 210
53 | defaultAction = null
54 | }
55 | }
56 | objectSelectors = {
57 | }
58 | recentSearches = [
59 | ]
60 | searchItemFavorites = [
61 | ]
62 | savedSearchesSortOrder = 0
63 | showSavedSearchPanel = false
64 | expandedQueries = [
65 | ]
66 | queryBuilder = false
67 | ignoredProperties = "id;name;classname;imagecontentshash"
68 | helperWidgetCurrentArea = "all"
69 | disabledIndexers = ""
--------------------------------------------------------------------------------