Browse Source

适配遂光sdk

jiajun.hu.x 2 years ago
parent
commit
933ecf79c7
100 changed files with 8443 additions and 34 deletions
  1. BIN
      .vs/NrealSDK/v16/.suo
  2. 4 5
      Packages/manifest.json
  3. 83 15
      Packages/packages-lock.json
  4. 7 5
      ProjectSettings/EditorBuildSettings.asset
  5. 417 0
      ProjectSettings/InputManager.asset
  6. 11 7
      ProjectSettings/ProjectSettings.asset
  7. 6 2
      ProjectSettings/TagManager.asset
  8. 37 0
      Ximmerse_UnityXR_SDK_V1.6.0/CONTRIBUTING.md
  9. 7 0
      Ximmerse_UnityXR_SDK_V1.6.0/CONTRIBUTING.md.meta
  10. 8 0
      Ximmerse_UnityXR_SDK_V1.6.0/Contents.meta
  11. 8 0
      Ximmerse_UnityXR_SDK_V1.6.0/Contents/InputAssets.meta
  12. 316 0
      Ximmerse_UnityXR_SDK_V1.6.0/Contents/InputAssets/Hand Tracking Input Assets.inputactions
  13. 14 0
      Ximmerse_UnityXR_SDK_V1.6.0/Contents/InputAssets/Hand Tracking Input Assets.inputactions.meta
  14. 8 0
      Ximmerse_UnityXR_SDK_V1.6.0/Contents/Prefabs.meta
  15. 81 0
      Ximmerse_UnityXR_SDK_V1.6.0/Contents/Prefabs/Connection.mat
  16. 8 0
      Ximmerse_UnityXR_SDK_V1.6.0/Contents/Prefabs/Connection.mat.meta
  17. 81 0
      Ximmerse_UnityXR_SDK_V1.6.0/Contents/Prefabs/Joint.mat
  18. 8 0
      Ximmerse_UnityXR_SDK_V1.6.0/Contents/Prefabs/Joint.mat.meta
  19. 81 0
      Ximmerse_UnityXR_SDK_V1.6.0/Contents/Prefabs/Palm.mat
  20. 8 0
      Ximmerse_UnityXR_SDK_V1.6.0/Contents/Prefabs/Palm.mat.meta
  21. 110 0
      Ximmerse_UnityXR_SDK_V1.6.0/Contents/TableMat.mat
  22. 8 0
      Ximmerse_UnityXR_SDK_V1.6.0/Contents/TableMat.mat.meta
  23. 8 0
      Ximmerse_UnityXR_SDK_V1.6.0/Contents/Textures.meta
  24. BIN
      Ximmerse_UnityXR_SDK_V1.6.0/Contents/Textures/Rectle_small.png
  25. 120 0
      Ximmerse_UnityXR_SDK_V1.6.0/Contents/Textures/Rectle_small.png.meta
  26. BIN
      Ximmerse_UnityXR_SDK_V1.6.0/Contents/Textures/Reticle-Hover.png
  27. 120 0
      Ximmerse_UnityXR_SDK_V1.6.0/Contents/Textures/Reticle-Hover.png.meta
  28. BIN
      Ximmerse_UnityXR_SDK_V1.6.0/Contents/Textures/Reticle-Normal.png
  29. 120 0
      Ximmerse_UnityXR_SDK_V1.6.0/Contents/Textures/Reticle-Normal.png.meta
  30. BIN
      Ximmerse_UnityXR_SDK_V1.6.0/Contents/Textures/Reticle-Select.png
  31. 120 0
      Ximmerse_UnityXR_SDK_V1.6.0/Contents/Textures/Reticle-Select.png.meta
  32. 78 0
      Ximmerse_UnityXR_SDK_V1.6.0/Contents/UVCheck.mat
  33. 8 0
      Ximmerse_UnityXR_SDK_V1.6.0/Contents/UVCheck.mat.meta
  34. BIN
      Ximmerse_UnityXR_SDK_V1.6.0/Contents/UVChecker.png
  35. 96 0
      Ximmerse_UnityXR_SDK_V1.6.0/Contents/UVChecker.png.meta
  36. 8 0
      Ximmerse_UnityXR_SDK_V1.6.0/Editor.meta
  37. 8 0
      Ximmerse_UnityXR_SDK_V1.6.0/Editor/BuildPipelineProcessor.meta
  38. 115 0
      Ximmerse_UnityXR_SDK_V1.6.0/Editor/BuildPipelineProcessor/BuildPipelineProcesor.cs
  39. 11 0
      Ximmerse_UnityXR_SDK_V1.6.0/Editor/BuildPipelineProcessor/BuildPipelineProcesor.cs.meta
  40. 19 0
      Ximmerse_UnityXR_SDK_V1.6.0/Editor/BuildSettingConst.cs
  41. 11 0
      Ximmerse_UnityXR_SDK_V1.6.0/Editor/BuildSettingConst.cs.meta
  42. 8 0
      Ximmerse_UnityXR_SDK_V1.6.0/Editor/EditorUtilities.meta
  43. 93 0
      Ximmerse_UnityXR_SDK_V1.6.0/Editor/EditorUtilities/SDKEditorUtility.cs
  44. 11 0
      Ximmerse_UnityXR_SDK_V1.6.0/Editor/EditorUtilities/SDKEditorUtility.cs.meta
  45. 603 0
      Ximmerse_UnityXR_SDK_V1.6.0/Editor/EditorUtilities/SDKInputBindingSetup.cs
  46. 11 0
      Ximmerse_UnityXR_SDK_V1.6.0/Editor/EditorUtilities/SDKInputBindingSetup.cs.meta
  47. 8 0
      Ximmerse_UnityXR_SDK_V1.6.0/Editor/GUI.meta
  48. 53 0
      Ximmerse_UnityXR_SDK_V1.6.0/Editor/GUI/GroundPlaneLayoutConfigurationEditor.cs
  49. 11 0
      Ximmerse_UnityXR_SDK_V1.6.0/Editor/GUI/GroundPlaneLayoutConfigurationEditor.cs.meta
  50. 407 0
      Ximmerse_UnityXR_SDK_V1.6.0/Editor/GUI/ObjectTrackingProfileEditor.cs
  51. 11 0
      Ximmerse_UnityXR_SDK_V1.6.0/Editor/GUI/ObjectTrackingProfileEditor.cs.meta
  52. 47 0
      Ximmerse_UnityXR_SDK_V1.6.0/Editor/GUI/SDKProjectSettingGUI.cs
  53. 11 0
      Ximmerse_UnityXR_SDK_V1.6.0/Editor/GUI/SDKProjectSettingGUI.cs.meta
  54. 87 0
      Ximmerse_UnityXR_SDK_V1.6.0/Editor/GUI/TagProfileAssetEditor.cs
  55. 11 0
      Ximmerse_UnityXR_SDK_V1.6.0/Editor/GUI/TagProfileAssetEditor.cs.meta
  56. 80 0
      Ximmerse_UnityXR_SDK_V1.6.0/Editor/GUI/TagProfileLoadingEditor.cs
  57. 11 0
      Ximmerse_UnityXR_SDK_V1.6.0/Editor/GUI/TagProfileLoadingEditor.cs.meta
  58. 52 0
      Ximmerse_UnityXR_SDK_V1.6.0/Editor/GazeEditor.cs
  59. 11 0
      Ximmerse_UnityXR_SDK_V1.6.0/Editor/GazeEditor.cs.meta
  60. 80 0
      Ximmerse_UnityXR_SDK_V1.6.0/Editor/GeneratePrefab.cs
  61. 11 0
      Ximmerse_UnityXR_SDK_V1.6.0/Editor/GeneratePrefab.cs.meta
  62. 27 0
      Ximmerse_UnityXR_SDK_V1.6.0/Editor/Ximmerse.XR.Editor.asmdef
  63. 7 0
      Ximmerse_UnityXR_SDK_V1.6.0/Editor/Ximmerse.XR.Editor.asmdef.meta
  64. 52 0
      Ximmerse_UnityXR_SDK_V1.6.0/Editor/XimmerseUnityXRInitialize.cs
  65. 11 0
      Ximmerse_UnityXR_SDK_V1.6.0/Editor/XimmerseUnityXRInitialize.cs.meta
  66. 81 0
      Ximmerse_UnityXR_SDK_V1.6.0/Editor/XimmerseXRMetadata.cs
  67. 11 0
      Ximmerse_UnityXR_SDK_V1.6.0/Editor/XimmerseXRMetadata.cs.meta
  68. 201 0
      Ximmerse_UnityXR_SDK_V1.6.0/LICENSE.md
  69. 7 0
      Ximmerse_UnityXR_SDK_V1.6.0/LICENSE.md.meta
  70. 88 0
      Ximmerse_UnityXR_SDK_V1.6.0/README.md
  71. 7 0
      Ximmerse_UnityXR_SDK_V1.6.0/README.md.meta
  72. 8 0
      Ximmerse_UnityXR_SDK_V1.6.0/Resources.meta
  73. 8 0
      Ximmerse_UnityXR_SDK_V1.6.0/Resources/Controller.meta
  74. 8 0
      Ximmerse_UnityXR_SDK_V1.6.0/Resources/Controller/Material.meta
  75. 78 0
      Ximmerse_UnityXR_SDK_V1.6.0/Resources/Controller/Material/RayLineMat.mat
  76. 8 0
      Ximmerse_UnityXR_SDK_V1.6.0/Resources/Controller/Material/RayLineMat.mat.meta
  77. 78 0
      Ximmerse_UnityXR_SDK_V1.6.0/Resources/Controller/Material/Red.mat
  78. 8 0
      Ximmerse_UnityXR_SDK_V1.6.0/Resources/Controller/Material/Red.mat.meta
  79. 8 0
      Ximmerse_UnityXR_SDK_V1.6.0/Resources/Controller/Mesh.meta
  80. 8 0
      Ximmerse_UnityXR_SDK_V1.6.0/Resources/Controller/Models.meta
  81. 266 0
      Ximmerse_UnityXR_SDK_V1.6.0/Resources/Controller/Models/Ring LED controller_L.fbx
  82. 114 0
      Ximmerse_UnityXR_SDK_V1.6.0/Resources/Controller/Models/Ring LED controller_L.fbx.meta
  83. 227 0
      Ximmerse_UnityXR_SDK_V1.6.0/Resources/Controller/Models/Ring LED controller_R.fbx
  84. 114 0
      Ximmerse_UnityXR_SDK_V1.6.0/Resources/Controller/Models/Ring LED controller_R.fbx.meta
  85. 8 0
      Ximmerse_UnityXR_SDK_V1.6.0/Resources/Controller/Prefabs.meta
  86. 1450 0
      Ximmerse_UnityXR_SDK_V1.6.0/Resources/Controller/Prefabs/Ring LED controller_L.prefab
  87. 7 0
      Ximmerse_UnityXR_SDK_V1.6.0/Resources/Controller/Prefabs/Ring LED controller_L.prefab.meta
  88. 1450 0
      Ximmerse_UnityXR_SDK_V1.6.0/Resources/Controller/Prefabs/Ring LED controller_R.prefab
  89. 7 0
      Ximmerse_UnityXR_SDK_V1.6.0/Resources/Controller/Prefabs/Ring LED controller_R.prefab.meta
  90. 8 0
      Ximmerse_UnityXR_SDK_V1.6.0/Resources/Controller/Texture.meta
  91. 8 0
      Ximmerse_UnityXR_SDK_V1.6.0/Resources/Gesture.meta
  92. 8 0
      Ximmerse_UnityXR_SDK_V1.6.0/Resources/Gesture/Material.meta
  93. 92 0
      Ximmerse_UnityXR_SDK_V1.6.0/Resources/Gesture/Material/NewSurfaceShader.shader
  94. 10 0
      Ximmerse_UnityXR_SDK_V1.6.0/Resources/Gesture/Material/NewSurfaceShader.shader.meta
  95. 84 0
      Ximmerse_UnityXR_SDK_V1.6.0/Resources/Gesture/Material/frontShader.mat
  96. 8 0
      Ximmerse_UnityXR_SDK_V1.6.0/Resources/Gesture/Material/frontShader.mat.meta
  97. 8 0
      Ximmerse_UnityXR_SDK_V1.6.0/Resources/Gesture/Mesh.meta
  98. 8 0
      Ximmerse_UnityXR_SDK_V1.6.0/Resources/Gesture/Models.meta
  99. 8 0
      Ximmerse_UnityXR_SDK_V1.6.0/Resources/Gesture/Prefabs.meta
  100. 84 0
      Ximmerse_UnityXR_SDK_V1.6.0/Resources/Gesture/Prefabs/CURSOR0 (2).prefab

BIN
.vs/NrealSDK/v16/.suo


+ 4 - 5
Packages/manifest.json

@@ -1,22 +1,21 @@
 {
   "dependencies": {
     "com.ptc.vuforia.engine": "file:com.ptc.vuforia.engine-10.13.3.tgz",
-    "com.unity.addressables": "1.19.19",
+    "com.unity.ads": "3.7.5",
+    "com.unity.analytics": "3.6.12",
+    "com.unity.collab-proxy": "1.17.7",
     "com.unity.ide.rider": "3.0.16",
     "com.unity.ide.visualstudio": "2.0.16",
     "com.unity.ide.vscode": "1.2.5",
-<<<<<<< Updated upstream
     "com.unity.purchasing": "4.5.2",
     "com.unity.renderstreaming": "file:../UnityRenderStreaming-main/UnityRenderStreaming-main/com.unity.renderstreaming",
-=======
-    "com.unity.nuget.newtonsoft-json": "3.0.2",
->>>>>>> Stashed changes
     "com.unity.test-framework": "1.1.31",
     "com.unity.textmeshpro": "3.0.6",
     "com.unity.timeline": "1.6.4",
     "com.unity.ugui": "1.0.0",
     "com.unity.visualscripting": "1.7.8",
     "com.unity.xr.openxr": "1.5.3",
+    "com.ximmerse.xr": "file:../Ximmerse_UnityXR_SDK_V1.6.0",
     "com.unity.modules.ai": "1.0.0",
     "com.unity.modules.androidjni": "1.0.0",
     "com.unity.modules.animation": "1.0.0",

+ 83 - 15
Packages/packages-lock.json

@@ -8,17 +8,30 @@
         "com.unity.ugui": "1.0.0"
       }
     },
-    "com.unity.addressables": {
-      "version": "1.19.19",
+    "com.unity.ads": {
+      "version": "3.7.5",
       "depth": 0,
       "source": "registry",
       "dependencies": {
-        "com.unity.scriptablebuildpipeline": "1.19.6",
-        "com.unity.modules.assetbundle": "1.0.0",
-        "com.unity.modules.imageconversion": "1.0.0",
-        "com.unity.modules.jsonserialize": "1.0.0",
-        "com.unity.modules.unitywebrequest": "1.0.0",
-        "com.unity.modules.unitywebrequestassetbundle": "1.0.0"
+        "com.unity.ugui": "1.0.0"
+      },
+      "url": "https://packages.unity.cn"
+    },
+    "com.unity.analytics": {
+      "version": "3.6.12",
+      "depth": 0,
+      "source": "registry",
+      "dependencies": {
+        "com.unity.ugui": "1.0.0"
+      },
+      "url": "https://packages.unity.cn"
+    },
+    "com.unity.collab-proxy": {
+      "version": "1.17.7",
+      "depth": 0,
+      "source": "registry",
+      "dependencies": {
+        "com.unity.services.core": "1.0.1"
       },
       "url": "https://packages.unity.cn"
     },
@@ -72,12 +85,11 @@
     },
     "com.unity.nuget.newtonsoft-json": {
       "version": "3.0.2",
-      "depth": 0,
+      "depth": 2,
       "source": "registry",
       "dependencies": {},
       "url": "https://packages.unity.cn"
     },
-<<<<<<< Updated upstream
     "com.unity.purchasing": {
       "version": "4.5.2",
       "depth": 0,
@@ -106,13 +118,23 @@
     },
     "com.unity.services.analytics": {
       "version": "4.2.0",
-=======
-    "com.unity.scriptablebuildpipeline": {
-      "version": "1.20.1",
->>>>>>> Stashed changes
       "depth": 1,
       "source": "registry",
-      "dependencies": {},
+      "dependencies": {
+        "com.unity.ugui": "1.0.0",
+        "com.unity.services.core": "1.4.0"
+      },
+      "url": "https://packages.unity.cn"
+    },
+    "com.unity.services.core": {
+      "version": "1.6.0",
+      "depth": 1,
+      "source": "registry",
+      "dependencies": {
+        "com.unity.modules.unitywebrequest": "1.0.0",
+        "com.unity.nuget.newtonsoft-json": "3.0.2",
+        "com.unity.modules.androidjni": "1.0.0"
+      },
       "url": "https://packages.unity.cn"
     },
     "com.unity.subsystemregistration": {
@@ -186,6 +208,40 @@
       },
       "url": "https://packages.unity.cn"
     },
+    "com.unity.xr.arsubsystems": {
+      "version": "4.2.7",
+      "depth": 1,
+      "source": "registry",
+      "dependencies": {
+        "com.unity.subsystemregistration": "1.1.0",
+        "com.unity.xr.management": "4.0.1"
+      },
+      "url": "https://packages.unity.cn"
+    },
+    "com.unity.xr.core-utils": {
+      "version": "2.0.0",
+      "depth": 2,
+      "source": "registry",
+      "dependencies": {
+        "com.unity.modules.xr": "1.0.0"
+      },
+      "url": "https://packages.unity.cn"
+    },
+    "com.unity.xr.interaction.toolkit": {
+      "version": "2.0.4",
+      "depth": 1,
+      "source": "registry",
+      "dependencies": {
+        "com.unity.inputsystem": "1.3.0",
+        "com.unity.ugui": "1.0.0",
+        "com.unity.xr.core-utils": "2.0.0",
+        "com.unity.xr.legacyinputhelpers": "2.1.8",
+        "com.unity.modules.audio": "1.0.0",
+        "com.unity.modules.imgui": "1.0.0",
+        "com.unity.modules.physics": "1.0.0"
+      },
+      "url": "https://packages.unity.cn"
+    },
     "com.unity.xr.legacyinputhelpers": {
       "version": "2.1.10",
       "depth": 1,
@@ -220,6 +276,18 @@
       },
       "url": "https://packages.unity.cn"
     },
+    "com.ximmerse.xr": {
+      "version": "file:../Ximmerse_UnityXR_SDK_V1.6.0",
+      "depth": 0,
+      "source": "local",
+      "dependencies": {
+        "com.unity.xr.management": "3.2.9",
+        "com.unity.xr.legacyinputhelpers": "2.1.4",
+        "com.unity.xr.arsubsystems": "4.1.9",
+        "com.unity.xr.interaction.toolkit": "2.0.0",
+        "com.unity.inputsystem": "1.3.0"
+      }
+    },
     "com.unity.modules.ai": {
       "version": "1.0.0",
       "depth": 0,

+ 7 - 5
ProjectSettings/EditorBuildSettings.asset

@@ -5,28 +5,30 @@ EditorBuildSettings:
   m_ObjectHideFlags: 0
   serializedVersion: 2
   m_Scenes:
-  - enabled: 0
+  - enabled: 1
     path: Assets/Studio/Scenes/Logo/Logo.unity
     guid: c37c1babc7b6f744cb6546625fe87f80
-  - enabled: 0
+  - enabled: 1
     path: Assets/Studio/Scenes/Login/Login.unity
     guid: ed2d84032771c5c4d8b8b3e0a25484f3
-  - enabled: 0
+  - enabled: 1
     path: Assets/Studio/Scenes/Home/Home.unity
     guid: b57022d6f43f69046a88c4312c0e0a67
-  - enabled: 0
+  - enabled: 1
     path: Assets/Studio/Scenes/Show/Show.unity
     guid: ae34a02a0fc4f6e41a4bdf3e80ea1c56
   - enabled: 0
     path: Assets/NRSDK/Demos/RGBCamera-Capture.unity
     guid: e0b534db44fbb1a48b5410630bbcd749
-  - enabled: 1
+  - enabled: 0
     path: Assets/GHZAlter/LANScene.unity
     guid: 0b4e6f654a95ee64d9e2b4c8a349108b
   - enabled: 0
     path: Assets/GHZAlter/CeShi.unity
     guid: 2db4f5f73900da84cb17a4cebcf8337b
   m_configObjects:
+    com.unity.input.settings: {fileID: 11400000, guid: 15bc390d88375eb448a370cd84b9a24d,
+      type: 2}
     com.unity.xr.management.loader_settings: {fileID: 11400000, guid: 8f422df2931cba0478c1fe8ab232b9a3,
       type: 2}
     com.unity.xr.openxr.settings4: {fileID: 11400000, guid: 2d049ae1db0e2b74c8251022ae6dcb95,

+ 417 - 0
ProjectSettings/InputManager.asset

@@ -293,3 +293,420 @@ InputManager:
     type: 0
     axis: 0
     joyNum: 0
+  - serializedVersion: 3
+    m_Name: XRI_Left_Primary2DAxis_Vertical
+    descriptiveName: Device joystick/touchpad horizontal motion
+    descriptiveNegativeName: 
+    negativeButton: 
+    positiveButton: 
+    altNegativeButton: 
+    altPositiveButton: 
+    gravity: 0
+    dead: 0.19
+    sensitivity: 1
+    snap: 0
+    invert: 0
+    type: 2
+    axis: 1
+    joyNum: 0
+  - serializedVersion: 3
+    m_Name: XRI_Left_Primary2DAxis_Horizontal
+    descriptiveName: Device joystick/touchpad horizontal motion
+    descriptiveNegativeName: 
+    negativeButton: 
+    positiveButton: 
+    altNegativeButton: 
+    altPositiveButton: 
+    gravity: 0
+    dead: 0.19
+    sensitivity: 1
+    snap: 0
+    invert: 0
+    type: 2
+    axis: 0
+    joyNum: 0
+  - serializedVersion: 3
+    m_Name: XRI_Left_Trigger
+    descriptiveName: Device trigger axis
+    descriptiveNegativeName: 
+    negativeButton: 
+    positiveButton: 
+    altNegativeButton: 
+    altPositiveButton: 
+    gravity: 0
+    dead: 0.001
+    sensitivity: 1
+    snap: 0
+    invert: 0
+    type: 2
+    axis: 8
+    joyNum: 0
+  - serializedVersion: 3
+    m_Name: XRI_Left_Grip
+    descriptiveName: Device grip axis
+    descriptiveNegativeName: 
+    negativeButton: 
+    positiveButton: 
+    altNegativeButton: 
+    altPositiveButton: 
+    gravity: 0
+    dead: 0.001
+    sensitivity: 1
+    snap: 0
+    invert: 0
+    type: 2
+    axis: 10
+    joyNum: 0
+  - serializedVersion: 3
+    m_Name: XRI_Left_IndexTouch
+    descriptiveName: Device index finger proximity touch axis.
+    descriptiveNegativeName: 
+    negativeButton: 
+    positiveButton: 
+    altNegativeButton: 
+    altPositiveButton: 
+    gravity: 0
+    dead: 0.19
+    sensitivity: 1
+    snap: 0
+    invert: 0
+    type: 2
+    axis: 12
+    joyNum: 0
+  - serializedVersion: 3
+    m_Name: XRI_Left_PrimaryButton
+    descriptiveName: Device primary button
+    descriptiveNegativeName: 
+    negativeButton: 
+    positiveButton: joystick button 2
+    altNegativeButton: 
+    altPositiveButton: 
+    gravity: 1000
+    dead: 0.001
+    sensitivity: 1000
+    snap: 0
+    invert: 0
+    type: 0
+    axis: 0
+    joyNum: 0
+  - serializedVersion: 3
+    m_Name: XRI_Left_SecondaryButton
+    descriptiveName: Device secondary button
+    descriptiveNegativeName: 
+    negativeButton: 
+    positiveButton: joystick button 3
+    altNegativeButton: 
+    altPositiveButton: 
+    gravity: 1000
+    dead: 0.001
+    sensitivity: 1000
+    snap: 0
+    invert: 0
+    type: 0
+    axis: 0
+    joyNum: 0
+  - serializedVersion: 3
+    m_Name: XRI_Left_GripButton
+    descriptiveName: Device grip button
+    descriptiveNegativeName: 
+    negativeButton: 
+    positiveButton: joystick button 4
+    altNegativeButton: 
+    altPositiveButton: 
+    gravity: 0
+    dead: 0
+    sensitivity: 0.1
+    snap: 0
+    invert: 0
+    type: 0
+    axis: 0
+    joyNum: 0
+  - serializedVersion: 3
+    m_Name: XRI_Left_TriggerButton
+    descriptiveName: Device trigger button
+    descriptiveNegativeName: 
+    negativeButton: 
+    positiveButton: joystick button 14
+    altNegativeButton: 
+    altPositiveButton: 
+    gravity: 0
+    dead: 0
+    sensitivity: 0.1
+    snap: 0
+    invert: 0
+    type: 0
+    axis: 0
+    joyNum: 0
+  - serializedVersion: 3
+    m_Name: XRI_Left_MenuButton
+    descriptiveName: Device menu button
+    descriptiveNegativeName: 
+    negativeButton: 
+    positiveButton: joystick button 6
+    altNegativeButton: 
+    altPositiveButton: 
+    gravity: 1000
+    dead: 0.001
+    sensitivity: 1000
+    snap: 0
+    invert: 0
+    type: 0
+    axis: 0
+    joyNum: 0
+  - serializedVersion: 3
+    m_Name: XRI_Left_Primary2DAxisClick
+    descriptiveName: Device stick/touchpad click
+    descriptiveNegativeName: 
+    negativeButton: 
+    positiveButton: joystick button 8
+    altNegativeButton: 
+    altPositiveButton: 
+    gravity: 0
+    dead: 0
+    sensitivity: 0.1
+    snap: 0
+    invert: 0
+    type: 0
+    axis: 0
+    joyNum: 0
+  - serializedVersion: 3
+    m_Name: XRI_Left_Primary2DAxisTouch
+    descriptiveName: Device stick/touchpad touch
+    descriptiveNegativeName: 
+    negativeButton: 
+    positiveButton: joystick button 16
+    altNegativeButton: 
+    altPositiveButton: 
+    gravity: 0
+    dead: 0
+    sensitivity: 0.1
+    snap: 0
+    invert: 0
+    type: 0
+    axis: 0
+    joyNum: 0
+  - serializedVersion: 3
+    m_Name: XRI_Left_Thumbrest
+    descriptiveName: Device thumbrest
+    descriptiveNegativeName: 
+    negativeButton: 
+    positiveButton: joystick button 18
+    altNegativeButton: 
+    altPositiveButton: 
+    gravity: 0
+    dead: 0
+    sensitivity: 0.1
+    snap: 0
+    invert: 0
+    type: 0
+    axis: 0
+    joyNum: 0
+  - serializedVersion: 3
+    m_Name: XRI_Right_Primary2DAxis_Vertical
+    descriptiveName: Device joystick/touchpad horizontal motion
+    descriptiveNegativeName: 
+    negativeButton: 
+    positiveButton: 
+    altNegativeButton: 
+    altPositiveButton: 
+    gravity: 0
+    dead: 0.19
+    sensitivity: 1
+    snap: 0
+    invert: 0
+    type: 2
+    axis: 4
+    joyNum: 0
+  - serializedVersion: 3
+    m_Name: XRI_Right_Primary2DAxis_Horizontal
+    descriptiveName: Device joystick/touchpad horizontal motion
+    descriptiveNegativeName: 
+    negativeButton: 
+    positiveButton: 
+    altNegativeButton: 
+    altPositiveButton: 
+    gravity: 0
+    dead: 0.19
+    sensitivity: 1
+    snap: 0
+    invert: 0
+    type: 2
+    axis: 3
+    joyNum: 0
+  - serializedVersion: 3
+    m_Name: XRI_Right_Trigger
+    descriptiveName: Device trigger axis
+    descriptiveNegativeName: 
+    negativeButton: 
+    positiveButton: 
+    altNegativeButton: 
+    altPositiveButton: 
+    gravity: 0
+    dead: 0.001
+    sensitivity: 1
+    snap: 0
+    invert: 0
+    type: 2
+    axis: 9
+    joyNum: 0
+  - serializedVersion: 3
+    m_Name: XRI_Right_Grip
+    descriptiveName: Device grip axis
+    descriptiveNegativeName: 
+    negativeButton: 
+    positiveButton: 
+    altNegativeButton: 
+    altPositiveButton: 
+    gravity: 0
+    dead: 0.001
+    sensitivity: 1
+    snap: 0
+    invert: 0
+    type: 2
+    axis: 11
+    joyNum: 0
+  - serializedVersion: 3
+    m_Name: XRI_Right_IndexTouch
+    descriptiveName: Device index finger proximity touch axis.
+    descriptiveNegativeName: 
+    negativeButton: 
+    positiveButton: 
+    altNegativeButton: 
+    altPositiveButton: 
+    gravity: 0
+    dead: 0.19
+    sensitivity: 1
+    snap: 0
+    invert: 0
+    type: 2
+    axis: 13
+    joyNum: 0
+  - serializedVersion: 3
+    m_Name: XRI_Right_PrimaryButton
+    descriptiveName: Device primary button
+    descriptiveNegativeName: 
+    negativeButton: 
+    positiveButton: joystick button 0
+    altNegativeButton: 
+    altPositiveButton: 
+    gravity: 1000
+    dead: 0.001
+    sensitivity: 1000
+    snap: 0
+    invert: 0
+    type: 0
+    axis: 0
+    joyNum: 0
+  - serializedVersion: 3
+    m_Name: XRI_Right_SecondaryButton
+    descriptiveName: Device secondary button
+    descriptiveNegativeName: 
+    negativeButton: 
+    positiveButton: joystick button 1
+    altNegativeButton: 
+    altPositiveButton: 
+    gravity: 1000
+    dead: 0.001
+    sensitivity: 1000
+    snap: 0
+    invert: 0
+    type: 0
+    axis: 0
+    joyNum: 0
+  - serializedVersion: 3
+    m_Name: XRI_Right_GripButton
+    descriptiveName: Device grip button
+    descriptiveNegativeName: 
+    negativeButton: 
+    positiveButton: joystick button 5
+    altNegativeButton: 
+    altPositiveButton: 
+    gravity: 0
+    dead: 0
+    sensitivity: 0.1
+    snap: 0
+    invert: 0
+    type: 0
+    axis: 0
+    joyNum: 0
+  - serializedVersion: 3
+    m_Name: XRI_Right_TriggerButton
+    descriptiveName: Device trigger button
+    descriptiveNegativeName: 
+    negativeButton: 
+    positiveButton: joystick button 15
+    altNegativeButton: 
+    altPositiveButton: 
+    gravity: 0
+    dead: 0
+    sensitivity: 0.1
+    snap: 0
+    invert: 0
+    type: 0
+    axis: 0
+    joyNum: 0
+  - serializedVersion: 3
+    m_Name: XRI_Right_MenuButton
+    descriptiveName: Device menu button
+    descriptiveNegativeName: 
+    negativeButton: 
+    positiveButton: joystick button 7
+    altNegativeButton: 
+    altPositiveButton: 
+    gravity: 1000
+    dead: 0.001
+    sensitivity: 1000
+    snap: 0
+    invert: 0
+    type: 0
+    axis: 0
+    joyNum: 0
+  - serializedVersion: 3
+    m_Name: XRI_Right_Primary2DAxisClick
+    descriptiveName: Device stick/touchpad click
+    descriptiveNegativeName: 
+    negativeButton: 
+    positiveButton: joystick button 9
+    altNegativeButton: 
+    altPositiveButton: 
+    gravity: 0
+    dead: 0
+    sensitivity: 0.1
+    snap: 0
+    invert: 0
+    type: 0
+    axis: 0
+    joyNum: 0
+  - serializedVersion: 3
+    m_Name: XRI_Right_Primary2DAxisTouch
+    descriptiveName: Device stick/touchpad touch
+    descriptiveNegativeName: 
+    negativeButton: 
+    positiveButton: joystick button 17
+    altNegativeButton: 
+    altPositiveButton: 
+    gravity: 0
+    dead: 0
+    sensitivity: 0.1
+    snap: 0
+    invert: 0
+    type: 0
+    axis: 0
+    joyNum: 0
+  - serializedVersion: 3
+    m_Name: XRI_Right_Thumbrest
+    descriptiveName: Device thumbrest
+    descriptiveNegativeName: 
+    negativeButton: 
+    positiveButton: joystick button 19
+    altNegativeButton: 
+    altPositiveButton: 
+    gravity: 0
+    dead: 0
+    sensitivity: 0.1
+    snap: 0
+    invert: 0
+    type: 0
+    axis: 0
+    joyNum: 0
+  m_UsePhysicalKeys: 0

+ 11 - 7
ProjectSettings/ProjectSettings.asset

@@ -13,7 +13,7 @@ PlayerSettings:
   useOnDemandResources: 0
   accelerometerFrequency: 60
   companyName: XR
-  productName: MRSpace_Client
+  productName: MRSpace_MRSpace
   defaultCursor: {fileID: 0}
   cursorHotspot: {x: 0, y: 0}
   m_SplashScreenBackgroundColor: {r: 0.13725491, g: 0.12156863, b: 0.1254902, a: 1}
@@ -147,7 +147,11 @@ PlayerSettings:
     16:9: 1
     Others: 1
   bundleVersion: 10.13.3
-  preloadedAssets: []
+  preloadedAssets:
+  - {fileID: 11400000, guid: 15bc390d88375eb448a370cd84b9a24d, type: 2}
+  - {fileID: 11400000, guid: eaaad242393318e4f85c45e69c8837f0, type: 2}
+  - {fileID: -6682207197718421661, guid: 8f422df2931cba0478c1fe8ab232b9a3, type: 2}
+  - {fileID: 3493090336618791480, guid: 2d049ae1db0e2b74c8251022ae6dcb95, type: 2}
   metroInputSource: 0
   wsaTransparentSwapchain: 0
   m_HolographicPauseOnTrackingLoss: 1
@@ -167,7 +171,7 @@ PlayerSettings:
   androidSupportedAspectRatio: 1
   androidMaxAspectRatio: 2.1
   applicationIdentifier:
-    Android: com.vuforia.engine.VuforiaEngineServer
+    Android: com.vuforia.engine.MRSpace
     Lumin: com.PTCInc.VuforiaEngine
     Standalone: com.PTCInc.VuforiaEngine
     iPhone: com.vuforia.engine.VuforiaEngine
@@ -184,7 +188,7 @@ PlayerSettings:
   stripEngineCode: 1
   iPhoneStrippingLevel: 0
   iPhoneScriptCallOptimization: 0
-  ForceInternetPermission: 0
+  ForceInternetPermission: 1
   ForceSDCardPermission: 0
   CreateWallpaper: 0
   APKExpansionFiles: 0
@@ -595,7 +599,7 @@ PlayerSettings:
   enableCrashReportAPI: 0
   cameraUsageDescription: Camera access required for target detection and tracking
   locationUsageDescription: 
-  microphoneUsageDescription: 
+  microphoneUsageDescription: For Microphone
   bluetoothUsageDescription: 
   switchNMETAOverride: 
   switchNetLibKey: 
@@ -921,7 +925,7 @@ PlayerSettings:
   metroSplashScreenUseBackgroundColor: 1
   platformCapabilities:
     WindowsStoreApps:
-      EnterpriseAuthentication: False
+      CodeGeneration: False
       OfflineMapsManagement: False
       HumanInterfaceDevice: False
       Location: False
@@ -956,8 +960,8 @@ PlayerSettings:
       Contacts: False
       Proximity: False
       InternetClient: True
-      CodeGeneration: False
       BackgroundMediaPlayback: False
+      EnterpriseAuthentication: False
   metroTargetDeviceFamilies:
     Desktop: False
     Holographic: False

+ 6 - 2
ProjectSettings/TagManager.asset

@@ -3,7 +3,11 @@
 --- !u!78 &1
 TagManager:
   serializedVersion: 2
-  tags: []
+  tags:
+  - Character 1
+  - Character 2
+  - collision
+  - floor
   layers:
   - Default
   - TransparentFX
@@ -30,7 +34,7 @@ TagManager:
   - 
   - 
   - 
-  - 
+  - 25
   - 
   - 
   - 

+ 37 - 0
Ximmerse_UnityXR_SDK_V1.6.0/CONTRIBUTING.md

@@ -0,0 +1,37 @@
+# How to Contribute
+
+Please use the [issue tracker](https://github.com/googlevr/cardboard-xr-plugin/issues)
+to report any bugs or request specific features.
+
+We are happy to review your pull requests.
+
+Follow these steps to contribute changes.
+
+1. Sign our Contributor License Agreement (see below).
+2. Submit a pull request on GitHub.
+
+Here's how your pull request is processed.
+
+3. We will review your changes and leave comments on the pull request.
+4. If accepted, we will merge it into our internal repo and tag the pull request with the "fixed in an upcoming release" label.
+5. After the new version is released, we will close the pull request.
+6. Your change will appear in a future release.
+
+
+## Contributor License Agreement
+
+Contributions to this project must be accompanied by a Contributor License
+Agreement (CLA). You (or your employer) retain the copyright to your
+contribution; this simply gives us permission to use and redistribute your
+contributions as part of the project. Head over to
+<https://cla.developers.google.com/> to see your current agreements on file or
+to sign a new one.
+
+You generally only need to submit a CLA once, so if you've already submitted one
+(even if it was for a different project), you probably don't need to do it
+again.
+
+## Community Guidelines
+
+This project follows
+[Google's Open Source Community Guidelines](https://opensource.google/conduct/).

+ 7 - 0
Ximmerse_UnityXR_SDK_V1.6.0/CONTRIBUTING.md.meta

@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: aed612770682f404bba2db8bc8a2e79e
+TextScriptImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Contents.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: be74550a442d5034f82520c7d6e151fd
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Contents/InputAssets.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 48b97d00ab80e904691e84b34edb1f51
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 316 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Contents/InputAssets/Hand Tracking Input Assets.inputactions

@@ -0,0 +1,316 @@
+{
+    "name": "Hand Tracking Input Assets",
+    "maps": [
+        {
+            "name": "Gesture Input",
+            "id": "ab4ec1d0-47db-49f2-8ec6-dc05f2e67c3a",
+            "actions": [
+                {
+                    "name": "IsAnyHandTracked",
+                    "type": "Button",
+                    "id": "5471441f-a5f1-4ea0-86c6-114b4418fad5",
+                    "expectedControlType": "Button",
+                    "processors": "",
+                    "interactions": "",
+                    "initialStateCheck": false
+                },
+                {
+                    "name": "PalmPosition",
+                    "type": "Value",
+                    "id": "df7999ea-b244-4fae-96ad-77bb139bd45a",
+                    "expectedControlType": "Vector3",
+                    "processors": "",
+                    "interactions": "",
+                    "initialStateCheck": true
+                },
+                {
+                    "name": "GazeRayOrigin",
+                    "type": "Value",
+                    "id": "b603ce0e-3ee7-44c4-94e4-edebbb86f7e1",
+                    "expectedControlType": "Vector3",
+                    "processors": "",
+                    "interactions": "",
+                    "initialStateCheck": true
+                },
+                {
+                    "name": "PalmScale",
+                    "type": "Value",
+                    "id": "56937b68-c9e1-45c4-84a8-dc3c15b85378",
+                    "expectedControlType": "Vector3",
+                    "processors": "",
+                    "interactions": "",
+                    "initialStateCheck": true
+                },
+                {
+                    "name": "PalmNormal",
+                    "type": "Value",
+                    "id": "159e6973-ed26-4834-b050-bc876aca30b4",
+                    "expectedControlType": "Vector3",
+                    "processors": "",
+                    "interactions": "",
+                    "initialStateCheck": true
+                },
+                {
+                    "name": "PalmRotation",
+                    "type": "Value",
+                    "id": "9f9ae148-eac6-469c-9b47-3c4596027bcc",
+                    "expectedControlType": "Quaternion",
+                    "processors": "",
+                    "interactions": "",
+                    "initialStateCheck": true
+                },
+                {
+                    "name": "GazeRayRotation",
+                    "type": "Value",
+                    "id": "ae133afd-1218-4fea-942e-7fe287a28221",
+                    "expectedControlType": "Quaternion",
+                    "processors": "",
+                    "interactions": "",
+                    "initialStateCheck": true
+                },
+                {
+                    "name": "TrackingState",
+                    "type": "Value",
+                    "id": "41af0688-22f4-48be-b57b-0e4405c38831",
+                    "expectedControlType": "Integer",
+                    "processors": "",
+                    "interactions": "",
+                    "initialStateCheck": true
+                },
+                {
+                    "name": "GazeRayState",
+                    "type": "Value",
+                    "id": "4f4e8f81-a241-447b-bf3e-d2dcff548e70",
+                    "expectedControlType": "Integer",
+                    "processors": "",
+                    "interactions": "",
+                    "initialStateCheck": true
+                },
+                {
+                    "name": "IsOpenHand",
+                    "type": "Button",
+                    "id": "8e9866bc-8773-4752-a540-e80601ea6f91",
+                    "expectedControlType": "Button",
+                    "processors": "",
+                    "interactions": "",
+                    "initialStateCheck": false
+                },
+                {
+                    "name": "IsGrasp3D",
+                    "type": "Button",
+                    "id": "d18a1f63-327e-4414-a258-21f972edcf0c",
+                    "expectedControlType": "Button",
+                    "processors": "",
+                    "interactions": "",
+                    "initialStateCheck": false
+                },
+                {
+                    "name": "IsClosedHand",
+                    "type": "Button",
+                    "id": "65e3ebeb-92a6-423f-9789-594972ededc4",
+                    "expectedControlType": "Button",
+                    "processors": "",
+                    "interactions": "",
+                    "initialStateCheck": false
+                },
+                {
+                    "name": "IsSelectUI",
+                    "type": "Button",
+                    "id": "3c35eadb-074a-48c1-8fcb-c00424abf224",
+                    "expectedControlType": "Button",
+                    "processors": "",
+                    "interactions": "",
+                    "initialStateCheck": false
+                },
+                {
+                    "name": "GripValue",
+                    "type": "Value",
+                    "id": "f7727f4f-c415-4795-9f71-81f1fb9c2b6c",
+                    "expectedControlType": "Axis",
+                    "processors": "",
+                    "interactions": "",
+                    "initialStateCheck": true
+                }
+            ],
+            "bindings": [
+                {
+                    "name": "",
+                    "id": "aac10615-435e-4b11-b07e-29e462632925",
+                    "path": "<XimmerseXRGesture>/anyHandIsTracked",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "",
+                    "action": "IsAnyHandTracked",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "",
+                    "id": "aa38f5d5-c81d-4dcd-b5b1-d73edf371adc",
+                    "path": "<XimmerseXRGesture>/palmPosition",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "",
+                    "action": "PalmPosition",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "",
+                    "id": "1d66d548-7fe8-4db8-b70d-d0c9acbde89a",
+                    "path": "<XimmerseXRGesture>/palmScale",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "",
+                    "action": "PalmScale",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "",
+                    "id": "188a66b3-9d9e-4304-ac3d-5ef0dfaeee20",
+                    "path": "<XimmerseXRGesture>/palmNormal",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "",
+                    "action": "PalmNormal",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "",
+                    "id": "4cc5ef80-2b9b-4765-97a3-0b1621eec5b0",
+                    "path": "<XimmerseXRGesture>/palmRotation",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "",
+                    "action": "PalmRotation",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "",
+                    "id": "86143b71-d3a4-4884-a9e6-a6254b864e7f",
+                    "path": "<XimmerseXRGesture>/trackingState",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "",
+                    "action": "TrackingState",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "",
+                    "id": "0d202174-0219-4534-9eea-38c13058e8dd",
+                    "path": "<XimmerseXRGesture>/isOpenHand",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "",
+                    "action": "IsOpenHand",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "",
+                    "id": "726beea1-c5eb-44c2-9d87-e58da52b76d9",
+                    "path": "<XimmerseXRGesture>/isGrasp",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "",
+                    "action": "IsGrasp3D",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "",
+                    "id": "bd52c186-5ad7-442c-bc04-ab2c7822aafb",
+                    "path": "<XimmerseXRGesture>/isCloseHand",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "",
+                    "action": "IsGrasp3D",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "",
+                    "id": "e1f938e1-2de6-42a1-bd29-8aad006089c9",
+                    "path": "<XimmerseXRGesture>/isCloseHand",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "",
+                    "action": "IsClosedHand",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "",
+                    "id": "94ba8708-3f57-45fe-af5f-e3dfc51546a6",
+                    "path": "<XimmerseXRGesture>/isGrasp",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "",
+                    "action": "IsSelectUI",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "",
+                    "id": "8709f0b7-afd8-4d01-ada4-c14d0ddfb8d0",
+                    "path": "<XimmerseXRGesture>/gripValue",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "",
+                    "action": "GripValue",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "",
+                    "id": "81b92c08-819f-467c-9970-372300b6c85a",
+                    "path": "<XimmerseXRGesture>/gazeRayOrigin",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "",
+                    "action": "GazeRayOrigin",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "",
+                    "id": "a9f8b831-2585-400b-b9e8-32ff04100c49",
+                    "path": "<XimmerseXRGesture>/gazeRayRotation",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "",
+                    "action": "GazeRayRotation",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "",
+                    "id": "8f65d80f-3add-48b7-9ba9-35ba88782bb4",
+                    "path": "<XimmerseXRGesture>/gazeRayState",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "",
+                    "action": "GazeRayState",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                },
+                {
+                    "name": "",
+                    "id": "3ac4a369-d0de-4da8-b889-91901f2c8c2e",
+                    "path": "<XimmerseXRGesture>/isCloseHand",
+                    "interactions": "",
+                    "processors": "",
+                    "groups": "",
+                    "action": "IsSelectUI",
+                    "isComposite": false,
+                    "isPartOfComposite": false
+                }
+            ]
+        }
+    ],
+    "controlSchemes": []
+}

+ 14 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Contents/InputAssets/Hand Tracking Input Assets.inputactions.meta

@@ -0,0 +1,14 @@
+fileFormatVersion: 2
+guid: 0b3f462726c21d84cbdf5e99cf5a4c81
+ScriptedImporter:
+  internalIDToNameTable: []
+  externalObjects: {}
+  serializedVersion: 2
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
+  script: {fileID: 11500000, guid: 8404be70184654265930450def6a9037, type: 3}
+  generateWrapperCode: 0
+  wrapperCodePath: 
+  wrapperClassName: 
+  wrapperCodeNamespace: 

+ 8 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Contents/Prefabs.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 2903cc51dc796a046a9e283db05516e1
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 81 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Contents/Prefabs/Connection.mat

@@ -0,0 +1,81 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+  serializedVersion: 6
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: Connection
+  m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
+  m_ShaderKeywords: _ALPHAPREMULTIPLY_ON
+  m_LightmapFlags: 4
+  m_EnableInstancingVariants: 0
+  m_DoubleSidedGI: 0
+  m_CustomRenderQueue: 3000
+  stringTagMap:
+    RenderType: Transparent
+  disabledShaderPasses: []
+  m_SavedProperties:
+    serializedVersion: 3
+    m_TexEnvs:
+    - _BumpMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _DetailAlbedoMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _DetailMask:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _DetailNormalMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _EmissionMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _MainTex:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _MetallicGlossMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _OcclusionMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _ParallaxMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    m_Floats:
+    - _BumpScale: 1
+    - _Cutoff: 0.5
+    - _DetailNormalMapScale: 1
+    - _DstBlend: 10
+    - _GlossMapScale: 1
+    - _Glossiness: 0.5
+    - _GlossyReflections: 1
+    - _InvFade: 1
+    - _Metallic: 0
+    - _Mode: 3
+    - _OcclusionStrength: 1
+    - _Parallax: 0.02
+    - _SmoothnessTextureChannel: 0
+    - _SpecularHighlights: 1
+    - _SrcBlend: 1
+    - _UVSec: 0
+    - _ZWrite: 0
+    m_Colors:
+    - _Color: {r: 0.045701336, g: 0.44500843, b: 0.745283, a: 0.38431373}
+    - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
+    - _TintColor: {r: 0.08470623, g: 0.05517978, b: 0.3773585, a: 0.7647059}
+  m_BuildTextureStacks: []

+ 8 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Contents/Prefabs/Connection.mat.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: a7e42da9bf6b9ce4cb81b3a0a82910b9
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 2100000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 81 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Contents/Prefabs/Joint.mat

@@ -0,0 +1,81 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+  serializedVersion: 6
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: Joint
+  m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
+  m_ShaderKeywords: _ALPHAPREMULTIPLY_ON
+  m_LightmapFlags: 4
+  m_EnableInstancingVariants: 0
+  m_DoubleSidedGI: 0
+  m_CustomRenderQueue: 3000
+  stringTagMap:
+    RenderType: Transparent
+  disabledShaderPasses: []
+  m_SavedProperties:
+    serializedVersion: 3
+    m_TexEnvs:
+    - _BumpMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _DetailAlbedoMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _DetailMask:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _DetailNormalMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _EmissionMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _MainTex:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _MetallicGlossMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _OcclusionMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _ParallaxMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    m_Floats:
+    - _BumpScale: 1
+    - _Cutoff: 0.5
+    - _DetailNormalMapScale: 1
+    - _DstBlend: 10
+    - _GlossMapScale: 1
+    - _Glossiness: 0.5
+    - _GlossyReflections: 1
+    - _InvFade: 1
+    - _Metallic: 0
+    - _Mode: 3
+    - _OcclusionStrength: 1
+    - _Parallax: 0.02
+    - _SmoothnessTextureChannel: 0
+    - _SpecularHighlights: 1
+    - _SrcBlend: 1
+    - _UVSec: 0
+    - _ZWrite: 0
+    m_Colors:
+    - _Color: {r: 0.6509434, g: 0.6509434, b: 0.6509434, a: 0.65882355}
+    - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
+    - _TintColor: {r: 0.054111768, g: 0.5249192, b: 0.6037736, a: 0.7607843}
+  m_BuildTextureStacks: []

+ 8 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Contents/Prefabs/Joint.mat.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: aa29c5e6d2d0442449394e83e3cef982
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 2100000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 81 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Contents/Prefabs/Palm.mat

@@ -0,0 +1,81 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+  serializedVersion: 6
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: Palm
+  m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
+  m_ShaderKeywords: _ALPHABLEND_ON
+  m_LightmapFlags: 4
+  m_EnableInstancingVariants: 0
+  m_DoubleSidedGI: 0
+  m_CustomRenderQueue: 3000
+  stringTagMap:
+    RenderType: Transparent
+  disabledShaderPasses: []
+  m_SavedProperties:
+    serializedVersion: 3
+    m_TexEnvs:
+    - _BumpMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _DetailAlbedoMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _DetailMask:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _DetailNormalMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _EmissionMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _MainTex:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _MetallicGlossMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _OcclusionMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _ParallaxMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    m_Floats:
+    - _BumpScale: 1
+    - _Cutoff: 0.5
+    - _DetailNormalMapScale: 1
+    - _DstBlend: 10
+    - _GlossMapScale: 1
+    - _Glossiness: 0.5
+    - _GlossyReflections: 1
+    - _InvFade: 1
+    - _Metallic: 0
+    - _Mode: 2
+    - _OcclusionStrength: 1
+    - _Parallax: 0.02
+    - _SmoothnessTextureChannel: 0
+    - _SpecularHighlights: 1
+    - _SrcBlend: 5
+    - _UVSec: 0
+    - _ZWrite: 0
+    m_Colors:
+    - _Color: {r: 0.9245283, g: 0.69539714, b: 0.039248828, a: 0.41960785}
+    - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
+    - _TintColor: {r: 0.4716981, g: 0.43119454, b: 0.0022249965, a: 0.68235296}
+  m_BuildTextureStacks: []

+ 8 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Contents/Prefabs/Palm.mat.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 6471bf70fc5b22944ab6f1255520bd05
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 2100000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 110 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Contents/TableMat.mat

@@ -0,0 +1,110 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &-4076855787846570795
+MonoBehaviour:
+  m_ObjectHideFlags: 11
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  version: 1
+--- !u!21 &2100000
+Material:
+  serializedVersion: 6
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: TableMat
+  m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
+  m_ShaderKeywords: 
+  m_LightmapFlags: 4
+  m_EnableInstancingVariants: 0
+  m_DoubleSidedGI: 0
+  m_CustomRenderQueue: -1
+  stringTagMap: {}
+  disabledShaderPasses: []
+  m_SavedProperties:
+    serializedVersion: 3
+    m_TexEnvs:
+    - _BaseMap:
+        m_Texture: {fileID: 10309, guid: 0000000000000000f000000000000000, type: 0}
+        m_Scale: {x: 8, y: 2}
+        m_Offset: {x: 0, y: 0}
+    - _BumpMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _DetailAlbedoMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _DetailMask:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _DetailNormalMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _EmissionMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 8, y: 2}
+        m_Offset: {x: 0, y: 0}
+    - _MainTex:
+        m_Texture: {fileID: 10309, guid: 0000000000000000f000000000000000, type: 0}
+        m_Scale: {x: 8, y: 2}
+        m_Offset: {x: 0, y: 0}
+    - _MetallicGlossMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _OcclusionMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _ParallaxMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _SpecGlossMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    m_Floats:
+    - _AlphaClip: 0
+    - _Blend: 0
+    - _BumpScale: 1
+    - _Cull: 2
+    - _Cutoff: 0.5
+    - _DetailNormalMapScale: 1
+    - _DstBlend: 0
+    - _EnvironmentReflections: 1
+    - _GlossMapScale: 1
+    - _Glossiness: 0
+    - _GlossyReflections: 1
+    - _Metallic: 0
+    - _Mode: 0
+    - _OcclusionStrength: 1
+    - _Parallax: 0.02
+    - _QueueOffset: 0
+    - _ReceiveShadows: 1
+    - _Smoothness: 0
+    - _SmoothnessTextureChannel: 0
+    - _SpecularHighlights: 1
+    - _SrcBlend: 1
+    - _Surface: 0
+    - _UVSec: 0
+    - _WorkflowMode: 1
+    - _ZWrite: 1
+    m_Colors:
+    - _BaseColor: {r: 1, g: 1, b: 1, a: 1}
+    - _Color: {r: 1, g: 1, b: 1, a: 1}
+    - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
+    - _SpecColor: {r: 0.2, g: 0.2, b: 0.2, a: 1}
+  m_BuildTextureStacks: []

+ 8 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Contents/TableMat.mat.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 0a42a7f624a149b46b4f87b0302de393
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Contents/Textures.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 884bcb9211b35f446be2e69fe45b7bc0
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
Ximmerse_UnityXR_SDK_V1.6.0/Contents/Textures/Rectle_small.png


+ 120 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Contents/Textures/Rectle_small.png.meta

@@ -0,0 +1,120 @@
+fileFormatVersion: 2
+guid: c7d6170b7ab939a46a8b2423ff49496d
+TextureImporter:
+  internalIDToNameTable: []
+  externalObjects: {}
+  serializedVersion: 11
+  mipmaps:
+    mipMapMode: 0
+    enableMipMap: 0
+    sRGBTexture: 1
+    linearTexture: 0
+    fadeOut: 0
+    borderMipMap: 0
+    mipMapsPreserveCoverage: 0
+    alphaTestReferenceValue: 0.5
+    mipMapFadeDistanceStart: 1
+    mipMapFadeDistanceEnd: 3
+  bumpmap:
+    convertToNormalMap: 0
+    externalNormalMap: 0
+    heightScale: 0.25
+    normalMapFilter: 0
+  isReadable: 0
+  streamingMipmaps: 0
+  streamingMipmapsPriority: 0
+  vTOnly: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 6
+  cubemapConvolution: 0
+  seamlessCubemap: 0
+  textureFormat: 1
+  maxTextureSize: 2048
+  textureSettings:
+    serializedVersion: 2
+    filterMode: -1
+    aniso: -1
+    mipBias: -100
+    wrapU: 1
+    wrapV: 1
+    wrapW: -1
+  nPOTScale: 0
+  lightmap: 0
+  compressionQuality: 50
+  spriteMode: 1
+  spriteExtrude: 1
+  spriteMeshType: 1
+  alignment: 0
+  spritePivot: {x: 0.5, y: 0.5}
+  spritePixelsToUnits: 100
+  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+  spriteGenerateFallbackPhysicsShape: 1
+  alphaUsage: 1
+  alphaIsTransparency: 1
+  spriteTessellationDetail: -1
+  textureType: 8
+  textureShape: 1
+  singleChannelComponent: 0
+  flipbookRows: 1
+  flipbookColumns: 1
+  maxTextureSizeSet: 0
+  compressionQualitySet: 0
+  textureFormatSet: 0
+  ignorePngGamma: 0
+  applyGammaDecoding: 0
+  platformSettings:
+  - serializedVersion: 3
+    buildTarget: DefaultTexturePlatform
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Standalone
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Android
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+    physicsShape: []
+    bones: []
+    spriteID: 5e97eb03825dee720800000000000000
+    internalID: 0
+    vertices: []
+    indices: 
+    edges: []
+    weights: []
+    secondaryTextures: []
+  spritePackingTag: 
+  pSDRemoveMatte: 0
+  pSDShowRemoveMatteOption: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
Ximmerse_UnityXR_SDK_V1.6.0/Contents/Textures/Reticle-Hover.png


+ 120 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Contents/Textures/Reticle-Hover.png.meta

@@ -0,0 +1,120 @@
+fileFormatVersion: 2
+guid: 9f34296ddf343ca43adac54960c77780
+TextureImporter:
+  internalIDToNameTable: []
+  externalObjects: {}
+  serializedVersion: 11
+  mipmaps:
+    mipMapMode: 0
+    enableMipMap: 1
+    sRGBTexture: 1
+    linearTexture: 0
+    fadeOut: 0
+    borderMipMap: 0
+    mipMapsPreserveCoverage: 0
+    alphaTestReferenceValue: 0.5
+    mipMapFadeDistanceStart: 1
+    mipMapFadeDistanceEnd: 3
+  bumpmap:
+    convertToNormalMap: 0
+    externalNormalMap: 0
+    heightScale: 0.25
+    normalMapFilter: 0
+  isReadable: 0
+  streamingMipmaps: 0
+  streamingMipmapsPriority: 0
+  vTOnly: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 6
+  cubemapConvolution: 0
+  seamlessCubemap: 0
+  textureFormat: 1
+  maxTextureSize: 2048
+  textureSettings:
+    serializedVersion: 2
+    filterMode: 1
+    aniso: 1
+    mipBias: 0
+    wrapU: 1
+    wrapV: 1
+    wrapW: 1
+  nPOTScale: 1
+  lightmap: 0
+  compressionQuality: 50
+  spriteMode: 0
+  spriteExtrude: 1
+  spriteMeshType: 1
+  alignment: 0
+  spritePivot: {x: 0.5, y: 0.5}
+  spritePixelsToUnits: 100
+  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+  spriteGenerateFallbackPhysicsShape: 1
+  alphaUsage: 1
+  alphaIsTransparency: 1
+  spriteTessellationDetail: -1
+  textureType: 0
+  textureShape: 1
+  singleChannelComponent: 0
+  flipbookRows: 1
+  flipbookColumns: 1
+  maxTextureSizeSet: 0
+  compressionQualitySet: 0
+  textureFormatSet: 0
+  ignorePngGamma: 0
+  applyGammaDecoding: 0
+  platformSettings:
+  - serializedVersion: 3
+    buildTarget: DefaultTexturePlatform
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Standalone
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Android
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+    physicsShape: []
+    bones: []
+    spriteID: 
+    internalID: 0
+    vertices: []
+    indices: 
+    edges: []
+    weights: []
+    secondaryTextures: []
+  spritePackingTag: 
+  pSDRemoveMatte: 0
+  pSDShowRemoveMatteOption: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
Ximmerse_UnityXR_SDK_V1.6.0/Contents/Textures/Reticle-Normal.png


+ 120 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Contents/Textures/Reticle-Normal.png.meta

@@ -0,0 +1,120 @@
+fileFormatVersion: 2
+guid: 2e8ca5af1531d334fb2709456e98183c
+TextureImporter:
+  internalIDToNameTable: []
+  externalObjects: {}
+  serializedVersion: 11
+  mipmaps:
+    mipMapMode: 0
+    enableMipMap: 0
+    sRGBTexture: 1
+    linearTexture: 0
+    fadeOut: 0
+    borderMipMap: 0
+    mipMapsPreserveCoverage: 0
+    alphaTestReferenceValue: 0.5
+    mipMapFadeDistanceStart: 1
+    mipMapFadeDistanceEnd: 3
+  bumpmap:
+    convertToNormalMap: 0
+    externalNormalMap: 0
+    heightScale: 0.25
+    normalMapFilter: 0
+  isReadable: 0
+  streamingMipmaps: 0
+  streamingMipmapsPriority: 0
+  vTOnly: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 6
+  cubemapConvolution: 0
+  seamlessCubemap: 0
+  textureFormat: 1
+  maxTextureSize: 2048
+  textureSettings:
+    serializedVersion: 2
+    filterMode: 0
+    aniso: 1
+    mipBias: 0
+    wrapU: 1
+    wrapV: 1
+    wrapW: 1
+  nPOTScale: 1
+  lightmap: 0
+  compressionQuality: 50
+  spriteMode: 0
+  spriteExtrude: 1
+  spriteMeshType: 1
+  alignment: 0
+  spritePivot: {x: 0.5, y: 0.5}
+  spritePixelsToUnits: 100
+  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+  spriteGenerateFallbackPhysicsShape: 1
+  alphaUsage: 1
+  alphaIsTransparency: 1
+  spriteTessellationDetail: -1
+  textureType: 0
+  textureShape: 1
+  singleChannelComponent: 0
+  flipbookRows: 1
+  flipbookColumns: 1
+  maxTextureSizeSet: 0
+  compressionQualitySet: 0
+  textureFormatSet: 0
+  ignorePngGamma: 0
+  applyGammaDecoding: 0
+  platformSettings:
+  - serializedVersion: 3
+    buildTarget: DefaultTexturePlatform
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Standalone
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Android
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+    physicsShape: []
+    bones: []
+    spriteID: 
+    internalID: 0
+    vertices: []
+    indices: 
+    edges: []
+    weights: []
+    secondaryTextures: []
+  spritePackingTag: 
+  pSDRemoveMatte: 0
+  pSDShowRemoveMatteOption: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
Ximmerse_UnityXR_SDK_V1.6.0/Contents/Textures/Reticle-Select.png


+ 120 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Contents/Textures/Reticle-Select.png.meta

@@ -0,0 +1,120 @@
+fileFormatVersion: 2
+guid: 7abbff7c0eb42e2449dc0193babe6964
+TextureImporter:
+  internalIDToNameTable: []
+  externalObjects: {}
+  serializedVersion: 11
+  mipmaps:
+    mipMapMode: 0
+    enableMipMap: 1
+    sRGBTexture: 1
+    linearTexture: 0
+    fadeOut: 0
+    borderMipMap: 0
+    mipMapsPreserveCoverage: 0
+    alphaTestReferenceValue: 0.5
+    mipMapFadeDistanceStart: 1
+    mipMapFadeDistanceEnd: 3
+  bumpmap:
+    convertToNormalMap: 0
+    externalNormalMap: 0
+    heightScale: 0.25
+    normalMapFilter: 0
+  isReadable: 0
+  streamingMipmaps: 0
+  streamingMipmapsPriority: 0
+  vTOnly: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 6
+  cubemapConvolution: 0
+  seamlessCubemap: 0
+  textureFormat: 1
+  maxTextureSize: 2048
+  textureSettings:
+    serializedVersion: 2
+    filterMode: 1
+    aniso: 1
+    mipBias: 0
+    wrapU: 0
+    wrapV: 0
+    wrapW: 0
+  nPOTScale: 1
+  lightmap: 0
+  compressionQuality: 50
+  spriteMode: 0
+  spriteExtrude: 1
+  spriteMeshType: 1
+  alignment: 0
+  spritePivot: {x: 0.5, y: 0.5}
+  spritePixelsToUnits: 100
+  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+  spriteGenerateFallbackPhysicsShape: 1
+  alphaUsage: 1
+  alphaIsTransparency: 1
+  spriteTessellationDetail: -1
+  textureType: 0
+  textureShape: 1
+  singleChannelComponent: 0
+  flipbookRows: 1
+  flipbookColumns: 1
+  maxTextureSizeSet: 0
+  compressionQualitySet: 0
+  textureFormatSet: 0
+  ignorePngGamma: 0
+  applyGammaDecoding: 0
+  platformSettings:
+  - serializedVersion: 3
+    buildTarget: DefaultTexturePlatform
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Standalone
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  - serializedVersion: 3
+    buildTarget: Android
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+    physicsShape: []
+    bones: []
+    spriteID: 
+    internalID: 0
+    vertices: []
+    indices: 
+    edges: []
+    weights: []
+    secondaryTextures: []
+  spritePackingTag: 
+  pSDRemoveMatte: 0
+  pSDShowRemoveMatteOption: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 78 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Contents/UVCheck.mat

@@ -0,0 +1,78 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+  serializedVersion: 6
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: UVCheck
+  m_Shader: {fileID: 10752, guid: 0000000000000000f000000000000000, type: 0}
+  m_ShaderKeywords: 
+  m_LightmapFlags: 4
+  m_EnableInstancingVariants: 0
+  m_DoubleSidedGI: 0
+  m_CustomRenderQueue: -1
+  stringTagMap: {}
+  disabledShaderPasses: []
+  m_SavedProperties:
+    serializedVersion: 3
+    m_TexEnvs:
+    - _BumpMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _DetailAlbedoMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _DetailMask:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _DetailNormalMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _EmissionMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _MainTex:
+        m_Texture: {fileID: 2800000, guid: 63830c0cf4cf339408b1fccdbd4ba13a, type: 3}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _MetallicGlossMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _OcclusionMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _ParallaxMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    m_Floats:
+    - _BumpScale: 1
+    - _Cutoff: 0.5
+    - _DetailNormalMapScale: 1
+    - _DstBlend: 0
+    - _GlossMapScale: 1
+    - _Glossiness: 0.5
+    - _GlossyReflections: 1
+    - _Metallic: 0
+    - _Mode: 0
+    - _OcclusionStrength: 1
+    - _Parallax: 0.02
+    - _SmoothnessTextureChannel: 0
+    - _SpecularHighlights: 1
+    - _SrcBlend: 1
+    - _UVSec: 0
+    - _ZWrite: 1
+    m_Colors:
+    - _Color: {r: 1, g: 1, b: 1, a: 1}
+    - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
+  m_BuildTextureStacks: []

+ 8 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Contents/UVCheck.mat.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: af6f0e9dbaf998147bad141adf3bd148
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
Ximmerse_UnityXR_SDK_V1.6.0/Contents/UVChecker.png


+ 96 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Contents/UVChecker.png.meta

@@ -0,0 +1,96 @@
+fileFormatVersion: 2
+guid: 63830c0cf4cf339408b1fccdbd4ba13a
+TextureImporter:
+  internalIDToNameTable: []
+  externalObjects: {}
+  serializedVersion: 11
+  mipmaps:
+    mipMapMode: 0
+    enableMipMap: 1
+    sRGBTexture: 1
+    linearTexture: 0
+    fadeOut: 0
+    borderMipMap: 0
+    mipMapsPreserveCoverage: 0
+    alphaTestReferenceValue: 0.5
+    mipMapFadeDistanceStart: 1
+    mipMapFadeDistanceEnd: 3
+  bumpmap:
+    convertToNormalMap: 0
+    externalNormalMap: 0
+    heightScale: 0.25
+    normalMapFilter: 0
+  isReadable: 0
+  streamingMipmaps: 0
+  streamingMipmapsPriority: 0
+  vTOnly: 0
+  grayScaleToAlpha: 0
+  generateCubemap: 6
+  cubemapConvolution: 0
+  seamlessCubemap: 0
+  textureFormat: 1
+  maxTextureSize: 2048
+  textureSettings:
+    serializedVersion: 2
+    filterMode: -1
+    aniso: -1
+    mipBias: -100
+    wrapU: -1
+    wrapV: -1
+    wrapW: -1
+  nPOTScale: 1
+  lightmap: 0
+  compressionQuality: 50
+  spriteMode: 0
+  spriteExtrude: 1
+  spriteMeshType: 1
+  alignment: 0
+  spritePivot: {x: 0.5, y: 0.5}
+  spritePixelsToUnits: 100
+  spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+  spriteGenerateFallbackPhysicsShape: 1
+  alphaUsage: 1
+  alphaIsTransparency: 0
+  spriteTessellationDetail: -1
+  textureType: 0
+  textureShape: 1
+  singleChannelComponent: 0
+  flipbookRows: 1
+  flipbookColumns: 1
+  maxTextureSizeSet: 0
+  compressionQualitySet: 0
+  textureFormatSet: 0
+  ignorePngGamma: 0
+  applyGammaDecoding: 0
+  platformSettings:
+  - serializedVersion: 3
+    buildTarget: DefaultTexturePlatform
+    maxTextureSize: 2048
+    resizeAlgorithm: 0
+    textureFormat: -1
+    textureCompression: 1
+    compressionQuality: 50
+    crunchedCompression: 0
+    allowsAlphaSplitting: 0
+    overridden: 0
+    androidETC2FallbackOverride: 0
+    forceMaximumCompressionQuality_BC6H_BC7: 0
+  spriteSheet:
+    serializedVersion: 2
+    sprites: []
+    outline: []
+    physicsShape: []
+    bones: []
+    spriteID: 
+    internalID: 0
+    vertices: []
+    indices: 
+    edges: []
+    weights: []
+    secondaryTextures: []
+  spritePackingTag: 
+  pSDRemoveMatte: 0
+  pSDShowRemoveMatteOption: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Editor.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: f1e076de859fa49d7bf78a294d512bd7
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Editor/BuildPipelineProcessor.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 910b2de821a6a784cbdc4064021c62d3
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 115 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Editor/BuildPipelineProcessor/BuildPipelineProcesor.cs

@@ -0,0 +1,115 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEditor;
+using UnityEditor.Callbacks;
+using System;
+using System.IO;
+using UnityEditor.Build;
+using UnityEditor.Build.Reporting;
+
+namespace Ximmerse.XR
+{
+    public class BuildPlayerProcessor : IPreprocessBuildWithReport, IPostprocessBuildWithReport
+    {
+
+        /// <summary>
+        /// The subpath of tracking profile files to streaming assets.
+        /// </summary>
+        const string kTrackingProfiles = "/TrackingProfiles";
+
+        public int callbackOrder => 1;
+
+
+        /// <summary>
+        /// Copy tracking profiles from plugin to streaming assets.
+        /// </summary>
+        static void CopyTrackingProfiles()
+        {
+            string streamingAssets = Application.streamingAssetsPath;
+
+            if (!Directory.Exists(streamingAssets))
+            {
+                Directory.CreateDirectory(streamingAssets);
+            }
+
+            string destPath = streamingAssets + kTrackingProfiles;
+            if (!Directory.Exists(destPath))
+            {
+                Directory.CreateDirectory(destPath);
+            }
+
+            if (Directory.Exists(SDKEditorUtility.kPluginTrackingProfilePath))
+            {
+                var jsons = Directory.GetFiles(SDKEditorUtility.kPluginTrackingProfilePath, "*.json", SearchOption.TopDirectoryOnly);
+                var datas = Directory.GetFiles(SDKEditorUtility.kPluginTrackingProfilePath, "*.dat", SearchOption.TopDirectoryOnly);
+                foreach (var json in jsons)
+                {
+                    string newFileName = Path.Combine(destPath, Path.GetFileName(json));
+                    File.Copy(json, newFileName, true);
+                    Debug.LogFormat("Copy: {0}=>{1}", json, newFileName);
+                }
+                foreach (var data in datas)
+                {
+                    string newFileName = Path.Combine(destPath, Path.GetFileName(data));
+                    File.Copy(data, newFileName, true);
+                    Debug.LogFormat("Copy: {0}=>{1}", data, newFileName);
+                }
+                Debug.LogFormat("All tracking profiles has been copied from {0} => {1}", SDKEditorUtility.kPluginTrackingProfilePath, destPath);
+            }
+        }
+
+        /// <summary>
+        /// Cleanup tracking profiles after building player.
+        /// </summary>
+        static void CleanupTrackingProfiles()
+        {
+            string streamingAssets = Application.streamingAssetsPath;
+
+            if (!Directory.Exists(streamingAssets))
+            {
+                return;
+            }
+
+            string destPath = streamingAssets + kTrackingProfiles;
+            if (!Directory.Exists(destPath))
+            {
+                return;
+            }
+
+            Directory.Delete(destPath, true); //delete the tracking profiles directory
+            string metaDestPath = destPath + ".meta";
+            if (File.Exists(metaDestPath))
+            {
+                File.Delete(metaDestPath); //delete dest path meta
+            }
+
+            var f = Directory.GetFiles(streamingAssets);
+            if (f.Length == 0)
+            {
+                Directory.Delete(streamingAssets, true); //delete the sa dir if empty
+                string metaSA = streamingAssets + ".meta";
+                if (File.Exists(metaSA))
+                {
+                    File.Delete(metaSA); //delete SA meta
+                }
+            }
+        }
+
+        public void OnPostprocessBuild(BuildReport report)
+        {
+            if (report.summary.platform == BuildTarget.Android)
+            {
+                CleanupTrackingProfiles();
+            }
+        }
+
+        public void OnPreprocessBuild(BuildReport report)
+        {
+            if (report.summary.platform == BuildTarget.Android)
+            {
+                CopyTrackingProfiles();
+            }
+        }
+    }
+}

+ 11 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Editor/BuildPipelineProcessor/BuildPipelineProcesor.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 75dcea86ad4d6d54e98a53096cb9af71
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 19 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Editor/BuildSettingConst.cs

@@ -0,0 +1,19 @@
+using UnityEditor;
+using UnityEditor.Build;
+using UnityEditor.Build.Reporting;
+using UnityEditor.Callbacks;
+using UnityEngine;
+using Ximmerse.XR.Tag;
+[System.Obsolete]
+public class BuildSettingConst : IPreprocessBuild, IPreprocessBuildWithReport
+{
+    public int callbackOrder { get { return 0; } }
+    public void OnPreprocessBuild(BuildTarget target, string path)
+    {
+    }
+
+    public void OnPreprocessBuild(BuildReport report)
+    {
+        TagConst.issetting = false;
+    }
+}

+ 11 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Editor/BuildSettingConst.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 2ba0127fb9478db4e9d38fa74406c366
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Editor/EditorUtilities.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 3734b9285ebc5f4409fad936d886678b
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 93 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Editor/EditorUtilities/SDKEditorUtility.cs

@@ -0,0 +1,93 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEditor;
+using UnityEditor.PackageManager.Requests;
+using UnityEditor.PackageManager;
+using PackageInfo = UnityEditor.PackageManager.PackageInfo;
+using System;
+using System.IO;
+
+
+namespace Ximmerse.XR
+{
+    /// <summary>
+    /// SDK editor utility.
+    /// </summary>
+    public static class SDKEditorUtility
+    {
+
+        /// <summary>
+        /// The asset path of the ximmerse XR plugin.
+        /// </summary>
+        public static string kPluginFolderAssetPath
+        {
+            get; private set;
+        }
+
+        /// <summary>
+        /// The absolute path of the ximmerse XR plugin.
+        /// </summary>
+        public static string kPluginFolderResolvePath
+        {
+            get; private set;
+        }
+
+        /// <summary>
+        /// The asset path of the ximmerse XR plugin's tracking profile
+        /// </summary>
+        public static string kPluginTrackingProfilePath
+        {
+            get; private set;
+        }
+
+        public const string kXimmerseXRPackageName = "com.ximmerse.xr";
+
+        /// <summary>
+        /// The tracking profile's relative path to plugin root
+        /// </summary>
+        public const string kTrackingProfileRelativePath = "/TrackingProfiles";
+
+        /// <summary>
+        /// The tracking profile's absolute path.
+        /// </summary>
+        public static string kTrackingProfileResolvePath
+        {
+            get => kPluginFolderResolvePath + kTrackingProfileRelativePath;
+        }
+
+        [InitializeOnLoadMethod]
+        static void InitializeEditor()
+        {
+            var pkg = GetXimmerseXRSDKPackageInfo();
+            if (pkg != null)
+            {
+                kPluginFolderAssetPath = pkg.assetPath;
+                kPluginFolderResolvePath = pkg.resolvedPath;
+                kPluginTrackingProfilePath = pkg.assetPath + kTrackingProfileRelativePath;
+                //Debug.LogFormat("Ximmerse XR plugin path : {0}, resolve path : {1}, tracking profile path: {2}", pkg.assetPath, pkg.resolvedPath, kPluginTrackingProfilePath);
+            }
+        }
+
+        /// <summary>
+        /// Gets the Ximmerse XR package info.
+        /// </summary>
+        /// <returns></returns>
+        public static PackageInfo GetXimmerseXRSDKPackageInfo()
+        {
+            ListRequest list = Client.List(offlineMode: true);
+            while (!list.IsCompleted)
+            {
+
+            }
+            foreach (PackageInfo packageInfo in list.Result)
+            {
+                if (packageInfo.name.Equals(kXimmerseXRPackageName, StringComparison.OrdinalIgnoreCase))
+                {
+                    return packageInfo;
+                }
+            }
+            return default(PackageInfo);
+        }
+    }
+}

+ 11 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Editor/EditorUtilities/SDKEditorUtility.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 28be4664f8fc1314bbcadabb88b1576a
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 603 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Editor/EditorUtilities/SDKInputBindingSetup.cs

@@ -0,0 +1,603 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEditor;
+using UnityEditor.PackageManager.Requests;
+using UnityEditor.PackageManager;
+using System;
+using System.IO;
+
+
+namespace Ximmerse.XR
+{
+    /// <summary>
+    /// Ximmerse SDK XR Setup binding.
+    /// </summary>
+    public static class SDKInputBindingSetup 
+    {
+
+
+        [InitializeOnLoadMethod]
+        static void AutoSetup()
+        {
+            GenerateXimmerseXRControllerInputBinding();
+        }
+        #region Internal Process
+
+        /// <summary>
+        /// The default input binding required to access ximmerse ring controller event.
+        /// </summary>
+        static List<InputAxis> axisList = new List<InputAxis>
+        {
+            #region Default Unity bindings
+            new InputAxis()
+            {
+                name = "Horizontal",
+                descriptiveName = "Horizontal",
+                dead = 0.19f,
+                axis = 4,
+                type = 0,
+            },
+            new InputAxis()
+            {
+                name = "Vertical",
+                descriptiveName = "Vertical",
+                dead = 0.19f,
+                axis = 5,
+                type = 0,
+            },
+            new InputAxis()
+            {
+                name = "Fire1",
+                positiveButton = "left ctrl",
+                altPositiveButton = "mouse 0",
+                dead = 0.19f,
+                axis = 5,
+                type = 0,
+            },
+            new InputAxis()
+            {
+                name = "Fire2",
+                positiveButton = "left alt",
+                altPositiveButton = "mouse 1",
+                dead = 0.19f,
+                axis = 5,
+                type = 0,
+            },
+            new InputAxis()
+            {
+                name = "Fire3",
+                positiveButton = "left shift",
+                altPositiveButton = "mouse 2",
+                dead = 0.19f,
+                axis = 5,
+                type = 0,
+            },
+            new InputAxis()
+            {
+                name = "Jump",
+                positiveButton = "space",
+                dead = 0.19f,
+                axis = 5,
+                type = 0,
+            },
+            new InputAxis()
+            {
+                name = "Mouse X",
+                dead = 0,
+                sensitivity = 0.1f,
+                axis = 1,
+                type = 1,
+            },
+            new InputAxis()
+            {
+                name = "Mouse Y",
+                dead = 0,
+                sensitivity = 0.1f,
+                axis = 2,
+                type = 1,
+            },
+            new InputAxis()
+            {
+                name = "Mouse ScrollWheel",
+                dead = 0,
+                sensitivity = 0.1f,
+                axis = 3,
+                type = 1,
+            },
+            new InputAxis()
+            {
+                name = "Submit",
+                descriptiveName = "Submit",
+                positiveButton = "joystick button 0",
+                gravity = 0.0f,
+                dead = 0.0f,
+                sensitivity = 0.1f,
+                type = 0,
+            },
+            new InputAxis() 
+            {
+                name = "Cancel",
+                descriptiveName = "Cancel",
+                positiveButton = "joystick button 1",
+                gravity = 0.0f,
+                dead = 0.0f,
+                sensitivity = 0.1f,
+                type = 0,
+            },
+            #endregion 
+
+
+
+            #region LeftHand
+            new InputAxis()
+            {
+                name = "XRI_Left_Primary2DAxis_Vertical",
+                descriptiveName = "Device joystick/touchpad horizontal motion",
+                dead = 0.19f,
+                axis = 2,
+                type = 2,
+            },
+            new InputAxis()
+            {
+                name = "XRI_Left_Primary2DAxis_Horizontal",
+                descriptiveName = "Device joystick/touchpad horizontal motion",
+                dead = 0.19f,
+                axis = 1,
+                type = 2,
+            },
+            new InputAxis()
+            {
+                name = "XRI_Left_Trigger",
+                descriptiveName = "Device trigger axis",
+                axis = 9,
+                type = 2,
+            },
+            new InputAxis()
+            {
+                name = "XRI_Left_Grip",
+                descriptiveName = "Device grip axis",
+                axis = 11,
+                type = 2,
+            },
+            new InputAxis()
+            {
+                name = "XRI_Left_IndexTouch",
+                descriptiveName = "Device index finger proximity touch axis.",
+                dead = 0.19f,
+                axis = 13,
+                type = 2,
+            },
+            // Button Data
+            new InputAxis()
+            {
+                name = "XRI_Left_PrimaryButton",
+                descriptiveName = "Device primary button",
+                positiveButton = "joystick button 2",
+                gravity = 1000.0f,
+                sensitivity = 1000.0f,
+                type = 0,
+            },
+            new InputAxis()
+            {
+                name = "XRI_Left_SecondaryButton",
+                descriptiveName = "Device secondary button",
+                positiveButton = "joystick button 3",
+                gravity = 1000.0f,
+                sensitivity = 1000.0f,
+                type = 0,
+            },
+            new InputAxis()
+            {
+                name = "XRI_Left_GripButton",
+                descriptiveName = "Device grip button",
+                positiveButton = "joystick button 4",
+                gravity = 0.0f,
+                dead = 0.0f,
+                sensitivity = 0.1f,
+                type = 0,
+            },
+            new InputAxis()
+            {
+                name = "XRI_Left_TriggerButton",
+                descriptiveName = "Device trigger button",
+                positiveButton = "joystick button 14",
+                gravity = 0.0f,
+                dead = 0.0f,
+                sensitivity = 0.1f,
+                type = 0,
+            },
+            new InputAxis()
+            {
+                name = "XRI_Left_MenuButton",
+                descriptiveName = "Device menu button",
+                positiveButton = "joystick button 6",
+                gravity = 1000.0f,
+                sensitivity = 1000.0f,
+                type = 0,
+            },
+            new InputAxis()
+            {
+                name = "XRI_Left_Primary2DAxisClick",
+                descriptiveName = "Device stick/touchpad click",
+                positiveButton = "joystick button 8",
+                gravity = 0.0f,
+                dead = 0.0f,
+                sensitivity = 0.1f,
+                type = 0,
+            },
+            new InputAxis()
+            {
+                name = "XRI_Left_Primary2DAxisTouch",
+                descriptiveName = "Device stick/touchpad touch",
+                positiveButton = "joystick button 16",
+                gravity = 0.0f,
+                dead = 0.0f,
+                sensitivity = 0.1f,
+                type = 0,
+            },
+            new InputAxis()
+            {
+                name = "XRI_Left_Thumbrest",
+                descriptiveName = "Device thumbrest",
+                positiveButton = "joystick button 18",
+                gravity = 0.0f,
+                dead = 0.0f,
+                sensitivity = 0.1f,
+                type = 0,
+            },
+            #endregion           
+            #region RightHand
+            //######################################################################################################################################
+            // Right Hand
+            //######################################################################################################################################
+            new InputAxis()
+            {
+                name = "XRI_Right_Primary2DAxis_Vertical",
+                descriptiveName = "Device joystick/touchpad horizontal motion",
+                dead = 0.19f,
+                axis = 5,
+                type = 2,
+            },
+            new InputAxis()
+            {
+                name = "XRI_Right_Primary2DAxis_Horizontal",
+                descriptiveName = "Device joystick/touchpad horizontal motion",
+                dead = 0.19f,
+                axis = 4,
+                type = 2,
+            },
+            new InputAxis()
+            {
+                name = "XRI_Right_Trigger",
+                descriptiveName = "Device trigger axis",
+                axis = 10,
+                type = 2,
+            },
+            new InputAxis()
+            {
+                name = "XRI_Right_Grip",
+                descriptiveName = "Device grip axis",
+                axis = 12,
+                type = 2,
+            },
+            new InputAxis()
+            {
+                name = "XRI_Right_IndexTouch",
+                descriptiveName = "Device index finger proximity touch axis.",
+                dead = 0.19f,
+                axis = 14,
+                type = 2,
+            },
+            // Button Data
+            new InputAxis()
+            {
+                name = "XRI_Right_PrimaryButton",
+                descriptiveName = "Device primary button",
+                positiveButton = "joystick button 0",
+                gravity = 1000.0f,
+                sensitivity = 1000.0f,
+                type = 0,
+            },
+            new InputAxis()
+            {
+                name = "XRI_Right_SecondaryButton",
+                descriptiveName = "Device secondary button",
+                positiveButton = "joystick button 1",
+                gravity = 1000.0f,
+                sensitivity = 1000.0f,
+                type = 0,
+            },
+            new InputAxis()
+            {
+                name = "XRI_Right_GripButton",
+                descriptiveName = "Device grip button",
+                positiveButton = "joystick button 5",
+                gravity = 0.0f,
+                dead = 0.0f,
+                sensitivity = 0.1f,
+                type = 0,
+            },
+            new InputAxis()
+            {
+                name = "XRI_Right_TriggerButton",
+                descriptiveName = "Device trigger button",
+                positiveButton = "joystick button 15",
+                gravity = 0.0f,
+                dead = 0.0f,
+                sensitivity = 0.1f,
+                type = 0,
+            },
+            new InputAxis()
+            {
+                name = "XRI_Right_MenuButton",
+                descriptiveName = "Device menu button",
+                positiveButton = "joystick button 7",
+                gravity = 1000.0f,
+                sensitivity = 1000.0f,
+                type = 0,
+            },
+            new InputAxis()
+            {
+                name = "XRI_Right_Primary2DAxisClick",
+                descriptiveName = "Device stick/touchpad click",
+                positiveButton = "joystick button 9",
+                gravity = 0.0f,
+                dead = 0.0f,
+                sensitivity = 0.1f,
+                type = 0,
+            },
+            new InputAxis()
+            {
+                name = "XRI_Right_Primary2DAxisTouch",
+                descriptiveName = "Device stick/touchpad touch",
+                positiveButton = "joystick button 17",
+                gravity = 0.0f,
+                dead = 0.0f,
+                sensitivity = 0.1f,
+                type = 0,
+            },
+            new InputAxis()
+            {
+                name = "XRI_Right_Thumbrest",
+                descriptiveName = "Device thumbrest",
+                positiveButton = "joystick button 19",
+                gravity = 0.0f,
+                dead = 0.0f,
+                sensitivity = 0.1f,
+                type = 0,
+            },
+            #endregion           
+ 
+        };
+
+        // Same as InputAxis.h 
+        internal class InputAxis
+        {
+            public string name = "";
+            public string descriptiveName = "";
+            public string descriptiveNegativeName = "";
+            public string negativeButton = "";
+            public string positiveButton = "";
+            public string altNegativeButton = "";
+            public string altPositiveButton = "";
+            public float gravity = 0.0f;
+            public float dead = 0.001f;
+            public float sensitivity = 1.0f;
+            public bool snap = false;
+            public bool invert = false;
+            public int type = 0;
+            public int axis = 0;
+            public int joyNum = 0;
+        }
+
+        internal struct BindingData
+        {
+            public int newDataIndex;
+            public int inputManagerIndex;
+            public bool exists;
+        }
+
+
+
+        /// <summary>
+        /// Main entrypoint for generating the XR Bindings and adding them to the Input Asset. The Custom uGUI editor calls this function when the user wishes to
+        /// seed the Input Asset with XR bindings.
+        /// </summary>        
+        static void GenerateXimmerseXRControllerInputBinding()
+        {
+            // seed map of axis data so we can whitewash against existing.        
+            Dictionary<string, BindingData> axisMap = new Dictionary<string, BindingData>();
+            for (int i = 0; i < axisList.Count; ++i)
+            {
+                axisMap.Add(axisList[i].name, new BindingData() { newDataIndex = i, exists = false, inputManagerIndex = -1 });
+                if (axisList[i].axis > 0)
+                {
+                    axisList[i].axis--;
+                }
+            }
+
+            // load the input asset
+            var inputManagerAsset = AssetDatabase.LoadAllAssetsAtPath("ProjectSettings/InputManager.asset")[0];
+            if (inputManagerAsset != null)
+            {
+                var serializedObject = new SerializedObject(inputManagerAsset);
+                var inputManagerCurrentData = serializedObject.FindProperty("m_Axes");
+
+                if (inputManagerCurrentData != null)
+                {
+                    List<InputAxis> currentInputData = new List<InputAxis>();
+                    LoadExistingDataAndCheckAgainstNewData(inputManagerCurrentData, ref axisMap, ref currentInputData);
+                    serializedObject.ApplyModifiedProperties();
+
+                    ApplyDataToInputManager(currentInputData, axisList, axisMap, ref inputManagerCurrentData);
+
+                    serializedObject.ApplyModifiedProperties();
+                    AssetDatabase.Refresh();
+                }
+            }
+
+        }
+
+
+        static void ApplyDataToInputManager(List<InputAxis> inputManagerData, List<InputAxis> newData, Dictionary<string, BindingData> newDataMap, ref SerializedProperty arrayRoot)
+        { 
+            // likely will be larger than we need, but that's ok. it'll be big enough for all the data which is worst case
+            arrayRoot.arraySize = inputManagerData.Count + newData.Count;
+
+            int arrayIndex = inputManagerData.Count;
+            // write everything that doesn't clash from our new data
+            for (int i = 0; i < newData.Count; ++i)
+            {
+                BindingData bindingData;
+                if (newDataMap.TryGetValue(newData[i].name, out bindingData))
+                {
+                    if (bindingData.exists == true)
+                    {
+                        continue;
+                    }
+                }
+                var axisEntry = arrayRoot.GetArrayElementAtIndex(arrayIndex);
+                WriteDataToInputAxis(newData[i], ref axisEntry);
+                arrayIndex++;
+            }
+            arrayRoot.arraySize = arrayIndex;
+        }
+
+
+        static void WriteDataToInputAxis(InputAxis sourceData, ref SerializedProperty serializedProperty)
+        {
+            var iteratorProperty = serializedProperty.Copy();
+            iteratorProperty.Next(true);
+            do
+            {
+                switch (iteratorProperty.name)
+                {
+                    case "m_Name":
+                        iteratorProperty.stringValue = sourceData.name;
+                        break;
+                    case "descriptiveName":
+                        iteratorProperty.stringValue = sourceData.descriptiveName;
+                        break;
+                    case "descriptiveNegativeName":
+                        iteratorProperty.stringValue = sourceData.descriptiveNegativeName;
+                        break;
+                    case "negativeButton":
+                        iteratorProperty.stringValue = sourceData.negativeButton;
+                        break;
+                    case "positiveButton":
+                        iteratorProperty.stringValue = sourceData.positiveButton;
+                        break;
+                    case "altNegativeButton":
+                        iteratorProperty.stringValue = sourceData.altNegativeButton;
+                        break;
+                    case "altPositiveButton":
+                        iteratorProperty.stringValue = sourceData.altPositiveButton;
+                        break;
+                    case "gravity":
+                        iteratorProperty.floatValue = sourceData.gravity;
+                        break;
+                    case "dead":
+                        iteratorProperty.floatValue = sourceData.dead;
+                        break;
+                    case "sensitivity":
+                        iteratorProperty.floatValue = sourceData.sensitivity;
+                        break;
+                    case "snap":
+                        iteratorProperty.boolValue = sourceData.snap;
+                        break;
+                    case "invert":
+                        iteratorProperty.boolValue = sourceData.invert;
+                        break;
+                    case "type":
+                        iteratorProperty.intValue = sourceData.type;
+                        break;
+                    case "axis":
+                        iteratorProperty.intValue = sourceData.axis;
+                        break;
+                    case "joyNum":
+                        iteratorProperty.intValue = sourceData.joyNum;
+                        break;
+
+                }
+            } while (iteratorProperty.Next(false));
+        }
+
+
+
+        static void LoadExistingDataAndCheckAgainstNewData(SerializedProperty arrayRoot, ref Dictionary<string, BindingData> newDataMap, ref List<InputAxis> existingData)
+        {
+            existingData.Clear();
+            for (int i = 0; i < arrayRoot.arraySize; ++i)
+            {
+                InputAxis readData = new InputAxis();
+
+                var axisEntry = arrayRoot.GetArrayElementAtIndex(i);
+                var iteratorProperty = axisEntry.Copy();
+                iteratorProperty.Next(true);
+                do
+                {
+                    switch (iteratorProperty.name)
+                    {
+                        case "m_Name":
+                            readData.name = iteratorProperty.stringValue;
+                            BindingData bindingData;
+                            if (newDataMap.TryGetValue(readData.name, out bindingData))
+                            {
+                                // using TryGetElement returns a copy, not very useful.                           
+                                bindingData.exists = true;
+                                bindingData.inputManagerIndex = i;
+                                newDataMap[readData.name] = bindingData;
+                            }
+                            break;
+                        case "descriptiveName":
+                            readData.descriptiveName = iteratorProperty.stringValue;
+                            break;
+                        case "descriptiveNegativeName":
+                            readData.descriptiveNegativeName = iteratorProperty.stringValue;
+                            break;
+                        case "negativeButton":
+                            readData.negativeButton = iteratorProperty.stringValue;
+                            break;
+                        case "positiveButton":
+                            readData.positiveButton = iteratorProperty.stringValue;
+                            break;
+                        case "altNegativeButton":
+                            readData.altNegativeButton = iteratorProperty.stringValue;
+                            break;
+                        case "altPositiveButton":
+                            readData.altPositiveButton = iteratorProperty.stringValue;
+                            break;
+                        case "gravity":
+                            readData.gravity = iteratorProperty.floatValue;
+                            break;
+                        case "dead":
+                            readData.dead = iteratorProperty.floatValue;
+                            break;
+                        case "sensitivity":
+                            readData.sensitivity = iteratorProperty.floatValue;
+                            break;
+                        case "snap":
+                            readData.snap = iteratorProperty.boolValue;
+                            break;
+                        case "invert":
+                            readData.invert = iteratorProperty.boolValue;
+                            break;
+                        case "type":
+                            readData.type = iteratorProperty.intValue;
+                            break;
+                        case "axis":
+                            readData.axis = iteratorProperty.intValue;
+                            break;
+                        case "joyNum":
+                            readData.joyNum = iteratorProperty.intValue;
+                            break;
+                    }
+                } while (iteratorProperty.Next(false));
+                existingData.Add(readData);
+            }
+        }
+
+        #endregion
+    }
+}

+ 11 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Editor/EditorUtilities/SDKInputBindingSetup.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 6675085ede9a131449658f496de0af82
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Editor/GUI.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 0fde626eb23a01148bb5b49b0895eb74
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 53 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Editor/GUI/GroundPlaneLayoutConfigurationEditor.cs

@@ -0,0 +1,53 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEditor;
+using System.IO;
+
+namespace Ximmerse.XR.Tag
+{
+    [CustomEditor(typeof(GroundPlaneLayoutConfiguration))]
+    public class GroundPlaneLayoutConfigurationEditor : Editor
+    {
+        GroundPlaneLayoutConfiguration tScript
+        {
+            get => this.target as GroundPlaneLayoutConfiguration;
+        }
+
+        private void OnEnable()
+        {
+
+        }
+
+
+        public override void OnInspectorGUI()
+        {
+            base.OnInspectorGUI();
+            EditorGUILayout.BeginHorizontal();
+            if (GUILayout.Button("Export to JSON"))
+            {
+                string json = (JsonUtility.ToJson(tScript.layout, true));
+                string path = EditorUtility.SaveFilePanel("Save Json", "Assets", "groundplane-layout", "json");
+                if (!string.IsNullOrEmpty(path))
+                {
+                    File.WriteAllText(path, json);
+                    Debug.Log(json);
+                    Debug.LogFormat("Writes to {0}", path);
+                }
+            }
+            if (GUILayout.Button("Import from JSON"))
+            {
+                string file = EditorUtility.OpenFilePanel("Open GroundPlane layout json file", "Assets", "json");
+                if (!string.IsNullOrEmpty(file))
+                {
+                    var layout = JsonUtility.FromJson<GroundPlaneLayout>(File.ReadAllText(file));
+                    tScript.layout = layout;
+                    EditorUtility.SetDirty(tScript);
+                    AssetDatabase.SaveAssets();
+                    AssetDatabase.Refresh();
+                }
+            }
+            EditorGUILayout.EndHorizontal();
+        }
+    }
+}

+ 11 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Editor/GUI/GroundPlaneLayoutConfigurationEditor.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 38a9ed4278423d74db42d3c52495f76c
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 407 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Editor/GUI/ObjectTrackingProfileEditor.cs

@@ -0,0 +1,407 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEditor;
+using System.IO;
+using System.Linq;
+using System.Text;
+using Unity.Collections;
+
+namespace Ximmerse.XR
+{
+    /// <summary>
+    /// Tracked object json (editor only)
+    /// </summary>
+    [System.Serializable]
+    internal class TrackedObjectJsonEditor
+    {
+        /// <summary>
+        /// Card group json (editor only)
+        /// </summary>
+        [System.Serializable]
+        public class CardGroupJsonEditor
+        {
+            /// <summary>
+            /// The calibration file name.
+            /// </summary>
+            public string CalibFile;
+
+            /// <summary>
+            /// The type of the mode.
+            /// </summary>
+            public string ModeType;
+
+            /// <summary>
+            /// The group identifier.
+            /// </summary>
+            public int GroupID;
+
+            /// <summary>
+            /// The sub-markers.
+            /// </summary>
+            public int[] Markers;
+
+            /// <summary>
+            /// The size of the sub-markers.
+            /// </summary>
+            public float[] MarkersSize;
+        }
+
+        /// <summary>
+        /// Single card json (editor only)
+        /// </summary>
+        [System.Serializable]
+        public class SingleCardJsonEditor
+        {
+            /// <summary>
+            /// The calibration file name.
+            /// </summary>
+            public string CalibFile;
+
+            /// <summary>
+            /// The single markers
+            /// </summary>
+            public int[] Markers;
+
+            /// <summary>
+            /// The size of the single markers.
+            /// </summary>
+            public float[] MarkersSize;
+
+            public string CardIDs = string.Empty;
+        }
+
+        /// <summary>
+        /// The card group.
+        /// </summary>
+        [SerializeField]
+        public CardGroupJsonEditor CARD_GROUP = null;
+
+        /// <summary>
+        /// The card single.
+        /// </summary>
+        [SerializeField]
+        public SingleCardJsonEditor CARD_SINGLE = null;
+
+
+        public bool IsCardGroup
+        {
+            get
+            {
+                return CARD_GROUP != null && !string.IsNullOrEmpty(CARD_GROUP.CalibFile) && CARD_GROUP.GroupID >= 0;
+            }
+        }
+
+        [System.NonSerialized]
+        public TrackedObjectJsonEditor conflictTo = null;
+
+        [System.NonSerialized]
+        public string conflictToJson = null;
+
+        public bool ValidateVs(TrackedObjectJsonEditor otherJson)
+        {
+            List<int> markers01 = new List<int>();
+            if (this.IsCardGroup)
+            {
+                markers01.AddRange(this.CARD_GROUP.Markers);
+            }
+            else
+            {
+                markers01.AddRange(this.CARD_SINGLE.Markers);
+            }
+
+            List<int> markers02 = new List<int>();
+            if (otherJson.IsCardGroup)
+            {
+                markers02.AddRange(otherJson.CARD_GROUP.Markers);
+            }
+            else
+            {
+                markers02.AddRange(otherJson.CARD_SINGLE.Markers);
+            }
+
+            if (markers01.Intersect(markers02).Count() > 0)
+            {
+                return false;
+            }
+            else return true;
+        }
+    }
+
+    [CustomEditor(typeof(ObjectTrackingProfile))]
+    [CanEditMultipleObjects]
+    internal sealed class ObjectTrackingProfileInspector : UnityEditor.Editor
+    {
+        string errorMsg = string.Empty;
+
+        string markerMsg = string.Empty;
+
+        ObjectTrackingProfile mTarget
+        {
+            get
+            {
+                return this.target as ObjectTrackingProfile;
+            }
+        }
+
+        TrackedObjectJsonEditor[] jsons = null;
+
+        SerializedProperty TrackingItemArray = null;
+
+        void OnEnable()
+        {
+            RefreshJsonItems();
+
+            TrackingItemArray = serializedObject.FindProperty("items");
+        }
+
+        private void RefreshJsonItems()
+        {
+            jsons = mTarget.trackingItems.Select(x => JsonUtility.FromJson<TrackedObjectJsonEditor>(
+            File.ReadAllText(AssetDatabase.GetAssetPath(x.JSONConfig))
+                )).ToArray();
+
+            foreach (var json in jsons)
+            {
+                //fill marker info:
+                if (json.CARD_SINGLE != null && !string.IsNullOrEmpty(json.CARD_SINGLE.CalibFile) && json.CARD_SINGLE.Markers != null
+                && json.CARD_SINGLE.Markers.Length > 0)
+                {
+                    StringBuilder buffer = new StringBuilder();
+                    int c = 0;
+                    foreach (var id in json.CARD_SINGLE.Markers)
+                    {
+                        c++;
+                        if (c >= 15)
+                        {
+                            c = 0;
+                            buffer.AppendFormat("{0} \r\n", id);
+                        }
+                        else
+                        {
+                            buffer.AppendFormat("{0} ", id);
+
+                        }
+                    }
+                    json.CARD_SINGLE.CardIDs = buffer.ToString();
+                }
+
+
+
+                //check duplication:
+                for (int i = 0, jsonsLength = jsons.Length; i < jsonsLength; i++)
+                {
+                    var json2 = jsons[i];
+                    if (json != json2)
+                    {
+                        if (!json.ValidateVs(json2))
+                        {
+                            json.conflictTo = json2;
+                            json.conflictToJson = this.mTarget.trackingItems[i].JSONConfig.name;
+                            continue;
+                        }
+                        json.conflictTo = null;
+                    }
+                }
+            }
+
+            //check config:
+
+        }
+
+        public override void OnInspectorGUI()
+        {
+            EditorGUI.BeginDisabledGroup(true);
+            EditorGUILayout.PropertyField(this.serializedObject.FindProperty("m_Script"), true);
+            EditorGUI.EndDisabledGroup();
+
+            EditorGUILayout.BeginVertical(GUI.skin.box);
+            EditorGUILayout.PropertyField(this.serializedObject.FindProperty("Description"), true);
+            EditorGUILayout.EndVertical();
+
+            EditorGUILayout.Space();
+
+
+            EditorGUILayout.BeginVertical(GUI.skin.box);
+            EditorGUILayout.LabelField("--- Tracking Config ---");
+            EditorGUILayout.PropertyField(this.serializedObject.FindProperty("m_TrackBeacons"), true);
+            //EditorGUILayout.PropertyField(this.serializedObject.FindProperty("m_TrackController"),new GUIContent("Track Right Controller"), true);
+            //EditorGUILayout.PropertyField(this.serializedObject.FindProperty("m_TrackLeftController"), true);
+            EditorGUILayout.EndVertical();
+
+
+            EditorGUILayout.Space();
+            EditorGUILayout.PropertyField(this.serializedObject.FindProperty("m_CustomTrackingCalibrationFiles"), new GUIContent("Additive Tracking"));
+
+            if (mTarget.CustomTrackingCalibrationFiles)
+            {
+                EditorGUI.indentLevel++;
+                DropAreaGUI();
+
+                if (jsons != null && jsons.Length > 0)
+                {
+                    EditorGUILayout.BeginVertical(GUI.skin.box);
+                    EditorGUILayout.Space();
+
+                    for (int i = 0, maxjsonsLength = this.jsons.Length; i < maxjsonsLength; i++)
+                    {
+                        var jItem = this.jsons[i];
+                        EditorGUILayout.BeginHorizontal();
+                        if (GUILayout.Button("X", GUILayout.MaxWidth(20)))
+                        {
+                            TrackingItemArray.DeleteArrayElementAtIndex(i);
+                            serializedObject.ApplyModifiedProperties();
+                            RefreshJsonItems();
+                            EditorGUILayout.EndHorizontal();
+                            EditorGUILayout.EndVertical();
+                            return;
+                        }
+                        EditorGUI.BeginDisabledGroup(true);
+                        EditorGUILayout.ObjectField(mTarget.trackingItems[i].JSONConfig, typeof(UnityEngine.Object), true, GUILayout.MaxWidth(200));
+                        EditorGUI.EndDisabledGroup();
+
+                        EditorGUILayout.EndHorizontal();
+
+                        if (jItem.CARD_GROUP != null && !string.IsNullOrEmpty(jItem.CARD_GROUP.CalibFile) && jItem.CARD_GROUP.GroupID >= 0)
+                        {
+                            //it's card group
+                            EditorGUILayout.LabelField(string.Format("Tracking ID: {0}", jItem.CARD_GROUP.GroupID));
+                        }
+                        else if (jItem.CARD_SINGLE != null && !string.IsNullOrEmpty(jItem.CARD_SINGLE.CardIDs))
+                        {
+                            //it's card single
+                            EditorGUILayout.TextArea(string.Format("Tracking ID: {0}", jItem.CARD_SINGLE.CardIDs), GUILayout.Height(60));
+                        }
+
+                        if (jItem.conflictTo != null)
+                        {
+                            EditorGUILayout.LabelField(string.Format("conflict to: {0}", jItem.conflictToJson));
+                        }
+                        EditorGUILayout.Space();
+                    }
+
+                    EditorGUILayout.EndVertical();
+
+                }
+
+                EditorGUI.indentLevel--;
+            }
+
+
+            serializedObject.ApplyModifiedProperties();
+
+        }
+
+        void DropAreaGUI()
+        {
+            Event evt = Event.current;
+            Rect drop_area = GUILayoutUtility.GetRect(0.0f, 40.0f, GUILayout.ExpandWidth(true));
+
+            EditorGUILayout.LabelField("[Drag JSON tracking profile to this area]");
+            GUI.Box(drop_area, "");
+            switch (evt.type)
+            {
+                case EventType.DragUpdated:
+                case EventType.DragPerform:
+                    if (!drop_area.Contains(evt.mousePosition))
+                        return;
+
+                    DragAndDrop.visualMode = DragAndDropVisualMode.Copy;
+
+                    if (evt.type == EventType.DragPerform)
+                    {
+                        DragAndDrop.AcceptDrag();
+
+                        var dragObjs = DragAndDrop.objectReferences;
+                        foreach (var obj in dragObjs)
+                        {
+                            if (IsValidTrackingJson(obj, out TrackedObjectJsonEditor trackedObjectData, out byte[] data))
+                            {
+                                int index = TrackingItemArray.arraySize;
+                                TrackingItemArray.InsertArrayElementAtIndex(index);
+                                serializedObject.ApplyModifiedProperties();
+                                var TrackingItemProperty = TrackingItemArray.GetArrayElementAtIndex(index);
+                                TrackingItemProperty.FindPropertyRelative("jsonName").stringValue = obj.name + ".json";
+                                TrackingItemProperty.FindPropertyRelative("JSONConfig").objectReferenceValue = obj;
+                                TrackingItemProperty.FindPropertyRelative("jsonContent").stringValue = File.ReadAllText(AssetDatabase.GetAssetPath(obj));
+                                var markerIDsProp = TrackingItemProperty.FindPropertyRelative("m_MarkerIDs");
+                                var markerSizesProp = TrackingItemProperty.FindPropertyRelative("m_MarkerSizes");
+                                var dataProp = TrackingItemProperty.FindPropertyRelative("m_Data");
+                                //Single cards:
+                                if (!trackedObjectData.IsCardGroup)
+                                {
+                                    markerIDsProp.arraySize = trackedObjectData.CARD_SINGLE.Markers.Length;
+                                    markerSizesProp.arraySize = trackedObjectData.CARD_SINGLE.Markers.Length;
+                                    TrackingItemProperty.FindPropertyRelative("m_TrackedAsGroup").boolValue = false;
+                                    for (int i = 0; i < trackedObjectData.CARD_SINGLE.Markers.Length; i++)
+                                    {
+                                        markerIDsProp.GetArrayElementAtIndex(i).intValue = trackedObjectData.CARD_SINGLE.Markers[i];
+                                        markerSizesProp.GetArrayElementAtIndex(i).floatValue = trackedObjectData.CARD_SINGLE.MarkersSize[i];
+                                    }
+                                }
+                                //Group :
+                                else
+                                {
+                                    markerIDsProp.arraySize = 1;
+                                    markerSizesProp.arraySize = 1;
+                                    TrackingItemProperty.FindPropertyRelative("m_TrackedAsGroup").boolValue = true;
+                                    markerIDsProp.GetArrayElementAtIndex(0).intValue = trackedObjectData.CARD_GROUP.GroupID;
+                                    markerSizesProp.GetArrayElementAtIndex(0).floatValue = trackedObjectData.CARD_GROUP.MarkersSize[0];
+                                }
+
+                                //Copy data:
+                                dataProp.arraySize = data.Length;
+                                for (int i = 0; i < data.Length; i++)
+                                {
+                                    dataProp.GetArrayElementAtIndex(i).intValue = data[i];
+                                }
+                                serializedObject.ApplyModifiedProperties();
+
+                                RefreshJsonItems();
+                            }
+
+                        }
+                    }
+                    break;
+            }
+        }
+
+        bool IsValidTrackingJson(UnityEngine.Object candidate, out TrackedObjectJsonEditor trackedObjectData, out byte[] data)
+        {
+            trackedObjectData = null;
+            data = null;
+            foreach (var item in this.mTarget.trackingItems)
+            {
+                if (item != null && item.JSONConfig == candidate)
+                {
+                    Debug.LogFormat("[RhinoX] Json tracking profile : {0} has already been added !", candidate.name);
+                    return false;
+                }
+            }
+            bool isJson = false;
+            try
+            {
+                string jsonAssetPath = AssetDatabase.GetAssetPath(candidate);
+                string txt = File.ReadAllText(AssetDatabase.GetAssetPath(candidate));
+                TrackedObjectJsonEditor tJson = JsonUtility.FromJson<TrackedObjectJsonEditor>(txt);
+                trackedObjectData = tJson;
+
+                //Get data:
+
+                string dataAssetPath = Path.Combine(Path.GetDirectoryName(jsonAssetPath), Path.GetFileNameWithoutExtension(jsonAssetPath) + ".dat");
+                if (File.Exists(dataAssetPath))
+                {
+                    var bytes = File.ReadAllBytes(dataAssetPath);
+                    data = bytes;
+                }
+                isJson = true;
+            }
+            catch
+            {
+                isJson = false;
+            }
+            return isJson;
+        }
+
+    }
+}

+ 11 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Editor/GUI/ObjectTrackingProfileEditor.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: fc353d4e916ee864b802ca069f36af23
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 47 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Editor/GUI/SDKProjectSettingGUI.cs

@@ -0,0 +1,47 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEditor;
+
+namespace Ximmerse.XR
+{
+    /// <summary>
+    /// Ximmerse XR SDK Project setting GUI.
+    /// </summary>
+    public class SDKProjectSettingGUI
+    {
+        [SettingsProvider]
+        public static SettingsProvider CreateRxSDKProjectSetting()
+        {
+            // First parameter is the path in the Settings window.
+            // Second parameter is the scope of this setting: it only appears in the Project Settings window.
+            var provider = new SettingsProvider("Project/RhinoX Setting", SettingsScope.Project)
+            {
+                // By default the last token of the path is used as display name if no label is provided.
+                label = "RhinoX SDK Settings",
+
+                guiHandler = OnGUI,
+
+                // Populate the search keywords to enable smart search filtering and label highlighting:
+                keywords = new HashSet<string>(new[] { "RhinoX", "Rx", "Ximmerse", "XR" }),
+
+                activateHandler = (searchContext, rootElement) =>
+                {
+                   
+                },
+            };
+
+            return provider;
+        }
+
+        static void OnGUI(string SearchContext)
+        {
+            GUIInternal();
+        }
+
+        private static void GUIInternal()
+        {
+
+        }
+    }
+}

+ 11 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Editor/GUI/SDKProjectSettingGUI.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: b09b90c97155de9439abc0cc54b0f7b3
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 87 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Editor/GUI/TagProfileAssetEditor.cs

@@ -0,0 +1,87 @@
+using UnityEditor;
+
+namespace Ximmerse.XR.Tag
+{
+    [CustomEditor(typeof(TagProfileAsset))]
+    public class TagProfileAssetEditor : Editor
+    {
+        private SerializedObject tagProfileLoading;
+        private SerializedProperty Beacon;
+        private SerializedProperty LiBeacon;
+        private SerializedProperty TopoTag;
+        private SerializedProperty SingleCard;
+        private SerializedProperty SingleSize;
+        private SerializedProperty Gun;
+        private SerializedProperty TopoTagSize;
+        private SerializedProperty GunType;
+        private SerializedProperty LiBeaconType;
+
+        private SerializedProperty Marker;
+        private SerializedProperty m_leftCalibraFilePath;
+        private SerializedProperty m_rightCalibraFilePath;
+
+        void OnEnable()
+        {
+            tagProfileLoading = new SerializedObject(target);
+
+            Beacon = tagProfileLoading.FindProperty("_beacon");
+            LiBeacon = tagProfileLoading.FindProperty("_liBeacon");
+            TopoTag = tagProfileLoading.FindProperty("_topoTag");
+            SingleCard = tagProfileLoading.FindProperty("_singleCard");
+            SingleSize = tagProfileLoading.FindProperty("_singleSize");
+            Gun = tagProfileLoading.FindProperty("_gun");
+            TopoTagSize = tagProfileLoading.FindProperty("_topoTagSize");
+            GunType = tagProfileLoading.FindProperty("_guntype");
+            LiBeaconType = tagProfileLoading.FindProperty("_liBeaconType");
+            
+        }
+
+        public override void OnInspectorGUI()
+        {
+            TagConst.issetting = true;
+            tagProfileLoading.Update();
+            SerializedProperty property = tagProfileLoading.GetIterator();
+            while (property.NextVisible(true))
+            {
+                using (new EditorGUI.DisabledScope("m_Script" == property.propertyPath))
+                {
+                    EditorGUILayout.PropertyField(property, true);
+                    break;
+                }
+            }
+            EditorGUILayout.PropertyField(Beacon);
+            EditorGUILayout.PropertyField(LiBeacon);
+            if (LiBeacon.boolValue)
+            {
+                EditorGUILayout.PropertyField(LiBeaconType);
+            }
+            EditorGUILayout.PropertyField(TopoTag);
+            if (TopoTag.boolValue)
+            {
+                EditorGUILayout.PropertyField(TopoTagSize);
+            }
+            EditorGUILayout.PropertyField(SingleCard);
+            if (SingleCard.boolValue)
+            {
+                EditorGUILayout.PropertyField(SingleSize);
+            }
+            EditorGUILayout.PropertyField(Gun);
+            if (Gun.boolValue)
+            {
+                EditorGUILayout.PropertyField(GunType);
+            }
+            if (LiBeacon.boolValue && Gun.boolValue)
+            {
+                LiBeacon.boolValue = false;
+                Gun.boolValue = false;
+                UnityEditor.EditorUtility.DisplayDialog("Error", "Beacon type conflict", "È·ÈÏ");
+            }
+            //EditorGUILayout.PropertyField(minid);
+            //EditorGUILayout.PropertyField(maxid);
+            tagProfileLoading.ApplyModifiedProperties();
+        }
+    }
+}
+
+
+

+ 11 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Editor/GUI/TagProfileAssetEditor.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 24f150cf1491b784a9a308452c5fc5b2
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 80 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Editor/GUI/TagProfileLoadingEditor.cs

@@ -0,0 +1,80 @@
+using UnityEditor;
+
+namespace Ximmerse.XR.Tag
+{
+    [CustomEditor(typeof(TagProfileLoading))]
+    public class TagProfileLoadingEditor : Editor
+    {
+        private SerializedObject tagProfileLoading;
+        private SerializedProperty Beacon;
+        private SerializedProperty LiBeacon;
+        private SerializedProperty TopoTag;
+        private SerializedProperty SingleCard;
+        private SerializedProperty SingleSize;
+        private SerializedProperty Gun;
+        private SerializedProperty TopoTagSize;
+        private SerializedProperty GunType;
+        private SerializedProperty LiBeaconType;
+
+        void OnEnable()
+        {
+            tagProfileLoading = new SerializedObject(target);
+
+            Beacon = tagProfileLoading.FindProperty("Beacon");
+            LiBeacon = tagProfileLoading.FindProperty("LiBeacon");
+            TopoTag = tagProfileLoading.FindProperty("TopoTag");
+            SingleCard = tagProfileLoading.FindProperty("SingleCard");
+            SingleSize = tagProfileLoading.FindProperty("singleSize");
+            Gun = tagProfileLoading.FindProperty("Gun");
+            TopoTagSize = tagProfileLoading.FindProperty("topoTagSize");
+            GunType = tagProfileLoading.FindProperty("guntype");
+            LiBeaconType = tagProfileLoading.FindProperty("liBeaconType");
+        }
+
+        public override void OnInspectorGUI()
+        {
+            TagConst.issetting = true;
+            tagProfileLoading.Update();
+            SerializedProperty property = tagProfileLoading.GetIterator();
+            while (property.NextVisible(true))
+            {
+                using (new EditorGUI.DisabledScope("m_Script" == property.propertyPath))
+                {
+                    EditorGUILayout.PropertyField(property, true);
+                    break;
+                }
+            }
+            EditorGUILayout.PropertyField(Beacon);
+            EditorGUILayout.PropertyField(LiBeacon);
+            if (LiBeacon.boolValue)
+            {
+                EditorGUILayout.PropertyField(LiBeaconType);
+            }
+            EditorGUILayout.PropertyField(TopoTag);
+            if (TopoTag.boolValue)
+            {
+                EditorGUILayout.PropertyField(TopoTagSize);
+            }
+            EditorGUILayout.PropertyField(SingleCard);
+            if (SingleCard.boolValue)
+            {
+                EditorGUILayout.PropertyField(SingleSize);
+            }
+            EditorGUILayout.PropertyField(Gun);
+            if (Gun.boolValue)
+            {
+                EditorGUILayout.PropertyField(GunType);
+            }
+            if (LiBeacon.boolValue && Gun.boolValue)
+            {
+                LiBeacon.boolValue = false;
+                Gun.boolValue = false;
+                UnityEditor.EditorUtility.DisplayDialog("Error", "Beacon type conflict", "È·ÈÏ");
+            }
+
+            tagProfileLoading.ApplyModifiedProperties();
+        }
+    }
+}
+
+

+ 11 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Editor/GUI/TagProfileLoadingEditor.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: bcaa0d88b8308f349942cedad7515b43
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 52 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Editor/GazeEditor.cs

@@ -0,0 +1,52 @@
+using UnityEditor;
+using Ximmerse.XR.InputSystems.GazeAndGestureInteraction;
+
+[CustomEditor(typeof(GazeAndHandInteractionSystem))]
+public class GazeEditor : Editor
+{
+
+    private SerializedObject gazeimage;
+    private SerializedProperty EyeRayGO;
+    private SerializedProperty cursor;
+    private SerializedProperty normal;
+    private SerializedProperty tracking;
+    private SerializedProperty select;
+    private SerializedProperty EyeRay;
+
+    void OnEnable()
+    {
+        gazeimage = new SerializedObject(target);
+
+        EyeRayGO = gazeimage.FindProperty("EyeRayGO");
+        cursor = gazeimage.FindProperty("_cursorStateImage");
+        normal = gazeimage.FindProperty("normal");
+        tracking = gazeimage.FindProperty("tracking");
+        select = gazeimage.FindProperty("select");
+        EyeRay= gazeimage.FindProperty("_eyeRay");
+    }
+
+    public override void OnInspectorGUI()
+    {
+        gazeimage.Update();
+
+        EditorGUILayout.PropertyField(cursor);
+
+        if (cursor.enumValueIndex == 0)
+        {
+            EditorGUILayout.PropertyField(EyeRayGO);
+            //EditorGUILayout.PropertyField(cursor);
+        }
+        else
+        {
+            EditorGUILayout.PropertyField(normal);
+            EditorGUILayout.PropertyField(tracking);
+            EditorGUILayout.PropertyField(select);
+            EditorGUILayout.PropertyField(EyeRayGO);
+        }
+        if (EyeRayGO.enumValueIndex!=0)
+        {
+            EditorGUILayout.PropertyField(EyeRay);
+        }
+        gazeimage.ApplyModifiedProperties();
+    }
+}

+ 11 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Editor/GazeEditor.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 39156d30964f0454393ab26d3d3b113d
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 80 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Editor/GeneratePrefab.cs

@@ -0,0 +1,80 @@
+using UnityEngine;
+using UnityEditor;
+using Ximmerse.XR.InputSystems.GazeAndGestureInteraction;
+using Unity.XR.CoreUtils;
+using Ximmerse.XR;
+using Ximmerse.XR.Tag;
+
+public class GeneratePrefab
+{
+    [MenuItem("GameObject/Ximmerse XR/XR Origin (ActionBase)", false,0)]
+    [MenuItem("Component/Ximmerse XR/XR Origin (ActionBase)", false, 0)]
+    public static void GenerateXROriginActionBase()
+    {
+        GameObject go = GameObject.Instantiate(Resources.Load("XR Origin (ActionBase)")) as GameObject;
+        go.name = "XR Origin (ActionBase)";
+    }
+
+    [MenuItem("GameObject/Ximmerse XR/XR Origin (Device Base)", false, 1)]
+    [MenuItem("Component/Ximmerse XR/XR Origin (Device Base)", false, 1)]
+    public static void GenerateXROriginDeviceBase()
+    {
+        GameObject go = GameObject.Instantiate(Resources.Load("XR Origin (Device Base)")) as GameObject;
+        go.name = "XR Origin (Device Base)";
+    }
+
+    [MenuItem("GameObject/Ximmerse XR/Tag Profile Loading", false, 3)]
+    [MenuItem("Component/Ximmerse XR/Tag Profile Loading", false, 3)]
+    public static void GenerateTagLoading()
+    {
+        GameObject go = GameObject.Instantiate(Resources.Load("Tag/Prefabs/Tag Profile Loading")) as GameObject;
+        go.name = "Tag Profile Loading";
+    }
+
+    [MenuItem("GameObject/Ximmerse XR/Creates Ground Plane By Json", false, 4)]
+    [MenuItem("Component/Ximmerse XR/Creates Ground Plane By Json", false, 4)]
+    public static void GenerateCreatesGroundPlane()
+    {
+        GameObject go = GameObject.Instantiate(Resources.Load("Tag/Prefabs/Creates Ground Plane By Json")) as GameObject;
+        go.name = "Creates Ground Plane By Json";
+    }
+
+    [MenuItem("GameObject/Ximmerse XR/Tracking Target", false, 5)]
+    [MenuItem("Component/Ximmerse XR/Tracking Target", false, 5)]
+    public static void GenerateTagTracking()
+    {
+        TagTracking go = new GameObject("Tracking Target").AddComponent<TagTracking>();
+    }
+
+    [MenuItem("GameObject/Ximmerse XR/Ground Plane", false, 6)]
+    [MenuItem("Component/Ximmerse XR/Ground Plane", false, 6)]
+    public static void GenerateTagGround()
+    {
+        TagGroundPlane go = new GameObject("Ground Plane").AddComponent<TagGroundPlane>();
+    }
+
+    [MenuItem("GameObject/Ximmerse XR/EyeRay", false, 7)]
+    [MenuItem("Component/Ximmerse XR/EyeRay", false, 7)]
+    public static void GenerateEyeRay()
+    {
+        GameObject eyeRay = GameObject.Instantiate(Resources.Load("Gesture/Prefabs/Eye Ray")) as GameObject;
+        eyeRay.name = "Eye Ray";
+        eyeRay.transform.parent = Object.FindObjectOfType<XROrigin>().CameraFloorOffsetObject.transform;
+    }
+
+
+    [MenuItem("GameObject/Ximmerse XR/Gaze And Hand Interaction System", false, 8)]
+    [MenuItem("Component/Ximmerse XR/Gaze And Hand Interaction System", false, 8)]
+    public static void GenerateGazeAndHandInteractionSystem()
+    {
+        GazeAndHandInteractionSystem go = new GameObject("Gaze And Hand Interaction System").AddComponent<GazeAndHandInteractionSystem>();
+    }
+
+    [MenuItem("GameObject/Ximmerse XR/Virtual Hand Model", false, 9)]
+    [MenuItem("Component/Ximmerse XR/Virtual Hand Model", false, 9)]
+    public static void GenerateVirtualHandModel()
+    {
+        GameObject go = GameObject.Instantiate(Resources.Load("Gesture/Prefabs/Virtual Hand Model")) as GameObject;
+        go.name = "Virtual Hand Model";
+    }
+}

+ 11 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Editor/GeneratePrefab.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 7d9ad1cd94338d24d91824c3a2e6d637
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 27 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Editor/Ximmerse.XR.Editor.asmdef

@@ -0,0 +1,27 @@
+{
+    "name": "Ximmerse.XR.Editor",
+    "rootNamespace": "",
+    "references": [
+        "Unity.XR.Management.Editor",
+        "Unity.XR.Management",
+        "Ximmerse.XR",
+        "Unity.XR.CoreUtils"
+    ],
+    "includePlatforms": [
+        "Editor"
+    ],
+    "excludePlatforms": [],
+    "allowUnsafeCode": false,
+    "overrideReferences": false,
+    "precompiledReferences": [],
+    "autoReferenced": true,
+    "defineConstraints": [],
+    "versionDefines": [
+        {
+            "name": "com.unity.xr.management",
+            "expression": "3.2.0",
+            "define": "XR_MGMT_GTE_320"
+        }
+    ],
+    "noEngineReferences": false
+}

+ 7 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Editor/Ximmerse.XR.Editor.asmdef.meta

@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: bebe7fb506349d547a76480ed1df06a5
+AssemblyDefinitionImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 52 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Editor/XimmerseUnityXRInitialize.cs

@@ -0,0 +1,52 @@
+#if UNITY_EDITOR
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEditor;
+
+namespace Ximmerse.XR.LegacySDKs
+{
+    /// <summary>
+    /// Ximmerse unity XR initializer.
+    /// </summary>
+    public static class XimmerseUnityXRInitialize
+    {
+
+        [MenuItem("Ximmerse XR SDK/Initialize XR SDK")]
+        public static void InitializeXRSDK ()
+        {
+            SetupAndroidSetting();
+        }
+
+
+        static void SetupAndroidSetting()
+        {
+            //Set multi-thread = false
+            PlayerSettings.SetMobileMTRendering(BuildTargetGroup.Android, false);
+            PlayerSettings.defaultInterfaceOrientation = UIOrientation.LandscapeLeft;
+            PlayerSettings.graphicsJobMode = GraphicsJobMode.Legacy;
+            //Disable GPU skinning to save GPU power
+            PlayerSettings.gpuSkinning = false;
+            PlayerSettings.colorSpace = ColorSpace.Linear;
+            PlayerSettings.openGLRequireES31 = true;
+            PlayerSettings.SetUseDefaultGraphicsAPIs(BuildTarget.Android, false);
+            PlayerSettings.SetGraphicsAPIs(BuildTarget.Android, new UnityEngine.Rendering.GraphicsDeviceType[] { UnityEngine.Rendering.GraphicsDeviceType.OpenGLES3 });
+
+            PlayerSettings.Android.forceSDCardPermission = true;
+
+            QualitySettings.vSyncCount = 0;//No vsync
+
+            //IL2CPP and 64bit:
+            PlayerSettings.SetScriptingBackend(BuildTargetGroup.Android, ScriptingImplementation.IL2CPP);
+            PlayerSettings.Android.targetArchitectures = AndroidArchitecture.ARM64;
+
+            //Android API level :
+            PlayerSettings.Android.minSdkVersion = AndroidSdkVersions.AndroidApiLevel26;
+            PlayerSettings.Android.targetSdkVersion = AndroidSdkVersions.AndroidApiLevelAuto;
+
+            AssetDatabase.SaveAssets();
+            AssetDatabase.Refresh();
+        }
+    }
+}
+#endif

+ 11 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Editor/XimmerseUnityXRInitialize.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: b700f0b228506c348a0f3410cc922d40
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 81 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Editor/XimmerseXRMetadata.cs

@@ -0,0 +1,81 @@
+//-----------------------------------------------------------------------
+// <copyright file="CardboardMetadata.cs" company="Google LLC">
+// Copyright 2020 Google LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+// </copyright>
+//-----------------------------------------------------------------------
+
+#if XR_MGMT_GTE_320
+
+namespace Ximmerse.XR
+{
+    using System.Collections.Generic;
+    using UnityEditor;
+    using UnityEditor.XR.Management.Metadata;
+    using UnityEngine;
+
+    /// <summary>
+    /// XR Metadata for Cardboard XR Plugin.
+    /// Required by XR Management package.
+    /// </summary>
+    public class XimmerseXRPackage : IXRPackage
+    {
+        /// <summary>
+        /// Package metadata instance.
+        /// </summary>
+        public IXRPackageMetadata metadata => new PackageMetadata();
+
+        /// <summary>
+        /// Populates package settings instance.
+        /// </summary>
+        ///
+        /// <param name="obj">
+        /// Settings object.
+        /// </param>
+        /// <returns>Settings analysis result. Given that nothing is done, returns true.</returns>
+        public bool PopulateNewSettingsInstance(ScriptableObject obj)
+        {
+            return true;
+        }
+
+        private class LoaderMetadata : IXRLoaderMetadata
+        {
+            public string loaderName => "Ximmerse XR Plugin";
+
+            public string loaderType => typeof(Ximmerse.XR.XimmerseXRLoader).FullName;
+
+            public List<BuildTargetGroup> supportedBuildTargets => new List<BuildTargetGroup>()
+            {
+                BuildTargetGroup.Android,
+                BuildTargetGroup.iOS
+            };
+        }
+
+        private class PackageMetadata : IXRPackageMetadata
+        {
+            public string packageName => "Ximmerse XR Plugin";
+
+            public string packageId => "com.ximmerse.xr";
+            
+            public string settingsType => typeof(Ximmerse.XR.XimmerseXRSettings).FullName;
+
+            public List<IXRLoaderMetadata> loaderMetadata => new List<IXRLoaderMetadata>()
+            {
+                new LoaderMetadata()
+            };
+        }
+    }
+}
+
+#endif // XR_MGMT_GTE_320

+ 11 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Editor/XimmerseXRMetadata.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 26ba54dfe585bbd4fbbada83579b4b35
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 201 - 0
Ximmerse_UnityXR_SDK_V1.6.0/LICENSE.md

@@ -0,0 +1,201 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.

+ 7 - 0
Ximmerse_UnityXR_SDK_V1.6.0/LICENSE.md.meta

@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: c2cdf177d3aee4b8392c7e857662a321
+TextScriptImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 88 - 0
Ximmerse_UnityXR_SDK_V1.6.0/README.md

@@ -0,0 +1,88 @@
+Google Cardboard XR Plugin for Unity
+====================================
+Copyright 2020 Google LLC
+
+This SDK provides everything you need to create your own Virtual Reality (VR)
+experiences for Google Cardboard in Unity 2019.4.25f1 or later. It supports
+essential VR features, such as:
+
+ * Motion tracking
+ * Stereoscopic rendering
+ * User interaction via the viewer button
+
+With these capabilities you can build entirely new VR experiences, or enhance
+existing apps with VR capabilities.
+
+
+## Get started
+
+To get started with the Google Cardboard XR Plugin for Unity, see:
+
+* [Quickstart for Unity](//developers.google.com/cardboard/develop/unity/quickstart)
+
+
+## API reference
+
+* [Google Cardboard XR Plugin for Unity API Reference](//developers.google.com/cardboard/reference/unity)
+
+
+## Release notes
+
+The SDK release notes are available on the
+[releases](//github.com/googlevr/cardboard-xr-plugin/releases) page.
+
+
+## Roadmap
+
+The project roadmap is available on the
+[Projects](https://github.com/googlevr/cardboard/projects/1) page.
+
+
+## Contributing
+
+Please read and follow the steps in [CONTRIBUTING.md](/CONTRIBUTING.md) file.
+
+
+## License
+
+Please see the [LICENSE.md](/LICENSE.md) file.
+
+
+## Brand guidelines
+
+The "Google Cardboard" name is a trademark owned by Google and is not included
+within the assets licensed under the Apache License 2.0. Cardboard is a free
+and open-source SDK that developers can use to create apps that are compatible
+with the Google Cardboard VR platform. At the same time, it's important to make
+sure that people don't use the "Google Cardboard" mark in ways that could
+create confusion.
+
+The guidelines below are designed to clarify the permitted uses of the "Google
+Cardboard" mark.
+
+**Things you can do**:
+
+* Use the "Google Cardboard" mark to describe or refer to apps developed with
+  the Cardboard SDK in ways that would be considered "fair use."
+* Use the "Google Cardboard" mark to make truthful factual statements regarding
+  the compatibility or interoperability of your app. For example, "This app is
+  compatible with Google Cardboard" or "This app works with Google Cardboard."
+
+**Things you can't do**:
+
+* Don't use the "Google Cardboard" mark in a manner that implies that Google has
+  endorsed or authorized your app or that makes your app appear to be an
+  official Google product. For example, you shouldn't reference your product as
+  "an official Google Cardboard app."
+* Don't incorporate the "Google Cardboard" mark into your own product names,
+  service names, trademarks, logos, or company names.
+* Don't display the "Google Cardboard" mark in a manner that is misleading,
+  unfair, defamatory, infringing, libelous, disparaging, obscene or otherwise
+  objectionable to Google.
+* Don't alter or distort the "Google Cardboard" mark. This includes modifying
+  the mark through hyphenation, combination or abbreviation. For example, don't
+  say "G Cardboard" or "Google-Cardboard."
+
+In addition to these guidelines, please ensure that you follow the trademark
+usage guidelines available here:
+https://www.google.com/permissions/logos-trademarks/.

+ 7 - 0
Ximmerse_UnityXR_SDK_V1.6.0/README.md.meta

@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: bf7be6664c620428da6bf38bbc7b55eb
+TextScriptImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Resources.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 9421d2ce3deaf45f390a84d593e75311
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Resources/Controller.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: a97164fcd7c7f484596e827857307c3a
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Resources/Controller/Material.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: d693a36d75e98174b91b316f67ffae52
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 78 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Resources/Controller/Material/RayLineMat.mat

@@ -0,0 +1,78 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+  serializedVersion: 6
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: RayLineMat
+  m_Shader: {fileID: 10721, guid: 0000000000000000f000000000000000, type: 0}
+  m_ShaderKeywords: 
+  m_LightmapFlags: 4
+  m_EnableInstancingVariants: 0
+  m_DoubleSidedGI: 0
+  m_CustomRenderQueue: -1
+  stringTagMap: {}
+  disabledShaderPasses: []
+  m_SavedProperties:
+    serializedVersion: 3
+    m_TexEnvs:
+    - _BumpMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _DetailAlbedoMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _DetailMask:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _DetailNormalMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _EmissionMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _MainTex:
+        m_Texture: {fileID: 2800000, guid: 598b9c5b4e5ee486a85f31707da56797, type: 3}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _MetallicGlossMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _OcclusionMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _ParallaxMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    m_Floats:
+    - _BumpScale: 1
+    - _Cutoff: 0.5
+    - _DetailNormalMapScale: 1
+    - _DstBlend: 0
+    - _GlossMapScale: 1
+    - _Glossiness: 0.5
+    - _GlossyReflections: 1
+    - _Metallic: 0
+    - _Mode: 0
+    - _OcclusionStrength: 1
+    - _Parallax: 0.02
+    - _SmoothnessTextureChannel: 0
+    - _SpecularHighlights: 1
+    - _SrcBlend: 1
+    - _UVSec: 0
+    - _ZWrite: 1
+    m_Colors:
+    - _Color: {r: 1, g: 1, b: 1, a: 1}
+    - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
+  m_BuildTextureStacks: []

+ 8 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Resources/Controller/Material/RayLineMat.mat.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 9e1ccd8da0997f74d955cd013a04bdf2
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 78 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Resources/Controller/Material/Red.mat

@@ -0,0 +1,78 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+  serializedVersion: 6
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: Red
+  m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0}
+  m_ShaderKeywords: 
+  m_LightmapFlags: 4
+  m_EnableInstancingVariants: 0
+  m_DoubleSidedGI: 0
+  m_CustomRenderQueue: -1
+  stringTagMap: {}
+  disabledShaderPasses: []
+  m_SavedProperties:
+    serializedVersion: 3
+    m_TexEnvs:
+    - _BumpMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _DetailAlbedoMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _DetailMask:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _DetailNormalMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _EmissionMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _MainTex:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _MetallicGlossMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _OcclusionMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _ParallaxMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    m_Floats:
+    - _BumpScale: 1
+    - _Cutoff: 0.5
+    - _DetailNormalMapScale: 1
+    - _DstBlend: 0
+    - _GlossMapScale: 1
+    - _Glossiness: 0.5
+    - _GlossyReflections: 1
+    - _Metallic: 0
+    - _Mode: 0
+    - _OcclusionStrength: 1
+    - _Parallax: 0.02
+    - _SmoothnessTextureChannel: 0
+    - _SpecularHighlights: 1
+    - _SrcBlend: 1
+    - _UVSec: 0
+    - _ZWrite: 1
+    m_Colors:
+    - _Color: {r: 1, g: 0, b: 0, a: 1}
+    - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
+  m_BuildTextureStacks: []

+ 8 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Resources/Controller/Material/Red.mat.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 45576cfe9d050ad4eb20ec8c58a1395d
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 2100000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Resources/Controller/Mesh.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 0542d42020b1aec4f8725449cdb56c60
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Resources/Controller/Models.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 19675481bc0069e4e934661d212e848e
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

File diff suppressed because it is too large
+ 266 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Resources/Controller/Models/Ring LED controller_L.fbx


+ 114 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Resources/Controller/Models/Ring LED controller_L.fbx.meta

@@ -0,0 +1,114 @@
+fileFormatVersion: 2
+guid: baec9d40c0abc1a4eb2873341af9b8d1
+ModelImporter:
+  serializedVersion: 20200
+  internalIDToNameTable:
+  - first:
+      74: 8372764278126935969
+    second: L_Grip
+  - first:
+      74: -7645624559946633325
+    second: L_Trigger
+  - first:
+      74: -8836432099061334528
+    second: L_X
+  - first:
+      74: -1737422884133267385
+    second: L_Y
+  externalObjects: {}
+  materials:
+    materialImportMode: 2
+    materialName: 0
+    materialSearch: 1
+    materialLocation: 1
+  animations:
+    legacyGenerateAnimations: 4
+    bakeSimulation: 0
+    resampleCurves: 1
+    optimizeGameObjects: 0
+    motionNodeName: 
+    rigImportErrors: 
+    rigImportWarnings: 
+    animationImportErrors: 
+    animationImportWarnings: 
+    animationRetargetingWarnings: 
+    animationDoRetargetingWarnings: 0
+    importAnimatedCustomProperties: 0
+    importConstraints: 0
+    animationCompression: 1
+    animationRotationError: 0.5
+    animationPositionError: 0.5
+    animationScaleError: 0.5
+    animationWrapMode: 0
+    extraExposedTransformPaths: []
+    extraUserProperties: []
+    clipAnimations: []
+    isReadable: 0
+  meshes:
+    lODScreenPercentages: []
+    globalScale: 1
+    meshCompression: 0
+    addColliders: 0
+    useSRGBMaterialColor: 1
+    sortHierarchyByName: 1
+    importVisibility: 1
+    importBlendShapes: 1
+    importCameras: 1
+    importLights: 1
+    fileIdsGeneration: 2
+    swapUVChannels: 0
+    generateSecondaryUV: 0
+    useFileUnits: 1
+    keepQuads: 0
+    weldVertices: 1
+    bakeAxisConversion: 0
+    preserveHierarchy: 0
+    skinWeightsMode: 0
+    maxBonesPerVertex: 4
+    minBoneWeight: 0.001
+    meshOptimizationFlags: -1
+    indexFormat: 0
+    secondaryUVAngleDistortion: 8
+    secondaryUVAreaDistortion: 15.000001
+    secondaryUVHardAngle: 88
+    secondaryUVMarginMethod: 1
+    secondaryUVMinLightmapResolution: 40
+    secondaryUVMinObjectScale: 1
+    secondaryUVPackMargin: 4
+    useFileScale: 1
+  tangentSpace:
+    normalSmoothAngle: 60
+    normalImportMode: 0
+    tangentImportMode: 3
+    normalCalculationMode: 4
+    legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
+    blendShapeNormalImportMode: 1
+    normalSmoothingSource: 0
+  referencedClips: []
+  importAnimation: 1
+  humanDescription:
+    serializedVersion: 3
+    human: []
+    skeleton: []
+    armTwist: 0.5
+    foreArmTwist: 0.5
+    upperLegTwist: 0.5
+    legTwist: 0.5
+    armStretch: 0.05
+    legStretch: 0.05
+    feetSpacing: 0
+    globalScale: 1
+    rootMotionBoneName: 
+    hasTranslationDoF: 0
+    hasExtraRoot: 0
+    skeletonHasParents: 1
+  lastHumanDescriptionAvatarSource: {instanceID: 0}
+  autoGenerateAvatarMappingIfUnspecified: 1
+  animationType: 2
+  humanoidOversampling: 1
+  avatarSetup: 0
+  addHumanoidExtraRootOnlyWhenUsingAvatar: 1
+  additionalBone: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

File diff suppressed because it is too large
+ 227 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Resources/Controller/Models/Ring LED controller_R.fbx


+ 114 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Resources/Controller/Models/Ring LED controller_R.fbx.meta

@@ -0,0 +1,114 @@
+fileFormatVersion: 2
+guid: fdb79832f40a85e46a8a2ecc962d065e
+ModelImporter:
+  serializedVersion: 20200
+  internalIDToNameTable:
+  - first:
+      74: -5466477891558741835
+    second: R_Grip
+  - first:
+      74: -6381543926079819846
+    second: R_Trigger
+  - first:
+      74: -2000572381593453751
+    second: R_A
+  - first:
+      74: 6089938917478974666
+    second: R_B
+  externalObjects: {}
+  materials:
+    materialImportMode: 2
+    materialName: 0
+    materialSearch: 1
+    materialLocation: 1
+  animations:
+    legacyGenerateAnimations: 4
+    bakeSimulation: 0
+    resampleCurves: 1
+    optimizeGameObjects: 0
+    motionNodeName: 
+    rigImportErrors: 
+    rigImportWarnings: 
+    animationImportErrors: 
+    animationImportWarnings: 
+    animationRetargetingWarnings: 
+    animationDoRetargetingWarnings: 0
+    importAnimatedCustomProperties: 0
+    importConstraints: 0
+    animationCompression: 1
+    animationRotationError: 0.5
+    animationPositionError: 0.5
+    animationScaleError: 0.5
+    animationWrapMode: 0
+    extraExposedTransformPaths: []
+    extraUserProperties: []
+    clipAnimations: []
+    isReadable: 0
+  meshes:
+    lODScreenPercentages: []
+    globalScale: 1
+    meshCompression: 0
+    addColliders: 0
+    useSRGBMaterialColor: 1
+    sortHierarchyByName: 1
+    importVisibility: 1
+    importBlendShapes: 1
+    importCameras: 1
+    importLights: 1
+    fileIdsGeneration: 2
+    swapUVChannels: 0
+    generateSecondaryUV: 0
+    useFileUnits: 1
+    keepQuads: 0
+    weldVertices: 1
+    bakeAxisConversion: 0
+    preserveHierarchy: 0
+    skinWeightsMode: 0
+    maxBonesPerVertex: 4
+    minBoneWeight: 0.001
+    meshOptimizationFlags: -1
+    indexFormat: 0
+    secondaryUVAngleDistortion: 8
+    secondaryUVAreaDistortion: 15.000001
+    secondaryUVHardAngle: 88
+    secondaryUVMarginMethod: 1
+    secondaryUVMinLightmapResolution: 40
+    secondaryUVMinObjectScale: 1
+    secondaryUVPackMargin: 4
+    useFileScale: 1
+  tangentSpace:
+    normalSmoothAngle: 60
+    normalImportMode: 0
+    tangentImportMode: 3
+    normalCalculationMode: 4
+    legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0
+    blendShapeNormalImportMode: 1
+    normalSmoothingSource: 0
+  referencedClips: []
+  importAnimation: 1
+  humanDescription:
+    serializedVersion: 3
+    human: []
+    skeleton: []
+    armTwist: 0.5
+    foreArmTwist: 0.5
+    upperLegTwist: 0.5
+    legTwist: 0.5
+    armStretch: 0.05
+    legStretch: 0.05
+    feetSpacing: 0
+    globalScale: 1
+    rootMotionBoneName: 
+    hasTranslationDoF: 0
+    hasExtraRoot: 0
+    skeletonHasParents: 1
+  lastHumanDescriptionAvatarSource: {instanceID: 0}
+  autoGenerateAvatarMappingIfUnspecified: 1
+  animationType: 2
+  humanoidOversampling: 1
+  avatarSetup: 0
+  addHumanoidExtraRootOnlyWhenUsingAvatar: 1
+  additionalBone: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Resources/Controller/Prefabs.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 7a6ce5a7a5f6fd249889aec39fc89211
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 1450 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Resources/Controller/Prefabs/Ring LED controller_L.prefab

@@ -0,0 +1,1450 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &40494224078801699
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 8864227703394050895}
+  m_Layer: 0
+  m_Name: Triggerpivot
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &8864227703394050895
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 40494224078801699}
+  m_LocalRotation: {x: 0.7071068, y: -0, z: -0, w: 0.7071068}
+  m_LocalPosition: {x: -0, y: 0.041070003, z: -0.015970001}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children:
+  - {fileID: 4649428517793924171}
+  m_Father: {fileID: 778495740729142894}
+  m_RootOrder: 6
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &349087722499473819
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 6665239251651104516}
+  - component: {fileID: 1659868127829242754}
+  - component: {fileID: 7330170616052023539}
+  m_Layer: 0
+  m_Name: _1
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &6665239251651104516
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 349087722499473819}
+  m_LocalRotation: {x: -0.41897514, y: 0.0005537715, z: -0.0072639007, w: 0.9079685}
+  m_LocalPosition: {x: -10.0896435, y: 11.258045, z: 29.294428}
+  m_LocalScale: {x: 999.99994, y: 999.9996, z: 999.9997}
+  m_Children: []
+  m_Father: {fileID: 4505181814478367833}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &1659868127829242754
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 349087722499473819}
+  m_Mesh: {fileID: -1522373430253385440, guid: df46931aad80a6849ba201f92bdd6128, type: 3}
+--- !u!23 &7330170616052023539
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 349087722499473819}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RayTracingMode: 2
+  m_RayTraceProcedural: 0
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 6979143269105925720, guid: df46931aad80a6849ba201f92bdd6128, type: 3}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+  m_AdditionalVertexStreams: {fileID: 0}
+--- !u!1 &446733866213959851
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 970753013769679377}
+  - component: {fileID: 788824570468291846}
+  - component: {fileID: 788824570468292089}
+  m_Layer: 0
+  m_Name: Ring LED controller_L
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &970753013769679377
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 446733866213959851}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children:
+  - {fileID: 778495740729142894}
+  m_Father: {fileID: 0}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!95 &788824570468291846
+Animator:
+  serializedVersion: 3
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 446733866213959851}
+  m_Enabled: 1
+  m_Avatar: {fileID: 0}
+  m_Controller: {fileID: 9100000, guid: 20c7dd7bf8318eb4c94dc96ff1307fe6, type: 2}
+  m_CullingMode: 0
+  m_UpdateMode: 0
+  m_ApplyRootMotion: 0
+  m_LinearVelocityBlending: 0
+  m_WarningMessage: 
+  m_HasTransformHierarchy: 1
+  m_AllowConstantClipSamplingOptimization: 1
+  m_KeepAnimatorControllerStateOnDisable: 0
+--- !u!114 &788824570468292089
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 446733866213959851}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 54e0ac686157edc459f6f95dd7570215, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+--- !u!1 &905046334105891911
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 5636255544263029311}
+  - component: {fileID: 6806958172576404894}
+  - component: {fileID: 2627879768695478266}
+  m_Layer: 0
+  m_Name: Object_3
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &5636255544263029311
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 905046334105891911}
+  m_LocalRotation: {x: 0, y: 0.0034905588, z: -0, w: 0.9999939}
+  m_LocalPosition: {x: 0.022278447, y: -0.0239285, z: 0.034250382}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 7778092664570835385}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &6806958172576404894
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 905046334105891911}
+  m_Mesh: {fileID: -3335442511603561631, guid: df46931aad80a6849ba201f92bdd6128, type: 3}
+--- !u!23 &2627879768695478266
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 905046334105891911}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RayTracingMode: 2
+  m_RayTraceProcedural: 0
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 2100000, guid: 4f867e7aeafdc0041a2cb235bc4ca4c5, type: 2}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+  m_AdditionalVertexStreams: {fileID: 0}
+--- !u!1 &1485575737652323035
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 778495740729142894}
+  m_Layer: 0
+  m_Name: Default
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &778495740729142894
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1485575737652323035}
+  m_LocalRotation: {x: 0, y: 0, z: 1, w: 6.123234e-17}
+  m_LocalPosition: {x: -0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children:
+  - {fileID: 7778092664570835385}
+  - {fileID: 6977529656446095819}
+  - {fileID: 7795503717042642362}
+  - {fileID: 2973222532552662859}
+  - {fileID: 7226145628394535210}
+  - {fileID: 1245631449569297591}
+  - {fileID: 8864227703394050895}
+  - {fileID: 8462089354906508014}
+  - {fileID: 4820093494649951183}
+  m_Father: {fileID: 970753013769679377}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &2694539554821311735
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 3475714448100025715}
+  - component: {fileID: 8952252077403858599}
+  - component: {fileID: 7804388512041952969}
+  m_Layer: 0
+  m_Name: Object_4
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &3475714448100025715
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2694539554821311735}
+  m_LocalRotation: {x: 0, y: 0.0034905588, z: -0, w: 0.9999939}
+  m_LocalPosition: {x: 0.022278447, y: -0.0239285, z: 0.034250382}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 7778092664570835385}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &8952252077403858599
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2694539554821311735}
+  m_Mesh: {fileID: -864259460963330315, guid: df46931aad80a6849ba201f92bdd6128, type: 3}
+--- !u!23 &7804388512041952969
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2694539554821311735}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RayTracingMode: 2
+  m_RayTraceProcedural: 0
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 5908375799482500579, guid: df46931aad80a6849ba201f92bdd6128, type: 3}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+  m_AdditionalVertexStreams: {fileID: 0}
+--- !u!1 &2752726164591303482
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 4649428517793924171}
+  - component: {fileID: 8123120095673514319}
+  - component: {fileID: 724066421000593729}
+  m_Layer: 0
+  m_Name: Trigger
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &4649428517793924171
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2752726164591303482}
+  m_LocalRotation: {x: -0.7071068, y: 0, z: -0, w: 0.7071068}
+  m_LocalPosition: {x: -0, y: 0.01597, z: 0.04107}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 8864227703394050895}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &8123120095673514319
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2752726164591303482}
+  m_Mesh: {fileID: -8653722315008560443, guid: df46931aad80a6849ba201f92bdd6128, type: 3}
+--- !u!23 &724066421000593729
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2752726164591303482}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RayTracingMode: 2
+  m_RayTraceProcedural: 0
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: -6396746844084397014, guid: df46931aad80a6849ba201f92bdd6128, type: 3}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+  m_AdditionalVertexStreams: {fileID: 0}
+--- !u!1 &3889765748585520330
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 4064378501375967583}
+  - component: {fileID: 6496648662213817322}
+  - component: {fileID: 1195055467397105556}
+  m_Layer: 0
+  m_Name: Object_6
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &4064378501375967583
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3889765748585520330}
+  m_LocalRotation: {x: 0, y: 0.0034905588, z: -0, w: 0.9999939}
+  m_LocalPosition: {x: 0.022278449, y: -0.023928508, z: 0.03425038}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 7778092664570835385}
+  m_RootOrder: 2
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &6496648662213817322
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3889765748585520330}
+  m_Mesh: {fileID: 3288194047611950038, guid: df46931aad80a6849ba201f92bdd6128, type: 3}
+--- !u!23 &1195055467397105556
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3889765748585520330}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RayTracingMode: 2
+  m_RayTraceProcedural: 0
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 2100000, guid: 4f867e7aeafdc0041a2cb235bc4ca4c5, type: 2}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+  m_AdditionalVertexStreams: {fileID: 0}
+--- !u!1 &4066466054525270688
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 3229533973493773392}
+  - component: {fileID: 7685527166470579876}
+  - component: {fileID: 7453305018882255188}
+  m_Layer: 0
+  m_Name: Grip
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &3229533973493773392
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4066466054525270688}
+  m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0.006589999, y: -0.026780013, z: 0.06207}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 6977529656446095819}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &7685527166470579876
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4066466054525270688}
+  m_Mesh: {fileID: 5903716995365422195, guid: df46931aad80a6849ba201f92bdd6128, type: 3}
+--- !u!23 &7453305018882255188
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4066466054525270688}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RayTracingMode: 2
+  m_RayTraceProcedural: 0
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: -6396746844084397014, guid: df46931aad80a6849ba201f92bdd6128, type: 3}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+  m_AdditionalVertexStreams: {fileID: 0}
+--- !u!1 &4750652752131514569
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2037373447469743838}
+  - component: {fileID: 9119405364439432749}
+  - component: {fileID: 5989133699281007205}
+  m_Layer: 0
+  m_Name: _2
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2037373447469743838
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4750652752131514569}
+  m_LocalRotation: {x: -0.41897514, y: 0.0005537715, z: -0.0072639007, w: 0.9079685}
+  m_LocalPosition: {x: -10.0896435, y: 11.258045, z: 29.294428}
+  m_LocalScale: {x: 999.99994, y: 999.9996, z: 999.9997}
+  m_Children: []
+  m_Father: {fileID: 4505181814478367833}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &9119405364439432749
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4750652752131514569}
+  m_Mesh: {fileID: 4139870077181741691, guid: df46931aad80a6849ba201f92bdd6128, type: 3}
+--- !u!23 &5989133699281007205
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4750652752131514569}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RayTracingMode: 2
+  m_RayTraceProcedural: 0
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: -6396746844084397014, guid: df46931aad80a6849ba201f92bdd6128, type: 3}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+  m_AdditionalVertexStreams: {fileID: 0}
+--- !u!1 &5223414472634648155
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1245631449569297591}
+  - component: {fileID: 6647330839336370443}
+  - component: {fileID: 2731961507649499238}
+  m_Layer: 0
+  m_Name: Thumbrest
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &1245631449569297591
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5223414472634648155}
+  m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: -0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 778495740729142894}
+  m_RootOrder: 5
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &6647330839336370443
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5223414472634648155}
+  m_Mesh: {fileID: 3035860088504518649, guid: df46931aad80a6849ba201f92bdd6128, type: 3}
+--- !u!23 &2731961507649499238
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5223414472634648155}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RayTracingMode: 2
+  m_RayTraceProcedural: 0
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 5908375799482500579, guid: df46931aad80a6849ba201f92bdd6128, type: 3}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+  m_AdditionalVertexStreams: {fileID: 0}
+--- !u!1 &5270500741838372643
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 6977529656446095819}
+  m_Layer: 0
+  m_Name: Grippivot
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &6977529656446095819
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5270500741838372643}
+  m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: -0.0065899994, y: 0.02678001, z: -0.06207}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children:
+  - {fileID: 3229533973493773392}
+  m_Father: {fileID: 778495740729142894}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &5397802025580759099
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 6597040046684056148}
+  - component: {fileID: 4316291212408727578}
+  - component: {fileID: 8578377777066011042}
+  m_Layer: 0
+  m_Name: Object_9
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &6597040046684056148
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5397802025580759099}
+  m_LocalRotation: {x: 0, y: 0.0034905588, z: -0, w: 0.9999939}
+  m_LocalPosition: {x: 0.022278447, y: -0.0239285, z: 0.034250382}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 7778092664570835385}
+  m_RootOrder: 4
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &4316291212408727578
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5397802025580759099}
+  m_Mesh: {fileID: 3793292951052469749, guid: df46931aad80a6849ba201f92bdd6128, type: 3}
+--- !u!23 &8578377777066011042
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5397802025580759099}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RayTracingMode: 2
+  m_RayTraceProcedural: 0
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: -389402008792246631, guid: df46931aad80a6849ba201f92bdd6128, type: 3}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+  m_AdditionalVertexStreams: {fileID: 0}
+--- !u!1 &5472209584144457580
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 4505181814478367833}
+  - component: {fileID: 8334573011574019173}
+  - component: {fileID: 8542298951739540181}
+  m_Layer: 0
+  m_Name: Axis
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &4505181814478367833
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5472209584144457580}
+  m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: -0, y: 0, z: 0}
+  m_LocalScale: {x: 0.001, y: 0.001, z: 0.001}
+  m_Children:
+  - {fileID: 6665239251651104516}
+  - {fileID: 2037373447469743838}
+  m_Father: {fileID: 2973222532552662859}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &8334573011574019173
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5472209584144457580}
+  m_Mesh: {fileID: -6029220463044473203, guid: df46931aad80a6849ba201f92bdd6128, type: 3}
+--- !u!23 &8542298951739540181
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5472209584144457580}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RayTracingMode: 2
+  m_RayTraceProcedural: 0
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: -1134714066672644336, guid: df46931aad80a6849ba201f92bdd6128, type: 3}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+  m_AdditionalVertexStreams: {fileID: 0}
+--- !u!1 &6237542207855476123
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 4928848330252181131}
+  - component: {fileID: 5897493554081188508}
+  - component: {fileID: 5796955755503285929}
+  m_Layer: 0
+  m_Name: Object_8
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &4928848330252181131
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6237542207855476123}
+  m_LocalRotation: {x: 0, y: 0.0034905588, z: -0, w: 0.9999939}
+  m_LocalPosition: {x: 0.022278447, y: -0.0239285, z: 0.034250382}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 7778092664570835385}
+  m_RootOrder: 3
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &5897493554081188508
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6237542207855476123}
+  m_Mesh: {fileID: 733751305697248771, guid: df46931aad80a6849ba201f92bdd6128, type: 3}
+--- !u!23 &5796955755503285929
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6237542207855476123}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RayTracingMode: 2
+  m_RayTraceProcedural: 0
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: -389402008792246631, guid: df46931aad80a6849ba201f92bdd6128, type: 3}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+  m_AdditionalVertexStreams: {fileID: 0}
+--- !u!1 &6800166813990459651
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 8462089354906508014}
+  - component: {fileID: 7432163795722804522}
+  - component: {fileID: 1519993376590242705}
+  m_Layer: 0
+  m_Name: X
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &8462089354906508014
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6800166813990459651}
+  m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: -0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 778495740729142894}
+  m_RootOrder: 7
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &7432163795722804522
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6800166813990459651}
+  m_Mesh: {fileID: -496058992349931718, guid: df46931aad80a6849ba201f92bdd6128, type: 3}
+--- !u!23 &1519993376590242705
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6800166813990459651}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RayTracingMode: 2
+  m_RayTraceProcedural: 0
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: -6396746844084397014, guid: df46931aad80a6849ba201f92bdd6128, type: 3}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+  m_AdditionalVertexStreams: {fileID: 0}
+--- !u!1 &7276637657154602859
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2973222532552662859}
+  m_Layer: 0
+  m_Name: Left_Primary2DAxispivot
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2973222532552662859
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7276637657154602859}
+  m_LocalRotation: {x: 0.41293335, y: -0.0036847983, z: 0.008708805, w: 0.9107122}
+  m_LocalPosition: {x: 0.0101, y: 0.0150999995, z: -0.0275}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children:
+  - {fileID: 4505181814478367833}
+  m_Father: {fileID: 778495740729142894}
+  m_RootOrder: 3
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &7469381456742239164
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 4820093494649951183}
+  - component: {fileID: 8288777063948550727}
+  - component: {fileID: 3917891802963912117}
+  m_Layer: 0
+  m_Name: Y
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &4820093494649951183
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7469381456742239164}
+  m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: -0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 778495740729142894}
+  m_RootOrder: 8
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &8288777063948550727
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7469381456742239164}
+  m_Mesh: {fileID: 1464361123701606782, guid: df46931aad80a6849ba201f92bdd6128, type: 3}
+--- !u!23 &3917891802963912117
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7469381456742239164}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RayTracingMode: 2
+  m_RayTraceProcedural: 0
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: -6396746844084397014, guid: df46931aad80a6849ba201f92bdd6128, type: 3}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+  m_AdditionalVertexStreams: {fileID: 0}
+--- !u!1 &7781230877499231971
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 7795503717042642362}
+  - component: {fileID: 1158859909272915963}
+  - component: {fileID: 8105446188273607053}
+  m_Layer: 0
+  m_Name: LED
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &7795503717042642362
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7781230877499231971}
+  m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: -0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 778495740729142894}
+  m_RootOrder: 2
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &1158859909272915963
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7781230877499231971}
+  m_Mesh: {fileID: 8497910652971998992, guid: df46931aad80a6849ba201f92bdd6128, type: 3}
+--- !u!23 &8105446188273607053
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7781230877499231971}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RayTracingMode: 2
+  m_RayTraceProcedural: 0
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 4327818543122232318, guid: df46931aad80a6849ba201f92bdd6128, type: 3}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+  m_AdditionalVertexStreams: {fileID: 0}
+--- !u!1 &7959966446716013090
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 7226145628394535210}
+  - component: {fileID: 1294640331622124496}
+  - component: {fileID: 181755432039052132}
+  m_Layer: 0
+  m_Name: Menu
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &7226145628394535210
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7959966446716013090}
+  m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: -0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 778495740729142894}
+  m_RootOrder: 4
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &1294640331622124496
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7959966446716013090}
+  m_Mesh: {fileID: 8354002305462634886, guid: df46931aad80a6849ba201f92bdd6128, type: 3}
+--- !u!23 &181755432039052132
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7959966446716013090}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RayTracingMode: 2
+  m_RayTraceProcedural: 0
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 6979143269105925720, guid: df46931aad80a6849ba201f92bdd6128, type: 3}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+  m_AdditionalVertexStreams: {fileID: 0}
+--- !u!1 &8362222729372760921
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 7778092664570835385}
+  m_Layer: 0
+  m_Name: Controller
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &7778092664570835385
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8362222729372760921}
+  m_LocalRotation: {x: 0, y: -0.0034905982, z: -0, w: 0.9999939}
+  m_LocalPosition: {x: -0.0220388, y: 0.023928508, z: -0.03440507}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children:
+  - {fileID: 5636255544263029311}
+  - {fileID: 3475714448100025715}
+  - {fileID: 4064378501375967583}
+  - {fileID: 4928848330252181131}
+  - {fileID: 6597040046684056148}
+  m_Father: {fileID: 778495740729142894}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}

+ 7 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Resources/Controller/Prefabs/Ring LED controller_L.prefab.meta

@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 5443eb7303545e24a87e7fcf06f71662
+PrefabImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 1450 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Resources/Controller/Prefabs/Ring LED controller_R.prefab

@@ -0,0 +1,1450 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &938012737172739536
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 454772516629073770}
+  - component: {fileID: 127530484286892221}
+  - component: {fileID: 127530484286892162}
+  m_Layer: 0
+  m_Name: Ring LED controller_R
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &454772516629073770
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 938012737172739536}
+  m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: -0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children:
+  - {fileID: 142609169075688213}
+  m_Father: {fileID: 0}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!95 &127530484286892221
+Animator:
+  serializedVersion: 3
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 938012737172739536}
+  m_Enabled: 1
+  m_Avatar: {fileID: 0}
+  m_Controller: {fileID: 9100000, guid: ff873adfa95ac0d49b25a646f2629784, type: 2}
+  m_CullingMode: 0
+  m_UpdateMode: 0
+  m_ApplyRootMotion: 0
+  m_LinearVelocityBlending: 0
+  m_WarningMessage: 
+  m_HasTransformHierarchy: 1
+  m_AllowConstantClipSamplingOptimization: 1
+  m_KeepAnimatorControllerStateOnDisable: 0
+--- !u!114 &127530484286892162
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 938012737172739536}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: b4966971bf3a50240bccf1e4bba6e916, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+--- !u!1 &1332472379314978808
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 3039661645445909509}
+  - component: {fileID: 6440497172267358559}
+  - component: {fileID: 3613484356768682227}
+  m_Layer: 0
+  m_Name: Object_9
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &3039661645445909509
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1332472379314978808}
+  m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0.0064311055, y: -0.040785857, z: 0.024254205}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 1477142878472750601}
+  m_RootOrder: 4
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &6440497172267358559
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1332472379314978808}
+  m_Mesh: {fileID: 3793292951052469749, guid: a7fc91d7e72b41b4eaf5b6d7a4353d19, type: 3}
+--- !u!23 &3613484356768682227
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1332472379314978808}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RayTracingMode: 2
+  m_RayTraceProcedural: 0
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: -389402008792246631, guid: a7fc91d7e72b41b4eaf5b6d7a4353d19, type: 3}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+  m_AdditionalVertexStreams: {fileID: 0}
+--- !u!1 &2112270662496598522
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 6932662216788497908}
+  - component: {fileID: 193334400939706217}
+  - component: {fileID: 6856607154252645548}
+  m_Layer: 0
+  m_Name: Object_4
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &6932662216788497908
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2112270662496598522}
+  m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0.0064311055, y: -0.040785857, z: 0.024254205}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 1477142878472750601}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &193334400939706217
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2112270662496598522}
+  m_Mesh: {fileID: -864259460963330315, guid: a7fc91d7e72b41b4eaf5b6d7a4353d19, type: 3}
+--- !u!23 &6856607154252645548
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2112270662496598522}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RayTracingMode: 2
+  m_RayTraceProcedural: 0
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 5908375799482500579, guid: a7fc91d7e72b41b4eaf5b6d7a4353d19, type: 3}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+  m_AdditionalVertexStreams: {fileID: 0}
+--- !u!1 &2281830551245316000
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 142609169075688213}
+  m_Layer: 0
+  m_Name: Default
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &142609169075688213
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2281830551245316000}
+  m_LocalRotation: {x: 0, y: 0, z: 1, w: 6.123234e-17}
+  m_LocalPosition: {x: -0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children:
+  - {fileID: 734351219960498154}
+  - {fileID: 6891087498926106715}
+  - {fileID: 1477142878472750601}
+  - {fileID: 7773857037704883376}
+  - {fileID: 7428778693662122177}
+  - {fileID: 8034156345149768785}
+  - {fileID: 370696420796257570}
+  - {fileID: 1909030074188495308}
+  - {fileID: 2371811516986713258}
+  m_Father: {fileID: 454772516629073770}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &2872183342144301430
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 3861814287034939789}
+  - component: {fileID: 5109263270695665617}
+  - component: {fileID: 5671512601348051746}
+  m_Layer: 0
+  m_Name: Object_3
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &3861814287034939789
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2872183342144301430}
+  m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0.0064311055, y: -0.040785857, z: 0.024254205}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 1477142878472750601}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &5109263270695665617
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2872183342144301430}
+  m_Mesh: {fileID: -3335442511603561631, guid: a7fc91d7e72b41b4eaf5b6d7a4353d19, type: 3}
+--- !u!23 &5671512601348051746
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 2872183342144301430}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RayTracingMode: 2
+  m_RayTraceProcedural: 0
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 2100000, guid: ed4fff6142fcafa448c7547efbc6ad2f, type: 2}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+  m_AdditionalVertexStreams: {fileID: 0}
+--- !u!1 &3027835907445933713
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1607006530387715005}
+  - component: {fileID: 4616695736668296477}
+  - component: {fileID: 8640333944128926514}
+  m_Layer: 0
+  m_Name: Trigger
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &1607006530387715005
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3027835907445933713}
+  m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: -0, y: -0.03679, z: 0.017}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 2371811516986713258}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &4616695736668296477
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3027835907445933713}
+  m_Mesh: {fileID: -8653722315008560443, guid: a7fc91d7e72b41b4eaf5b6d7a4353d19, type: 3}
+--- !u!23 &8640333944128926514
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3027835907445933713}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RayTracingMode: 2
+  m_RayTraceProcedural: 0
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: -6396746844084397014, guid: a7fc91d7e72b41b4eaf5b6d7a4353d19, type: 3}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+  m_AdditionalVertexStreams: {fileID: 0}
+--- !u!1 &3221492479101248750
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 370696420796257570}
+  m_Layer: 0
+  m_Name: Right_Primary2DAxispivot
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &370696420796257570
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3221492479101248750}
+  m_LocalRotation: {x: -0.25179923, y: -0.64303476, z: 0.24475925, w: 0.6805853}
+  m_LocalPosition: {x: -0.01031, y: 0.01633, z: -0.027589997}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children:
+  - {fileID: 6144089384230674321}
+  m_Father: {fileID: 142609169075688213}
+  m_RootOrder: 6
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &3700163237027858395
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2875266341723310379}
+  - component: {fileID: 7034369404804471775}
+  - component: {fileID: 7807015123095393327}
+  m_Layer: 0
+  m_Name: Grip
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2875266341723310379
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3700163237027858395}
+  m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: -0.00608, y: -0.02526, z: 0.06231}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 7773857037704883376}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &7034369404804471775
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3700163237027858395}
+  m_Mesh: {fileID: 5903716995365422195, guid: a7fc91d7e72b41b4eaf5b6d7a4353d19, type: 3}
+--- !u!23 &7807015123095393327
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3700163237027858395}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RayTracingMode: 2
+  m_RayTraceProcedural: 0
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: -6396746844084397014, guid: a7fc91d7e72b41b4eaf5b6d7a4353d19, type: 3}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+  m_AdditionalVertexStreams: {fileID: 0}
+--- !u!1 &3764266581007305072
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 3250407891991073453}
+  - component: {fileID: 4123495269539890048}
+  - component: {fileID: 9126713289120669410}
+  m_Layer: 0
+  m_Name: Object_6
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &3250407891991073453
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3764266581007305072}
+  m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0.0064311055, y: -0.040785857, z: 0.024254205}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 1477142878472750601}
+  m_RootOrder: 2
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &4123495269539890048
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3764266581007305072}
+  m_Mesh: {fileID: 3288194047611950038, guid: a7fc91d7e72b41b4eaf5b6d7a4353d19, type: 3}
+--- !u!23 &9126713289120669410
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3764266581007305072}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RayTracingMode: 2
+  m_RayTraceProcedural: 0
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 2100000, guid: ed4fff6142fcafa448c7547efbc6ad2f, type: 2}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+  m_AdditionalVertexStreams: {fileID: 0}
+--- !u!1 &4550087577766606151
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 6891087498926106715}
+  - component: {fileID: 3242696513491228951}
+  - component: {fileID: 1656479802733379636}
+  m_Layer: 0
+  m_Name: B
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &6891087498926106715
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4550087577766606151}
+  m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: -0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 142609169075688213}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &3242696513491228951
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4550087577766606151}
+  m_Mesh: {fileID: -4909277789374002350, guid: a7fc91d7e72b41b4eaf5b6d7a4353d19, type: 3}
+--- !u!23 &1656479802733379636
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4550087577766606151}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RayTracingMode: 2
+  m_RayTraceProcedural: 0
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: -6396746844084397014, guid: a7fc91d7e72b41b4eaf5b6d7a4353d19, type: 3}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+  m_AdditionalVertexStreams: {fileID: 0}
+--- !u!1 &4761420848493855320
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 7773857037704883376}
+  m_Layer: 0
+  m_Name: Grippivot
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &7773857037704883376
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4761420848493855320}
+  m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0.00608, y: 0.02526, z: -0.06231}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children:
+  - {fileID: 2875266341723310379}
+  m_Father: {fileID: 142609169075688213}
+  m_RootOrder: 3
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &4848732210488752928
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1909030074188495308}
+  - component: {fileID: 6302633356606323824}
+  - component: {fileID: 3377280860391066909}
+  m_Layer: 0
+  m_Name: Thumbrest
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &1909030074188495308
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4848732210488752928}
+  m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: -0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 142609169075688213}
+  m_RootOrder: 7
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &6302633356606323824
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4848732210488752928}
+  m_Mesh: {fileID: 3035860088504518649, guid: a7fc91d7e72b41b4eaf5b6d7a4353d19, type: 3}
+--- !u!23 &3377280860391066909
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4848732210488752928}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RayTracingMode: 2
+  m_RayTraceProcedural: 0
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 5908375799482500579, guid: a7fc91d7e72b41b4eaf5b6d7a4353d19, type: 3}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+  m_AdditionalVertexStreams: {fileID: 0}
+--- !u!1 &5587362895766875738
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 186834480554569380}
+  - component: {fileID: 116212924397046280}
+  - component: {fileID: 5312559588328755675}
+  m_Layer: 0
+  m_Name: _2
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &186834480554569380
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5587362895766875738}
+  m_LocalRotation: {x: 0.25179926, y: 0.64303476, z: -0.24475922, w: 0.6805853}
+  m_LocalPosition: {x: 10.568051, y: -30.539806, z: -9.476759}
+  m_LocalScale: {x: 999.9999, y: 999.9999, z: 999.9997}
+  m_Children: []
+  m_Father: {fileID: 6144089384230674321}
+  m_RootOrder: 1
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &116212924397046280
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5587362895766875738}
+  m_Mesh: {fileID: 4139870077181741691, guid: a7fc91d7e72b41b4eaf5b6d7a4353d19, type: 3}
+--- !u!23 &5312559588328755675
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5587362895766875738}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RayTracingMode: 2
+  m_RayTraceProcedural: 0
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: -6396746844084397014, guid: a7fc91d7e72b41b4eaf5b6d7a4353d19, type: 3}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+  m_AdditionalVertexStreams: {fileID: 0}
+--- !u!1 &5824390839970625651
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 6144089384230674321}
+  - component: {fileID: 1801380949238907190}
+  - component: {fileID: 9152784340907346583}
+  m_Layer: 0
+  m_Name: Axis
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &6144089384230674321
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5824390839970625651}
+  m_LocalRotation: {x: 0.00000001490116, y: 0.000000029802322, z: -0.000000029802322, w: 1}
+  m_LocalPosition: {x: -0, y: 0, z: 0}
+  m_LocalScale: {x: 0.001, y: 0.0010000002, z: 0.0009999999}
+  m_Children:
+  - {fileID: 1512873300656946142}
+  - {fileID: 186834480554569380}
+  m_Father: {fileID: 370696420796257570}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &1801380949238907190
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5824390839970625651}
+  m_Mesh: {fileID: -6029220463044473203, guid: a7fc91d7e72b41b4eaf5b6d7a4353d19, type: 3}
+--- !u!23 &9152784340907346583
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 5824390839970625651}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RayTracingMode: 2
+  m_RayTraceProcedural: 0
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: -1134714066672644336, guid: a7fc91d7e72b41b4eaf5b6d7a4353d19, type: 3}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+  m_AdditionalVertexStreams: {fileID: 0}
+--- !u!1 &6396562071941348013
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 734351219960498154}
+  - component: {fileID: 7714804547330743294}
+  - component: {fileID: 8290786956033409567}
+  m_Layer: 0
+  m_Name: A
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &734351219960498154
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6396562071941348013}
+  m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: -0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 142609169075688213}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &7714804547330743294
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6396562071941348013}
+  m_Mesh: {fileID: 6157117880141131119, guid: a7fc91d7e72b41b4eaf5b6d7a4353d19, type: 3}
+--- !u!23 &8290786956033409567
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6396562071941348013}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RayTracingMode: 2
+  m_RayTraceProcedural: 0
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: -6396746844084397014, guid: a7fc91d7e72b41b4eaf5b6d7a4353d19, type: 3}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+  m_AdditionalVertexStreams: {fileID: 0}
+--- !u!1 &6974703397765936024
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 7428778693662122177}
+  - component: {fileID: 1955260953516814976}
+  - component: {fileID: 8884256081564359926}
+  m_Layer: 0
+  m_Name: LED
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &7428778693662122177
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6974703397765936024}
+  m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: -0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 142609169075688213}
+  m_RootOrder: 4
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &1955260953516814976
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6974703397765936024}
+  m_Mesh: {fileID: 8497910652971998992, guid: a7fc91d7e72b41b4eaf5b6d7a4353d19, type: 3}
+--- !u!23 &8884256081564359926
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 6974703397765936024}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RayTracingMode: 2
+  m_RayTraceProcedural: 0
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 4327818543122232318, guid: a7fc91d7e72b41b4eaf5b6d7a4353d19, type: 3}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+  m_AdditionalVertexStreams: {fileID: 0}
+--- !u!1 &7295858641559730009
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 8034156345149768785}
+  - component: {fileID: 1927574783140296363}
+  - component: {fileID: 698860667327188511}
+  m_Layer: 0
+  m_Name: Menu
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &8034156345149768785
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7295858641559730009}
+  m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: -0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 142609169075688213}
+  m_RootOrder: 5
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &1927574783140296363
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7295858641559730009}
+  m_Mesh: {fileID: 8354002305462634886, guid: a7fc91d7e72b41b4eaf5b6d7a4353d19, type: 3}
+--- !u!23 &698860667327188511
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7295858641559730009}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RayTracingMode: 2
+  m_RayTraceProcedural: 0
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 6979143269105925720, guid: a7fc91d7e72b41b4eaf5b6d7a4353d19, type: 3}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+  m_AdditionalVertexStreams: {fileID: 0}
+--- !u!1 &7481298075381967268
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 5416266397343531519}
+  - component: {fileID: 2299141459917747076}
+  - component: {fileID: 1837577403081247982}
+  m_Layer: 0
+  m_Name: Object_8
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &5416266397343531519
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7481298075381967268}
+  m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0.0064311055, y: -0.040785857, z: 0.024254205}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children: []
+  m_Father: {fileID: 1477142878472750601}
+  m_RootOrder: 3
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &2299141459917747076
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7481298075381967268}
+  m_Mesh: {fileID: 733751305697248771, guid: a7fc91d7e72b41b4eaf5b6d7a4353d19, type: 3}
+--- !u!23 &1837577403081247982
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7481298075381967268}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RayTracingMode: 2
+  m_RayTraceProcedural: 0
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: -389402008792246631, guid: a7fc91d7e72b41b4eaf5b6d7a4353d19, type: 3}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+  m_AdditionalVertexStreams: {fileID: 0}
+--- !u!1 &7880679051782902744
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1477142878472750601}
+  m_Layer: 0
+  m_Name: controller
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &1477142878472750601
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 7880679051782902744}
+  m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: -0.0064311055, y: 0.04078585, z: -0.024254207}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children:
+  - {fileID: 3861814287034939789}
+  - {fileID: 6932662216788497908}
+  - {fileID: 3250407891991073453}
+  - {fileID: 5416266397343531519}
+  - {fileID: 3039661645445909509}
+  m_Father: {fileID: 142609169075688213}
+  m_RootOrder: 2
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &8516730683739297275
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1512873300656946142}
+  - component: {fileID: 1277061203524725552}
+  - component: {fileID: 3703602104896882662}
+  m_Layer: 0
+  m_Name: _1
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &1512873300656946142
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8516730683739297275}
+  m_LocalRotation: {x: 0.25179926, y: 0.64303476, z: -0.24475922, w: 0.6805853}
+  m_LocalPosition: {x: 10.568051, y: -30.539806, z: -9.476759}
+  m_LocalScale: {x: 999.9999, y: 999.9999, z: 999.9997}
+  m_Children: []
+  m_Father: {fileID: 6144089384230674321}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!33 &1277061203524725552
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8516730683739297275}
+  m_Mesh: {fileID: -1522373430253385440, guid: a7fc91d7e72b41b4eaf5b6d7a4353d19, type: 3}
+--- !u!23 &3703602104896882662
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8516730683739297275}
+  m_Enabled: 1
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RayTracingMode: 2
+  m_RayTraceProcedural: 0
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 6979143269105925720, guid: a7fc91d7e72b41b4eaf5b6d7a4353d19, type: 3}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+  m_AdditionalVertexStreams: {fileID: 0}
+--- !u!1 &8754000499788913798
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 2371811516986713258}
+  m_Layer: 0
+  m_Name: Triggerpivor
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &2371811516986713258
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 8754000499788913798}
+  m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: -0, y: 0.03679, z: -0.017}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_Children:
+  - {fileID: 1607006530387715005}
+  m_Father: {fileID: 142609169075688213}
+  m_RootOrder: 8
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}

+ 7 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Resources/Controller/Prefabs/Ring LED controller_R.prefab.meta

@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 8645b117866c29643a9b3a076cf0f70a
+PrefabImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Resources/Controller/Texture.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: ae4bd035e992cc7408d64635a55bbcb8
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Resources/Gesture.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: f07d0d87a5a80d84bba8912be59175d2
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Resources/Gesture/Material.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: e6996181360e9d648990a5f5433818dd
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 92 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Resources/Gesture/Material/NewSurfaceShader.shader

@@ -0,0 +1,92 @@
+// Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'
+
+Shader "UI/Default_OverlayNoZTest"
+{
+    Properties
+    {
+        [PerRendererData] _MainTex("Sprite Texture", 2D) = "white" {}
+        _Color("Tint", Color) = (1,1,1,1)
+
+        _StencilComp("Stencil Comparison", Float) = 8
+        _Stencil("Stencil ID", Float) = 0
+        _StencilOp("Stencil Operation", Float) = 0
+        _StencilWriteMask("Stencil Write Mask", Float) = 255
+        _StencilReadMask("Stencil Read Mask", Float) = 255
+
+        _ColorMask("Color Mask", Float) = 15
+    }
+
+        SubShader
+        {
+            Tags
+            {
+                "Queue" = "Overlay"
+                "IgnoreProjector" = "True"
+                "RenderType" = "Transparent"
+                "PreviewType" = "Plane"
+                "CanUseSpriteAtlas" = "True"
+            }
+
+            Stencil
+            {
+                Ref[_Stencil]
+                Comp[_StencilComp]
+                Pass[_StencilOp]
+                ReadMask[_StencilReadMask]
+                WriteMask[_StencilWriteMask]
+            }
+
+            Cull Off
+            Lighting Off
+            ZWrite Off
+            ZTest Off
+            Blend SrcAlpha OneMinusSrcAlpha
+            ColorMask[_ColorMask]
+
+            Pass
+            {
+            CGPROGRAM
+                #pragma vertex vert
+                #pragma fragment frag
+                #include "UnityCG.cginc"
+
+                struct appdata_t
+                {
+                    float4 vertex   : POSITION;
+                    float4 color    : COLOR;
+                    float2 texcoord : TEXCOORD0;
+                };
+
+                struct v2f
+                {
+                    float4 vertex   : SV_POSITION;
+                    fixed4 color : COLOR;
+                    half2 texcoord  : TEXCOORD0;
+                };
+
+                fixed4 _Color;
+
+                v2f vert(appdata_t IN)
+                {
+                    v2f OUT;
+                    OUT.vertex = UnityObjectToClipPos(IN.vertex);
+                    OUT.texcoord = IN.texcoord;
+    #ifdef UNITY_HALF_TEXEL_OFFSET
+                    OUT.vertex.xy += (_ScreenParams.zw - 1.0) * float2(-1,1);
+    #endif
+                    OUT.color = IN.color * _Color;
+                    return OUT;
+                }
+
+                sampler2D _MainTex;
+
+                fixed4 frag(v2f IN) : SV_Target
+                {
+                    half4 color = tex2D(_MainTex, IN.texcoord) * IN.color;
+                    clip(color.a - 0.01);
+                    return color;
+                }
+            ENDCG
+            }
+        }
+}

+ 10 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Resources/Gesture/Material/NewSurfaceShader.shader.meta

@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 4ceff85f8156141428cd1b8e6efed5cd
+ShaderImporter:
+  externalObjects: {}
+  defaultTextures: []
+  nonModifiableTextures: []
+  preprocessorOverride: 0
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 84 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Resources/Gesture/Material/frontShader.mat

@@ -0,0 +1,84 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+  serializedVersion: 6
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_Name: frontShader
+  m_Shader: {fileID: 4800000, guid: 4ceff85f8156141428cd1b8e6efed5cd, type: 3}
+  m_ShaderKeywords: ETC1_EXTERNAL_ALPHA
+  m_LightmapFlags: 4
+  m_EnableInstancingVariants: 0
+  m_DoubleSidedGI: 0
+  m_CustomRenderQueue: -1
+  stringTagMap: {}
+  disabledShaderPasses: []
+  m_SavedProperties:
+    serializedVersion: 3
+    m_TexEnvs:
+    - _BumpMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _DetailAlbedoMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _DetailMask:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _DetailNormalMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _EmissionMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _MainTex:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _MetallicGlossMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _OcclusionMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    - _ParallaxMap:
+        m_Texture: {fileID: 0}
+        m_Scale: {x: 1, y: 1}
+        m_Offset: {x: 0, y: 0}
+    m_Floats:
+    - _BumpScale: 1
+    - _ColorMask: 15
+    - _Cutoff: 0.5
+    - _DetailNormalMapScale: 1
+    - _DstBlend: 0
+    - _GlossMapScale: 1
+    - _Glossiness: 0.5
+    - _GlossyReflections: 1
+    - _Metallic: 0
+    - _Mode: 0
+    - _OcclusionStrength: 1
+    - _Parallax: 0.02
+    - _SmoothnessTextureChannel: 0
+    - _SpecularHighlights: 1
+    - _SrcBlend: 1
+    - _Stencil: 0
+    - _StencilComp: 8
+    - _StencilOp: 0
+    - _StencilReadMask: 255
+    - _StencilWriteMask: 255
+    - _UVSec: 0
+    - _ZWrite: 1
+    m_Colors:
+    - _Color: {r: 1, g: 1, b: 1, a: 1}
+    - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
+  m_BuildTextureStacks: []

+ 8 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Resources/Gesture/Material/frontShader.mat.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: e49d3b9b0f5a7f449afdc14976331f44
+NativeFormatImporter:
+  externalObjects: {}
+  mainObjectFileID: 2100000
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Resources/Gesture/Mesh.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 2f5d55f27471b70439177d936295a9b9
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Resources/Gesture/Models.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 806cb1cda5e08da428693b7637dc993f
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 8 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Resources/Gesture/Prefabs.meta

@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: d3398c01f54a3b14cbdf29c2c66806b8
+folderAsset: yes
+DefaultImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 84 - 0
Ximmerse_UnityXR_SDK_V1.6.0/Resources/Gesture/Prefabs/CURSOR0 (2).prefab

@@ -0,0 +1,84 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &4202291476826238984
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 8214293610535996534}
+  - component: {fileID: 3921336315754149167}
+  m_Layer: 0
+  m_Name: CURSOR0 (2)
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &8214293610535996534
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4202291476826238984}
+  m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 2.7}
+  m_LocalScale: {x: 0.03, y: 0.03, z: 0.03}
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!212 &3921336315754149167
+SpriteRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 4202291476826238984}
+  m_Enabled: 1
+  m_CastShadows: 0
+  m_ReceiveShadows: 0
+  m_DynamicOccludee: 1
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RayTracingMode: 0
+  m_RayTraceProcedural: 0
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 1
+  m_SelectedEditorRenderState: 0
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+  m_Sprite: {fileID: 21300000, guid: cfee74f1e6f3dbc43bc1705d38031f45, type: 3}
+  m_Color: {r: 1, g: 1, b: 1, a: 1}
+  m_FlipX: 0
+  m_FlipY: 0
+  m_DrawMode: 0
+  m_Size: {x: 5.8, y: 5.8}
+  m_AdaptiveModeThreshold: 0.5
+  m_SpriteTileMode: 0
+  m_WasSpriteAssigned: 1
+  m_MaskInteraction: 0
+  m_SpriteSortPoint: 0

Some files were not shown because too many files changed in this diff