├── Examples ├── Teleportation │ ├── LightingData.asset │ ├── ReflectionProbe-0.exr │ ├── Materials.meta │ ├── LightingData.asset.meta │ ├── Materials │ │ ├── Planes_Material.mat.meta │ │ └── Planes_Material.mat │ ├── New Lighting Settings.lighting.meta │ ├── New Lighting Settings.lighting │ └── ReflectionProbe-0.exr.meta ├── Teleportation.unity.meta ├── Teleportation.meta └── Teleportation.unity ├── x_ReadmeSources ├── TeleportationAdjustments.png └── TeleportationAdjustments.png.meta ├── LICENSE.meta ├── README.md.meta ├── Art.meta ├── Editor.meta ├── Examples.meta ├── Runtime.meta ├── Art ├── Materials.meta └── Materials │ ├── Default.mat.meta │ └── Default.mat ├── Runtime ├── Common.meta ├── Common │ ├── Prefabs │ │ ├── Hand.prefab.meta │ │ └── Hand.prefab │ └── Prefabs.meta ├── Teleportation │ ├── README.md.meta │ ├── Prefabs.meta │ ├── Scripts.meta │ ├── Prefabs │ │ ├── TeleportReticle.prefab.meta │ │ └── TeleportReticle.prefab │ ├── XR Teleportation Demo Rig.prefab.meta │ ├── Scripts │ │ ├── ControllerManager.cs.meta │ │ ├── XRTeleportationController.cs.meta │ │ ├── XRDirectionTeleportationArea.cs.meta │ │ ├── XRTeleportationController.cs │ │ ├── XRDirectionTeleportationArea.cs │ │ └── ControllerManager.cs │ ├── README.md │ └── XR Teleportation Demo Rig.prefab ├── Interaction.meta ├── Teleportation.meta └── Interaction │ ├── XRGrabPointInteractable.cs.meta │ └── XRGrabPointInteractable.cs ├── XrIT_Override.meta ├── Editor ├── Interaction.meta └── Interaction │ ├── XRGrabPointInteractableEditor.cs.meta │ └── XRGrabPointInteractableEditor.cs ├── x_ReadmeSources.meta ├── XrIT_Override ├── XRController_Extension.cs.meta └── XRController_Extension.cs ├── README.md ├── LICENSE └── .gitignore /Examples/Teleportation/LightingData.asset: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JanLoehr/XR-Interaction-Toolkit_Extensions/HEAD/Examples/Teleportation/LightingData.asset -------------------------------------------------------------------------------- /Examples/Teleportation/ReflectionProbe-0.exr: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JanLoehr/XR-Interaction-Toolkit_Extensions/HEAD/Examples/Teleportation/ReflectionProbe-0.exr -------------------------------------------------------------------------------- /x_ReadmeSources/TeleportationAdjustments.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JanLoehr/XR-Interaction-Toolkit_Extensions/HEAD/x_ReadmeSources/TeleportationAdjustments.png -------------------------------------------------------------------------------- /LICENSE.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 47b9fd12efe628b4dae8f26ff6afb47d 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /README.md.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 02b304cffaf6ce24891fa0db1d8b7071 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Art.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2338a3de98e165947b069c07d7fb3b90 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Editor.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 8ddda32668d6a89468efc61b9671895e 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Examples.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bc54673546f474f4e86ac7d4d5d4bec2 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Examples/Teleportation.unity.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 23f9ee00f344a704fa6895f6cf17cfda 3 | DefaultImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Runtime.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9834eb7842a507c46a9ae3ace34e4622 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Art/Materials.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c1ecf3b73ad5e32468292ef77aaf36b7 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Runtime/Common.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f24f7536bb0ec124b882aadbd56afadc 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Runtime/Common/Prefabs/Hand.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bde73ec44c3addb4883175063a19b79e 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Runtime/Teleportation/README.md.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 2a1f1d7ff12dfd24e8256065248180d8 3 | TextScriptImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /XrIT_Override.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f218bc520437d6d48a5c049c20aee4cc 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Editor/Interaction.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: f2ea08578a2337c46923032dde17cd65 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Runtime/Interaction.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c4e9fd1a058ca074ca324531141c7575 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /x_ReadmeSources.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: c368c129c5caa1b44a7df224fa62830a 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Examples/Teleportation.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 71b75f7609265c14f9c60f7fff301f63 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Runtime/Common/Prefabs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3262000ac649ec644aeb4b17a372a6c1 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Runtime/Teleportation.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 867953c34f085fc4abcbe63caa56410f 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Runtime/Teleportation/Prefabs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 32e4af9ac653958469d2794415795fcd 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Runtime/Teleportation/Scripts.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 80cdd606057bde64a8df1cba21a07d5c 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Examples/Teleportation/Materials.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 7702616730e98a540bec64d912354f14 3 | folderAsset: yes 4 | DefaultImporter: 5 | externalObjects: {} 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Runtime/Teleportation/Prefabs/TeleportReticle.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: e047ba1b23c2e8f4f9e0b0ec210b40b1 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Runtime/Teleportation/XR Teleportation Demo Rig.prefab.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 68f1edc8c4ad7914089d078421b1a0e9 3 | PrefabImporter: 4 | externalObjects: {} 5 | userData: 6 | assetBundleName: 7 | assetBundleVariant: 8 | -------------------------------------------------------------------------------- /Art/Materials/Default.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 60e4ae84bf811fb4b9668660072e40b7 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Examples/Teleportation/LightingData.asset.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 34ba8439c70b48a4ab52645a8ad6751a 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Examples/Teleportation/Materials/Planes_Material.mat.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ce92ac05e2d6df94fb6983cd63724b4d 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /Examples/Teleportation/New Lighting Settings.lighting.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 24bcb098e8e908d4993b301783830cda 3 | NativeFormatImporter: 4 | externalObjects: {} 5 | mainObjectFileID: 0 6 | userData: 7 | assetBundleName: 8 | assetBundleVariant: 9 | -------------------------------------------------------------------------------- /XrIT_Override/XRController_Extension.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: bd83a0d1f7a478442bfe9d691dc44ba9 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/Interaction/XRGrabPointInteractable.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 5854bf68f51e62049abb1857e3182433 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Editor/Interaction/XRGrabPointInteractableEditor.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 233a2e1172b2f2241a1464581e5044e4 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/Teleportation/Scripts/ControllerManager.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 40641b3f533d75040903a321bf2dc3bc 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/Teleportation/Scripts/XRTeleportationController.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 3d084b64c78b553468d7fbf2b88ee32a 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /Runtime/Teleportation/Scripts/XRDirectionTeleportationArea.cs.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: ab6fec8b98c29db49a8bd45b31138de9 3 | MonoImporter: 4 | externalObjects: {} 5 | serializedVersion: 2 6 | defaultReferences: [] 7 | executionOrder: 0 8 | icon: {instanceID: 0} 9 | userData: 10 | assetBundleName: 11 | assetBundleVariant: 12 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # XR-Interaction-Toolkit Extensions 2 | A set of extensions for Unitys XR Interaction Toolkit 3 | 4 | This is supposed to extend the XR Interaction Toolkit of Unity with some usefull stuff. 5 | I allways try to be as less intrusive in Unitys code as possible. Supporting as much of their systems as possible if possible. 6 | 7 | ## Features 8 | 9 | [Better Teleportation](https://github.com/JanLoehr/XR-Interaction-Toolkit_Extensions/tree/master/Runtime/Teleportation) 10 | 11 | ![Directed Teleporting](http://www.jan-loehr.de/wp-content/uploads/2020/03/Teleportation.gif "Directed Teleporting") 12 | 13 | 14 | [Grab at contact point](https://github.com/JanLoehr/XR-Interaction-Toolkit_Extensions/blob/master/Runtime/Interaction/XRGrabPointInteractable.cs) 15 | 16 | ![Grab at contact point](http://www.jan-loehr.de/wp-content/uploads/2020/03/AttachAtContactPoint.gif "Grab at contact point") 17 | 18 | 19 | If you find this usefull and would like to support me, feel free to buy me a coffee =) 20 | 21 | [![ko-fi](https://www.ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/R5R31JY3V) 22 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Jan 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # This .gitignore file should be placed at the root of your Unity project directory 2 | # 3 | # Get latest from https://github.com/github/gitignore/blob/master/Unity.gitignore 4 | # 5 | /[Ll]ibrary/ 6 | /[Tt]emp/ 7 | /[Oo]bj/ 8 | /[Bb]uild/ 9 | /[Bb]uilds/ 10 | /[Ll]ogs/ 11 | /[Mm]emoryCaptures/ 12 | 13 | # Asset meta data should only be ignored when the corresponding asset is also ignored 14 | !/[Aa]ssets/**/*.meta 15 | 16 | # Uncomment this line if you wish to ignore the asset store tools plugin 17 | # /[Aa]ssets/AssetStoreTools* 18 | 19 | # Autogenerated Jetbrains Rider plugin 20 | [Aa]ssets/Plugins/Editor/JetBrains* 21 | 22 | # Visual Studio cache directory 23 | .vs/ 24 | 25 | # Gradle cache directory 26 | .gradle/ 27 | 28 | # Autogenerated VS/MD/Consulo solution and project files 29 | ExportedObj/ 30 | .consulo/ 31 | *.csproj 32 | *.unityproj 33 | *.sln 34 | *.suo 35 | *.tmp 36 | *.user 37 | *.userprefs 38 | *.pidb 39 | *.booproj 40 | *.svd 41 | *.pdb 42 | *.mdb 43 | *.opendb 44 | *.VC.db 45 | 46 | # Unity3D generated meta files 47 | *.pidb.meta 48 | *.pdb.meta 49 | *.mdb.meta 50 | 51 | # Unity3D generated file on crash reports 52 | sysinfo.txt 53 | 54 | # Builds 55 | *.apk 56 | *.unitypackage 57 | 58 | # Crashlytics generated file 59 | crashlytics-build.properties 60 | 61 | -------------------------------------------------------------------------------- /Runtime/Interaction/XRGrabPointInteractable.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using UnityEngine.XR.Interaction.Toolkit; 5 | 6 | namespace XR.Interaction.Toolkit.Extensions 7 | { 8 | public class XRGrabPointInteractable : XRGrabInteractable 9 | { 10 | [SerializeField] 11 | private bool _attachAtContactPoint = true; 12 | 13 | private Transform _previousAttachTransform; 14 | 15 | protected override void OnSelectEnter(XRBaseInteractor interactor) 16 | { 17 | if (_attachAtContactPoint) 18 | { 19 | _previousAttachTransform = attachTransform; 20 | 21 | Transform tempAttachTrans = new GameObject("TempAttachTransform").transform; 22 | tempAttachTrans.SetParent(transform); 23 | tempAttachTrans.SetPositionAndRotation(interactor.transform.position, interactor.transform.rotation); 24 | 25 | attachTransform = tempAttachTrans; 26 | } 27 | 28 | base.OnSelectEnter(interactor); 29 | } 30 | 31 | protected override void OnSelectExit(XRBaseInteractor interactor) 32 | { 33 | base.OnSelectExit(interactor); 34 | 35 | if (_attachAtContactPoint) 36 | { 37 | Destroy(attachTransform.gameObject); 38 | 39 | attachTransform = _previousAttachTransform; 40 | } 41 | } 42 | } 43 | } -------------------------------------------------------------------------------- /Runtime/Teleportation/README.md: -------------------------------------------------------------------------------- 1 | # This is an extension to the Locomotion System. 2 | 3 | Teleporting is pretty basic in th XR Interaction Toolkit. With this scripts you'll be able to implement an Oculus Style Teleportation Flow. 4 | 5 | ## How it works 6 | 7 | Push the stick on your controller forward -> Rotate to chose the direction to look in after teleporting -> Release the stick. 8 | Teleportation can be canceled by pressing the stick. 9 | 10 | To see it working, drag the sample rig into your scene and put a **"XRDirectionTeleportationArea"** component on an object with a collider in your scene. 11 | 12 | ![Directed Teleporting](http://www.jan-loehr.de/wp-content/uploads/2020/03/Teleportation.gif) 13 | 14 | ## XR Interaction Toolkit Adjustments 15 | 16 | There is one adjustment to make in the XR Interaction Toolkit package. If you want it to stick, you have to copy the packages content into your assets folder and remove the package. 17 | 18 | Search for the XRController.cs file (also in packages, that's where you'll find it). Add "protected" in the two marked lines. This is necessary for the my scripts to hook into XR Interaction Toolkit. 19 | 20 | ![alt text](https://github.com/JanLoehr/XR-Interaction-Toolkit_Extensions/blob/master/x_ReadmeSources/TeleportationAdjustments.png "XR Interaction Toolkit Adjustments") 21 | 22 | If you find this usefull and would like to support me, feel free to buy me a coffee =) 23 | 24 | [![ko-fi](https://www.ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/R5R31JY3V) 25 | -------------------------------------------------------------------------------- /Examples/Teleportation/New Lighting Settings.lighting: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!850595691 &4890085278179872738 4 | LightingSettings: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_Name: New Lighting Settings 10 | serializedVersion: 2 11 | m_GIWorkflowMode: 1 12 | m_EnableBakedLightmaps: 1 13 | m_EnableRealtimeLightmaps: 0 14 | m_RealtimeEnvironmentLighting: 1 15 | m_BounceScale: 1 16 | m_AlbedoBoost: 1 17 | m_IndirectOutputScale: 1 18 | m_UsingShadowmask: 0 19 | m_BakeBackend: 2 20 | m_LightmapMaxSize: 1024 21 | m_BakeResolution: 40 22 | m_Padding: 2 23 | m_TextureCompression: 1 24 | m_AO: 0 25 | m_AOMaxDistance: 1 26 | m_CompAOExponent: 1 27 | m_CompAOExponentDirect: 0 28 | m_ExtractAO: 0 29 | m_MixedBakeMode: 1 30 | m_LightmapsBakeMode: 1 31 | m_FilterMode: 1 32 | m_LightmapParameters: {fileID: 0} 33 | m_ExportTrainingData: 0 34 | m_TrainingDataDestination: TrainingData 35 | m_RealtimeResolution: 2 36 | m_ForceWhiteAlbedo: 0 37 | m_ForceUpdates: 0 38 | m_FinalGather: 0 39 | m_FinalGatherRayCount: 256 40 | m_FinalGatherFiltering: 1 41 | m_PVRCulling: 1 42 | m_PVRSampling: 1 43 | m_PVRDirectSampleCount: 32 44 | m_PVRSampleCount: 512 45 | m_PVREnvironmentSampleCount: 256 46 | m_PVREnvironmentReferencePointCount: 2048 47 | m_LightProbeSampleCountMultiplier: 4 48 | m_PVRBounces: 2 49 | m_PVRRussianRouletteStartBounce: 2 50 | m_PVREnvironmentMIS: 1 51 | m_PVRFilteringMode: 1 52 | m_PVRDenoiserTypeDirect: 1 53 | m_PVRDenoiserTypeIndirect: 1 54 | m_PVRDenoiserTypeAO: 1 55 | m_PVRFilterTypeDirect: 0 56 | m_PVRFilterTypeIndirect: 0 57 | m_PVRFilterTypeAO: 0 58 | m_PVRFilteringGaussRadiusDirect: 1 59 | m_PVRFilteringGaussRadiusIndirect: 5 60 | m_PVRFilteringGaussRadiusAO: 2 61 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5 62 | m_PVRFilteringAtrousPositionSigmaIndirect: 2 63 | m_PVRFilteringAtrousPositionSigmaAO: 1 64 | -------------------------------------------------------------------------------- /Art/Materials/Default.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!114 &-2967732271246808325 4 | MonoBehaviour: 5 | m_ObjectHideFlags: 11 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | m_GameObject: {fileID: 0} 10 | m_Enabled: 1 11 | m_EditorHideFlags: 0 12 | m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} 13 | m_Name: 14 | m_EditorClassIdentifier: 15 | version: 1 16 | --- !u!21 &2100000 17 | Material: 18 | serializedVersion: 6 19 | m_ObjectHideFlags: 0 20 | m_CorrespondingSourceObject: {fileID: 0} 21 | m_PrefabInstance: {fileID: 0} 22 | m_PrefabAsset: {fileID: 0} 23 | m_Name: Default 24 | m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} 25 | m_ShaderKeywords: 26 | m_LightmapFlags: 4 27 | m_EnableInstancingVariants: 0 28 | m_DoubleSidedGI: 0 29 | m_CustomRenderQueue: 2050 30 | stringTagMap: 31 | RenderType: Opaque 32 | disabledShaderPasses: [] 33 | m_SavedProperties: 34 | serializedVersion: 3 35 | m_TexEnvs: 36 | - _BaseMap: 37 | m_Texture: {fileID: 0} 38 | m_Scale: {x: 1, y: 1} 39 | m_Offset: {x: 0, y: 0} 40 | - _BumpMap: 41 | m_Texture: {fileID: 0} 42 | m_Scale: {x: 1, y: 1} 43 | m_Offset: {x: 0, y: 0} 44 | - _EmissionMap: 45 | m_Texture: {fileID: 0} 46 | m_Scale: {x: 1, y: 1} 47 | m_Offset: {x: 0, y: 0} 48 | - _MainTex: 49 | m_Texture: {fileID: 0} 50 | m_Scale: {x: 1, y: 1} 51 | m_Offset: {x: 0, y: 0} 52 | - _MetallicGlossMap: 53 | m_Texture: {fileID: 0} 54 | m_Scale: {x: 1, y: 1} 55 | m_Offset: {x: 0, y: 0} 56 | - _OcclusionMap: 57 | m_Texture: {fileID: 0} 58 | m_Scale: {x: 1, y: 1} 59 | m_Offset: {x: 0, y: 0} 60 | - _SpecGlossMap: 61 | m_Texture: {fileID: 0} 62 | m_Scale: {x: 1, y: 1} 63 | m_Offset: {x: 0, y: 0} 64 | m_Floats: 65 | - _AlphaClip: 0 66 | - _Blend: 0 67 | - _BumpScale: 1 68 | - _Cull: 2 69 | - _Cutoff: 0.5 70 | - _DstBlend: 0 71 | - _EnvironmentReflections: 1 72 | - _GlossMapScale: 0 73 | - _Glossiness: 0 74 | - _GlossyReflections: 0 75 | - _Metallic: 0 76 | - _OcclusionStrength: 1 77 | - _QueueOffset: 0 78 | - _ReceiveShadows: 1 79 | - _Smoothness: 0.5 80 | - _SmoothnessTextureChannel: 0 81 | - _SpecularHighlights: 1 82 | - _SrcBlend: 1 83 | - _Surface: 0 84 | - _WorkflowMode: 1 85 | - _ZWrite: 1 86 | m_Colors: 87 | - _BaseColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} 88 | - _Color: {r: 0.5, g: 0.5, b: 0.5, a: 1} 89 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 90 | - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} 91 | m_BuildTextureStacks: [] 92 | -------------------------------------------------------------------------------- /Examples/Teleportation/Materials/Planes_Material.mat: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!21 &2100000 4 | Material: 5 | serializedVersion: 6 6 | m_ObjectHideFlags: 0 7 | m_CorrespondingSourceObject: {fileID: 0} 8 | m_PrefabInstance: {fileID: 0} 9 | m_PrefabAsset: {fileID: 0} 10 | m_Name: Planes_Material 11 | m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} 12 | m_ShaderKeywords: 13 | m_LightmapFlags: 4 14 | m_EnableInstancingVariants: 0 15 | m_DoubleSidedGI: 0 16 | m_CustomRenderQueue: 2050 17 | stringTagMap: 18 | RenderType: Opaque 19 | disabledShaderPasses: [] 20 | m_SavedProperties: 21 | serializedVersion: 3 22 | m_TexEnvs: 23 | - _BaseMap: 24 | m_Texture: {fileID: 0} 25 | m_Scale: {x: 1, y: 1} 26 | m_Offset: {x: 0, y: 0} 27 | - _BumpMap: 28 | m_Texture: {fileID: 0} 29 | m_Scale: {x: 1, y: 1} 30 | m_Offset: {x: 0, y: 0} 31 | - _EmissionMap: 32 | m_Texture: {fileID: 0} 33 | m_Scale: {x: 1, y: 1} 34 | m_Offset: {x: 0, y: 0} 35 | - _MainTex: 36 | m_Texture: {fileID: 0} 37 | m_Scale: {x: 1, y: 1} 38 | m_Offset: {x: 0, y: 0} 39 | - _MetallicGlossMap: 40 | m_Texture: {fileID: 0} 41 | m_Scale: {x: 1, y: 1} 42 | m_Offset: {x: 0, y: 0} 43 | - _OcclusionMap: 44 | m_Texture: {fileID: 0} 45 | m_Scale: {x: 1, y: 1} 46 | m_Offset: {x: 0, y: 0} 47 | - _SpecGlossMap: 48 | m_Texture: {fileID: 0} 49 | m_Scale: {x: 1, y: 1} 50 | m_Offset: {x: 0, y: 0} 51 | m_Floats: 52 | - _AlphaClip: 0 53 | - _Blend: 0 54 | - _BumpScale: 1 55 | - _Cull: 2 56 | - _Cutoff: 0.5 57 | - _DstBlend: 0 58 | - _EnvironmentReflections: 1 59 | - _GlossMapScale: 0 60 | - _Glossiness: 0 61 | - _GlossyReflections: 0 62 | - _Metallic: 0 63 | - _OcclusionStrength: 1 64 | - _QueueOffset: 0 65 | - _ReceiveShadows: 1 66 | - _Smoothness: 0.5 67 | - _SmoothnessTextureChannel: 0 68 | - _SpecularHighlights: 1 69 | - _SrcBlend: 1 70 | - _Surface: 0 71 | - _WorkflowMode: 1 72 | - _ZWrite: 1 73 | m_Colors: 74 | - _BaseColor: {r: 0.7924528, g: 0.7924528, b: 0.7924528, a: 1} 75 | - _Color: {r: 0.5, g: 0.5, b: 0.5, a: 1} 76 | - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} 77 | - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} 78 | m_BuildTextureStacks: [] 79 | --- !u!114 &6755438838817468807 80 | MonoBehaviour: 81 | m_ObjectHideFlags: 11 82 | m_CorrespondingSourceObject: {fileID: 0} 83 | m_PrefabInstance: {fileID: 0} 84 | m_PrefabAsset: {fileID: 0} 85 | m_GameObject: {fileID: 0} 86 | m_Enabled: 1 87 | m_EditorHideFlags: 0 88 | m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} 89 | m_Name: 90 | m_EditorClassIdentifier: 91 | version: 1 92 | -------------------------------------------------------------------------------- /Runtime/Teleportation/Scripts/XRTeleportationController.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using UnityEngine.XR; 5 | using UnityEngine.XR.Interaction.Toolkit; 6 | 7 | public class XRTeleportationController : XRController_Extension 8 | { 9 | [Header("Teleporting")] 10 | 11 | [SerializeField] 12 | [Range(0, 1)] 13 | [Tooltip("The magnitude of the AxisVector where the teleport will be triggered when lower than that")] 14 | private float _triggerTeleportThreshold = 0.3f; 15 | public float TriggerTeleportThreshold => _triggerTeleportThreshold; 16 | 17 | private bool _performSetup = true; 18 | 19 | private GameObject _modelGameObject = null; 20 | 21 | void Update() 22 | { 23 | if (_performSetup) 24 | { 25 | PerformSetup(); 26 | _performSetup = false; 27 | } 28 | 29 | if (enableInputTracking && 30 | (updateTrackingType == UpdateType.Update || 31 | updateTrackingType == UpdateType.UpdateAndBeforeRender)) 32 | { 33 | UpdateTrackingInput(); 34 | 35 | } 36 | 37 | if (enableInputActions) 38 | { 39 | UpdateInput(); 40 | } 41 | } 42 | 43 | void UpdateInput() 44 | { 45 | // clear state for selection, activation and press state dependent on this frame 46 | m_SelectInteractionState.activatedThisFrame = m_SelectInteractionState.deActivatedThisFrame = false; 47 | 48 | HandleInteractionAction(InputHelpers.Button.Trigger, ref m_SelectInteractionState); 49 | } 50 | 51 | void HandleInteractionAction(InputHelpers.Button button, ref InteractionState interactionState) 52 | { 53 | if (inputDevice.TryGetFeatureValue(new InputFeatureUsage("Primary2DAxis"), out Vector2 value)) 54 | { 55 | if (value.magnitude > _triggerTeleportThreshold) 56 | { 57 | m_SelectInteractionState.active = true; 58 | } 59 | else if (m_SelectInteractionState.active) 60 | { 61 | m_SelectInteractionState.active = false; 62 | m_SelectInteractionState.deActivatedThisFrame = true; 63 | } 64 | } 65 | } 66 | 67 | void PerformSetup() 68 | { 69 | SetupModel(); 70 | } 71 | 72 | void SetupModel() 73 | { 74 | if (_modelGameObject) 75 | Destroy(_modelGameObject); 76 | var model = modelPrefab; 77 | if (model != null) 78 | { 79 | _modelGameObject = Instantiate(model).gameObject; 80 | _modelGameObject.transform.parent = modelTransform; 81 | _modelGameObject.transform.localPosition = new Vector3(0f, 0f, 0f); 82 | _modelGameObject.transform.localRotation = Quaternion.identity; 83 | _modelGameObject.transform.localScale = new Vector3(1.0f, 1.0f, 1.0f); 84 | _modelGameObject.transform.gameObject.SetActive(true); 85 | } 86 | } 87 | } 88 | -------------------------------------------------------------------------------- /Examples/Teleportation/ReflectionProbe-0.exr.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 9fa335b69e7e3a344ad09a7722685573 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | vTOnly: 0 27 | grayScaleToAlpha: 0 28 | generateCubemap: 6 29 | cubemapConvolution: 1 30 | seamlessCubemap: 1 31 | textureFormat: 1 32 | maxTextureSize: 2048 33 | textureSettings: 34 | serializedVersion: 2 35 | filterMode: 2 36 | aniso: 0 37 | mipBias: 0 38 | wrapU: 1 39 | wrapV: 1 40 | wrapW: 1 41 | nPOTScale: 1 42 | lightmap: 0 43 | compressionQuality: 50 44 | spriteMode: 0 45 | spriteExtrude: 1 46 | spriteMeshType: 1 47 | alignment: 0 48 | spritePivot: {x: 0.5, y: 0.5} 49 | spritePixelsToUnits: 100 50 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 51 | spriteGenerateFallbackPhysicsShape: 1 52 | alphaUsage: 1 53 | alphaIsTransparency: 0 54 | spriteTessellationDetail: -1 55 | textureType: 0 56 | textureShape: 2 57 | singleChannelComponent: 0 58 | maxTextureSizeSet: 0 59 | compressionQualitySet: 0 60 | textureFormatSet: 0 61 | ignorePngGamma: 0 62 | applyGammaDecoding: 0 63 | platformSettings: 64 | - serializedVersion: 3 65 | buildTarget: DefaultTexturePlatform 66 | maxTextureSize: 2048 67 | resizeAlgorithm: 0 68 | textureFormat: -1 69 | textureCompression: 1 70 | compressionQuality: 100 71 | crunchedCompression: 0 72 | allowsAlphaSplitting: 0 73 | overridden: 0 74 | androidETC2FallbackOverride: 0 75 | forceMaximumCompressionQuality_BC6H_BC7: 0 76 | - serializedVersion: 3 77 | buildTarget: Standalone 78 | maxTextureSize: 8192 79 | resizeAlgorithm: 0 80 | textureFormat: -1 81 | textureCompression: 1 82 | compressionQuality: 50 83 | crunchedCompression: 0 84 | allowsAlphaSplitting: 0 85 | overridden: 0 86 | androidETC2FallbackOverride: 0 87 | forceMaximumCompressionQuality_BC6H_BC7: 0 88 | - serializedVersion: 3 89 | buildTarget: iPhone 90 | maxTextureSize: 8192 91 | resizeAlgorithm: 0 92 | textureFormat: -1 93 | textureCompression: 1 94 | compressionQuality: 50 95 | crunchedCompression: 0 96 | allowsAlphaSplitting: 0 97 | overridden: 0 98 | androidETC2FallbackOverride: 0 99 | forceMaximumCompressionQuality_BC6H_BC7: 0 100 | - serializedVersion: 3 101 | buildTarget: Android 102 | maxTextureSize: 8192 103 | resizeAlgorithm: 0 104 | textureFormat: -1 105 | textureCompression: 1 106 | compressionQuality: 50 107 | crunchedCompression: 0 108 | allowsAlphaSplitting: 0 109 | overridden: 0 110 | androidETC2FallbackOverride: 0 111 | forceMaximumCompressionQuality_BC6H_BC7: 0 112 | - serializedVersion: 3 113 | buildTarget: Windows Store Apps 114 | maxTextureSize: 8192 115 | resizeAlgorithm: 0 116 | textureFormat: -1 117 | textureCompression: 1 118 | compressionQuality: 50 119 | crunchedCompression: 0 120 | allowsAlphaSplitting: 0 121 | overridden: 0 122 | androidETC2FallbackOverride: 0 123 | forceMaximumCompressionQuality_BC6H_BC7: 0 124 | spriteSheet: 125 | serializedVersion: 2 126 | sprites: [] 127 | outline: [] 128 | physicsShape: [] 129 | bones: [] 130 | spriteID: 131 | internalID: 0 132 | vertices: [] 133 | indices: 134 | edges: [] 135 | weights: [] 136 | secondaryTextures: [] 137 | spritePackingTag: 138 | pSDRemoveMatte: 0 139 | pSDShowRemoveMatteOption: 0 140 | userData: 141 | assetBundleName: 142 | assetBundleVariant: 143 | -------------------------------------------------------------------------------- /x_ReadmeSources/TeleportationAdjustments.png.meta: -------------------------------------------------------------------------------- 1 | fileFormatVersion: 2 2 | guid: 4bd85e5fd4281c14a9f443ba7b080508 3 | TextureImporter: 4 | internalIDToNameTable: [] 5 | externalObjects: {} 6 | serializedVersion: 11 7 | mipmaps: 8 | mipMapMode: 0 9 | enableMipMap: 1 10 | sRGBTexture: 1 11 | linearTexture: 0 12 | fadeOut: 0 13 | borderMipMap: 0 14 | mipMapsPreserveCoverage: 0 15 | alphaTestReferenceValue: 0.5 16 | mipMapFadeDistanceStart: 1 17 | mipMapFadeDistanceEnd: 3 18 | bumpmap: 19 | convertToNormalMap: 0 20 | externalNormalMap: 0 21 | heightScale: 0.25 22 | normalMapFilter: 0 23 | isReadable: 0 24 | streamingMipmaps: 0 25 | streamingMipmapsPriority: 0 26 | vTOnly: 0 27 | grayScaleToAlpha: 0 28 | generateCubemap: 6 29 | cubemapConvolution: 0 30 | seamlessCubemap: 0 31 | textureFormat: 1 32 | maxTextureSize: 2048 33 | textureSettings: 34 | serializedVersion: 2 35 | filterMode: -1 36 | aniso: 2 37 | mipBias: -100 38 | wrapU: 0 39 | wrapV: 0 40 | wrapW: 0 41 | nPOTScale: 1 42 | lightmap: 0 43 | compressionQuality: 50 44 | spriteMode: 0 45 | spriteExtrude: 1 46 | spriteMeshType: 1 47 | alignment: 0 48 | spritePivot: {x: 0.5, y: 0.5} 49 | spritePixelsToUnits: 100 50 | spriteBorder: {x: 0, y: 0, z: 0, w: 0} 51 | spriteGenerateFallbackPhysicsShape: 1 52 | alphaUsage: 1 53 | alphaIsTransparency: 0 54 | spriteTessellationDetail: -1 55 | textureType: 0 56 | textureShape: 1 57 | singleChannelComponent: 0 58 | maxTextureSizeSet: 0 59 | compressionQualitySet: 0 60 | textureFormatSet: 0 61 | ignorePngGamma: 0 62 | applyGammaDecoding: 0 63 | platformSettings: 64 | - serializedVersion: 3 65 | buildTarget: DefaultTexturePlatform 66 | maxTextureSize: 8192 67 | resizeAlgorithm: 0 68 | textureFormat: -1 69 | textureCompression: 1 70 | compressionQuality: 50 71 | crunchedCompression: 0 72 | allowsAlphaSplitting: 0 73 | overridden: 0 74 | androidETC2FallbackOverride: 0 75 | forceMaximumCompressionQuality_BC6H_BC7: 0 76 | - serializedVersion: 3 77 | buildTarget: Standalone 78 | maxTextureSize: 8192 79 | resizeAlgorithm: 0 80 | textureFormat: -1 81 | textureCompression: 1 82 | compressionQuality: 50 83 | crunchedCompression: 0 84 | allowsAlphaSplitting: 0 85 | overridden: 0 86 | androidETC2FallbackOverride: 0 87 | forceMaximumCompressionQuality_BC6H_BC7: 0 88 | - serializedVersion: 3 89 | buildTarget: iPhone 90 | maxTextureSize: 8192 91 | resizeAlgorithm: 0 92 | textureFormat: -1 93 | textureCompression: 1 94 | compressionQuality: 50 95 | crunchedCompression: 0 96 | allowsAlphaSplitting: 0 97 | overridden: 0 98 | androidETC2FallbackOverride: 0 99 | forceMaximumCompressionQuality_BC6H_BC7: 0 100 | - serializedVersion: 3 101 | buildTarget: Android 102 | maxTextureSize: 8192 103 | resizeAlgorithm: 0 104 | textureFormat: -1 105 | textureCompression: 1 106 | compressionQuality: 50 107 | crunchedCompression: 0 108 | allowsAlphaSplitting: 0 109 | overridden: 0 110 | androidETC2FallbackOverride: 0 111 | forceMaximumCompressionQuality_BC6H_BC7: 0 112 | - serializedVersion: 3 113 | buildTarget: Windows Store Apps 114 | maxTextureSize: 8192 115 | resizeAlgorithm: 0 116 | textureFormat: -1 117 | textureCompression: 1 118 | compressionQuality: 50 119 | crunchedCompression: 0 120 | allowsAlphaSplitting: 0 121 | overridden: 0 122 | androidETC2FallbackOverride: 0 123 | forceMaximumCompressionQuality_BC6H_BC7: 0 124 | spriteSheet: 125 | serializedVersion: 2 126 | sprites: [] 127 | outline: [] 128 | physicsShape: [] 129 | bones: [] 130 | spriteID: 131 | internalID: 0 132 | vertices: [] 133 | indices: 134 | edges: [] 135 | weights: [] 136 | secondaryTextures: [] 137 | spritePackingTag: 138 | pSDRemoveMatte: 0 139 | pSDShowRemoveMatteOption: 0 140 | userData: 141 | assetBundleName: 142 | assetBundleVariant: 143 | -------------------------------------------------------------------------------- /Runtime/Common/Prefabs/Hand.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1 &485546673073357670 4 | GameObject: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | serializedVersion: 6 10 | m_Component: 11 | - component: {fileID: 6060622266625924004} 12 | m_Layer: 0 13 | m_Name: Hand 14 | m_TagString: Untagged 15 | m_Icon: {fileID: 0} 16 | m_NavMeshLayer: 0 17 | m_StaticEditorFlags: 0 18 | m_IsActive: 1 19 | --- !u!4 &6060622266625924004 20 | Transform: 21 | m_ObjectHideFlags: 0 22 | m_CorrespondingSourceObject: {fileID: 0} 23 | m_PrefabInstance: {fileID: 0} 24 | m_PrefabAsset: {fileID: 0} 25 | m_GameObject: {fileID: 485546673073357670} 26 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 27 | m_LocalPosition: {x: 3.7482955, y: 0.49265146, z: 3.470563} 28 | m_LocalScale: {x: 1, y: 1, z: 1} 29 | m_Children: 30 | - {fileID: 986643805209308153} 31 | m_Father: {fileID: 0} 32 | m_RootOrder: 0 33 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 34 | --- !u!1 &2795957494262626571 35 | GameObject: 36 | m_ObjectHideFlags: 0 37 | m_CorrespondingSourceObject: {fileID: 0} 38 | m_PrefabInstance: {fileID: 0} 39 | m_PrefabAsset: {fileID: 0} 40 | serializedVersion: 6 41 | m_Component: 42 | - component: {fileID: 986643805209308153} 43 | - component: {fileID: 8516589816019385276} 44 | - component: {fileID: 2208734273751476432} 45 | - component: {fileID: 6983466484986970366} 46 | m_Layer: 0 47 | m_Name: Cube 48 | m_TagString: Untagged 49 | m_Icon: {fileID: 0} 50 | m_NavMeshLayer: 0 51 | m_StaticEditorFlags: 0 52 | m_IsActive: 1 53 | --- !u!4 &986643805209308153 54 | Transform: 55 | m_ObjectHideFlags: 0 56 | m_CorrespondingSourceObject: {fileID: 0} 57 | m_PrefabInstance: {fileID: 0} 58 | m_PrefabAsset: {fileID: 0} 59 | m_GameObject: {fileID: 2795957494262626571} 60 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 61 | m_LocalPosition: {x: 0, y: 0, z: 0} 62 | m_LocalScale: {x: 0.05, y: 0.05, z: 0.2} 63 | m_Children: [] 64 | m_Father: {fileID: 6060622266625924004} 65 | m_RootOrder: 0 66 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 67 | --- !u!33 &8516589816019385276 68 | MeshFilter: 69 | m_ObjectHideFlags: 0 70 | m_CorrespondingSourceObject: {fileID: 0} 71 | m_PrefabInstance: {fileID: 0} 72 | m_PrefabAsset: {fileID: 0} 73 | m_GameObject: {fileID: 2795957494262626571} 74 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 75 | --- !u!23 &2208734273751476432 76 | MeshRenderer: 77 | m_ObjectHideFlags: 0 78 | m_CorrespondingSourceObject: {fileID: 0} 79 | m_PrefabInstance: {fileID: 0} 80 | m_PrefabAsset: {fileID: 0} 81 | m_GameObject: {fileID: 2795957494262626571} 82 | m_Enabled: 1 83 | m_CastShadows: 1 84 | m_ReceiveShadows: 1 85 | m_DynamicOccludee: 1 86 | m_MotionVectors: 1 87 | m_LightProbeUsage: 1 88 | m_ReflectionProbeUsage: 1 89 | m_RayTracingMode: 2 90 | m_RayTraceProcedural: 0 91 | m_RenderingLayerMask: 1 92 | m_RendererPriority: 0 93 | m_Materials: 94 | - {fileID: 2100000, guid: 60e4ae84bf811fb4b9668660072e40b7, type: 2} 95 | m_StaticBatchInfo: 96 | firstSubMesh: 0 97 | subMeshCount: 0 98 | m_StaticBatchRoot: {fileID: 0} 99 | m_ProbeAnchor: {fileID: 0} 100 | m_LightProbeVolumeOverride: {fileID: 0} 101 | m_ScaleInLightmap: 1 102 | m_ReceiveGI: 1 103 | m_PreserveUVs: 0 104 | m_IgnoreNormalsForChartDetection: 0 105 | m_ImportantGI: 0 106 | m_StitchLightmapSeams: 1 107 | m_SelectedEditorRenderState: 3 108 | m_MinimumChartSize: 4 109 | m_AutoUVMaxDistance: 0.5 110 | m_AutoUVMaxAngle: 89 111 | m_LightmapParameters: {fileID: 0} 112 | m_SortingLayerID: 0 113 | m_SortingLayer: 0 114 | m_SortingOrder: 0 115 | m_AdditionalVertexStreams: {fileID: 0} 116 | --- !u!65 &6983466484986970366 117 | BoxCollider: 118 | m_ObjectHideFlags: 0 119 | m_CorrespondingSourceObject: {fileID: 0} 120 | m_PrefabInstance: {fileID: 0} 121 | m_PrefabAsset: {fileID: 0} 122 | m_GameObject: {fileID: 2795957494262626571} 123 | m_Material: {fileID: 0} 124 | m_IsTrigger: 1 125 | m_Enabled: 1 126 | serializedVersion: 2 127 | m_Size: {x: 1, y: 1, z: 1} 128 | m_Center: {x: 0, y: 0, z: 0} 129 | -------------------------------------------------------------------------------- /Runtime/Teleportation/Scripts/XRDirectionTeleportationArea.cs: -------------------------------------------------------------------------------- 1 | using System.Collections; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using UnityEngine.XR; 5 | using UnityEngine.XR.Interaction.Toolkit; 6 | 7 | public class XRDirectionTeleportationArea : BaseTeleportationInteractable 8 | { 9 | private bool _updateReticle; 10 | 11 | Dictionary m_ReticleCache = new Dictionary(); 12 | 13 | // Start is called before the first frame update 14 | void Start() 15 | { 16 | 17 | } 18 | 19 | // Update is called once per frame 20 | void Update() 21 | { 22 | foreach (var item in m_ReticleCache) 23 | { 24 | XRController_Extension controller = item.Key.GetComponent(); 25 | 26 | if (controller.inputDevice.TryGetFeatureValue(new InputFeatureUsage("Primary2DAxis"), out Vector2 value)) 27 | { 28 | if (value.magnitude > (controller as XRTeleportationController).TriggerTeleportThreshold) 29 | { 30 | Vector3 camForward = Camera.main.transform.forward; 31 | camForward.y = 0; 32 | camForward = Quaternion.LookRotation(new Vector3(value.x, 0, value.y)) * camForward; 33 | item.Value.transform.GetChild(0).rotation = Quaternion.LookRotation(camForward); 34 | } 35 | else 36 | { 37 | TeleportRequest tr = new TeleportRequest(); 38 | tr.matchOrientation = MatchOrientation.Camera; 39 | tr.requestTime = Time.time; 40 | if (GenerateTeleportRequest(item.Key, new RaycastHit(), ref tr)) 41 | { 42 | m_TeleportationProvider.QueueTeleportRequest(tr); 43 | } 44 | 45 | onSelectEnter.Invoke(item.Key); 46 | } 47 | } 48 | } 49 | } 50 | 51 | protected override bool GenerateTeleportRequest(XRBaseInteractor interactor, RaycastHit raycastHit, ref TeleportRequest teleportRequest) 52 | { 53 | Transform lookTrans = m_ReticleCache[interactor].transform.GetChild(0); 54 | 55 | teleportRequest.destinationPosition = lookTrans.position; 56 | teleportRequest.destinationUpVector = lookTrans.up; // use the area transform for data. 57 | teleportRequest.destinationForwardVector = lookTrans.forward; 58 | teleportRequest.destinationRotation = lookTrans.rotation; 59 | 60 | return true; 61 | } 62 | 63 | public override void AttachCustomReticle(XRBaseInteractor interactor) 64 | { 65 | if (interactor == null) 66 | return; 67 | 68 | // try and find any attached reticle and swap it 69 | IXRCustomReticleProvider ilv = interactor.transform.GetComponent(); 70 | if (ilv != null) 71 | { 72 | 73 | GameObject prevReticle; 74 | if (m_ReticleCache.TryGetValue(interactor, out prevReticle)) 75 | { 76 | Destroy(prevReticle); 77 | m_ReticleCache.Remove(interactor); 78 | } 79 | if (customReticle != null) 80 | { 81 | var rInstance = Instantiate(customReticle); 82 | m_ReticleCache.Add(interactor, rInstance); 83 | ilv.AttachCustomReticle(rInstance); 84 | } 85 | } 86 | } 87 | 88 | public override void RemoveCustomReticle(XRBaseInteractor interactor) 89 | { 90 | if (interactor == null) 91 | return; 92 | 93 | // try and find any attached reticle and swap it 94 | IXRCustomReticleProvider ilv = interactor.transform.GetComponent(); 95 | if (ilv != null) 96 | { 97 | GameObject reticle; 98 | bool setCustomReticle = false; 99 | if (m_ReticleCache.TryGetValue(interactor, out reticle)) 100 | { 101 | Destroy(reticle); 102 | m_ReticleCache.Remove(interactor); 103 | setCustomReticle = true; 104 | } 105 | if (setCustomReticle) 106 | { 107 | ilv.RemoveCustomReticle(); 108 | } 109 | } 110 | } 111 | } 112 | -------------------------------------------------------------------------------- /Runtime/Teleportation/Prefabs/TeleportReticle.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1 &2032890413941776054 4 | GameObject: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | serializedVersion: 6 10 | m_Component: 11 | - component: {fileID: 8136553117709776193} 12 | - component: {fileID: 3103003058980704621} 13 | - component: {fileID: 6705231742050199651} 14 | m_Layer: 0 15 | m_Name: Cylinder 16 | m_TagString: Untagged 17 | m_Icon: {fileID: 0} 18 | m_NavMeshLayer: 0 19 | m_StaticEditorFlags: 0 20 | m_IsActive: 1 21 | --- !u!4 &8136553117709776193 22 | Transform: 23 | m_ObjectHideFlags: 0 24 | m_CorrespondingSourceObject: {fileID: 0} 25 | m_PrefabInstance: {fileID: 0} 26 | m_PrefabAsset: {fileID: 0} 27 | m_GameObject: {fileID: 2032890413941776054} 28 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 29 | m_LocalPosition: {x: 0, y: 0.025, z: 0} 30 | m_LocalScale: {x: 1, y: 0.05, z: 1} 31 | m_Children: [] 32 | m_Father: {fileID: 6590605490053034738} 33 | m_RootOrder: 0 34 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 35 | --- !u!33 &3103003058980704621 36 | MeshFilter: 37 | m_ObjectHideFlags: 0 38 | m_CorrespondingSourceObject: {fileID: 0} 39 | m_PrefabInstance: {fileID: 0} 40 | m_PrefabAsset: {fileID: 0} 41 | m_GameObject: {fileID: 2032890413941776054} 42 | m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} 43 | --- !u!23 &6705231742050199651 44 | MeshRenderer: 45 | m_ObjectHideFlags: 0 46 | m_CorrespondingSourceObject: {fileID: 0} 47 | m_PrefabInstance: {fileID: 0} 48 | m_PrefabAsset: {fileID: 0} 49 | m_GameObject: {fileID: 2032890413941776054} 50 | m_Enabled: 1 51 | m_CastShadows: 1 52 | m_ReceiveShadows: 1 53 | m_DynamicOccludee: 1 54 | m_MotionVectors: 1 55 | m_LightProbeUsage: 1 56 | m_ReflectionProbeUsage: 1 57 | m_RayTracingMode: 2 58 | m_RayTraceProcedural: 0 59 | m_RenderingLayerMask: 1 60 | m_RendererPriority: 0 61 | m_Materials: 62 | - {fileID: 2100000, guid: 60e4ae84bf811fb4b9668660072e40b7, type: 2} 63 | m_StaticBatchInfo: 64 | firstSubMesh: 0 65 | subMeshCount: 0 66 | m_StaticBatchRoot: {fileID: 0} 67 | m_ProbeAnchor: {fileID: 0} 68 | m_LightProbeVolumeOverride: {fileID: 0} 69 | m_ScaleInLightmap: 1 70 | m_ReceiveGI: 1 71 | m_PreserveUVs: 0 72 | m_IgnoreNormalsForChartDetection: 0 73 | m_ImportantGI: 0 74 | m_StitchLightmapSeams: 1 75 | m_SelectedEditorRenderState: 3 76 | m_MinimumChartSize: 4 77 | m_AutoUVMaxDistance: 0.5 78 | m_AutoUVMaxAngle: 89 79 | m_LightmapParameters: {fileID: 0} 80 | m_SortingLayerID: 0 81 | m_SortingLayer: 0 82 | m_SortingOrder: 0 83 | m_AdditionalVertexStreams: {fileID: 0} 84 | --- !u!1 &3209949727319733722 85 | GameObject: 86 | m_ObjectHideFlags: 0 87 | m_CorrespondingSourceObject: {fileID: 0} 88 | m_PrefabInstance: {fileID: 0} 89 | m_PrefabAsset: {fileID: 0} 90 | serializedVersion: 6 91 | m_Component: 92 | - component: {fileID: 8548148525810361196} 93 | m_Layer: 0 94 | m_Name: TeleportReticle 95 | m_TagString: Untagged 96 | m_Icon: {fileID: 0} 97 | m_NavMeshLayer: 0 98 | m_StaticEditorFlags: 0 99 | m_IsActive: 1 100 | --- !u!4 &8548148525810361196 101 | Transform: 102 | m_ObjectHideFlags: 0 103 | m_CorrespondingSourceObject: {fileID: 0} 104 | m_PrefabInstance: {fileID: 0} 105 | m_PrefabAsset: {fileID: 0} 106 | m_GameObject: {fileID: 3209949727319733722} 107 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 108 | m_LocalPosition: {x: 0, y: 0, z: 0} 109 | m_LocalScale: {x: 1, y: 1, z: 1} 110 | m_Children: 111 | - {fileID: 6590605490053034738} 112 | m_Father: {fileID: 0} 113 | m_RootOrder: 0 114 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 115 | --- !u!1 &4853718380510984593 116 | GameObject: 117 | m_ObjectHideFlags: 0 118 | m_CorrespondingSourceObject: {fileID: 0} 119 | m_PrefabInstance: {fileID: 0} 120 | m_PrefabAsset: {fileID: 0} 121 | serializedVersion: 6 122 | m_Component: 123 | - component: {fileID: 6590605490053034738} 124 | m_Layer: 0 125 | m_Name: Visuals 126 | m_TagString: Untagged 127 | m_Icon: {fileID: 0} 128 | m_NavMeshLayer: 0 129 | m_StaticEditorFlags: 0 130 | m_IsActive: 1 131 | --- !u!4 &6590605490053034738 132 | Transform: 133 | m_ObjectHideFlags: 0 134 | m_CorrespondingSourceObject: {fileID: 0} 135 | m_PrefabInstance: {fileID: 0} 136 | m_PrefabAsset: {fileID: 0} 137 | m_GameObject: {fileID: 4853718380510984593} 138 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 139 | m_LocalPosition: {x: 0, y: 0, z: 0} 140 | m_LocalScale: {x: 1, y: 1, z: 1} 141 | m_Children: 142 | - {fileID: 8136553117709776193} 143 | - {fileID: 5507120432836215109} 144 | m_Father: {fileID: 8548148525810361196} 145 | m_RootOrder: 0 146 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 147 | --- !u!1 &8218639595579259839 148 | GameObject: 149 | m_ObjectHideFlags: 0 150 | m_CorrespondingSourceObject: {fileID: 0} 151 | m_PrefabInstance: {fileID: 0} 152 | m_PrefabAsset: {fileID: 0} 153 | serializedVersion: 6 154 | m_Component: 155 | - component: {fileID: 5507120432836215109} 156 | - component: {fileID: 1133058317046515458} 157 | - component: {fileID: 7228915196366259316} 158 | m_Layer: 0 159 | m_Name: Cube 160 | m_TagString: Untagged 161 | m_Icon: {fileID: 0} 162 | m_NavMeshLayer: 0 163 | m_StaticEditorFlags: 0 164 | m_IsActive: 1 165 | --- !u!4 &5507120432836215109 166 | Transform: 167 | m_ObjectHideFlags: 0 168 | m_CorrespondingSourceObject: {fileID: 0} 169 | m_PrefabInstance: {fileID: 0} 170 | m_PrefabAsset: {fileID: 0} 171 | m_GameObject: {fileID: 8218639595579259839} 172 | m_LocalRotation: {x: -0, y: -0.3826837, z: -0, w: 0.9238795} 173 | m_LocalPosition: {x: -0.002, y: 0.02, z: 0.354} 174 | m_LocalScale: {x: 0.45861003, y: 0.04, z: 0.45861003} 175 | m_Children: [] 176 | m_Father: {fileID: 6590605490053034738} 177 | m_RootOrder: 1 178 | m_LocalEulerAnglesHint: {x: 0, y: -45, z: 0} 179 | --- !u!33 &1133058317046515458 180 | MeshFilter: 181 | m_ObjectHideFlags: 0 182 | m_CorrespondingSourceObject: {fileID: 0} 183 | m_PrefabInstance: {fileID: 0} 184 | m_PrefabAsset: {fileID: 0} 185 | m_GameObject: {fileID: 8218639595579259839} 186 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 187 | --- !u!23 &7228915196366259316 188 | MeshRenderer: 189 | m_ObjectHideFlags: 0 190 | m_CorrespondingSourceObject: {fileID: 0} 191 | m_PrefabInstance: {fileID: 0} 192 | m_PrefabAsset: {fileID: 0} 193 | m_GameObject: {fileID: 8218639595579259839} 194 | m_Enabled: 1 195 | m_CastShadows: 1 196 | m_ReceiveShadows: 1 197 | m_DynamicOccludee: 1 198 | m_MotionVectors: 1 199 | m_LightProbeUsage: 1 200 | m_ReflectionProbeUsage: 1 201 | m_RayTracingMode: 2 202 | m_RayTraceProcedural: 0 203 | m_RenderingLayerMask: 1 204 | m_RendererPriority: 0 205 | m_Materials: 206 | - {fileID: 2100000, guid: 60e4ae84bf811fb4b9668660072e40b7, type: 2} 207 | m_StaticBatchInfo: 208 | firstSubMesh: 0 209 | subMeshCount: 0 210 | m_StaticBatchRoot: {fileID: 0} 211 | m_ProbeAnchor: {fileID: 0} 212 | m_LightProbeVolumeOverride: {fileID: 0} 213 | m_ScaleInLightmap: 1 214 | m_ReceiveGI: 1 215 | m_PreserveUVs: 0 216 | m_IgnoreNormalsForChartDetection: 0 217 | m_ImportantGI: 0 218 | m_StitchLightmapSeams: 1 219 | m_SelectedEditorRenderState: 3 220 | m_MinimumChartSize: 4 221 | m_AutoUVMaxDistance: 0.5 222 | m_AutoUVMaxAngle: 89 223 | m_LightmapParameters: {fileID: 0} 224 | m_SortingLayerID: 0 225 | m_SortingLayer: 0 226 | m_SortingOrder: 0 227 | m_AdditionalVertexStreams: {fileID: 0} 228 | -------------------------------------------------------------------------------- /Editor/Interaction/XRGrabPointInteractableEditor.cs: -------------------------------------------------------------------------------- 1 | using UnityEditor; 2 | using UnityEngine; 3 | using UnityEngine.XR.Interaction.Toolkit; 4 | 5 | namespace XR.Interaction.Toolkit.Extensions 6 | { 7 | [CustomEditor(typeof(XRGrabPointInteractable))] 8 | internal class XRGrabPointInteractableEditor : Editor 9 | { 10 | SerializedProperty m_AttachTransform; 11 | SerializedProperty _AttachAtContactPoint; 12 | SerializedProperty m_AttachEaseInTime; 13 | SerializedProperty m_MovementType; 14 | SerializedProperty m_TrackPosition; 15 | SerializedProperty m_SmoothPosition; 16 | SerializedProperty m_SmoothPositionAmount; 17 | SerializedProperty m_TightenPosition; 18 | SerializedProperty m_TrackRotation; 19 | SerializedProperty m_SmoothRotation; 20 | SerializedProperty m_SmoothRotationAmount; 21 | SerializedProperty m_TightenRotation; 22 | SerializedProperty m_ThrowOnDetach; 23 | SerializedProperty m_ThrowSmoothingDuration; 24 | SerializedProperty m_ThrowSmoothingCurve; 25 | SerializedProperty m_ThrowVelocityScale; 26 | SerializedProperty m_ThrowAngularVelocityScale; 27 | SerializedProperty m_GravityOnDetach; 28 | SerializedProperty m_RetainTransformParent; 29 | SerializedProperty m_OnFirstHoverEnter; 30 | SerializedProperty m_OnHoverEnter; 31 | SerializedProperty m_OnHoverExit; 32 | SerializedProperty m_OnLastHoverExit; 33 | SerializedProperty m_OnSelectEnter; 34 | SerializedProperty m_OnSelectExit; 35 | SerializedProperty m_OnActivate; 36 | SerializedProperty m_OnDeactivate; 37 | SerializedProperty m_Colliders; 38 | SerializedProperty m_InteractionLayerMask; 39 | 40 | bool m_showInteractableEvents = false; 41 | 42 | 43 | static class Tooltips 44 | { 45 | public static readonly GUIContent attachTransform = new GUIContent("Attach Transform", "Attach point to use on this Interactable (will use RigidBody center if none set)."); 46 | public static readonly GUIContent attachAtContactPoint = new GUIContent("Attach At Contact Point", "If checked the Interactable will be attached to the controller at the contact point."); 47 | public static readonly GUIContent attachEaseInTime = new GUIContent("Attach Ease In Time", "Time it takes to ease in the attach (time of 0.0 indicates no easing)."); 48 | public static readonly GUIContent movementType = new GUIContent("Movement Type", "Type of movement for RigidBody."); 49 | public static readonly GUIContent trackPosition = new GUIContent("Track Position", "Whether the this interactable should track the position of the interactor."); 50 | public static readonly GUIContent smoothPosition = new GUIContent("Smooth Position", "Apply smoothing to the follow position of the object."); 51 | public static readonly GUIContent smoothPositionAmount = new GUIContent("Smooth Position Amount", "Smoothing applied to the object's position when following."); 52 | public static readonly GUIContent tightenPosition = new GUIContent("Tighten Position", "Reduces the maximum follow position difference when using smoothing."); 53 | public static readonly GUIContent trackRotation = new GUIContent("Track Rotation", "Whether the this interactable should track the rotation of the interactor."); 54 | public static readonly GUIContent smoothRotation = new GUIContent("Smooth Rotation", "Apply smoothing to the follow rotation of the object."); 55 | public static readonly GUIContent smoothRotationAmount = new GUIContent("Smooth Rotation Amount", "Smoothing multiple applied to the object's rotation when following."); 56 | public static readonly GUIContent tightenRotation = new GUIContent("Tighten Rotation", "Reduces the maximum follow rotation difference when using smoothing."); 57 | public static readonly GUIContent throwOnDetach = new GUIContent("Throw On Detach", "Object inherits the interactor's velocity when released."); 58 | public static readonly GUIContent throwSmoothingDuration = new GUIContent("Throw Smoothing Duration", "Time period to average thrown velocity over"); 59 | public static readonly GUIContent throwSmoothingCurve = new GUIContent("ThrowSmoothingCurve", "The curve to use to weight velocity smoothing (most recent frames to the right."); 60 | public static readonly GUIContent throwVelocityScale = new GUIContent("Throw Velocity Scale", "Scale the velocity used when throwing."); 61 | public static readonly GUIContent throwAngularVelocityScale = new GUIContent("Throw Angular Velocity Scale", "Scale the angular velocity used when throwing"); 62 | public static readonly GUIContent gravityOnDetach = new GUIContent("Gravity On Detach", "Object has gravity when released (will still use pre-grab value if this is false)."); 63 | public static readonly GUIContent colliders = new GUIContent("Colliders", "Colliders to include when selecting/interacting with an interactable"); 64 | public static readonly GUIContent interactionLayerMask = new GUIContent("InteractionLayerMask", "Only Interactors with this LayerMask will interact with this Interactable."); 65 | public static readonly GUIContent retainTransformParent = new GUIContent("RetainTransformParent", "If enabled, this Interactable have its parent retained after it is released from an interactor."); 66 | } 67 | 68 | void OnEnable() 69 | { 70 | m_AttachTransform = serializedObject.FindProperty("m_AttachTransform"); 71 | _AttachAtContactPoint = serializedObject.FindProperty("_attachAtContactPoint"); 72 | m_MovementType = serializedObject.FindProperty("m_MovementType"); 73 | m_AttachEaseInTime = serializedObject.FindProperty("m_AttachEaseInTime"); 74 | m_TrackPosition = serializedObject.FindProperty("m_TrackPosition"); 75 | m_SmoothPosition = serializedObject.FindProperty("m_SmoothPosition"); 76 | m_SmoothPositionAmount = serializedObject.FindProperty("m_SmoothPositionAmount"); 77 | m_TightenPosition = serializedObject.FindProperty("m_TightenPosition"); 78 | m_TrackRotation = serializedObject.FindProperty("m_TrackRotation"); 79 | m_SmoothRotation = serializedObject.FindProperty("m_SmoothRotation"); 80 | m_SmoothRotationAmount = serializedObject.FindProperty("m_SmoothRotationAmount"); 81 | m_TightenRotation = serializedObject.FindProperty("m_TightenRotation"); 82 | m_ThrowOnDetach = serializedObject.FindProperty("m_ThrowOnDetach"); 83 | m_ThrowSmoothingDuration = serializedObject.FindProperty("m_ThrowSmoothingDuration"); 84 | m_ThrowSmoothingCurve = serializedObject.FindProperty("m_ThrowSmoothingCurve"); 85 | m_ThrowVelocityScale = serializedObject.FindProperty("m_ThrowVelocityScale"); 86 | m_ThrowAngularVelocityScale = serializedObject.FindProperty("m_ThrowAngularVelocityScale"); 87 | m_GravityOnDetach = serializedObject.FindProperty("m_GravityOnDetach"); 88 | m_RetainTransformParent = serializedObject.FindProperty("m_RetainTransformParent"); 89 | m_OnFirstHoverEnter = serializedObject.FindProperty("m_OnFirstHoverEnter"); 90 | m_OnHoverEnter = serializedObject.FindProperty("m_OnHoverEnter"); 91 | m_OnHoverExit = serializedObject.FindProperty("m_OnHoverExit"); 92 | m_OnLastHoverExit = serializedObject.FindProperty("m_OnLastHoverExit"); 93 | m_OnSelectEnter = serializedObject.FindProperty("m_OnSelectEnter"); 94 | m_OnSelectExit = serializedObject.FindProperty("m_OnSelectExit"); 95 | m_OnActivate = serializedObject.FindProperty("m_OnActivate"); 96 | m_OnDeactivate = serializedObject.FindProperty("m_OnDeactivate"); 97 | m_Colliders = serializedObject.FindProperty("m_Colliders"); 98 | m_InteractionLayerMask = serializedObject.FindProperty("m_InteractionLayerMask"); 99 | } 100 | 101 | public override void OnInspectorGUI() 102 | { 103 | 104 | GUI.enabled = false; 105 | EditorGUILayout.ObjectField("Script", MonoScript.FromMonoBehaviour((XRGrabInteractable)target), typeof(XRGrabInteractable), false); 106 | GUI.enabled = true; 107 | 108 | serializedObject.Update(); 109 | 110 | EditorGUILayout.PropertyField(m_AttachTransform, Tooltips.attachTransform); 111 | EditorGUILayout.PropertyField(_AttachAtContactPoint, Tooltips.attachAtContactPoint); 112 | EditorGUILayout.PropertyField(m_AttachEaseInTime, Tooltips.attachEaseInTime); 113 | EditorGUILayout.PropertyField(m_MovementType, Tooltips.movementType); 114 | 115 | EditorGUILayout.PropertyField(m_Colliders, Tooltips.colliders, true); 116 | 117 | EditorGUILayout.PropertyField(m_InteractionLayerMask, Tooltips.interactionLayerMask); 118 | 119 | EditorGUILayout.PropertyField(m_RetainTransformParent, Tooltips.retainTransformParent); 120 | 121 | EditorGUILayout.PropertyField(m_TrackPosition, Tooltips.trackPosition); 122 | if (m_TrackPosition.boolValue) 123 | { 124 | EditorGUI.indentLevel++; 125 | EditorGUILayout.PropertyField(m_SmoothPosition, Tooltips.smoothPosition); 126 | if (m_SmoothPosition.boolValue) 127 | { 128 | EditorGUI.indentLevel++; 129 | EditorGUILayout.PropertyField(m_SmoothPositionAmount, Tooltips.smoothPositionAmount); 130 | EditorGUILayout.PropertyField(m_TightenPosition, Tooltips.tightenPosition); 131 | EditorGUI.indentLevel--; 132 | } 133 | EditorGUI.indentLevel--; 134 | } 135 | 136 | EditorGUILayout.PropertyField(m_TrackRotation, Tooltips.trackRotation); 137 | if (m_TrackRotation.boolValue) 138 | { 139 | EditorGUI.indentLevel++; 140 | EditorGUILayout.PropertyField(m_SmoothRotation, Tooltips.smoothRotation); 141 | if (m_SmoothRotation.boolValue) 142 | { 143 | EditorGUI.indentLevel++; 144 | EditorGUILayout.PropertyField(m_SmoothRotationAmount, Tooltips.smoothRotationAmount); 145 | EditorGUILayout.PropertyField(m_TightenRotation, Tooltips.tightenRotation); 146 | EditorGUI.indentLevel--; 147 | } 148 | EditorGUI.indentLevel--; 149 | } 150 | EditorGUILayout.PropertyField(m_ThrowOnDetach, Tooltips.throwOnDetach); 151 | if (m_ThrowOnDetach.boolValue) 152 | { 153 | EditorGUI.indentLevel++; 154 | EditorGUILayout.PropertyField(m_ThrowSmoothingDuration, Tooltips.throwSmoothingDuration); 155 | EditorGUILayout.PropertyField(m_ThrowSmoothingCurve, Tooltips.throwSmoothingCurve); 156 | EditorGUILayout.PropertyField(m_ThrowVelocityScale, Tooltips.throwVelocityScale); 157 | EditorGUILayout.PropertyField(m_ThrowAngularVelocityScale, Tooltips.throwAngularVelocityScale); 158 | EditorGUILayout.PropertyField(m_GravityOnDetach, Tooltips.gravityOnDetach); 159 | EditorGUI.indentLevel--; 160 | } 161 | 162 | m_showInteractableEvents = EditorGUILayout.Foldout(m_showInteractableEvents, "Interactable Events"); 163 | 164 | if (m_showInteractableEvents) 165 | { 166 | // UnityEvents have not yet supported Tooltips 167 | EditorGUILayout.PropertyField(m_OnFirstHoverEnter); 168 | EditorGUILayout.PropertyField(m_OnHoverEnter); 169 | EditorGUILayout.PropertyField(m_OnHoverExit); 170 | EditorGUILayout.PropertyField(m_OnLastHoverExit); 171 | EditorGUILayout.PropertyField(m_OnSelectEnter); 172 | EditorGUILayout.PropertyField(m_OnSelectExit); 173 | EditorGUILayout.PropertyField(m_OnActivate); 174 | EditorGUILayout.PropertyField(m_OnDeactivate); 175 | } 176 | 177 | serializedObject.ApplyModifiedProperties(); 178 | } 179 | } 180 | } 181 | -------------------------------------------------------------------------------- /Runtime/Teleportation/Scripts/ControllerManager.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using UnityEngine; 4 | using UnityEngine.XR; 5 | using UnityEngine.XR.Interaction.Toolkit; 6 | 7 | [DefaultExecutionOrder(kControllerManagerUpdateOrder)] 8 | public class ControllerManager : MonoBehaviour 9 | { 10 | // Slightly after the default, so that any actions such as release or grab can be processed *before* we switch controllers. 11 | public const int kControllerManagerUpdateOrder = 10; 12 | 13 | InputDevice m_RightController; 14 | InputDevice m_LeftController; 15 | 16 | [SerializeField] 17 | [Tooltip("The buttons on the controller that will trigger a transition to the Teleport Controller.")] 18 | List m_ActivationButtons = new List(); 19 | /// 20 | /// The buttons on the controller that will trigger a transition to the Teleport Controller. 21 | /// 22 | public List activationButtons { get { return m_ActivationButtons; } set { m_ActivationButtons = value; } } 23 | 24 | 25 | [SerializeField] 26 | [Tooltip("The buttons on the controller that will force a deactivation of the teleport option.")] 27 | List m_DeactivationButtons = new List(); 28 | /// 29 | /// The buttons on the controller that will trigger a transition to the Teleport Controller. 30 | /// 31 | public List deactivationButtons { get { return m_DeactivationButtons; } set { m_DeactivationButtons = value; } } 32 | 33 | [SerializeField] 34 | [Tooltip("The Game Object which represents the left hand for normal interaction purposes.")] 35 | GameObject m_LeftBaseController; 36 | /// 37 | /// The Game Object which represents the left hand for normal interaction purposes. 38 | /// 39 | public GameObject leftBaseController { get { return m_LeftBaseController; } set { m_LeftBaseController = value; } } 40 | 41 | [SerializeField] 42 | [Tooltip("The Game Object which represents the left hand when teleporting.")] 43 | GameObject m_LeftTeleportController; 44 | /// 45 | /// The Game Object which represents the left hand when teleporting. 46 | /// 47 | public GameObject leftTeleportController { get { return m_LeftTeleportController; } set { m_LeftTeleportController = value; } } 48 | 49 | [SerializeField] 50 | [Tooltip("The Game Object which represents the right hand for normal interaction purposes.")] 51 | GameObject m_RightBaseController; 52 | /// 53 | /// The Game Object which represents the right hand for normal interaction purposes. 54 | /// 55 | public GameObject rightBaseController { get { return m_RightBaseController; } set { m_RightBaseController = value; } } 56 | 57 | [SerializeField] 58 | [Tooltip("The Game Object which represents the right hand when teleporting.")] 59 | GameObject m_RightTeleportController; 60 | /// 61 | /// The Game Object which represents the right hand when teleporting. 62 | /// 63 | public GameObject rightTeleportController { get { return m_RightTeleportController; } set { m_RightTeleportController = value; } } 64 | 65 | bool m_LeftTeleportDeactivated = false; 66 | bool m_RightTeleportDeactivated = false; 67 | 68 | /// 69 | /// A simple state machine which manages the three pieces of content that are used to represent 70 | /// A controller state within the XR Interaction Toolkit 71 | /// 72 | struct InteractorController 73 | { 74 | /// 75 | /// The game object that this state controls 76 | /// 77 | public GameObject m_GO; 78 | /// 79 | /// The XR Controller instance that is associated with this state 80 | /// 81 | public XRController m_XRController; 82 | /// 83 | /// The Line renderer that is associated with this state 84 | /// 85 | public XRInteractorLineVisual m_LineRenderer; 86 | /// 87 | /// The interactor instance that is associated with this state 88 | /// 89 | public XRBaseInteractor m_Interactor; 90 | 91 | /// 92 | /// When passed a gameObject, this function will scrape the game object for all valid components that we will 93 | /// interact with by enabling/disabling as the state changes 94 | /// 95 | /// The game object to scrape the various components from 96 | public void Attach(GameObject gameObject) 97 | { 98 | m_GO = gameObject; 99 | if (m_GO != null) 100 | { 101 | m_XRController = m_GO.GetComponent(); 102 | m_LineRenderer = m_GO.GetComponent(); 103 | m_Interactor = m_GO.GetComponent(); 104 | 105 | Leave(); 106 | } 107 | } 108 | 109 | /// 110 | /// Enter this state, performs a set of changes to the associated components to enable things 111 | /// 112 | public void Enter() 113 | { 114 | if (m_LineRenderer) 115 | { 116 | m_LineRenderer.enabled = true; 117 | } 118 | if (m_XRController) 119 | { 120 | m_XRController.enableInputActions = true; 121 | } 122 | if (m_Interactor) 123 | { 124 | m_Interactor.enabled = true; 125 | } 126 | } 127 | 128 | /// 129 | /// Leaves this state, performs a set of changes to the associate components to disable things. 130 | /// 131 | public void Leave() 132 | { 133 | if (m_LineRenderer) 134 | { 135 | m_LineRenderer.enabled = false; 136 | } 137 | if (m_XRController) 138 | { 139 | m_XRController.enableInputActions = false; 140 | } 141 | if (m_Interactor) 142 | { 143 | m_Interactor.enabled = false; 144 | } 145 | } 146 | } 147 | 148 | /// 149 | /// The states that we are currently modeling. 150 | /// If you want to add more states, add them here! 151 | /// 152 | public enum ControllerStates 153 | { 154 | /// 155 | /// the Select state is the "normal" interaction state for selecting and interacting with objects 156 | /// 157 | Select = 0, 158 | /// 159 | /// the Teleport state is used to interact with teleport interactors and queue teleportations. 160 | /// 161 | Teleport = 1, 162 | /// 163 | /// Maximum sentinel 164 | /// 165 | MAX = 2, 166 | } 167 | 168 | /// 169 | /// Current status of a controller. there will be two instances of this (for left/right). and this allows 170 | /// the system to change between different states on each controller independently. 171 | /// 172 | struct ControllerState 173 | { 174 | public float TeleportationThreshold; 175 | 176 | ControllerStates m_State; 177 | InteractorController[] m_Interactors; 178 | 179 | /// 180 | /// Sets up the controller 181 | /// 182 | public void Initialize() 183 | { 184 | m_State = ControllerStates.MAX; 185 | m_Interactors = new InteractorController[(int)ControllerStates.MAX]; 186 | 187 | TeleportationThreshold = 0.3f; 188 | } 189 | 190 | /// 191 | /// Exits from all states that are in the list, basically a reset. 192 | /// 193 | public void ClearAll() 194 | { 195 | if (m_Interactors == null) 196 | return; 197 | 198 | for (int i = 0; i < (int)ControllerStates.MAX; ++i) 199 | { 200 | m_Interactors[i].Leave(); 201 | } 202 | } 203 | 204 | /// 205 | /// Attaches a game object that represents an interactor for a state, to a state. 206 | /// 207 | /// The state that we're attaching the game object to 208 | /// The game object that represents the interactor for that state. 209 | public void SetGameObject(ControllerStates state, GameObject parentGamObject) 210 | { 211 | if ((state == ControllerStates.MAX) || (m_Interactors == null)) 212 | return; 213 | 214 | m_Interactors[(int)state].Attach(parentGamObject); 215 | 216 | XRTeleportationController controller = parentGamObject.GetComponent(); 217 | if (controller) 218 | { 219 | TeleportationThreshold = controller.TriggerTeleportThreshold; 220 | } 221 | } 222 | 223 | /// 224 | /// Attempts to set the current state of a controller. 225 | /// 226 | /// The state that we wish to transition to 227 | public void SetState(ControllerStates nextState) 228 | { 229 | if (nextState == m_State || nextState == ControllerStates.MAX) 230 | { 231 | return; 232 | } 233 | else 234 | { 235 | if (m_State != ControllerStates.MAX) 236 | { 237 | m_Interactors[(int)m_State].Leave(); 238 | } 239 | 240 | m_State = nextState; 241 | m_Interactors[(int)m_State].Enter(); 242 | } 243 | } 244 | 245 | public ControllerStates GetState() 246 | { 247 | return m_State; 248 | } 249 | } 250 | 251 | ControllerState m_RightControllerState; 252 | ControllerState m_LeftControllerState; 253 | 254 | 255 | void OnEnable() 256 | { 257 | m_LeftTeleportDeactivated = false; 258 | m_RightTeleportDeactivated = false; 259 | 260 | m_RightControllerState.Initialize(); 261 | m_LeftControllerState.Initialize(); 262 | 263 | m_RightControllerState.SetGameObject(ControllerStates.Select, m_RightBaseController); 264 | m_RightControllerState.SetGameObject(ControllerStates.Teleport, m_RightTeleportController); 265 | 266 | m_LeftControllerState.SetGameObject(ControllerStates.Select, m_LeftBaseController); 267 | m_LeftControllerState.SetGameObject(ControllerStates.Teleport, m_LeftTeleportController); 268 | 269 | m_LeftControllerState.ClearAll(); 270 | m_RightControllerState.ClearAll(); 271 | 272 | InputDevices.deviceConnected += RegisterDevices; 273 | List devices = new List(); 274 | InputDevices.GetDevices(devices); 275 | for (int i = 0; i < devices.Count; i++) 276 | RegisterDevices(devices[i]); 277 | } 278 | 279 | void OnDisable() 280 | { 281 | InputDevices.deviceConnected -= RegisterDevices; 282 | } 283 | 284 | void RegisterDevices(InputDevice connectedDevice) 285 | { 286 | if (connectedDevice.isValid) 287 | { 288 | #if UNITY_2019_3_OR_NEWER 289 | if ((connectedDevice.characteristics & InputDeviceCharacteristics.Left) != 0) 290 | #else 291 | if (connectedDevice.role == InputDeviceRole.LeftHanded) 292 | #endif 293 | { 294 | m_LeftController = connectedDevice; 295 | m_LeftControllerState.ClearAll(); 296 | m_LeftControllerState.SetState(ControllerStates.Select); 297 | } 298 | #if UNITY_2019_3_OR_NEWER 299 | else if ((connectedDevice.characteristics & InputDeviceCharacteristics.Right) != 0) 300 | #else 301 | else if (connectedDevice.role == InputDeviceRole.RightHanded) 302 | #endif 303 | { 304 | m_RightController = connectedDevice; 305 | m_RightControllerState.ClearAll(); 306 | m_RightControllerState.SetState(ControllerStates.Select); 307 | } 308 | } 309 | } 310 | 311 | void Update() 312 | { 313 | if (m_LeftController.isValid) 314 | { 315 | bool activated = false; 316 | for (int i = 0; i < m_ActivationButtons.Count; i++) 317 | { 318 | m_LeftController.IsPressed(m_ActivationButtons[i], out bool value); 319 | 320 | if (!value 321 | && m_LeftControllerState.GetState() == ControllerStates.Teleport 322 | && m_LeftController.TryGetFeatureValue(new InputFeatureUsage("Primary2DAxis"), out Vector2 val)) 323 | { 324 | if (val.magnitude > m_LeftControllerState.TeleportationThreshold) 325 | { 326 | value = true; 327 | } 328 | } 329 | 330 | activated |= value; 331 | } 332 | 333 | bool deactivated = false; 334 | for (int i = 0; i < m_DeactivationButtons.Count; i++) 335 | { 336 | m_LeftController.IsPressed(m_DeactivationButtons[i], out bool value); 337 | m_LeftTeleportDeactivated |= value; 338 | } 339 | 340 | if (deactivated) 341 | m_LeftTeleportDeactivated = true; 342 | 343 | // if we're pressing the activation buttons, we transition to Teleport 344 | if (activated && !m_LeftTeleportDeactivated) 345 | { 346 | m_LeftControllerState.SetState(ControllerStates.Teleport); 347 | } 348 | // otherwise we're in normal state. 349 | else 350 | { 351 | m_LeftControllerState.SetState(ControllerStates.Select); 352 | 353 | if (!activated) 354 | m_LeftTeleportDeactivated = false; 355 | } 356 | } 357 | 358 | if (m_RightController.isValid) 359 | { 360 | bool activated = false; 361 | for (int i = 0; i < m_ActivationButtons.Count; i++) 362 | { 363 | m_RightController.IsPressed(m_ActivationButtons[i], out bool value); 364 | 365 | if (!value 366 | && m_RightControllerState.GetState() == ControllerStates.Teleport 367 | && m_RightController.TryGetFeatureValue(new InputFeatureUsage("Primary2DAxis"), out Vector2 val)) 368 | { 369 | if (val.magnitude > m_RightControllerState.TeleportationThreshold) 370 | { 371 | value = true; 372 | } 373 | } 374 | 375 | activated |= value; 376 | } 377 | 378 | bool deactivated = false; 379 | for (int i = 0; i < m_DeactivationButtons.Count; i++) 380 | { 381 | m_RightController.IsPressed(m_DeactivationButtons[i], out bool value); 382 | deactivated |= value; 383 | } 384 | 385 | if (deactivated) 386 | m_RightTeleportDeactivated = true; 387 | 388 | if (activated && !m_RightTeleportDeactivated) 389 | { 390 | m_RightControllerState.SetState(ControllerStates.Teleport); 391 | } 392 | else 393 | { 394 | m_RightControllerState.SetState(ControllerStates.Select); 395 | 396 | if (!activated) 397 | m_RightTeleportDeactivated = false; 398 | } 399 | } 400 | } 401 | } 402 | -------------------------------------------------------------------------------- /XrIT_Override/XRController_Extension.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using UnityEngine; 3 | #if LIH_PRESENT 4 | using UnityEngine.Experimental.XR.Interaction; 5 | #endif 6 | 7 | namespace UnityEngine.XR.Interaction.Toolkit 8 | { 9 | /// 10 | /// XRController MonoBehaviour that interprets InputSystem events into 11 | /// XR Interaction Interactor position, rotation and interaction states. 12 | /// 13 | [DisallowMultipleComponent, AddComponentMenu("XR/XR Controller Extension")] 14 | public class XRController_Extension : MonoBehaviour 15 | { 16 | /// 17 | /// The update type being used by the tracked pose driver 18 | /// 19 | new public enum UpdateType 20 | { 21 | /// 22 | /// Sample input at both update, and directly before rendering. For smooth head pose tracking, 23 | /// we recommend using this value as it will provide the lowest input latency for the device. 24 | /// This is the default value for the UpdateType option 25 | /// 26 | UpdateAndBeforeRender, 27 | /// 28 | /// Only sample input during the update phase of the frame. 29 | /// 30 | Update, 31 | /// 32 | /// Only sample input directly before rendering 33 | /// 34 | BeforeRender, 35 | } 36 | [Header("Tracking Configuration")] 37 | 38 | [SerializeField] 39 | [Tooltip("The time within the frame that the XRController will sample input.")] 40 | new UpdateType m_UpdateTrackingType = UpdateType.UpdateAndBeforeRender; 41 | /// 42 | /// The update type being used by the tracked pose driver 43 | /// 44 | public UpdateType updateTrackingType 45 | { 46 | get { return m_UpdateTrackingType; } 47 | set { m_UpdateTrackingType = value; } 48 | } 49 | 50 | bool m_EnableInputTracking = true; 51 | /// Gets or sets if input is enabled for this controller. 52 | public bool enableInputTracking 53 | { 54 | get { return m_EnableInputTracking; } 55 | set { m_EnableInputTracking = value; } 56 | } 57 | 58 | 59 | [Header("Configuration")] 60 | 61 | [SerializeField, Tooltip("Used to disable an input state changing in the interactor. useful for swapping to a different interactor on the same object")] 62 | bool m_EnableInputActions = true; 63 | public bool enableInputActions { get { return m_EnableInputActions; } set { m_EnableInputActions = value; } } 64 | 65 | #if LIH_PRESENT 66 | [SerializeField, Tooltip("Pose provider used to provide tracking data separate from the XR Node")] 67 | BasePoseProvider m_PoseProvider; 68 | public BasePoseProvider poseProvider { get { return m_PoseProvider; } set { m_PoseProvider = value; } } 69 | #endif 70 | 71 | [SerializeField] 72 | [Tooltip("Gets or sets the XRNode for this controller.")] 73 | XRNode m_ControllerNode; 74 | /// Gets or sets the XRNode for this controller. 75 | public XRNode controllerNode { get { return m_ControllerNode; } set { m_ControllerNode = value; } } 76 | 77 | [SerializeField] 78 | [Tooltip("The input usage that triggers a select, activate or uiInteraction action")] 79 | InputHelpers.Button m_SelectUsage = InputHelpers.Button.Grip; 80 | /// Gets or sets the usage to use for detecting selection. 81 | public InputHelpers.Button selectUsage { get { return m_SelectUsage; } set { m_SelectUsage = value; } } 82 | 83 | [SerializeField] 84 | [Tooltip("Gets or sets the usage to use for detecting activation.")] 85 | InputHelpers.Button m_ActivateUsage = InputHelpers.Button.Trigger; 86 | /// Gets or sets the usage to use for detecting activation. 87 | public InputHelpers.Button activateUsage { get { return m_ActivateUsage; } set { m_ActivateUsage = value; } } 88 | 89 | [SerializeField] 90 | [Tooltip("Gets or sets the usage to use for detecting a UI press.")] 91 | InputHelpers.Button m_UIPressUsage = InputHelpers.Button.Trigger; 92 | /// Gets or sets the usage to use for detecting a UI press. 93 | public InputHelpers.Button uiPressUsage { get { return m_UIPressUsage; } set { m_UIPressUsage = value; } } 94 | 95 | [SerializeField] 96 | [Tooltip("Gets or sets the the amount the axis needs to be pressed to trigger an interaction event.")] 97 | float m_AxisToPressThreshold = 0.1f; 98 | /// Gets or sets the the amount the axis needs to be pressed to trigger an interaction event. 99 | public float axisToPressThreshold { get { return m_AxisToPressThreshold; } set { m_AxisToPressThreshold = value; } } 100 | 101 | [Header("Model")] 102 | 103 | [SerializeField] 104 | [Tooltip("Gets or sets the model prefab to show for this controller.")] 105 | Transform m_ModelPrefab; 106 | /// Gets or sets the model prefab to show for this controller. 107 | public Transform modelPrefab { get { return m_ModelPrefab; } set { m_ModelPrefab = value; } } 108 | 109 | [SerializeField] 110 | [Tooltip("Gets or sets the model transform that is used as the parent for the controller model.")] 111 | Transform m_ModelTransform; 112 | /// Gets or sets the model transform that is used as the parent for the controller model. 113 | /// Note: setting this will not automatically destroy the previous model transform object. 114 | /// 115 | public Transform modelTransform { get { return m_ModelTransform; } } 116 | 117 | [SerializeField] 118 | [Tooltip("Gets or sets whether this model animates in response to interaction events.")] 119 | bool m_AnimateModel; 120 | /// Gets or sets whether this model animates in response to interaction events. 121 | public bool animateModel { get { return m_AnimateModel; } set { m_AnimateModel = value; } } 122 | 123 | [SerializeField] 124 | [Tooltip("Gets or sets the animation transition to enable when selecting.")] 125 | string m_ModelSelectTransition; 126 | /// Gets or sets the animation transition to enable when selecting. 127 | public string modelSelectTransition { get { return m_ModelSelectTransition; } set { m_ModelSelectTransition = value; } } 128 | 129 | [SerializeField] 130 | [Tooltip("Gets or sets the animation transition to enable when de-selecting.")] 131 | string m_ModelDeSelectTransition; 132 | /// Gets or sets the animation transition to enable when de-selecting. 133 | public string modelDeSelectTransition { get { return m_ModelDeSelectTransition; } set { m_ModelDeSelectTransition = value; } } 134 | 135 | /// 136 | /// InteractionState type to hold current state for a given interaction. 137 | /// 138 | protected internal struct InteractionState 139 | { 140 | /// This field is true if it is is currently on. 141 | public bool active; 142 | /// This field is true if the interaction state was activated this frame. 143 | public bool activatedThisFrame; 144 | /// This field is true if the interaction state was de-activated this frame. 145 | public bool deActivatedThisFrame; 146 | } 147 | 148 | internal enum InteractionTypes { select, activate, uiPress }; 149 | protected InteractionState m_SelectInteractionState; 150 | InteractionState m_ActivateInteractionState; 151 | InteractionState m_UIPressInteractionState; 152 | 153 | /// Gets the current select interaction state. 154 | internal InteractionState selectInteractionState { get { return m_SelectInteractionState; } } 155 | /// Gets the current activate interaction state. 156 | internal InteractionState activateInteractionState { get { return m_ActivateInteractionState; } } 157 | /// Gets the current ui press interaction state. 158 | internal InteractionState uiPressInteractionState { get { return m_UIPressInteractionState; } } 159 | 160 | /// Gets the InputDevice being used to read data from. 161 | public InputDevice inputDevice 162 | { 163 | get 164 | { 165 | return m_InputDevice.isValid ? m_InputDevice : (m_InputDevice = InputDevices.GetDeviceAtXRNode(controllerNode)); 166 | } 167 | } 168 | private InputDevice m_InputDevice; 169 | 170 | // Flag to indicate that setup should be (re)performed on Update. 171 | bool m_PerformSetup = true; 172 | 173 | GameObject m_ModelGO; 174 | bool m_HideControllerModel = false; 175 | 176 | /// Gets or sets whether the controller model should be hidden. 177 | public bool hideControllerModel 178 | { 179 | get { return m_HideControllerModel; } 180 | set 181 | { 182 | m_HideControllerModel = value; 183 | if (m_ModelGO) 184 | m_ModelGO.SetActive(!m_HideControllerModel); 185 | } 186 | } 187 | 188 | protected virtual void OnEnable() 189 | { 190 | Application.onBeforeRender += OnBeforeRender; 191 | } 192 | 193 | protected virtual void OnDisable() 194 | { 195 | Application.onBeforeRender -= OnBeforeRender; 196 | } 197 | 198 | protected virtual void OnBeforeRender() 199 | { 200 | if (enableInputTracking && 201 | (m_UpdateTrackingType == UpdateType.BeforeRender || 202 | m_UpdateTrackingType == UpdateType.UpdateAndBeforeRender)) 203 | { 204 | UpdateTrackingInput(); 205 | } 206 | } 207 | 208 | protected virtual void Awake() 209 | { 210 | // create empty model transform if none specified 211 | if (m_ModelTransform == null) 212 | { 213 | var modelGO = new GameObject(string.Format("[{0}] Model", gameObject.name)); 214 | if (modelGO != null) 215 | { 216 | m_ModelTransform = modelGO.transform; 217 | m_ModelTransform.SetParent(transform); 218 | modelGO.transform.localPosition = Vector3.zero; 219 | modelGO.transform.localRotation = Quaternion.identity; 220 | } 221 | } 222 | } 223 | 224 | void PerformSetup() 225 | { 226 | SetupModel(); 227 | } 228 | 229 | void SetupModel() 230 | { 231 | if (m_ModelGO) 232 | Destroy(m_ModelGO); 233 | var model = m_ModelPrefab; 234 | if (model != null) 235 | { 236 | m_ModelGO = Instantiate(model).gameObject; 237 | m_ModelGO.transform.parent = m_ModelTransform; 238 | m_ModelGO.transform.localPosition = new Vector3(0f, 0f, 0f); 239 | m_ModelGO.transform.localRotation = Quaternion.identity; 240 | m_ModelGO.transform.localScale = new Vector3(1.0f, 1.0f, 1.0f); 241 | m_ModelGO.transform.gameObject.SetActive(true); 242 | } 243 | } 244 | 245 | bool ShouldUpdateTrackingInput() 246 | { 247 | return enableInputTracking && 248 | (m_UpdateTrackingType == UpdateType.Update || 249 | m_UpdateTrackingType == UpdateType.UpdateAndBeforeRender); 250 | } 251 | 252 | void Update() 253 | { 254 | if (m_PerformSetup) 255 | { 256 | PerformSetup(); 257 | m_PerformSetup = false; 258 | } 259 | 260 | if ( enableInputTracking && 261 | (m_UpdateTrackingType == UpdateType.Update || 262 | m_UpdateTrackingType == UpdateType.UpdateAndBeforeRender)) 263 | { 264 | UpdateTrackingInput(); 265 | 266 | } 267 | 268 | if (enableInputActions) 269 | { 270 | UpdateInput(); 271 | } 272 | } 273 | 274 | protected void UpdateTrackingInput() 275 | { 276 | Vector3 devicePosition = new Vector3(); 277 | Quaternion deviceRotation = new Quaternion(); 278 | 279 | #if LIH_PRESENT_V1API 280 | if (m_PoseProvider != null) 281 | { 282 | Pose poseProviderPose = new Pose(); 283 | if(m_PoseProvider.TryGetPoseFromProvider(out poseProviderPose)) 284 | { 285 | transform.localPosition = poseProviderPose.position; 286 | transform.localRotation = poseProviderPose.rotation; 287 | } 288 | } 289 | else 290 | #elif LIH_PRESENT_V2API 291 | if (m_PoseProvider != null) 292 | { 293 | Pose poseProviderPose = new Pose(); 294 | var retFlags = m_PoseProvider.GetPoseFromProvider(out poseProviderPose); 295 | if ((retFlags & SpatialTracking.PoseDataFlags.Position) > 0) 296 | { 297 | transform.localPosition = poseProviderPose.position; 298 | } 299 | if ((retFlags & SpatialTracking.PoseDataFlags.Rotation) > 0) 300 | { 301 | transform.localRotation = poseProviderPose.rotation; 302 | } 303 | } 304 | else 305 | #endif 306 | { 307 | if (inputDevice.TryGetFeatureValue(CommonUsages.devicePosition, out devicePosition)) 308 | transform.localPosition = devicePosition; 309 | 310 | if (inputDevice.TryGetFeatureValue(CommonUsages.deviceRotation, out deviceRotation)) 311 | transform.localRotation = deviceRotation; 312 | } 313 | } 314 | 315 | void UpdateInput() 316 | { 317 | // clear state for selection, activation and press state dependent on this frame 318 | m_SelectInteractionState.activatedThisFrame = m_SelectInteractionState.deActivatedThisFrame = false; 319 | m_ActivateInteractionState.activatedThisFrame = m_ActivateInteractionState.deActivatedThisFrame = false; 320 | m_UIPressInteractionState.activatedThisFrame = m_UIPressInteractionState.deActivatedThisFrame = false; 321 | 322 | HandleInteractionAction(controllerNode, m_SelectUsage, ref m_SelectInteractionState); 323 | HandleInteractionAction(controllerNode, m_ActivateUsage, ref m_ActivateInteractionState); 324 | HandleInteractionAction(controllerNode, m_UIPressUsage, ref m_UIPressInteractionState); 325 | 326 | UpdateControllerModelAnimation(); 327 | } 328 | 329 | void HandleInteractionAction(XRNode node, InputHelpers.Button button, ref InteractionState interactionState) 330 | { 331 | bool pressed = false; 332 | inputDevice.IsPressed(button, out pressed, m_AxisToPressThreshold); 333 | 334 | if (pressed) 335 | { 336 | if (!interactionState.active) 337 | { 338 | interactionState.activatedThisFrame = true; 339 | interactionState.active = true; 340 | } 341 | } 342 | else 343 | { 344 | if (interactionState.active) 345 | { 346 | interactionState.deActivatedThisFrame = true; 347 | interactionState.active = false; 348 | } 349 | } 350 | } 351 | 352 | // Override the XRController's current interaction state (used for interaction state playback) 353 | internal void UpdateInteractionType(InteractionTypes interactionStateType, bool isInteractionStateOn) 354 | { 355 | switch (interactionStateType) 356 | { 357 | case InteractionTypes.select: 358 | UpdateInteractionState(ref m_SelectInteractionState, isInteractionStateOn); 359 | break; 360 | case InteractionTypes.activate: 361 | UpdateInteractionState(ref m_ActivateInteractionState, isInteractionStateOn); 362 | break; 363 | case InteractionTypes.uiPress: 364 | UpdateInteractionState(ref m_UIPressInteractionState, isInteractionStateOn); 365 | break; 366 | } 367 | } 368 | 369 | static void UpdateInteractionState(ref InteractionState interactionState, bool isInteractionStateOn) 370 | { 371 | bool previousActive = interactionState.active; 372 | interactionState.active = isInteractionStateOn; 373 | 374 | if (interactionState.active && !previousActive) 375 | interactionState.activatedThisFrame = true; 376 | else if (!interactionState.active && previousActive) 377 | interactionState.deActivatedThisFrame = true; 378 | } 379 | 380 | // Override the XRController's controller model's animation (if the prefab contains an animator) 381 | internal void UpdateControllerModelAnimation() 382 | { 383 | if (m_ModelGO && m_AnimateModel) 384 | { 385 | Animator animator = m_ModelGO.GetComponent(); 386 | if (animator) 387 | { 388 | if (m_SelectInteractionState.activatedThisFrame) 389 | animator.SetTrigger(modelSelectTransition); 390 | else if (m_SelectInteractionState.deActivatedThisFrame) 391 | animator.SetTrigger(modelDeSelectTransition); 392 | } 393 | } 394 | } 395 | 396 | // Override the XRController's current position and rotation (used for interaction state playback) 397 | internal void UpdateControllerPose(Vector3 position, Quaternion rotation) 398 | { 399 | transform.localPosition = position; 400 | transform.localRotation = rotation; 401 | } 402 | 403 | /// Play a haptic impulse on the controller if one is available 404 | /// Amplitude (from 0.0 to 1.0) to play impulse at. 405 | /// Duration (in seconds) to play haptic impulse. 406 | public bool SendHapticImpulse(float amplitude, float duration) 407 | { 408 | HapticCapabilities capabilities; 409 | if (inputDevice.TryGetHapticCapabilities(out capabilities) && 410 | capabilities.supportsImpulse) 411 | { 412 | return inputDevice.SendHapticImpulse(0, amplitude, duration); 413 | } 414 | return false; 415 | } 416 | } 417 | } 418 | -------------------------------------------------------------------------------- /Runtime/Teleportation/XR Teleportation Demo Rig.prefab: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!1 &8222758811039587035 4 | GameObject: 5 | m_ObjectHideFlags: 0 6 | m_CorrespondingSourceObject: {fileID: 0} 7 | m_PrefabInstance: {fileID: 0} 8 | m_PrefabAsset: {fileID: 0} 9 | serializedVersion: 6 10 | m_Component: 11 | - component: {fileID: 8222758811039587033} 12 | - component: {fileID: 8222758811039587032} 13 | - component: {fileID: 8222758811039587028} 14 | - component: {fileID: 8222758811039587031} 15 | - component: {fileID: 8222758811039587030} 16 | - component: {fileID: 8222758811039587029} 17 | m_Layer: 0 18 | m_Name: XR Teleportation Demo Rig 19 | m_TagString: Untagged 20 | m_Icon: {fileID: 0} 21 | m_NavMeshLayer: 0 22 | m_StaticEditorFlags: 0 23 | m_IsActive: 1 24 | --- !u!4 &8222758811039587033 25 | Transform: 26 | m_ObjectHideFlags: 0 27 | m_CorrespondingSourceObject: {fileID: 0} 28 | m_PrefabInstance: {fileID: 0} 29 | m_PrefabAsset: {fileID: 0} 30 | m_GameObject: {fileID: 8222758811039587035} 31 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 32 | m_LocalPosition: {x: 0, y: 0, z: 0} 33 | m_LocalScale: {x: 1, y: 1, z: 1} 34 | m_Children: 35 | - {fileID: 8222758812794198258} 36 | m_Father: {fileID: 0} 37 | m_RootOrder: 0 38 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 39 | --- !u!114 &8222758811039587032 40 | MonoBehaviour: 41 | m_ObjectHideFlags: 0 42 | m_CorrespondingSourceObject: {fileID: 0} 43 | m_PrefabInstance: {fileID: 0} 44 | m_PrefabAsset: {fileID: 0} 45 | m_GameObject: {fileID: 8222758811039587035} 46 | m_Enabled: 1 47 | m_EditorHideFlags: 0 48 | m_Script: {fileID: 11500000, guid: 7448815bd5148434682b3d931066cd10, type: 3} 49 | m_Name: 50 | m_EditorClassIdentifier: 51 | m_RigBaseGameObject: {fileID: 8222758811039587035} 52 | m_CameraFloorOffsetObject: {fileID: 8222758812794198261} 53 | m_CameraGameObject: {fileID: 8222758812013391096} 54 | m_TrackingOriginMode: 2 55 | m_TrackingSpace: 3 56 | m_CameraYOffset: 1.36144 57 | --- !u!114 &8222758811039587028 58 | MonoBehaviour: 59 | m_ObjectHideFlags: 0 60 | m_CorrespondingSourceObject: {fileID: 0} 61 | m_PrefabInstance: {fileID: 0} 62 | m_PrefabAsset: {fileID: 0} 63 | m_GameObject: {fileID: 8222758811039587035} 64 | m_Enabled: 1 65 | m_EditorHideFlags: 0 66 | m_Script: {fileID: 11500000, guid: 01f69dc1cb084aa42b2f2f8cd87bc770, type: 3} 67 | m_Name: 68 | m_EditorClassIdentifier: 69 | m_System: {fileID: 8222758811039587031} 70 | --- !u!114 &8222758811039587031 71 | MonoBehaviour: 72 | m_ObjectHideFlags: 0 73 | m_CorrespondingSourceObject: {fileID: 0} 74 | m_PrefabInstance: {fileID: 0} 75 | m_PrefabAsset: {fileID: 0} 76 | m_GameObject: {fileID: 8222758811039587035} 77 | m_Enabled: 1 78 | m_EditorHideFlags: 0 79 | m_Script: {fileID: 11500000, guid: 03a5df2202a8b96488c744be3bd0c33e, type: 3} 80 | m_Name: 81 | m_EditorClassIdentifier: 82 | m_Timeout: 10 83 | m_XRRig: {fileID: 8222758811039587032} 84 | --- !u!114 &8222758811039587030 85 | MonoBehaviour: 86 | m_ObjectHideFlags: 0 87 | m_CorrespondingSourceObject: {fileID: 0} 88 | m_PrefabInstance: {fileID: 0} 89 | m_PrefabAsset: {fileID: 0} 90 | m_GameObject: {fileID: 8222758811039587035} 91 | m_Enabled: 1 92 | m_EditorHideFlags: 0 93 | m_Script: {fileID: 11500000, guid: dc4f2c0214c9b494fa7eb5b8b2c02885, type: 3} 94 | m_Name: 95 | m_EditorClassIdentifier: 96 | m_System: {fileID: 8222758811039587031} 97 | m_TurnUsage: 0 98 | m_Controllers: 99 | - {fileID: 0} 100 | - {fileID: 0} 101 | m_TurnAmount: 45 102 | m_DebounceTime: 0.5 103 | m_DeadZone: 0.75 104 | --- !u!114 &8222758811039587029 105 | MonoBehaviour: 106 | m_ObjectHideFlags: 0 107 | m_CorrespondingSourceObject: {fileID: 0} 108 | m_PrefabInstance: {fileID: 0} 109 | m_PrefabAsset: {fileID: 0} 110 | m_GameObject: {fileID: 8222758811039587035} 111 | m_Enabled: 1 112 | m_EditorHideFlags: 0 113 | m_Script: {fileID: 11500000, guid: 40641b3f533d75040903a321bf2dc3bc, type: 3} 114 | m_Name: 115 | m_EditorClassIdentifier: 116 | m_ActivationButtons: 0e000000 117 | m_DeactivationButtons: 0b000000 118 | m_LeftBaseController: {fileID: 8222758812569321478} 119 | m_LeftTeleportController: {fileID: 8222758811628033699} 120 | m_RightBaseController: {fileID: 8222758811980263348} 121 | m_RightTeleportController: {fileID: 8222758811675023122} 122 | --- !u!1 &8222758811628033699 123 | GameObject: 124 | m_ObjectHideFlags: 0 125 | m_CorrespondingSourceObject: {fileID: 0} 126 | m_PrefabInstance: {fileID: 0} 127 | m_PrefabAsset: {fileID: 0} 128 | serializedVersion: 6 129 | m_Component: 130 | - component: {fileID: 8222758811628033696} 131 | - component: {fileID: 8222758811628033724} 132 | - component: {fileID: 8222758811628033727} 133 | - component: {fileID: 8222758811628033697} 134 | - component: {fileID: 8222758811628033726} 135 | m_Layer: 0 136 | m_Name: LeftHand TeleportController 137 | m_TagString: Untagged 138 | m_Icon: {fileID: 0} 139 | m_NavMeshLayer: 0 140 | m_StaticEditorFlags: 0 141 | m_IsActive: 1 142 | --- !u!4 &8222758811628033696 143 | Transform: 144 | m_ObjectHideFlags: 0 145 | m_CorrespondingSourceObject: {fileID: 0} 146 | m_PrefabInstance: {fileID: 0} 147 | m_PrefabAsset: {fileID: 0} 148 | m_GameObject: {fileID: 8222758811628033699} 149 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 150 | m_LocalPosition: {x: 0, y: 0, z: 0} 151 | m_LocalScale: {x: 1, y: 1, z: 1} 152 | m_Children: [] 153 | m_Father: {fileID: 8222758812794198258} 154 | m_RootOrder: 2 155 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 156 | --- !u!114 &8222758811628033724 157 | MonoBehaviour: 158 | m_ObjectHideFlags: 0 159 | m_CorrespondingSourceObject: {fileID: 0} 160 | m_PrefabInstance: {fileID: 0} 161 | m_PrefabAsset: {fileID: 0} 162 | m_GameObject: {fileID: 8222758811628033699} 163 | m_Enabled: 1 164 | m_EditorHideFlags: 0 165 | m_Script: {fileID: 11500000, guid: 3d084b64c78b553468d7fbf2b88ee32a, type: 3} 166 | m_Name: 167 | m_EditorClassIdentifier: 168 | m_UpdateTrackingType: 0 169 | m_EnableInputActions: 1 170 | m_ControllerNode: 4 171 | m_SelectUsage: 0 172 | m_ActivateUsage: 0 173 | m_UIPressUsage: 0 174 | m_AxisToPressThreshold: 0.1 175 | m_ModelPrefab: {fileID: 0} 176 | m_ModelTransform: {fileID: 0} 177 | m_AnimateModel: 0 178 | m_ModelSelectTransition: 179 | m_ModelDeSelectTransition: 180 | _triggerTeleportThreshold: 0.3 181 | --- !u!114 &8222758811628033727 182 | MonoBehaviour: 183 | m_ObjectHideFlags: 0 184 | m_CorrespondingSourceObject: {fileID: 0} 185 | m_PrefabInstance: {fileID: 0} 186 | m_PrefabAsset: {fileID: 0} 187 | m_GameObject: {fileID: 8222758811628033699} 188 | m_Enabled: 1 189 | m_EditorHideFlags: 0 190 | m_Script: {fileID: 11500000, guid: 6803edce0201f574f923fd9d10e5b30a, type: 3} 191 | m_Name: 192 | m_EditorClassIdentifier: 193 | m_InteractionManager: {fileID: 0} 194 | m_InteractionLayerMask: 195 | serializedVersion: 2 196 | m_Bits: 4294967295 197 | m_AttachTransform: {fileID: 0} 198 | m_StartingSelectedInteractable: {fileID: 0} 199 | m_OnHoverEnter: 200 | m_PersistentCalls: 201 | m_Calls: [] 202 | m_OnHoverExit: 203 | m_PersistentCalls: 204 | m_Calls: [] 205 | m_OnSelectEnter: 206 | m_PersistentCalls: 207 | m_Calls: [] 208 | m_OnSelectExit: 209 | m_PersistentCalls: 210 | m_Calls: [] 211 | m_SelectActionTrigger: 1 212 | m_HideControllerOnSelect: 0 213 | m_PlayAudioClipOnSelectEnter: 0 214 | m_AudioClipForOnSelectEnter: {fileID: 0} 215 | m_PlayAudioClipOnSelectExit: 0 216 | m_AudioClipForOnSelectExit: {fileID: 0} 217 | m_PlayAudioClipOnHoverEnter: 0 218 | m_AudioClipForOnHoverEnter: {fileID: 0} 219 | m_PlayAudioClipOnHoverExit: 0 220 | m_AudioClipForOnHoverExit: {fileID: 0} 221 | m_PlayHapticsOnSelectEnter: 0 222 | m_HapticSelectEnterIntensity: 0 223 | m_HapticSelectEnterDuration: 0 224 | m_PlayHapticsOnSelectExit: 0 225 | m_HapticSelectExitIntensity: 0 226 | m_HapticSelectExitDuration: 0 227 | m_PlayHapticsOnHoverEnter: 0 228 | m_HapticHoverEnterIntensity: 0 229 | m_HapticHoverEnterDuration: 0 230 | m_PlayHapticsOnHoverExit: 0 231 | m_HapticHoverExitIntensity: 0 232 | m_HapticHoverExitDuration: 0 233 | m_LineType: 1 234 | m_MaxRaycastDistance: 30 235 | m_ReferenceFrame: {fileID: 0} 236 | m_Velocity: 16 237 | m_Acceleration: 9.8 238 | m_AdditionalFlightTime: 0.5 239 | m_EndPointDistance: 30 240 | m_EndPointHeight: -10 241 | m_ControlPointDistance: 10 242 | m_ControlPointHeight: 5 243 | m_SampleFrequency: 20 244 | m_HitDetectionType: 0 245 | m_SphereCastRadius: 0 246 | m_RaycastMask: 247 | serializedVersion: 2 248 | m_Bits: 4294967295 249 | m_RaycastTriggerInteraction: 1 250 | m_HoverToSelect: 0 251 | m_HoverTimeToSelect: 0.5 252 | m_EnableUIInteraction: 0 253 | --- !u!114 &8222758811628033697 254 | MonoBehaviour: 255 | m_ObjectHideFlags: 0 256 | m_CorrespondingSourceObject: {fileID: 0} 257 | m_PrefabInstance: {fileID: 0} 258 | m_PrefabAsset: {fileID: 0} 259 | m_GameObject: {fileID: 8222758811628033699} 260 | m_Enabled: 1 261 | m_EditorHideFlags: 0 262 | m_Script: {fileID: 11500000, guid: e988983f96fe1dd48800bcdfc82f23e9, type: 3} 263 | m_Name: 264 | m_EditorClassIdentifier: 265 | m_LineWidth: 0.02 266 | m_OverrideInteractorLineLength: 1 267 | m_LineLength: 10 268 | m_WidthCurve: 269 | serializedVersion: 2 270 | m_Curve: 271 | - serializedVersion: 3 272 | time: 0 273 | value: 1 274 | inSlope: 0 275 | outSlope: 0 276 | tangentMode: 0 277 | weightedMode: 0 278 | inWeight: 0 279 | outWeight: 0 280 | - serializedVersion: 3 281 | time: 1 282 | value: 1 283 | inSlope: 0 284 | outSlope: 0 285 | tangentMode: 0 286 | weightedMode: 0 287 | inWeight: 0 288 | outWeight: 0 289 | m_PreInfinity: 2 290 | m_PostInfinity: 2 291 | m_RotationOrder: 4 292 | m_ValidColorGradient: 293 | serializedVersion: 2 294 | key0: {r: 1, g: 1, b: 1, a: 1} 295 | key1: {r: 1, g: 1, b: 1, a: 1} 296 | key2: {r: 0, g: 0, b: 0, a: 0} 297 | key3: {r: 0, g: 0, b: 0, a: 0} 298 | key4: {r: 0, g: 0, b: 0, a: 0} 299 | key5: {r: 0, g: 0, b: 0, a: 0} 300 | key6: {r: 0, g: 0, b: 0, a: 0} 301 | key7: {r: 0, g: 0, b: 0, a: 0} 302 | ctime0: 0 303 | ctime1: 65535 304 | ctime2: 0 305 | ctime3: 0 306 | ctime4: 0 307 | ctime5: 0 308 | ctime6: 0 309 | ctime7: 0 310 | atime0: 0 311 | atime1: 65535 312 | atime2: 0 313 | atime3: 0 314 | atime4: 0 315 | atime5: 0 316 | atime6: 0 317 | atime7: 0 318 | m_Mode: 0 319 | m_NumColorKeys: 2 320 | m_NumAlphaKeys: 2 321 | m_InvalidColorGradient: 322 | serializedVersion: 2 323 | key0: {r: 1, g: 0, b: 0, a: 0} 324 | key1: {r: 1, g: 0, b: 0, a: 0} 325 | key2: {r: 0, g: 0, b: 0, a: 0} 326 | key3: {r: 0, g: 0, b: 0, a: 0} 327 | key4: {r: 0, g: 0, b: 0, a: 0} 328 | key5: {r: 0, g: 0, b: 0, a: 0} 329 | key6: {r: 0, g: 0, b: 0, a: 0} 330 | key7: {r: 0, g: 0, b: 0, a: 0} 331 | ctime0: 0 332 | ctime1: 65535 333 | ctime2: 0 334 | ctime3: 0 335 | ctime4: 0 336 | ctime5: 0 337 | ctime6: 0 338 | ctime7: 0 339 | atime0: 0 340 | atime1: 65535 341 | atime2: 0 342 | atime3: 0 343 | atime4: 0 344 | atime5: 0 345 | atime6: 0 346 | atime7: 0 347 | m_Mode: 0 348 | m_NumColorKeys: 2 349 | m_NumAlphaKeys: 2 350 | m_SmoothMovement: 0 351 | m_FollowTightness: 10 352 | m_SnapThresholdDistance: 10 353 | m_Reticle: {fileID: 0} 354 | m_StopLineAtFirstRaycastHit: 1 355 | --- !u!120 &8222758811628033726 356 | LineRenderer: 357 | m_ObjectHideFlags: 0 358 | m_CorrespondingSourceObject: {fileID: 0} 359 | m_PrefabInstance: {fileID: 0} 360 | m_PrefabAsset: {fileID: 0} 361 | m_GameObject: {fileID: 8222758811628033699} 362 | m_Enabled: 1 363 | m_CastShadows: 0 364 | m_ReceiveShadows: 0 365 | m_DynamicOccludee: 1 366 | m_MotionVectors: 0 367 | m_LightProbeUsage: 0 368 | m_ReflectionProbeUsage: 0 369 | m_RayTracingMode: 0 370 | m_RayTraceProcedural: 0 371 | m_RenderingLayerMask: 1 372 | m_RendererPriority: 0 373 | m_Materials: 374 | - {fileID: 10306, guid: 0000000000000000f000000000000000, type: 0} 375 | m_StaticBatchInfo: 376 | firstSubMesh: 0 377 | subMeshCount: 0 378 | m_StaticBatchRoot: {fileID: 0} 379 | m_ProbeAnchor: {fileID: 0} 380 | m_LightProbeVolumeOverride: {fileID: 0} 381 | m_ScaleInLightmap: 1 382 | m_ReceiveGI: 1 383 | m_PreserveUVs: 0 384 | m_IgnoreNormalsForChartDetection: 0 385 | m_ImportantGI: 0 386 | m_StitchLightmapSeams: 1 387 | m_SelectedEditorRenderState: 3 388 | m_MinimumChartSize: 4 389 | m_AutoUVMaxDistance: 0.5 390 | m_AutoUVMaxAngle: 89 391 | m_LightmapParameters: {fileID: 0} 392 | m_SortingLayerID: 0 393 | m_SortingLayer: 0 394 | m_SortingOrder: 5 395 | m_Positions: [] 396 | m_Parameters: 397 | serializedVersion: 3 398 | widthMultiplier: 0.02 399 | widthCurve: 400 | serializedVersion: 2 401 | m_Curve: 402 | - serializedVersion: 3 403 | time: 0 404 | value: 1 405 | inSlope: 0 406 | outSlope: 0 407 | tangentMode: 0 408 | weightedMode: 0 409 | inWeight: 0 410 | outWeight: 0 411 | - serializedVersion: 3 412 | time: 1 413 | value: 1 414 | inSlope: 0 415 | outSlope: 0 416 | tangentMode: 0 417 | weightedMode: 0 418 | inWeight: 0 419 | outWeight: 0 420 | m_PreInfinity: 2 421 | m_PostInfinity: 2 422 | m_RotationOrder: 4 423 | colorGradient: 424 | serializedVersion: 2 425 | key0: {r: 0, g: 0, b: 1, a: 1} 426 | key1: {r: 0, g: 0, b: 1, a: 1} 427 | key2: {r: 0, g: 0, b: 0, a: 0} 428 | key3: {r: 0, g: 0, b: 0, a: 0} 429 | key4: {r: 0, g: 0, b: 0, a: 0} 430 | key5: {r: 0, g: 0, b: 0, a: 0} 431 | key6: {r: 0, g: 0, b: 0, a: 0} 432 | key7: {r: 0, g: 0, b: 0, a: 0} 433 | ctime0: 0 434 | ctime1: 65535 435 | ctime2: 0 436 | ctime3: 0 437 | ctime4: 0 438 | ctime5: 0 439 | ctime6: 0 440 | ctime7: 0 441 | atime0: 0 442 | atime1: 65535 443 | atime2: 0 444 | atime3: 0 445 | atime4: 0 446 | atime5: 0 447 | atime6: 0 448 | atime7: 0 449 | m_Mode: 0 450 | m_NumColorKeys: 2 451 | m_NumAlphaKeys: 2 452 | numCornerVertices: 4 453 | numCapVertices: 4 454 | alignment: 0 455 | textureMode: 0 456 | shadowBias: 0.5 457 | generateLightingData: 0 458 | m_UseWorldSpace: 1 459 | m_Loop: 0 460 | --- !u!1 &8222758811675023122 461 | GameObject: 462 | m_ObjectHideFlags: 0 463 | m_CorrespondingSourceObject: {fileID: 0} 464 | m_PrefabInstance: {fileID: 0} 465 | m_PrefabAsset: {fileID: 0} 466 | serializedVersion: 6 467 | m_Component: 468 | - component: {fileID: 8222758811675023343} 469 | - component: {fileID: 8222758811675023342} 470 | - component: {fileID: 8222758811675023121} 471 | - component: {fileID: 8222758811675023120} 472 | - component: {fileID: 8222758811675023123} 473 | m_Layer: 0 474 | m_Name: RightHand TeleportController 475 | m_TagString: Untagged 476 | m_Icon: {fileID: 0} 477 | m_NavMeshLayer: 0 478 | m_StaticEditorFlags: 0 479 | m_IsActive: 1 480 | --- !u!4 &8222758811675023343 481 | Transform: 482 | m_ObjectHideFlags: 0 483 | m_CorrespondingSourceObject: {fileID: 0} 484 | m_PrefabInstance: {fileID: 0} 485 | m_PrefabAsset: {fileID: 0} 486 | m_GameObject: {fileID: 8222758811675023122} 487 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 488 | m_LocalPosition: {x: 0, y: 0, z: 0} 489 | m_LocalScale: {x: 1, y: 1, z: 1} 490 | m_Children: [] 491 | m_Father: {fileID: 8222758812794198258} 492 | m_RootOrder: 4 493 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 494 | --- !u!114 &8222758811675023342 495 | MonoBehaviour: 496 | m_ObjectHideFlags: 0 497 | m_CorrespondingSourceObject: {fileID: 0} 498 | m_PrefabInstance: {fileID: 0} 499 | m_PrefabAsset: {fileID: 0} 500 | m_GameObject: {fileID: 8222758811675023122} 501 | m_Enabled: 1 502 | m_EditorHideFlags: 0 503 | m_Script: {fileID: 11500000, guid: 3d084b64c78b553468d7fbf2b88ee32a, type: 3} 504 | m_Name: 505 | m_EditorClassIdentifier: 506 | m_UpdateTrackingType: 0 507 | m_EnableInputActions: 1 508 | m_ControllerNode: 5 509 | m_SelectUsage: 0 510 | m_ActivateUsage: 0 511 | m_UIPressUsage: 0 512 | m_AxisToPressThreshold: 0.1 513 | m_ModelPrefab: {fileID: 0} 514 | m_ModelTransform: {fileID: 0} 515 | m_AnimateModel: 0 516 | m_ModelSelectTransition: 517 | m_ModelDeSelectTransition: 518 | _triggerTeleportThreshold: 0.3 519 | --- !u!114 &8222758811675023121 520 | MonoBehaviour: 521 | m_ObjectHideFlags: 0 522 | m_CorrespondingSourceObject: {fileID: 0} 523 | m_PrefabInstance: {fileID: 0} 524 | m_PrefabAsset: {fileID: 0} 525 | m_GameObject: {fileID: 8222758811675023122} 526 | m_Enabled: 1 527 | m_EditorHideFlags: 0 528 | m_Script: {fileID: 11500000, guid: 6803edce0201f574f923fd9d10e5b30a, type: 3} 529 | m_Name: 530 | m_EditorClassIdentifier: 531 | m_InteractionManager: {fileID: 0} 532 | m_InteractionLayerMask: 533 | serializedVersion: 2 534 | m_Bits: 4294967295 535 | m_AttachTransform: {fileID: 0} 536 | m_StartingSelectedInteractable: {fileID: 0} 537 | m_OnHoverEnter: 538 | m_PersistentCalls: 539 | m_Calls: [] 540 | m_OnHoverExit: 541 | m_PersistentCalls: 542 | m_Calls: [] 543 | m_OnSelectEnter: 544 | m_PersistentCalls: 545 | m_Calls: [] 546 | m_OnSelectExit: 547 | m_PersistentCalls: 548 | m_Calls: [] 549 | m_SelectActionTrigger: 1 550 | m_HideControllerOnSelect: 0 551 | m_PlayAudioClipOnSelectEnter: 0 552 | m_AudioClipForOnSelectEnter: {fileID: 0} 553 | m_PlayAudioClipOnSelectExit: 0 554 | m_AudioClipForOnSelectExit: {fileID: 0} 555 | m_PlayAudioClipOnHoverEnter: 0 556 | m_AudioClipForOnHoverEnter: {fileID: 0} 557 | m_PlayAudioClipOnHoverExit: 0 558 | m_AudioClipForOnHoverExit: {fileID: 0} 559 | m_PlayHapticsOnSelectEnter: 0 560 | m_HapticSelectEnterIntensity: 0 561 | m_HapticSelectEnterDuration: 0 562 | m_PlayHapticsOnSelectExit: 0 563 | m_HapticSelectExitIntensity: 0 564 | m_HapticSelectExitDuration: 0 565 | m_PlayHapticsOnHoverEnter: 0 566 | m_HapticHoverEnterIntensity: 0 567 | m_HapticHoverEnterDuration: 0 568 | m_PlayHapticsOnHoverExit: 0 569 | m_HapticHoverExitIntensity: 0 570 | m_HapticHoverExitDuration: 0 571 | m_LineType: 1 572 | m_MaxRaycastDistance: 30 573 | m_ReferenceFrame: {fileID: 0} 574 | m_Velocity: 16 575 | m_Acceleration: 9.8 576 | m_AdditionalFlightTime: 0.5 577 | m_EndPointDistance: 30 578 | m_EndPointHeight: -10 579 | m_ControlPointDistance: 10 580 | m_ControlPointHeight: 5 581 | m_SampleFrequency: 20 582 | m_HitDetectionType: 0 583 | m_SphereCastRadius: 0 584 | m_RaycastMask: 585 | serializedVersion: 2 586 | m_Bits: 4294967295 587 | m_RaycastTriggerInteraction: 1 588 | m_HoverToSelect: 0 589 | m_HoverTimeToSelect: 0.5 590 | m_EnableUIInteraction: 0 591 | --- !u!120 &8222758811675023120 592 | LineRenderer: 593 | m_ObjectHideFlags: 0 594 | m_CorrespondingSourceObject: {fileID: 0} 595 | m_PrefabInstance: {fileID: 0} 596 | m_PrefabAsset: {fileID: 0} 597 | m_GameObject: {fileID: 8222758811675023122} 598 | m_Enabled: 1 599 | m_CastShadows: 0 600 | m_ReceiveShadows: 0 601 | m_DynamicOccludee: 1 602 | m_MotionVectors: 0 603 | m_LightProbeUsage: 0 604 | m_ReflectionProbeUsage: 0 605 | m_RayTracingMode: 0 606 | m_RayTraceProcedural: 0 607 | m_RenderingLayerMask: 1 608 | m_RendererPriority: 0 609 | m_Materials: 610 | - {fileID: 10306, guid: 0000000000000000f000000000000000, type: 0} 611 | m_StaticBatchInfo: 612 | firstSubMesh: 0 613 | subMeshCount: 0 614 | m_StaticBatchRoot: {fileID: 0} 615 | m_ProbeAnchor: {fileID: 0} 616 | m_LightProbeVolumeOverride: {fileID: 0} 617 | m_ScaleInLightmap: 1 618 | m_ReceiveGI: 1 619 | m_PreserveUVs: 0 620 | m_IgnoreNormalsForChartDetection: 0 621 | m_ImportantGI: 0 622 | m_StitchLightmapSeams: 1 623 | m_SelectedEditorRenderState: 3 624 | m_MinimumChartSize: 4 625 | m_AutoUVMaxDistance: 0.5 626 | m_AutoUVMaxAngle: 89 627 | m_LightmapParameters: {fileID: 0} 628 | m_SortingLayerID: 0 629 | m_SortingLayer: 0 630 | m_SortingOrder: 5 631 | m_Positions: [] 632 | m_Parameters: 633 | serializedVersion: 3 634 | widthMultiplier: 0.02 635 | widthCurve: 636 | serializedVersion: 2 637 | m_Curve: 638 | - serializedVersion: 3 639 | time: 0 640 | value: 1 641 | inSlope: 0 642 | outSlope: 0 643 | tangentMode: 0 644 | weightedMode: 0 645 | inWeight: 0 646 | outWeight: 0 647 | - serializedVersion: 3 648 | time: 1 649 | value: 1 650 | inSlope: 0 651 | outSlope: 0 652 | tangentMode: 0 653 | weightedMode: 0 654 | inWeight: 0 655 | outWeight: 0 656 | m_PreInfinity: 2 657 | m_PostInfinity: 2 658 | m_RotationOrder: 4 659 | colorGradient: 660 | serializedVersion: 2 661 | key0: {r: 0, g: 0, b: 1, a: 1} 662 | key1: {r: 0, g: 0, b: 1, a: 1} 663 | key2: {r: 0, g: 0, b: 0, a: 0} 664 | key3: {r: 0, g: 0, b: 0, a: 0} 665 | key4: {r: 0, g: 0, b: 0, a: 0} 666 | key5: {r: 0, g: 0, b: 0, a: 0} 667 | key6: {r: 0, g: 0, b: 0, a: 0} 668 | key7: {r: 0, g: 0, b: 0, a: 0} 669 | ctime0: 0 670 | ctime1: 65535 671 | ctime2: 0 672 | ctime3: 0 673 | ctime4: 0 674 | ctime5: 0 675 | ctime6: 0 676 | ctime7: 0 677 | atime0: 0 678 | atime1: 65535 679 | atime2: 0 680 | atime3: 0 681 | atime4: 0 682 | atime5: 0 683 | atime6: 0 684 | atime7: 0 685 | m_Mode: 0 686 | m_NumColorKeys: 2 687 | m_NumAlphaKeys: 2 688 | numCornerVertices: 4 689 | numCapVertices: 4 690 | alignment: 0 691 | textureMode: 0 692 | shadowBias: 0.5 693 | generateLightingData: 0 694 | m_UseWorldSpace: 1 695 | m_Loop: 0 696 | --- !u!114 &8222758811675023123 697 | MonoBehaviour: 698 | m_ObjectHideFlags: 0 699 | m_CorrespondingSourceObject: {fileID: 0} 700 | m_PrefabInstance: {fileID: 0} 701 | m_PrefabAsset: {fileID: 0} 702 | m_GameObject: {fileID: 8222758811675023122} 703 | m_Enabled: 1 704 | m_EditorHideFlags: 0 705 | m_Script: {fileID: 11500000, guid: e988983f96fe1dd48800bcdfc82f23e9, type: 3} 706 | m_Name: 707 | m_EditorClassIdentifier: 708 | m_LineWidth: 0.02 709 | m_OverrideInteractorLineLength: 1 710 | m_LineLength: 10 711 | m_WidthCurve: 712 | serializedVersion: 2 713 | m_Curve: 714 | - serializedVersion: 3 715 | time: 0 716 | value: 1 717 | inSlope: 0 718 | outSlope: 0 719 | tangentMode: 0 720 | weightedMode: 0 721 | inWeight: 0 722 | outWeight: 0 723 | - serializedVersion: 3 724 | time: 1 725 | value: 1 726 | inSlope: 0 727 | outSlope: 0 728 | tangentMode: 0 729 | weightedMode: 0 730 | inWeight: 0 731 | outWeight: 0 732 | m_PreInfinity: 2 733 | m_PostInfinity: 2 734 | m_RotationOrder: 4 735 | m_ValidColorGradient: 736 | serializedVersion: 2 737 | key0: {r: 1, g: 1, b: 1, a: 1} 738 | key1: {r: 1, g: 1, b: 1, a: 1} 739 | key2: {r: 0, g: 0, b: 0, a: 0} 740 | key3: {r: 0, g: 0, b: 0, a: 0} 741 | key4: {r: 0, g: 0, b: 0, a: 0} 742 | key5: {r: 0, g: 0, b: 0, a: 0} 743 | key6: {r: 0, g: 0, b: 0, a: 0} 744 | key7: {r: 0, g: 0, b: 0, a: 0} 745 | ctime0: 0 746 | ctime1: 65535 747 | ctime2: 0 748 | ctime3: 0 749 | ctime4: 0 750 | ctime5: 0 751 | ctime6: 0 752 | ctime7: 0 753 | atime0: 0 754 | atime1: 65535 755 | atime2: 0 756 | atime3: 0 757 | atime4: 0 758 | atime5: 0 759 | atime6: 0 760 | atime7: 0 761 | m_Mode: 0 762 | m_NumColorKeys: 2 763 | m_NumAlphaKeys: 2 764 | m_InvalidColorGradient: 765 | serializedVersion: 2 766 | key0: {r: 1, g: 0, b: 0, a: 0} 767 | key1: {r: 1, g: 0, b: 0, a: 0} 768 | key2: {r: 0, g: 0, b: 0, a: 0} 769 | key3: {r: 0, g: 0, b: 0, a: 0} 770 | key4: {r: 0, g: 0, b: 0, a: 0} 771 | key5: {r: 0, g: 0, b: 0, a: 0} 772 | key6: {r: 0, g: 0, b: 0, a: 0} 773 | key7: {r: 0, g: 0, b: 0, a: 0} 774 | ctime0: 0 775 | ctime1: 65535 776 | ctime2: 0 777 | ctime3: 0 778 | ctime4: 0 779 | ctime5: 0 780 | ctime6: 0 781 | ctime7: 0 782 | atime0: 0 783 | atime1: 65535 784 | atime2: 0 785 | atime3: 0 786 | atime4: 0 787 | atime5: 0 788 | atime6: 0 789 | atime7: 0 790 | m_Mode: 0 791 | m_NumColorKeys: 2 792 | m_NumAlphaKeys: 2 793 | m_SmoothMovement: 0 794 | m_FollowTightness: 10 795 | m_SnapThresholdDistance: 10 796 | m_Reticle: {fileID: 0} 797 | m_StopLineAtFirstRaycastHit: 1 798 | --- !u!1 &8222758811980263348 799 | GameObject: 800 | m_ObjectHideFlags: 0 801 | m_CorrespondingSourceObject: {fileID: 0} 802 | m_PrefabInstance: {fileID: 0} 803 | m_PrefabAsset: {fileID: 0} 804 | serializedVersion: 6 805 | m_Component: 806 | - component: {fileID: 8222758811980263349} 807 | - component: {fileID: 8222758811980263347} 808 | - component: {fileID: 1345793553748740043} 809 | - component: {fileID: 7482773458272464135} 810 | m_Layer: 0 811 | m_Name: RightHand Controller 812 | m_TagString: Untagged 813 | m_Icon: {fileID: 0} 814 | m_NavMeshLayer: 0 815 | m_StaticEditorFlags: 0 816 | m_IsActive: 1 817 | --- !u!4 &8222758811980263349 818 | Transform: 819 | m_ObjectHideFlags: 0 820 | m_CorrespondingSourceObject: {fileID: 0} 821 | m_PrefabInstance: {fileID: 0} 822 | m_PrefabAsset: {fileID: 0} 823 | m_GameObject: {fileID: 8222758811980263348} 824 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 825 | m_LocalPosition: {x: 0, y: 0, z: 0} 826 | m_LocalScale: {x: 1, y: 1, z: 1} 827 | m_Children: [] 828 | m_Father: {fileID: 8222758812794198258} 829 | m_RootOrder: 3 830 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 831 | --- !u!65 &8222758811980263347 832 | BoxCollider: 833 | m_ObjectHideFlags: 0 834 | m_CorrespondingSourceObject: {fileID: 0} 835 | m_PrefabInstance: {fileID: 0} 836 | m_PrefabAsset: {fileID: 0} 837 | m_GameObject: {fileID: 8222758811980263348} 838 | m_Material: {fileID: 0} 839 | m_IsTrigger: 1 840 | m_Enabled: 1 841 | serializedVersion: 2 842 | m_Size: {x: 0.1, y: 0.1, z: 0.1} 843 | m_Center: {x: 0, y: 0, z: 0} 844 | --- !u!114 &1345793553748740043 845 | MonoBehaviour: 846 | m_ObjectHideFlags: 0 847 | m_CorrespondingSourceObject: {fileID: 0} 848 | m_PrefabInstance: {fileID: 0} 849 | m_PrefabAsset: {fileID: 0} 850 | m_GameObject: {fileID: 8222758811980263348} 851 | m_Enabled: 1 852 | m_EditorHideFlags: 0 853 | m_Script: {fileID: 11500000, guid: 1ae26e19cd956134bbdf3c6f65bf393a, type: 3} 854 | m_Name: 855 | m_EditorClassIdentifier: 856 | m_UpdateTrackingType: 0 857 | m_EnableInputActions: 1 858 | m_PoseProvider: {fileID: 0} 859 | m_ControllerNode: 5 860 | m_SelectUsage: 3 861 | m_ActivateUsage: 2 862 | m_UIPressUsage: 2 863 | m_AxisToPressThreshold: 0.1 864 | m_ModelPrefab: {fileID: 6060622266625924004, guid: bde73ec44c3addb4883175063a19b79e, type: 3} 865 | m_ModelTransform: {fileID: 0} 866 | m_AnimateModel: 0 867 | m_ModelSelectTransition: 868 | m_ModelDeSelectTransition: 869 | --- !u!114 &7482773458272464135 870 | MonoBehaviour: 871 | m_ObjectHideFlags: 0 872 | m_CorrespondingSourceObject: {fileID: 0} 873 | m_PrefabInstance: {fileID: 0} 874 | m_PrefabAsset: {fileID: 0} 875 | m_GameObject: {fileID: 8222758811980263348} 876 | m_Enabled: 1 877 | m_EditorHideFlags: 0 878 | m_Script: {fileID: 11500000, guid: 4253f32900bcc4d499d675566142ded0, type: 3} 879 | m_Name: 880 | m_EditorClassIdentifier: 881 | m_InteractionManager: {fileID: 0} 882 | m_InteractionLayerMask: 883 | serializedVersion: 2 884 | m_Bits: 4294967295 885 | m_AttachTransform: {fileID: 0} 886 | m_StartingSelectedInteractable: {fileID: 0} 887 | m_OnHoverEnter: 888 | m_PersistentCalls: 889 | m_Calls: [] 890 | m_OnHoverExit: 891 | m_PersistentCalls: 892 | m_Calls: [] 893 | m_OnSelectEnter: 894 | m_PersistentCalls: 895 | m_Calls: [] 896 | m_OnSelectExit: 897 | m_PersistentCalls: 898 | m_Calls: [] 899 | m_SelectActionTrigger: 1 900 | m_HideControllerOnSelect: 0 901 | m_PlayAudioClipOnSelectEnter: 0 902 | m_AudioClipForOnSelectEnter: {fileID: 0} 903 | m_PlayAudioClipOnSelectExit: 0 904 | m_AudioClipForOnSelectExit: {fileID: 0} 905 | m_PlayAudioClipOnHoverEnter: 0 906 | m_AudioClipForOnHoverEnter: {fileID: 0} 907 | m_PlayAudioClipOnHoverExit: 0 908 | m_AudioClipForOnHoverExit: {fileID: 0} 909 | m_PlayHapticsOnSelectEnter: 0 910 | m_HapticSelectEnterIntensity: 0 911 | m_HapticSelectEnterDuration: 0 912 | m_PlayHapticsOnSelectExit: 0 913 | m_HapticSelectExitIntensity: 0 914 | m_HapticSelectExitDuration: 0 915 | m_PlayHapticsOnHoverEnter: 0 916 | m_HapticHoverEnterIntensity: 0 917 | m_HapticHoverEnterDuration: 0 918 | m_PlayHapticsOnHoverExit: 0 919 | m_HapticHoverExitIntensity: 0 920 | m_HapticHoverExitDuration: 0 921 | --- !u!1 &8222758812013391096 922 | GameObject: 923 | m_ObjectHideFlags: 0 924 | m_CorrespondingSourceObject: {fileID: 0} 925 | m_PrefabInstance: {fileID: 0} 926 | m_PrefabAsset: {fileID: 0} 927 | serializedVersion: 6 928 | m_Component: 929 | - component: {fileID: 8222758812013391092} 930 | - component: {fileID: 8222758812013391095} 931 | - component: {fileID: 8222758812013391094} 932 | - component: {fileID: 1589140095746753079} 933 | m_Layer: 0 934 | m_Name: Main Camera 935 | m_TagString: MainCamera 936 | m_Icon: {fileID: 0} 937 | m_NavMeshLayer: 0 938 | m_StaticEditorFlags: 0 939 | m_IsActive: 1 940 | --- !u!4 &8222758812013391092 941 | Transform: 942 | m_ObjectHideFlags: 0 943 | m_CorrespondingSourceObject: {fileID: 0} 944 | m_PrefabInstance: {fileID: 0} 945 | m_PrefabAsset: {fileID: 0} 946 | m_GameObject: {fileID: 8222758812013391096} 947 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 948 | m_LocalPosition: {x: 0, y: 0, z: 0} 949 | m_LocalScale: {x: 1, y: 1, z: 1} 950 | m_Children: [] 951 | m_Father: {fileID: 8222758812794198258} 952 | m_RootOrder: 0 953 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 954 | --- !u!20 &8222758812013391095 955 | Camera: 956 | m_ObjectHideFlags: 0 957 | m_CorrespondingSourceObject: {fileID: 0} 958 | m_PrefabInstance: {fileID: 0} 959 | m_PrefabAsset: {fileID: 0} 960 | m_GameObject: {fileID: 8222758812013391096} 961 | m_Enabled: 1 962 | serializedVersion: 2 963 | m_ClearFlags: 1 964 | m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} 965 | m_projectionMatrixMode: 1 966 | m_GateFitMode: 2 967 | m_FOVAxisMode: 0 968 | m_SensorSize: {x: 36, y: 24} 969 | m_LensShift: {x: 0, y: 0} 970 | m_FocalLength: 50 971 | m_NormalizedViewPortRect: 972 | serializedVersion: 2 973 | x: 0 974 | y: 0 975 | width: 1 976 | height: 1 977 | near clip plane: 0.3 978 | far clip plane: 1000 979 | field of view: 60 980 | orthographic: 0 981 | orthographic size: 5 982 | m_Depth: 0 983 | m_CullingMask: 984 | serializedVersion: 2 985 | m_Bits: 4294967295 986 | m_RenderingPath: -1 987 | m_TargetTexture: {fileID: 0} 988 | m_TargetDisplay: 0 989 | m_TargetEye: 3 990 | m_HDR: 0 991 | m_AllowMSAA: 0 992 | m_AllowDynamicResolution: 0 993 | m_ForceIntoRT: 0 994 | m_OcclusionCulling: 1 995 | m_StereoConvergence: 10 996 | m_StereoSeparation: 0.022 997 | --- !u!114 &8222758812013391094 998 | MonoBehaviour: 999 | m_ObjectHideFlags: 0 1000 | m_CorrespondingSourceObject: {fileID: 0} 1001 | m_PrefabInstance: {fileID: 0} 1002 | m_PrefabAsset: {fileID: 0} 1003 | m_GameObject: {fileID: 8222758812013391096} 1004 | m_Enabled: 1 1005 | m_EditorHideFlags: 0 1006 | m_Script: {fileID: 11500000, guid: 5a2a9c34df4095f47b9ca8f975175f5b, type: 3} 1007 | m_Name: 1008 | m_EditorClassIdentifier: 1009 | m_Device: 0 1010 | m_PoseSource: 2 1011 | m_PoseProviderComponent: {fileID: 0} 1012 | m_TrackingType: 0 1013 | m_UpdateType: 0 1014 | m_UseRelativeTransform: 0 1015 | --- !u!114 &1589140095746753079 1016 | MonoBehaviour: 1017 | m_ObjectHideFlags: 0 1018 | m_CorrespondingSourceObject: {fileID: 0} 1019 | m_PrefabInstance: {fileID: 0} 1020 | m_PrefabAsset: {fileID: 0} 1021 | m_GameObject: {fileID: 8222758812013391096} 1022 | m_Enabled: 1 1023 | m_EditorHideFlags: 0 1024 | m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} 1025 | m_Name: 1026 | m_EditorClassIdentifier: 1027 | m_RenderShadows: 1 1028 | m_RequiresDepthTextureOption: 2 1029 | m_RequiresOpaqueTextureOption: 2 1030 | m_CameraType: 0 1031 | m_Cameras: [] 1032 | m_RendererIndex: -1 1033 | m_VolumeLayerMask: 1034 | serializedVersion: 2 1035 | m_Bits: 1 1036 | m_VolumeTrigger: {fileID: 0} 1037 | m_RenderPostProcessing: 0 1038 | m_Antialiasing: 0 1039 | m_AntialiasingQuality: 2 1040 | m_StopNaN: 0 1041 | m_Dithering: 0 1042 | m_ClearDepth: 1 1043 | m_RequiresDepthTexture: 0 1044 | m_RequiresColorTexture: 0 1045 | m_Version: 2 1046 | --- !u!1 &8222758812569321478 1047 | GameObject: 1048 | m_ObjectHideFlags: 0 1049 | m_CorrespondingSourceObject: {fileID: 0} 1050 | m_PrefabInstance: {fileID: 0} 1051 | m_PrefabAsset: {fileID: 0} 1052 | serializedVersion: 6 1053 | m_Component: 1054 | - component: {fileID: 8222758812569321479} 1055 | - component: {fileID: 8222758812569321477} 1056 | - component: {fileID: 4723391938905175595} 1057 | - component: {fileID: 5412932732703030786} 1058 | m_Layer: 0 1059 | m_Name: LeftHand Controller 1060 | m_TagString: Untagged 1061 | m_Icon: {fileID: 0} 1062 | m_NavMeshLayer: 0 1063 | m_StaticEditorFlags: 0 1064 | m_IsActive: 1 1065 | --- !u!4 &8222758812569321479 1066 | Transform: 1067 | m_ObjectHideFlags: 0 1068 | m_CorrespondingSourceObject: {fileID: 0} 1069 | m_PrefabInstance: {fileID: 0} 1070 | m_PrefabAsset: {fileID: 0} 1071 | m_GameObject: {fileID: 8222758812569321478} 1072 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 1073 | m_LocalPosition: {x: 0, y: 0, z: 0} 1074 | m_LocalScale: {x: 1, y: 1, z: 1} 1075 | m_Children: [] 1076 | m_Father: {fileID: 8222758812794198258} 1077 | m_RootOrder: 1 1078 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 1079 | --- !u!65 &8222758812569321477 1080 | BoxCollider: 1081 | m_ObjectHideFlags: 0 1082 | m_CorrespondingSourceObject: {fileID: 0} 1083 | m_PrefabInstance: {fileID: 0} 1084 | m_PrefabAsset: {fileID: 0} 1085 | m_GameObject: {fileID: 8222758812569321478} 1086 | m_Material: {fileID: 0} 1087 | m_IsTrigger: 1 1088 | m_Enabled: 1 1089 | serializedVersion: 2 1090 | m_Size: {x: 0.1, y: 0.1, z: 0.1} 1091 | m_Center: {x: 0, y: 0, z: 0} 1092 | --- !u!114 &4723391938905175595 1093 | MonoBehaviour: 1094 | m_ObjectHideFlags: 0 1095 | m_CorrespondingSourceObject: {fileID: 0} 1096 | m_PrefabInstance: {fileID: 0} 1097 | m_PrefabAsset: {fileID: 0} 1098 | m_GameObject: {fileID: 8222758812569321478} 1099 | m_Enabled: 1 1100 | m_EditorHideFlags: 0 1101 | m_Script: {fileID: 11500000, guid: 1ae26e19cd956134bbdf3c6f65bf393a, type: 3} 1102 | m_Name: 1103 | m_EditorClassIdentifier: 1104 | m_UpdateTrackingType: 0 1105 | m_EnableInputActions: 1 1106 | m_PoseProvider: {fileID: 0} 1107 | m_ControllerNode: 4 1108 | m_SelectUsage: 3 1109 | m_ActivateUsage: 2 1110 | m_UIPressUsage: 2 1111 | m_AxisToPressThreshold: 0.1 1112 | m_ModelPrefab: {fileID: 6060622266625924004, guid: bde73ec44c3addb4883175063a19b79e, type: 3} 1113 | m_ModelTransform: {fileID: 0} 1114 | m_AnimateModel: 0 1115 | m_ModelSelectTransition: 1116 | m_ModelDeSelectTransition: 1117 | --- !u!114 &5412932732703030786 1118 | MonoBehaviour: 1119 | m_ObjectHideFlags: 0 1120 | m_CorrespondingSourceObject: {fileID: 0} 1121 | m_PrefabInstance: {fileID: 0} 1122 | m_PrefabAsset: {fileID: 0} 1123 | m_GameObject: {fileID: 8222758812569321478} 1124 | m_Enabled: 1 1125 | m_EditorHideFlags: 0 1126 | m_Script: {fileID: 11500000, guid: 4253f32900bcc4d499d675566142ded0, type: 3} 1127 | m_Name: 1128 | m_EditorClassIdentifier: 1129 | m_InteractionManager: {fileID: 0} 1130 | m_InteractionLayerMask: 1131 | serializedVersion: 2 1132 | m_Bits: 4294967295 1133 | m_AttachTransform: {fileID: 0} 1134 | m_StartingSelectedInteractable: {fileID: 0} 1135 | m_OnHoverEnter: 1136 | m_PersistentCalls: 1137 | m_Calls: [] 1138 | m_OnHoverExit: 1139 | m_PersistentCalls: 1140 | m_Calls: [] 1141 | m_OnSelectEnter: 1142 | m_PersistentCalls: 1143 | m_Calls: [] 1144 | m_OnSelectExit: 1145 | m_PersistentCalls: 1146 | m_Calls: [] 1147 | m_SelectActionTrigger: 1 1148 | m_HideControllerOnSelect: 0 1149 | m_PlayAudioClipOnSelectEnter: 0 1150 | m_AudioClipForOnSelectEnter: {fileID: 0} 1151 | m_PlayAudioClipOnSelectExit: 0 1152 | m_AudioClipForOnSelectExit: {fileID: 0} 1153 | m_PlayAudioClipOnHoverEnter: 0 1154 | m_AudioClipForOnHoverEnter: {fileID: 0} 1155 | m_PlayAudioClipOnHoverExit: 0 1156 | m_AudioClipForOnHoverExit: {fileID: 0} 1157 | m_PlayHapticsOnSelectEnter: 0 1158 | m_HapticSelectEnterIntensity: 0 1159 | m_HapticSelectEnterDuration: 0 1160 | m_PlayHapticsOnSelectExit: 0 1161 | m_HapticSelectExitIntensity: 0 1162 | m_HapticSelectExitDuration: 0 1163 | m_PlayHapticsOnHoverEnter: 0 1164 | m_HapticHoverEnterIntensity: 0 1165 | m_HapticHoverEnterDuration: 0 1166 | m_PlayHapticsOnHoverExit: 0 1167 | m_HapticHoverExitIntensity: 0 1168 | m_HapticHoverExitDuration: 0 1169 | --- !u!1 &8222758812794198261 1170 | GameObject: 1171 | m_ObjectHideFlags: 0 1172 | m_CorrespondingSourceObject: {fileID: 0} 1173 | m_PrefabInstance: {fileID: 0} 1174 | m_PrefabAsset: {fileID: 0} 1175 | serializedVersion: 6 1176 | m_Component: 1177 | - component: {fileID: 8222758812794198258} 1178 | m_Layer: 0 1179 | m_Name: Camera Offset 1180 | m_TagString: Untagged 1181 | m_Icon: {fileID: 0} 1182 | m_NavMeshLayer: 0 1183 | m_StaticEditorFlags: 0 1184 | m_IsActive: 1 1185 | --- !u!4 &8222758812794198258 1186 | Transform: 1187 | m_ObjectHideFlags: 0 1188 | m_CorrespondingSourceObject: {fileID: 0} 1189 | m_PrefabInstance: {fileID: 0} 1190 | m_PrefabAsset: {fileID: 0} 1191 | m_GameObject: {fileID: 8222758812794198261} 1192 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 1193 | m_LocalPosition: {x: 0, y: 0, z: 0} 1194 | m_LocalScale: {x: 1, y: 1, z: 1} 1195 | m_Children: 1196 | - {fileID: 8222758812013391092} 1197 | - {fileID: 8222758812569321479} 1198 | - {fileID: 8222758811628033696} 1199 | - {fileID: 8222758811980263349} 1200 | - {fileID: 8222758811675023343} 1201 | m_Father: {fileID: 8222758811039587033} 1202 | m_RootOrder: 0 1203 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 1204 | -------------------------------------------------------------------------------- /Examples/Teleportation.unity: -------------------------------------------------------------------------------- 1 | %YAML 1.1 2 | %TAG !u! tag:unity3d.com,2011: 3 | --- !u!29 &1 4 | OcclusionCullingSettings: 5 | m_ObjectHideFlags: 0 6 | serializedVersion: 2 7 | m_OcclusionBakeSettings: 8 | smallestOccluder: 5 9 | smallestHole: 0.25 10 | backfaceThreshold: 100 11 | m_SceneGUID: 00000000000000000000000000000000 12 | m_OcclusionCullingData: {fileID: 0} 13 | --- !u!104 &2 14 | RenderSettings: 15 | m_ObjectHideFlags: 0 16 | serializedVersion: 9 17 | m_Fog: 0 18 | m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} 19 | m_FogMode: 3 20 | m_FogDensity: 0.01 21 | m_LinearFogStart: 0 22 | m_LinearFogEnd: 300 23 | m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} 24 | m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} 25 | m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} 26 | m_AmbientIntensity: 1 27 | m_AmbientMode: 0 28 | m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} 29 | m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} 30 | m_HaloStrength: 0.5 31 | m_FlareStrength: 1 32 | m_FlareFadeSpeed: 3 33 | m_HaloTexture: {fileID: 0} 34 | m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} 35 | m_DefaultReflectionMode: 0 36 | m_DefaultReflectionResolution: 128 37 | m_ReflectionBounces: 1 38 | m_ReflectionIntensity: 1 39 | m_CustomReflection: {fileID: 0} 40 | m_Sun: {fileID: 0} 41 | m_IndirectSpecularColor: {r: 0.18028378, g: 0.22571412, b: 0.30692285, a: 1} 42 | m_UseRadianceAmbientProbe: 0 43 | --- !u!157 &3 44 | LightmapSettings: 45 | m_ObjectHideFlags: 0 46 | serializedVersion: 12 47 | m_GIWorkflowMode: 1 48 | m_GISettings: 49 | serializedVersion: 2 50 | m_BounceScale: 1 51 | m_IndirectOutputScale: 1 52 | m_AlbedoBoost: 1 53 | m_EnvironmentLightingMode: 0 54 | m_EnableBakedLightmaps: 1 55 | m_EnableRealtimeLightmaps: 0 56 | m_LightmapEditorSettings: 57 | serializedVersion: 12 58 | m_Resolution: 2 59 | m_BakeResolution: 40 60 | m_AtlasSize: 1024 61 | m_AO: 0 62 | m_AOMaxDistance: 1 63 | m_CompAOExponent: 1 64 | m_CompAOExponentDirect: 0 65 | m_ExtractAmbientOcclusion: 0 66 | m_Padding: 2 67 | m_LightmapParameters: {fileID: 0} 68 | m_LightmapsBakeMode: 1 69 | m_TextureCompression: 1 70 | m_FinalGather: 0 71 | m_FinalGatherFiltering: 1 72 | m_FinalGatherRayCount: 256 73 | m_ReflectionCompression: 2 74 | m_MixedBakeMode: 2 75 | m_BakeBackend: 1 76 | m_PVRSampling: 1 77 | m_PVRDirectSampleCount: 32 78 | m_PVRSampleCount: 512 79 | m_PVRBounces: 2 80 | m_PVREnvironmentSampleCount: 256 81 | m_PVREnvironmentReferencePointCount: 2048 82 | m_PVRFilteringMode: 1 83 | m_PVRDenoiserTypeDirect: 1 84 | m_PVRDenoiserTypeIndirect: 1 85 | m_PVRDenoiserTypeAO: 1 86 | m_PVRFilterTypeDirect: 0 87 | m_PVRFilterTypeIndirect: 0 88 | m_PVRFilterTypeAO: 0 89 | m_PVREnvironmentMIS: 1 90 | m_PVRCulling: 1 91 | m_PVRFilteringGaussRadiusDirect: 1 92 | m_PVRFilteringGaussRadiusIndirect: 5 93 | m_PVRFilteringGaussRadiusAO: 2 94 | m_PVRFilteringAtrousPositionSigmaDirect: 0.5 95 | m_PVRFilteringAtrousPositionSigmaIndirect: 2 96 | m_PVRFilteringAtrousPositionSigmaAO: 1 97 | m_ExportTrainingData: 0 98 | m_TrainingDataDestination: TrainingData 99 | m_LightProbeSampleCountMultiplier: 4 100 | m_LightingDataAsset: {fileID: 112000000, guid: 34ba8439c70b48a4ab52645a8ad6751a, type: 2} 101 | m_LightingSettings: {fileID: 4890085278179872738, guid: 24bcb098e8e908d4993b301783830cda, type: 2} 102 | --- !u!196 &4 103 | NavMeshSettings: 104 | serializedVersion: 2 105 | m_ObjectHideFlags: 0 106 | m_BuildSettings: 107 | serializedVersion: 2 108 | agentTypeID: 0 109 | agentRadius: 0.5 110 | agentHeight: 2 111 | agentSlope: 45 112 | agentClimb: 0.4 113 | ledgeDropHeight: 0 114 | maxJumpAcrossDistance: 0 115 | minRegionArea: 2 116 | manualCellSize: 0 117 | cellSize: 0.16666667 118 | manualTileSize: 0 119 | tileSize: 256 120 | accuratePlacement: 0 121 | maxJobWorkers: 0 122 | preserveTilesOutsideBounds: 0 123 | debug: 124 | m_Flags: 0 125 | m_NavMeshData: {fileID: 0} 126 | --- !u!1 &302041138 127 | GameObject: 128 | m_ObjectHideFlags: 0 129 | m_CorrespondingSourceObject: {fileID: 0} 130 | m_PrefabInstance: {fileID: 0} 131 | m_PrefabAsset: {fileID: 0} 132 | serializedVersion: 6 133 | m_Component: 134 | - component: {fileID: 302041143} 135 | - component: {fileID: 302041142} 136 | - component: {fileID: 302041141} 137 | - component: {fileID: 302041140} 138 | - component: {fileID: 302041139} 139 | m_Layer: 0 140 | m_Name: Plane 141 | m_TagString: Untagged 142 | m_Icon: {fileID: 0} 143 | m_NavMeshLayer: 0 144 | m_StaticEditorFlags: 0 145 | m_IsActive: 1 146 | --- !u!114 &302041139 147 | MonoBehaviour: 148 | m_ObjectHideFlags: 0 149 | m_CorrespondingSourceObject: {fileID: 0} 150 | m_PrefabInstance: {fileID: 0} 151 | m_PrefabAsset: {fileID: 0} 152 | m_GameObject: {fileID: 302041138} 153 | m_Enabled: 1 154 | m_EditorHideFlags: 0 155 | m_Script: {fileID: 11500000, guid: ab6fec8b98c29db49a8bd45b31138de9, type: 3} 156 | m_Name: 157 | m_EditorClassIdentifier: 158 | m_InteractionManager: {fileID: 1804690186} 159 | m_Colliders: [] 160 | m_InteractionLayerMask: 161 | serializedVersion: 2 162 | m_Bits: 4294967295 163 | m_OnFirstHoverEnter: 164 | m_PersistentCalls: 165 | m_Calls: [] 166 | m_OnHoverEnter: 167 | m_PersistentCalls: 168 | m_Calls: [] 169 | m_OnHoverExit: 170 | m_PersistentCalls: 171 | m_Calls: [] 172 | m_OnLastHoverExit: 173 | m_PersistentCalls: 174 | m_Calls: [] 175 | m_OnSelectEnter: 176 | m_PersistentCalls: 177 | m_Calls: [] 178 | m_OnSelectExit: 179 | m_PersistentCalls: 180 | m_Calls: [] 181 | m_OnActivate: 182 | m_PersistentCalls: 183 | m_Calls: [] 184 | m_OnDeactivate: 185 | m_PersistentCalls: 186 | m_Calls: [] 187 | m_CustomReticle: {fileID: 3209949727319733722, guid: e047ba1b23c2e8f4f9e0b0ec210b40b1, type: 3} 188 | m_TeleportationProvider: {fileID: 0} 189 | m_MatchOrientation: 0 190 | m_TeleportTrigger: 0 191 | --- !u!64 &302041140 192 | MeshCollider: 193 | m_ObjectHideFlags: 0 194 | m_CorrespondingSourceObject: {fileID: 0} 195 | m_PrefabInstance: {fileID: 0} 196 | m_PrefabAsset: {fileID: 0} 197 | m_GameObject: {fileID: 302041138} 198 | m_Material: {fileID: 0} 199 | m_IsTrigger: 0 200 | m_Enabled: 1 201 | serializedVersion: 4 202 | m_Convex: 0 203 | m_CookingOptions: 30 204 | m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} 205 | --- !u!23 &302041141 206 | MeshRenderer: 207 | m_ObjectHideFlags: 0 208 | m_CorrespondingSourceObject: {fileID: 0} 209 | m_PrefabInstance: {fileID: 0} 210 | m_PrefabAsset: {fileID: 0} 211 | m_GameObject: {fileID: 302041138} 212 | m_Enabled: 1 213 | m_CastShadows: 1 214 | m_ReceiveShadows: 1 215 | m_DynamicOccludee: 1 216 | m_MotionVectors: 1 217 | m_LightProbeUsage: 1 218 | m_ReflectionProbeUsage: 1 219 | m_RayTracingMode: 2 220 | m_RayTraceProcedural: 0 221 | m_RenderingLayerMask: 1 222 | m_RendererPriority: 0 223 | m_Materials: 224 | - {fileID: 2100000, guid: ce92ac05e2d6df94fb6983cd63724b4d, type: 2} 225 | m_StaticBatchInfo: 226 | firstSubMesh: 0 227 | subMeshCount: 0 228 | m_StaticBatchRoot: {fileID: 0} 229 | m_ProbeAnchor: {fileID: 0} 230 | m_LightProbeVolumeOverride: {fileID: 0} 231 | m_ScaleInLightmap: 1 232 | m_ReceiveGI: 1 233 | m_PreserveUVs: 0 234 | m_IgnoreNormalsForChartDetection: 0 235 | m_ImportantGI: 0 236 | m_StitchLightmapSeams: 1 237 | m_SelectedEditorRenderState: 3 238 | m_MinimumChartSize: 4 239 | m_AutoUVMaxDistance: 0.5 240 | m_AutoUVMaxAngle: 89 241 | m_LightmapParameters: {fileID: 0} 242 | m_SortingLayerID: 0 243 | m_SortingLayer: 0 244 | m_SortingOrder: 0 245 | m_AdditionalVertexStreams: {fileID: 0} 246 | --- !u!33 &302041142 247 | MeshFilter: 248 | m_ObjectHideFlags: 0 249 | m_CorrespondingSourceObject: {fileID: 0} 250 | m_PrefabInstance: {fileID: 0} 251 | m_PrefabAsset: {fileID: 0} 252 | m_GameObject: {fileID: 302041138} 253 | m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} 254 | --- !u!4 &302041143 255 | Transform: 256 | m_ObjectHideFlags: 0 257 | m_CorrespondingSourceObject: {fileID: 0} 258 | m_PrefabInstance: {fileID: 0} 259 | m_PrefabAsset: {fileID: 0} 260 | m_GameObject: {fileID: 302041138} 261 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 262 | m_LocalPosition: {x: 7.36942, y: 6.594094, z: -7.883108} 263 | m_LocalScale: {x: 1, y: 1, z: 1} 264 | m_Children: [] 265 | m_Father: {fileID: 1975913150} 266 | m_RootOrder: 0 267 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 268 | --- !u!1 &328459311 269 | GameObject: 270 | m_ObjectHideFlags: 0 271 | m_CorrespondingSourceObject: {fileID: 0} 272 | m_PrefabInstance: {fileID: 0} 273 | m_PrefabAsset: {fileID: 0} 274 | serializedVersion: 6 275 | m_Component: 276 | - component: {fileID: 328459312} 277 | - component: {fileID: 328459315} 278 | - component: {fileID: 328459314} 279 | - component: {fileID: 328459313} 280 | m_Layer: 0 281 | m_Name: Cube (1) 282 | m_TagString: Untagged 283 | m_Icon: {fileID: 0} 284 | m_NavMeshLayer: 0 285 | m_StaticEditorFlags: 0 286 | m_IsActive: 1 287 | --- !u!4 &328459312 288 | Transform: 289 | m_ObjectHideFlags: 0 290 | m_CorrespondingSourceObject: {fileID: 0} 291 | m_PrefabInstance: {fileID: 0} 292 | m_PrefabAsset: {fileID: 0} 293 | m_GameObject: {fileID: 328459311} 294 | m_LocalRotation: {x: -0, y: -0.3152307, z: -0, w: 0.9490151} 295 | m_LocalPosition: {x: -0.02, y: 0.5, z: -4.01} 296 | m_LocalScale: {x: 1, y: 1, z: 1} 297 | m_Children: [] 298 | m_Father: {fileID: 1597575027} 299 | m_RootOrder: 1 300 | m_LocalEulerAnglesHint: {x: 0, y: -36.749, z: 0} 301 | --- !u!65 &328459313 302 | BoxCollider: 303 | m_ObjectHideFlags: 0 304 | m_CorrespondingSourceObject: {fileID: 0} 305 | m_PrefabInstance: {fileID: 0} 306 | m_PrefabAsset: {fileID: 0} 307 | m_GameObject: {fileID: 328459311} 308 | m_Material: {fileID: 0} 309 | m_IsTrigger: 0 310 | m_Enabled: 1 311 | serializedVersion: 2 312 | m_Size: {x: 1, y: 1, z: 1} 313 | m_Center: {x: 0, y: 0, z: 0} 314 | --- !u!23 &328459314 315 | MeshRenderer: 316 | m_ObjectHideFlags: 0 317 | m_CorrespondingSourceObject: {fileID: 0} 318 | m_PrefabInstance: {fileID: 0} 319 | m_PrefabAsset: {fileID: 0} 320 | m_GameObject: {fileID: 328459311} 321 | m_Enabled: 1 322 | m_CastShadows: 1 323 | m_ReceiveShadows: 1 324 | m_DynamicOccludee: 1 325 | m_MotionVectors: 1 326 | m_LightProbeUsage: 1 327 | m_ReflectionProbeUsage: 1 328 | m_RayTracingMode: 2 329 | m_RayTraceProcedural: 0 330 | m_RenderingLayerMask: 1 331 | m_RendererPriority: 0 332 | m_Materials: 333 | - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} 334 | m_StaticBatchInfo: 335 | firstSubMesh: 0 336 | subMeshCount: 0 337 | m_StaticBatchRoot: {fileID: 0} 338 | m_ProbeAnchor: {fileID: 0} 339 | m_LightProbeVolumeOverride: {fileID: 0} 340 | m_ScaleInLightmap: 1 341 | m_ReceiveGI: 1 342 | m_PreserveUVs: 0 343 | m_IgnoreNormalsForChartDetection: 0 344 | m_ImportantGI: 0 345 | m_StitchLightmapSeams: 1 346 | m_SelectedEditorRenderState: 3 347 | m_MinimumChartSize: 4 348 | m_AutoUVMaxDistance: 0.5 349 | m_AutoUVMaxAngle: 89 350 | m_LightmapParameters: {fileID: 0} 351 | m_SortingLayerID: 0 352 | m_SortingLayer: 0 353 | m_SortingOrder: 0 354 | m_AdditionalVertexStreams: {fileID: 0} 355 | --- !u!33 &328459315 356 | MeshFilter: 357 | m_ObjectHideFlags: 0 358 | m_CorrespondingSourceObject: {fileID: 0} 359 | m_PrefabInstance: {fileID: 0} 360 | m_PrefabAsset: {fileID: 0} 361 | m_GameObject: {fileID: 328459311} 362 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 363 | --- !u!1 &344851406 364 | GameObject: 365 | m_ObjectHideFlags: 0 366 | m_CorrespondingSourceObject: {fileID: 0} 367 | m_PrefabInstance: {fileID: 0} 368 | m_PrefabAsset: {fileID: 0} 369 | serializedVersion: 6 370 | m_Component: 371 | - component: {fileID: 344851407} 372 | - component: {fileID: 344851410} 373 | - component: {fileID: 344851409} 374 | - component: {fileID: 344851408} 375 | m_Layer: 0 376 | m_Name: Cube (8) 377 | m_TagString: Untagged 378 | m_Icon: {fileID: 0} 379 | m_NavMeshLayer: 0 380 | m_StaticEditorFlags: 0 381 | m_IsActive: 1 382 | --- !u!4 &344851407 383 | Transform: 384 | m_ObjectHideFlags: 0 385 | m_CorrespondingSourceObject: {fileID: 0} 386 | m_PrefabInstance: {fileID: 0} 387 | m_PrefabAsset: {fileID: 0} 388 | m_GameObject: {fileID: 344851406} 389 | m_LocalRotation: {x: -0, y: 0.3651959, z: -0, w: 0.93093073} 390 | m_LocalPosition: {x: 9.494058, y: 1.26, z: 13.698827} 391 | m_LocalScale: {x: 1, y: 1, z: 1} 392 | m_Children: [] 393 | m_Father: {fileID: 1597575027} 394 | m_RootOrder: 8 395 | m_LocalEulerAnglesHint: {x: 0, y: 42.839, z: 0} 396 | --- !u!65 &344851408 397 | BoxCollider: 398 | m_ObjectHideFlags: 0 399 | m_CorrespondingSourceObject: {fileID: 0} 400 | m_PrefabInstance: {fileID: 0} 401 | m_PrefabAsset: {fileID: 0} 402 | m_GameObject: {fileID: 344851406} 403 | m_Material: {fileID: 0} 404 | m_IsTrigger: 0 405 | m_Enabled: 1 406 | serializedVersion: 2 407 | m_Size: {x: 1, y: 1, z: 1} 408 | m_Center: {x: 0, y: 0, z: 0} 409 | --- !u!23 &344851409 410 | MeshRenderer: 411 | m_ObjectHideFlags: 0 412 | m_CorrespondingSourceObject: {fileID: 0} 413 | m_PrefabInstance: {fileID: 0} 414 | m_PrefabAsset: {fileID: 0} 415 | m_GameObject: {fileID: 344851406} 416 | m_Enabled: 1 417 | m_CastShadows: 1 418 | m_ReceiveShadows: 1 419 | m_DynamicOccludee: 1 420 | m_MotionVectors: 1 421 | m_LightProbeUsage: 1 422 | m_ReflectionProbeUsage: 1 423 | m_RayTracingMode: 2 424 | m_RayTraceProcedural: 0 425 | m_RenderingLayerMask: 1 426 | m_RendererPriority: 0 427 | m_Materials: 428 | - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} 429 | m_StaticBatchInfo: 430 | firstSubMesh: 0 431 | subMeshCount: 0 432 | m_StaticBatchRoot: {fileID: 0} 433 | m_ProbeAnchor: {fileID: 0} 434 | m_LightProbeVolumeOverride: {fileID: 0} 435 | m_ScaleInLightmap: 1 436 | m_ReceiveGI: 1 437 | m_PreserveUVs: 0 438 | m_IgnoreNormalsForChartDetection: 0 439 | m_ImportantGI: 0 440 | m_StitchLightmapSeams: 1 441 | m_SelectedEditorRenderState: 3 442 | m_MinimumChartSize: 4 443 | m_AutoUVMaxDistance: 0.5 444 | m_AutoUVMaxAngle: 89 445 | m_LightmapParameters: {fileID: 0} 446 | m_SortingLayerID: 0 447 | m_SortingLayer: 0 448 | m_SortingOrder: 0 449 | m_AdditionalVertexStreams: {fileID: 0} 450 | --- !u!33 &344851410 451 | MeshFilter: 452 | m_ObjectHideFlags: 0 453 | m_CorrespondingSourceObject: {fileID: 0} 454 | m_PrefabInstance: {fileID: 0} 455 | m_PrefabAsset: {fileID: 0} 456 | m_GameObject: {fileID: 344851406} 457 | m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} 458 | --- !u!1 &357229894 459 | GameObject: 460 | m_ObjectHideFlags: 0 461 | m_CorrespondingSourceObject: {fileID: 0} 462 | m_PrefabInstance: {fileID: 0} 463 | m_PrefabAsset: {fileID: 0} 464 | serializedVersion: 6 465 | m_Component: 466 | - component: {fileID: 357229895} 467 | - component: {fileID: 357229898} 468 | - component: {fileID: 357229897} 469 | - component: {fileID: 357229896} 470 | m_Layer: 0 471 | m_Name: Cube (4) 472 | m_TagString: Untagged 473 | m_Icon: {fileID: 0} 474 | m_NavMeshLayer: 0 475 | m_StaticEditorFlags: 0 476 | m_IsActive: 1 477 | --- !u!4 &357229895 478 | Transform: 479 | m_ObjectHideFlags: 0 480 | m_CorrespondingSourceObject: {fileID: 0} 481 | m_PrefabInstance: {fileID: 0} 482 | m_PrefabAsset: {fileID: 0} 483 | m_GameObject: {fileID: 357229894} 484 | m_LocalRotation: {x: -0, y: -0.3152307, z: -0, w: 0.9490151} 485 | m_LocalPosition: {x: -6.85, y: 0.5, z: 15.8} 486 | m_LocalScale: {x: 1, y: 0.5, z: 1} 487 | m_Children: [] 488 | m_Father: {fileID: 1597575027} 489 | m_RootOrder: 4 490 | m_LocalEulerAnglesHint: {x: 0, y: -36.749, z: 0} 491 | --- !u!65 &357229896 492 | BoxCollider: 493 | m_ObjectHideFlags: 0 494 | m_CorrespondingSourceObject: {fileID: 0} 495 | m_PrefabInstance: {fileID: 0} 496 | m_PrefabAsset: {fileID: 0} 497 | m_GameObject: {fileID: 357229894} 498 | m_Material: {fileID: 0} 499 | m_IsTrigger: 0 500 | m_Enabled: 1 501 | serializedVersion: 2 502 | m_Size: {x: 1, y: 1, z: 1} 503 | m_Center: {x: 0, y: 0, z: 0} 504 | --- !u!23 &357229897 505 | MeshRenderer: 506 | m_ObjectHideFlags: 0 507 | m_CorrespondingSourceObject: {fileID: 0} 508 | m_PrefabInstance: {fileID: 0} 509 | m_PrefabAsset: {fileID: 0} 510 | m_GameObject: {fileID: 357229894} 511 | m_Enabled: 1 512 | m_CastShadows: 1 513 | m_ReceiveShadows: 1 514 | m_DynamicOccludee: 1 515 | m_MotionVectors: 1 516 | m_LightProbeUsage: 1 517 | m_ReflectionProbeUsage: 1 518 | m_RayTracingMode: 2 519 | m_RayTraceProcedural: 0 520 | m_RenderingLayerMask: 1 521 | m_RendererPriority: 0 522 | m_Materials: 523 | - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} 524 | m_StaticBatchInfo: 525 | firstSubMesh: 0 526 | subMeshCount: 0 527 | m_StaticBatchRoot: {fileID: 0} 528 | m_ProbeAnchor: {fileID: 0} 529 | m_LightProbeVolumeOverride: {fileID: 0} 530 | m_ScaleInLightmap: 1 531 | m_ReceiveGI: 1 532 | m_PreserveUVs: 0 533 | m_IgnoreNormalsForChartDetection: 0 534 | m_ImportantGI: 0 535 | m_StitchLightmapSeams: 1 536 | m_SelectedEditorRenderState: 3 537 | m_MinimumChartSize: 4 538 | m_AutoUVMaxDistance: 0.5 539 | m_AutoUVMaxAngle: 89 540 | m_LightmapParameters: {fileID: 0} 541 | m_SortingLayerID: 0 542 | m_SortingLayer: 0 543 | m_SortingOrder: 0 544 | m_AdditionalVertexStreams: {fileID: 0} 545 | --- !u!33 &357229898 546 | MeshFilter: 547 | m_ObjectHideFlags: 0 548 | m_CorrespondingSourceObject: {fileID: 0} 549 | m_PrefabInstance: {fileID: 0} 550 | m_PrefabAsset: {fileID: 0} 551 | m_GameObject: {fileID: 357229894} 552 | m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} 553 | --- !u!1 &786540787 554 | GameObject: 555 | m_ObjectHideFlags: 0 556 | m_CorrespondingSourceObject: {fileID: 0} 557 | m_PrefabInstance: {fileID: 0} 558 | m_PrefabAsset: {fileID: 0} 559 | serializedVersion: 6 560 | m_Component: 561 | - component: {fileID: 786540792} 562 | - component: {fileID: 786540791} 563 | - component: {fileID: 786540790} 564 | - component: {fileID: 786540789} 565 | - component: {fileID: 786540788} 566 | m_Layer: 0 567 | m_Name: Plane (2) 568 | m_TagString: Untagged 569 | m_Icon: {fileID: 0} 570 | m_NavMeshLayer: 0 571 | m_StaticEditorFlags: 0 572 | m_IsActive: 1 573 | --- !u!114 &786540788 574 | MonoBehaviour: 575 | m_ObjectHideFlags: 0 576 | m_CorrespondingSourceObject: {fileID: 0} 577 | m_PrefabInstance: {fileID: 0} 578 | m_PrefabAsset: {fileID: 0} 579 | m_GameObject: {fileID: 786540787} 580 | m_Enabled: 1 581 | m_EditorHideFlags: 0 582 | m_Script: {fileID: 11500000, guid: ab6fec8b98c29db49a8bd45b31138de9, type: 3} 583 | m_Name: 584 | m_EditorClassIdentifier: 585 | m_InteractionManager: {fileID: 1804690186} 586 | m_Colliders: [] 587 | m_InteractionLayerMask: 588 | serializedVersion: 2 589 | m_Bits: 4294967295 590 | m_OnFirstHoverEnter: 591 | m_PersistentCalls: 592 | m_Calls: [] 593 | m_OnHoverEnter: 594 | m_PersistentCalls: 595 | m_Calls: [] 596 | m_OnHoverExit: 597 | m_PersistentCalls: 598 | m_Calls: [] 599 | m_OnLastHoverExit: 600 | m_PersistentCalls: 601 | m_Calls: [] 602 | m_OnSelectEnter: 603 | m_PersistentCalls: 604 | m_Calls: [] 605 | m_OnSelectExit: 606 | m_PersistentCalls: 607 | m_Calls: [] 608 | m_OnActivate: 609 | m_PersistentCalls: 610 | m_Calls: [] 611 | m_OnDeactivate: 612 | m_PersistentCalls: 613 | m_Calls: [] 614 | m_CustomReticle: {fileID: 3209949727319733722, guid: e047ba1b23c2e8f4f9e0b0ec210b40b1, type: 3} 615 | m_TeleportationProvider: {fileID: 0} 616 | m_MatchOrientation: 0 617 | m_TeleportTrigger: 0 618 | --- !u!64 &786540789 619 | MeshCollider: 620 | m_ObjectHideFlags: 0 621 | m_CorrespondingSourceObject: {fileID: 0} 622 | m_PrefabInstance: {fileID: 0} 623 | m_PrefabAsset: {fileID: 0} 624 | m_GameObject: {fileID: 786540787} 625 | m_Material: {fileID: 0} 626 | m_IsTrigger: 0 627 | m_Enabled: 1 628 | serializedVersion: 4 629 | m_Convex: 0 630 | m_CookingOptions: 30 631 | m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} 632 | --- !u!23 &786540790 633 | MeshRenderer: 634 | m_ObjectHideFlags: 0 635 | m_CorrespondingSourceObject: {fileID: 0} 636 | m_PrefabInstance: {fileID: 0} 637 | m_PrefabAsset: {fileID: 0} 638 | m_GameObject: {fileID: 786540787} 639 | m_Enabled: 1 640 | m_CastShadows: 1 641 | m_ReceiveShadows: 1 642 | m_DynamicOccludee: 1 643 | m_MotionVectors: 1 644 | m_LightProbeUsage: 1 645 | m_ReflectionProbeUsage: 1 646 | m_RayTracingMode: 2 647 | m_RayTraceProcedural: 0 648 | m_RenderingLayerMask: 1 649 | m_RendererPriority: 0 650 | m_Materials: 651 | - {fileID: 2100000, guid: ce92ac05e2d6df94fb6983cd63724b4d, type: 2} 652 | m_StaticBatchInfo: 653 | firstSubMesh: 0 654 | subMeshCount: 0 655 | m_StaticBatchRoot: {fileID: 0} 656 | m_ProbeAnchor: {fileID: 0} 657 | m_LightProbeVolumeOverride: {fileID: 0} 658 | m_ScaleInLightmap: 1 659 | m_ReceiveGI: 1 660 | m_PreserveUVs: 0 661 | m_IgnoreNormalsForChartDetection: 0 662 | m_ImportantGI: 0 663 | m_StitchLightmapSeams: 1 664 | m_SelectedEditorRenderState: 3 665 | m_MinimumChartSize: 4 666 | m_AutoUVMaxDistance: 0.5 667 | m_AutoUVMaxAngle: 89 668 | m_LightmapParameters: {fileID: 0} 669 | m_SortingLayerID: 0 670 | m_SortingLayer: 0 671 | m_SortingOrder: 0 672 | m_AdditionalVertexStreams: {fileID: 0} 673 | --- !u!33 &786540791 674 | MeshFilter: 675 | m_ObjectHideFlags: 0 676 | m_CorrespondingSourceObject: {fileID: 0} 677 | m_PrefabInstance: {fileID: 0} 678 | m_PrefabAsset: {fileID: 0} 679 | m_GameObject: {fileID: 786540787} 680 | m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} 681 | --- !u!4 &786540792 682 | Transform: 683 | m_ObjectHideFlags: 0 684 | m_CorrespondingSourceObject: {fileID: 0} 685 | m_PrefabInstance: {fileID: 0} 686 | m_PrefabAsset: {fileID: 0} 687 | m_GameObject: {fileID: 786540787} 688 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 689 | m_LocalPosition: {x: 13.88942, y: 6.594094, z: 4.5968914} 690 | m_LocalScale: {x: 1, y: 1, z: 1} 691 | m_Children: [] 692 | m_Father: {fileID: 1975913150} 693 | m_RootOrder: 2 694 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 695 | --- !u!1 &965098432 696 | GameObject: 697 | m_ObjectHideFlags: 0 698 | m_CorrespondingSourceObject: {fileID: 0} 699 | m_PrefabInstance: {fileID: 0} 700 | m_PrefabAsset: {fileID: 0} 701 | serializedVersion: 6 702 | m_Component: 703 | - component: {fileID: 965098433} 704 | - component: {fileID: 965098436} 705 | - component: {fileID: 965098435} 706 | - component: {fileID: 965098434} 707 | m_Layer: 0 708 | m_Name: Cube (2) 709 | m_TagString: Untagged 710 | m_Icon: {fileID: 0} 711 | m_NavMeshLayer: 0 712 | m_StaticEditorFlags: 0 713 | m_IsActive: 1 714 | --- !u!4 &965098433 715 | Transform: 716 | m_ObjectHideFlags: 0 717 | m_CorrespondingSourceObject: {fileID: 0} 718 | m_PrefabInstance: {fileID: 0} 719 | m_PrefabAsset: {fileID: 0} 720 | m_GameObject: {fileID: 965098432} 721 | m_LocalRotation: {x: -0, y: -0.3152307, z: -0, w: 0.9490151} 722 | m_LocalPosition: {x: 0.65, y: 1.5, z: -3.89} 723 | m_LocalScale: {x: 1, y: 1, z: 1} 724 | m_Children: [] 725 | m_Father: {fileID: 1597575027} 726 | m_RootOrder: 2 727 | m_LocalEulerAnglesHint: {x: 0, y: -36.749, z: 0} 728 | --- !u!65 &965098434 729 | BoxCollider: 730 | m_ObjectHideFlags: 0 731 | m_CorrespondingSourceObject: {fileID: 0} 732 | m_PrefabInstance: {fileID: 0} 733 | m_PrefabAsset: {fileID: 0} 734 | m_GameObject: {fileID: 965098432} 735 | m_Material: {fileID: 0} 736 | m_IsTrigger: 0 737 | m_Enabled: 1 738 | serializedVersion: 2 739 | m_Size: {x: 1, y: 1, z: 1} 740 | m_Center: {x: 0, y: 0, z: 0} 741 | --- !u!23 &965098435 742 | MeshRenderer: 743 | m_ObjectHideFlags: 0 744 | m_CorrespondingSourceObject: {fileID: 0} 745 | m_PrefabInstance: {fileID: 0} 746 | m_PrefabAsset: {fileID: 0} 747 | m_GameObject: {fileID: 965098432} 748 | m_Enabled: 1 749 | m_CastShadows: 1 750 | m_ReceiveShadows: 1 751 | m_DynamicOccludee: 1 752 | m_MotionVectors: 1 753 | m_LightProbeUsage: 1 754 | m_ReflectionProbeUsage: 1 755 | m_RayTracingMode: 2 756 | m_RayTraceProcedural: 0 757 | m_RenderingLayerMask: 1 758 | m_RendererPriority: 0 759 | m_Materials: 760 | - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} 761 | m_StaticBatchInfo: 762 | firstSubMesh: 0 763 | subMeshCount: 0 764 | m_StaticBatchRoot: {fileID: 0} 765 | m_ProbeAnchor: {fileID: 0} 766 | m_LightProbeVolumeOverride: {fileID: 0} 767 | m_ScaleInLightmap: 1 768 | m_ReceiveGI: 1 769 | m_PreserveUVs: 0 770 | m_IgnoreNormalsForChartDetection: 0 771 | m_ImportantGI: 0 772 | m_StitchLightmapSeams: 1 773 | m_SelectedEditorRenderState: 3 774 | m_MinimumChartSize: 4 775 | m_AutoUVMaxDistance: 0.5 776 | m_AutoUVMaxAngle: 89 777 | m_LightmapParameters: {fileID: 0} 778 | m_SortingLayerID: 0 779 | m_SortingLayer: 0 780 | m_SortingOrder: 0 781 | m_AdditionalVertexStreams: {fileID: 0} 782 | --- !u!33 &965098436 783 | MeshFilter: 784 | m_ObjectHideFlags: 0 785 | m_CorrespondingSourceObject: {fileID: 0} 786 | m_PrefabInstance: {fileID: 0} 787 | m_PrefabAsset: {fileID: 0} 788 | m_GameObject: {fileID: 965098432} 789 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 790 | --- !u!1 &1144100916 791 | GameObject: 792 | m_ObjectHideFlags: 0 793 | m_CorrespondingSourceObject: {fileID: 0} 794 | m_PrefabInstance: {fileID: 0} 795 | m_PrefabAsset: {fileID: 0} 796 | serializedVersion: 6 797 | m_Component: 798 | - component: {fileID: 1144100917} 799 | - component: {fileID: 1144100920} 800 | - component: {fileID: 1144100919} 801 | - component: {fileID: 1144100918} 802 | m_Layer: 0 803 | m_Name: Cube 804 | m_TagString: Untagged 805 | m_Icon: {fileID: 0} 806 | m_NavMeshLayer: 0 807 | m_StaticEditorFlags: 0 808 | m_IsActive: 1 809 | --- !u!4 &1144100917 810 | Transform: 811 | m_ObjectHideFlags: 0 812 | m_CorrespondingSourceObject: {fileID: 0} 813 | m_PrefabInstance: {fileID: 0} 814 | m_PrefabAsset: {fileID: 0} 815 | m_GameObject: {fileID: 1144100916} 816 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 817 | m_LocalPosition: {x: 1.3240538, y: 0.5, z: -3.5743732} 818 | m_LocalScale: {x: 1, y: 1, z: 1} 819 | m_Children: [] 820 | m_Father: {fileID: 1597575027} 821 | m_RootOrder: 0 822 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 823 | --- !u!65 &1144100918 824 | BoxCollider: 825 | m_ObjectHideFlags: 0 826 | m_CorrespondingSourceObject: {fileID: 0} 827 | m_PrefabInstance: {fileID: 0} 828 | m_PrefabAsset: {fileID: 0} 829 | m_GameObject: {fileID: 1144100916} 830 | m_Material: {fileID: 0} 831 | m_IsTrigger: 0 832 | m_Enabled: 1 833 | serializedVersion: 2 834 | m_Size: {x: 1, y: 1, z: 1} 835 | m_Center: {x: 0, y: 0, z: 0} 836 | --- !u!23 &1144100919 837 | MeshRenderer: 838 | m_ObjectHideFlags: 0 839 | m_CorrespondingSourceObject: {fileID: 0} 840 | m_PrefabInstance: {fileID: 0} 841 | m_PrefabAsset: {fileID: 0} 842 | m_GameObject: {fileID: 1144100916} 843 | m_Enabled: 1 844 | m_CastShadows: 1 845 | m_ReceiveShadows: 1 846 | m_DynamicOccludee: 1 847 | m_MotionVectors: 1 848 | m_LightProbeUsage: 1 849 | m_ReflectionProbeUsage: 1 850 | m_RayTracingMode: 2 851 | m_RayTraceProcedural: 0 852 | m_RenderingLayerMask: 1 853 | m_RendererPriority: 0 854 | m_Materials: 855 | - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} 856 | m_StaticBatchInfo: 857 | firstSubMesh: 0 858 | subMeshCount: 0 859 | m_StaticBatchRoot: {fileID: 0} 860 | m_ProbeAnchor: {fileID: 0} 861 | m_LightProbeVolumeOverride: {fileID: 0} 862 | m_ScaleInLightmap: 1 863 | m_ReceiveGI: 1 864 | m_PreserveUVs: 0 865 | m_IgnoreNormalsForChartDetection: 0 866 | m_ImportantGI: 0 867 | m_StitchLightmapSeams: 1 868 | m_SelectedEditorRenderState: 3 869 | m_MinimumChartSize: 4 870 | m_AutoUVMaxDistance: 0.5 871 | m_AutoUVMaxAngle: 89 872 | m_LightmapParameters: {fileID: 0} 873 | m_SortingLayerID: 0 874 | m_SortingLayer: 0 875 | m_SortingOrder: 0 876 | m_AdditionalVertexStreams: {fileID: 0} 877 | --- !u!33 &1144100920 878 | MeshFilter: 879 | m_ObjectHideFlags: 0 880 | m_CorrespondingSourceObject: {fileID: 0} 881 | m_PrefabInstance: {fileID: 0} 882 | m_PrefabAsset: {fileID: 0} 883 | m_GameObject: {fileID: 1144100916} 884 | m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} 885 | --- !u!1 &1227259669 886 | GameObject: 887 | m_ObjectHideFlags: 0 888 | m_CorrespondingSourceObject: {fileID: 0} 889 | m_PrefabInstance: {fileID: 0} 890 | m_PrefabAsset: {fileID: 0} 891 | serializedVersion: 6 892 | m_Component: 893 | - component: {fileID: 1227259671} 894 | - component: {fileID: 1227259670} 895 | m_Layer: 0 896 | m_Name: Directional Light 897 | m_TagString: Untagged 898 | m_Icon: {fileID: 0} 899 | m_NavMeshLayer: 0 900 | m_StaticEditorFlags: 0 901 | m_IsActive: 1 902 | --- !u!108 &1227259670 903 | Light: 904 | m_ObjectHideFlags: 0 905 | m_CorrespondingSourceObject: {fileID: 0} 906 | m_PrefabInstance: {fileID: 0} 907 | m_PrefabAsset: {fileID: 0} 908 | m_GameObject: {fileID: 1227259669} 909 | m_Enabled: 1 910 | serializedVersion: 10 911 | m_Type: 1 912 | m_Shape: 0 913 | m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} 914 | m_Intensity: 1 915 | m_Range: 10 916 | m_SpotAngle: 30 917 | m_InnerSpotAngle: 21.80208 918 | m_CookieSize: 10 919 | m_Shadows: 920 | m_Type: 2 921 | m_Resolution: -1 922 | m_CustomResolution: -1 923 | m_Strength: 1 924 | m_Bias: 0.05 925 | m_NormalBias: 0.4 926 | m_NearPlane: 0.2 927 | m_CullingMatrixOverride: 928 | e00: 1 929 | e01: 0 930 | e02: 0 931 | e03: 0 932 | e10: 0 933 | e11: 1 934 | e12: 0 935 | e13: 0 936 | e20: 0 937 | e21: 0 938 | e22: 1 939 | e23: 0 940 | e30: 0 941 | e31: 0 942 | e32: 0 943 | e33: 1 944 | m_UseCullingMatrixOverride: 0 945 | m_Cookie: {fileID: 0} 946 | m_DrawHalo: 0 947 | m_Flare: {fileID: 0} 948 | m_RenderMode: 0 949 | m_CullingMask: 950 | serializedVersion: 2 951 | m_Bits: 4294967295 952 | m_RenderingLayerMask: 1 953 | m_Lightmapping: 1 954 | m_LightShadowCasterMode: 0 955 | m_AreaSize: {x: 1, y: 1} 956 | m_BounceIntensity: 1 957 | m_ColorTemperature: 6570 958 | m_UseColorTemperature: 0 959 | m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} 960 | m_UseBoundingSphereOverride: 0 961 | m_ShadowRadius: 0 962 | m_ShadowAngle: 0 963 | --- !u!4 &1227259671 964 | Transform: 965 | m_ObjectHideFlags: 0 966 | m_CorrespondingSourceObject: {fileID: 0} 967 | m_PrefabInstance: {fileID: 0} 968 | m_PrefabAsset: {fileID: 0} 969 | m_GameObject: {fileID: 1227259669} 970 | m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} 971 | m_LocalPosition: {x: 0, y: 3, z: 0} 972 | m_LocalScale: {x: 1, y: 1, z: 1} 973 | m_Children: [] 974 | m_Father: {fileID: 0} 975 | m_RootOrder: 0 976 | m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} 977 | --- !u!1 &1374395882 978 | GameObject: 979 | m_ObjectHideFlags: 0 980 | m_CorrespondingSourceObject: {fileID: 0} 981 | m_PrefabInstance: {fileID: 0} 982 | m_PrefabAsset: {fileID: 0} 983 | serializedVersion: 6 984 | m_Component: 985 | - component: {fileID: 1374395883} 986 | - component: {fileID: 1374395886} 987 | - component: {fileID: 1374395885} 988 | - component: {fileID: 1374395884} 989 | m_Layer: 0 990 | m_Name: Cube (7) 991 | m_TagString: Untagged 992 | m_Icon: {fileID: 0} 993 | m_NavMeshLayer: 0 994 | m_StaticEditorFlags: 0 995 | m_IsActive: 1 996 | --- !u!4 &1374395883 997 | Transform: 998 | m_ObjectHideFlags: 0 999 | m_CorrespondingSourceObject: {fileID: 0} 1000 | m_PrefabInstance: {fileID: 0} 1001 | m_PrefabAsset: {fileID: 0} 1002 | m_GameObject: {fileID: 1374395882} 1003 | m_LocalRotation: {x: -0, y: 0.3651959, z: -0, w: 0.93093073} 1004 | m_LocalPosition: {x: 9.0566845, y: 0.5, z: 14.220366} 1005 | m_LocalScale: {x: 1, y: 1, z: 1} 1006 | m_Children: [] 1007 | m_Father: {fileID: 1597575027} 1008 | m_RootOrder: 7 1009 | m_LocalEulerAnglesHint: {x: 0, y: 42.839, z: 0} 1010 | --- !u!65 &1374395884 1011 | BoxCollider: 1012 | m_ObjectHideFlags: 0 1013 | m_CorrespondingSourceObject: {fileID: 0} 1014 | m_PrefabInstance: {fileID: 0} 1015 | m_PrefabAsset: {fileID: 0} 1016 | m_GameObject: {fileID: 1374395882} 1017 | m_Material: {fileID: 0} 1018 | m_IsTrigger: 0 1019 | m_Enabled: 1 1020 | serializedVersion: 2 1021 | m_Size: {x: 1, y: 1, z: 1} 1022 | m_Center: {x: 0, y: 0, z: 0} 1023 | --- !u!23 &1374395885 1024 | MeshRenderer: 1025 | m_ObjectHideFlags: 0 1026 | m_CorrespondingSourceObject: {fileID: 0} 1027 | m_PrefabInstance: {fileID: 0} 1028 | m_PrefabAsset: {fileID: 0} 1029 | m_GameObject: {fileID: 1374395882} 1030 | m_Enabled: 1 1031 | m_CastShadows: 1 1032 | m_ReceiveShadows: 1 1033 | m_DynamicOccludee: 1 1034 | m_MotionVectors: 1 1035 | m_LightProbeUsage: 1 1036 | m_ReflectionProbeUsage: 1 1037 | m_RayTracingMode: 2 1038 | m_RayTraceProcedural: 0 1039 | m_RenderingLayerMask: 1 1040 | m_RendererPriority: 0 1041 | m_Materials: 1042 | - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} 1043 | m_StaticBatchInfo: 1044 | firstSubMesh: 0 1045 | subMeshCount: 0 1046 | m_StaticBatchRoot: {fileID: 0} 1047 | m_ProbeAnchor: {fileID: 0} 1048 | m_LightProbeVolumeOverride: {fileID: 0} 1049 | m_ScaleInLightmap: 1 1050 | m_ReceiveGI: 1 1051 | m_PreserveUVs: 0 1052 | m_IgnoreNormalsForChartDetection: 0 1053 | m_ImportantGI: 0 1054 | m_StitchLightmapSeams: 1 1055 | m_SelectedEditorRenderState: 3 1056 | m_MinimumChartSize: 4 1057 | m_AutoUVMaxDistance: 0.5 1058 | m_AutoUVMaxAngle: 89 1059 | m_LightmapParameters: {fileID: 0} 1060 | m_SortingLayerID: 0 1061 | m_SortingLayer: 0 1062 | m_SortingOrder: 0 1063 | m_AdditionalVertexStreams: {fileID: 0} 1064 | --- !u!33 &1374395886 1065 | MeshFilter: 1066 | m_ObjectHideFlags: 0 1067 | m_CorrespondingSourceObject: {fileID: 0} 1068 | m_PrefabInstance: {fileID: 0} 1069 | m_PrefabAsset: {fileID: 0} 1070 | m_GameObject: {fileID: 1374395882} 1071 | m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} 1072 | --- !u!1 &1444081022 1073 | GameObject: 1074 | m_ObjectHideFlags: 0 1075 | m_CorrespondingSourceObject: {fileID: 0} 1076 | m_PrefabInstance: {fileID: 0} 1077 | m_PrefabAsset: {fileID: 0} 1078 | serializedVersion: 6 1079 | m_Component: 1080 | - component: {fileID: 1444081023} 1081 | - component: {fileID: 1444081026} 1082 | - component: {fileID: 1444081025} 1083 | - component: {fileID: 1444081024} 1084 | m_Layer: 0 1085 | m_Name: Cube (3) 1086 | m_TagString: Untagged 1087 | m_Icon: {fileID: 0} 1088 | m_NavMeshLayer: 0 1089 | m_StaticEditorFlags: 0 1090 | m_IsActive: 1 1091 | --- !u!4 &1444081023 1092 | Transform: 1093 | m_ObjectHideFlags: 0 1094 | m_CorrespondingSourceObject: {fileID: 0} 1095 | m_PrefabInstance: {fileID: 0} 1096 | m_PrefabAsset: {fileID: 0} 1097 | m_GameObject: {fileID: 1444081022} 1098 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 1099 | m_LocalPosition: {x: -5.505946, y: 0.5, z: 16.235626} 1100 | m_LocalScale: {x: 1, y: 0.5, z: 1} 1101 | m_Children: [] 1102 | m_Father: {fileID: 1597575027} 1103 | m_RootOrder: 3 1104 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 1105 | --- !u!65 &1444081024 1106 | BoxCollider: 1107 | m_ObjectHideFlags: 0 1108 | m_CorrespondingSourceObject: {fileID: 0} 1109 | m_PrefabInstance: {fileID: 0} 1110 | m_PrefabAsset: {fileID: 0} 1111 | m_GameObject: {fileID: 1444081022} 1112 | m_Material: {fileID: 0} 1113 | m_IsTrigger: 0 1114 | m_Enabled: 1 1115 | serializedVersion: 2 1116 | m_Size: {x: 1, y: 1, z: 1} 1117 | m_Center: {x: 0, y: 0, z: 0} 1118 | --- !u!23 &1444081025 1119 | MeshRenderer: 1120 | m_ObjectHideFlags: 0 1121 | m_CorrespondingSourceObject: {fileID: 0} 1122 | m_PrefabInstance: {fileID: 0} 1123 | m_PrefabAsset: {fileID: 0} 1124 | m_GameObject: {fileID: 1444081022} 1125 | m_Enabled: 1 1126 | m_CastShadows: 1 1127 | m_ReceiveShadows: 1 1128 | m_DynamicOccludee: 1 1129 | m_MotionVectors: 1 1130 | m_LightProbeUsage: 1 1131 | m_ReflectionProbeUsage: 1 1132 | m_RayTracingMode: 2 1133 | m_RayTraceProcedural: 0 1134 | m_RenderingLayerMask: 1 1135 | m_RendererPriority: 0 1136 | m_Materials: 1137 | - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} 1138 | m_StaticBatchInfo: 1139 | firstSubMesh: 0 1140 | subMeshCount: 0 1141 | m_StaticBatchRoot: {fileID: 0} 1142 | m_ProbeAnchor: {fileID: 0} 1143 | m_LightProbeVolumeOverride: {fileID: 0} 1144 | m_ScaleInLightmap: 1 1145 | m_ReceiveGI: 1 1146 | m_PreserveUVs: 0 1147 | m_IgnoreNormalsForChartDetection: 0 1148 | m_ImportantGI: 0 1149 | m_StitchLightmapSeams: 1 1150 | m_SelectedEditorRenderState: 3 1151 | m_MinimumChartSize: 4 1152 | m_AutoUVMaxDistance: 0.5 1153 | m_AutoUVMaxAngle: 89 1154 | m_LightmapParameters: {fileID: 0} 1155 | m_SortingLayerID: 0 1156 | m_SortingLayer: 0 1157 | m_SortingOrder: 0 1158 | m_AdditionalVertexStreams: {fileID: 0} 1159 | --- !u!33 &1444081026 1160 | MeshFilter: 1161 | m_ObjectHideFlags: 0 1162 | m_CorrespondingSourceObject: {fileID: 0} 1163 | m_PrefabInstance: {fileID: 0} 1164 | m_PrefabAsset: {fileID: 0} 1165 | m_GameObject: {fileID: 1444081022} 1166 | m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} 1167 | --- !u!1 &1458261601 1168 | GameObject: 1169 | m_ObjectHideFlags: 0 1170 | m_CorrespondingSourceObject: {fileID: 0} 1171 | m_PrefabInstance: {fileID: 0} 1172 | m_PrefabAsset: {fileID: 0} 1173 | serializedVersion: 6 1174 | m_Component: 1175 | - component: {fileID: 1458261602} 1176 | - component: {fileID: 1458261605} 1177 | - component: {fileID: 1458261604} 1178 | - component: {fileID: 1458261603} 1179 | m_Layer: 0 1180 | m_Name: Cube (5) 1181 | m_TagString: Untagged 1182 | m_Icon: {fileID: 0} 1183 | m_NavMeshLayer: 0 1184 | m_StaticEditorFlags: 0 1185 | m_IsActive: 1 1186 | --- !u!4 &1458261602 1187 | Transform: 1188 | m_ObjectHideFlags: 0 1189 | m_CorrespondingSourceObject: {fileID: 0} 1190 | m_PrefabInstance: {fileID: 0} 1191 | m_PrefabAsset: {fileID: 0} 1192 | m_GameObject: {fileID: 1458261601} 1193 | m_LocalRotation: {x: -0, y: -0.3152307, z: -0, w: 0.9490151} 1194 | m_LocalPosition: {x: -6.18, y: 1.5, z: 15.92} 1195 | m_LocalScale: {x: 1, y: 0.5, z: 1} 1196 | m_Children: [] 1197 | m_Father: {fileID: 1597575027} 1198 | m_RootOrder: 5 1199 | m_LocalEulerAnglesHint: {x: 0, y: -36.749, z: 0} 1200 | --- !u!65 &1458261603 1201 | BoxCollider: 1202 | m_ObjectHideFlags: 0 1203 | m_CorrespondingSourceObject: {fileID: 0} 1204 | m_PrefabInstance: {fileID: 0} 1205 | m_PrefabAsset: {fileID: 0} 1206 | m_GameObject: {fileID: 1458261601} 1207 | m_Material: {fileID: 0} 1208 | m_IsTrigger: 0 1209 | m_Enabled: 1 1210 | serializedVersion: 2 1211 | m_Size: {x: 1, y: 1, z: 1} 1212 | m_Center: {x: 0, y: 0, z: 0} 1213 | --- !u!23 &1458261604 1214 | MeshRenderer: 1215 | m_ObjectHideFlags: 0 1216 | m_CorrespondingSourceObject: {fileID: 0} 1217 | m_PrefabInstance: {fileID: 0} 1218 | m_PrefabAsset: {fileID: 0} 1219 | m_GameObject: {fileID: 1458261601} 1220 | m_Enabled: 1 1221 | m_CastShadows: 1 1222 | m_ReceiveShadows: 1 1223 | m_DynamicOccludee: 1 1224 | m_MotionVectors: 1 1225 | m_LightProbeUsage: 1 1226 | m_ReflectionProbeUsage: 1 1227 | m_RayTracingMode: 2 1228 | m_RayTraceProcedural: 0 1229 | m_RenderingLayerMask: 1 1230 | m_RendererPriority: 0 1231 | m_Materials: 1232 | - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} 1233 | m_StaticBatchInfo: 1234 | firstSubMesh: 0 1235 | subMeshCount: 0 1236 | m_StaticBatchRoot: {fileID: 0} 1237 | m_ProbeAnchor: {fileID: 0} 1238 | m_LightProbeVolumeOverride: {fileID: 0} 1239 | m_ScaleInLightmap: 1 1240 | m_ReceiveGI: 1 1241 | m_PreserveUVs: 0 1242 | m_IgnoreNormalsForChartDetection: 0 1243 | m_ImportantGI: 0 1244 | m_StitchLightmapSeams: 1 1245 | m_SelectedEditorRenderState: 3 1246 | m_MinimumChartSize: 4 1247 | m_AutoUVMaxDistance: 0.5 1248 | m_AutoUVMaxAngle: 89 1249 | m_LightmapParameters: {fileID: 0} 1250 | m_SortingLayerID: 0 1251 | m_SortingLayer: 0 1252 | m_SortingOrder: 0 1253 | m_AdditionalVertexStreams: {fileID: 0} 1254 | --- !u!33 &1458261605 1255 | MeshFilter: 1256 | m_ObjectHideFlags: 0 1257 | m_CorrespondingSourceObject: {fileID: 0} 1258 | m_PrefabInstance: {fileID: 0} 1259 | m_PrefabAsset: {fileID: 0} 1260 | m_GameObject: {fileID: 1458261601} 1261 | m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} 1262 | --- !u!1 &1597575026 1263 | GameObject: 1264 | m_ObjectHideFlags: 0 1265 | m_CorrespondingSourceObject: {fileID: 0} 1266 | m_PrefabInstance: {fileID: 0} 1267 | m_PrefabAsset: {fileID: 0} 1268 | serializedVersion: 6 1269 | m_Component: 1270 | - component: {fileID: 1597575027} 1271 | m_Layer: 0 1272 | m_Name: Props 1273 | m_TagString: Untagged 1274 | m_Icon: {fileID: 0} 1275 | m_NavMeshLayer: 0 1276 | m_StaticEditorFlags: 0 1277 | m_IsActive: 1 1278 | --- !u!4 &1597575027 1279 | Transform: 1280 | m_ObjectHideFlags: 0 1281 | m_CorrespondingSourceObject: {fileID: 0} 1282 | m_PrefabInstance: {fileID: 0} 1283 | m_PrefabAsset: {fileID: 0} 1284 | m_GameObject: {fileID: 1597575026} 1285 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 1286 | m_LocalPosition: {x: 0, y: 0, z: 0} 1287 | m_LocalScale: {x: 1, y: 1, z: 1} 1288 | m_Children: 1289 | - {fileID: 1144100917} 1290 | - {fileID: 328459312} 1291 | - {fileID: 965098433} 1292 | - {fileID: 1444081023} 1293 | - {fileID: 357229895} 1294 | - {fileID: 1458261602} 1295 | - {fileID: 1865294280} 1296 | - {fileID: 1374395883} 1297 | - {fileID: 344851407} 1298 | m_Father: {fileID: 0} 1299 | m_RootOrder: 5 1300 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 1301 | --- !u!1 &1750765581 1302 | GameObject: 1303 | m_ObjectHideFlags: 0 1304 | m_CorrespondingSourceObject: {fileID: 0} 1305 | m_PrefabInstance: {fileID: 0} 1306 | m_PrefabAsset: {fileID: 0} 1307 | serializedVersion: 6 1308 | m_Component: 1309 | - component: {fileID: 1750765586} 1310 | - component: {fileID: 1750765585} 1311 | - component: {fileID: 1750765584} 1312 | - component: {fileID: 1750765583} 1313 | - component: {fileID: 1750765582} 1314 | m_Layer: 0 1315 | m_Name: Plane (1) 1316 | m_TagString: Untagged 1317 | m_Icon: {fileID: 0} 1318 | m_NavMeshLayer: 0 1319 | m_StaticEditorFlags: 0 1320 | m_IsActive: 1 1321 | --- !u!114 &1750765582 1322 | MonoBehaviour: 1323 | m_ObjectHideFlags: 0 1324 | m_CorrespondingSourceObject: {fileID: 0} 1325 | m_PrefabInstance: {fileID: 0} 1326 | m_PrefabAsset: {fileID: 0} 1327 | m_GameObject: {fileID: 1750765581} 1328 | m_Enabled: 1 1329 | m_EditorHideFlags: 0 1330 | m_Script: {fileID: 11500000, guid: ab6fec8b98c29db49a8bd45b31138de9, type: 3} 1331 | m_Name: 1332 | m_EditorClassIdentifier: 1333 | m_InteractionManager: {fileID: 1804690186} 1334 | m_Colliders: [] 1335 | m_InteractionLayerMask: 1336 | serializedVersion: 2 1337 | m_Bits: 4294967295 1338 | m_OnFirstHoverEnter: 1339 | m_PersistentCalls: 1340 | m_Calls: [] 1341 | m_OnHoverEnter: 1342 | m_PersistentCalls: 1343 | m_Calls: [] 1344 | m_OnHoverExit: 1345 | m_PersistentCalls: 1346 | m_Calls: [] 1347 | m_OnLastHoverExit: 1348 | m_PersistentCalls: 1349 | m_Calls: [] 1350 | m_OnSelectEnter: 1351 | m_PersistentCalls: 1352 | m_Calls: [] 1353 | m_OnSelectExit: 1354 | m_PersistentCalls: 1355 | m_Calls: [] 1356 | m_OnActivate: 1357 | m_PersistentCalls: 1358 | m_Calls: [] 1359 | m_OnDeactivate: 1360 | m_PersistentCalls: 1361 | m_Calls: [] 1362 | m_CustomReticle: {fileID: 3209949727319733722, guid: e047ba1b23c2e8f4f9e0b0ec210b40b1, type: 3} 1363 | m_TeleportationProvider: {fileID: 0} 1364 | m_MatchOrientation: 0 1365 | m_TeleportTrigger: 0 1366 | --- !u!64 &1750765583 1367 | MeshCollider: 1368 | m_ObjectHideFlags: 0 1369 | m_CorrespondingSourceObject: {fileID: 0} 1370 | m_PrefabInstance: {fileID: 0} 1371 | m_PrefabAsset: {fileID: 0} 1372 | m_GameObject: {fileID: 1750765581} 1373 | m_Material: {fileID: 0} 1374 | m_IsTrigger: 0 1375 | m_Enabled: 1 1376 | serializedVersion: 4 1377 | m_Convex: 0 1378 | m_CookingOptions: 30 1379 | m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} 1380 | --- !u!23 &1750765584 1381 | MeshRenderer: 1382 | m_ObjectHideFlags: 0 1383 | m_CorrespondingSourceObject: {fileID: 0} 1384 | m_PrefabInstance: {fileID: 0} 1385 | m_PrefabAsset: {fileID: 0} 1386 | m_GameObject: {fileID: 1750765581} 1387 | m_Enabled: 1 1388 | m_CastShadows: 1 1389 | m_ReceiveShadows: 1 1390 | m_DynamicOccludee: 1 1391 | m_MotionVectors: 1 1392 | m_LightProbeUsage: 1 1393 | m_ReflectionProbeUsage: 1 1394 | m_RayTracingMode: 2 1395 | m_RayTraceProcedural: 0 1396 | m_RenderingLayerMask: 1 1397 | m_RendererPriority: 0 1398 | m_Materials: 1399 | - {fileID: 2100000, guid: ce92ac05e2d6df94fb6983cd63724b4d, type: 2} 1400 | m_StaticBatchInfo: 1401 | firstSubMesh: 0 1402 | subMeshCount: 0 1403 | m_StaticBatchRoot: {fileID: 0} 1404 | m_ProbeAnchor: {fileID: 0} 1405 | m_LightProbeVolumeOverride: {fileID: 0} 1406 | m_ScaleInLightmap: 1 1407 | m_ReceiveGI: 1 1408 | m_PreserveUVs: 0 1409 | m_IgnoreNormalsForChartDetection: 0 1410 | m_ImportantGI: 0 1411 | m_StitchLightmapSeams: 1 1412 | m_SelectedEditorRenderState: 3 1413 | m_MinimumChartSize: 4 1414 | m_AutoUVMaxDistance: 0.5 1415 | m_AutoUVMaxAngle: 89 1416 | m_LightmapParameters: {fileID: 0} 1417 | m_SortingLayerID: 0 1418 | m_SortingLayer: 0 1419 | m_SortingOrder: 0 1420 | m_AdditionalVertexStreams: {fileID: 0} 1421 | --- !u!33 &1750765585 1422 | MeshFilter: 1423 | m_ObjectHideFlags: 0 1424 | m_CorrespondingSourceObject: {fileID: 0} 1425 | m_PrefabInstance: {fileID: 0} 1426 | m_PrefabAsset: {fileID: 0} 1427 | m_GameObject: {fileID: 1750765581} 1428 | m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} 1429 | --- !u!4 &1750765586 1430 | Transform: 1431 | m_ObjectHideFlags: 0 1432 | m_CorrespondingSourceObject: {fileID: 0} 1433 | m_PrefabInstance: {fileID: 0} 1434 | m_PrefabAsset: {fileID: 0} 1435 | m_GameObject: {fileID: 1750765581} 1436 | m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} 1437 | m_LocalPosition: {x: 1.5494199, y: 6.594094, z: 4.916892} 1438 | m_LocalScale: {x: 1, y: 1, z: 1} 1439 | m_Children: [] 1440 | m_Father: {fileID: 1975913150} 1441 | m_RootOrder: 1 1442 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 1443 | --- !u!1001 &1758657253 1444 | PrefabInstance: 1445 | m_ObjectHideFlags: 0 1446 | serializedVersion: 2 1447 | m_Modification: 1448 | m_TransformParent: {fileID: 0} 1449 | m_Modifications: 1450 | - target: {fileID: 5412932732703030786, guid: 68f1edc8c4ad7914089d078421b1a0e9, type: 3} 1451 | propertyPath: m_InteractionManager 1452 | value: 1453 | objectReference: {fileID: 1804690186} 1454 | - target: {fileID: 7482773458272464135, guid: 68f1edc8c4ad7914089d078421b1a0e9, type: 3} 1455 | propertyPath: m_InteractionManager 1456 | value: 1457 | objectReference: {fileID: 1804690186} 1458 | - target: {fileID: 8222758811039587033, guid: 68f1edc8c4ad7914089d078421b1a0e9, type: 3} 1459 | propertyPath: m_LocalPosition.x 1460 | value: 0 1461 | objectReference: {fileID: 0} 1462 | - target: {fileID: 8222758811039587033, guid: 68f1edc8c4ad7914089d078421b1a0e9, type: 3} 1463 | propertyPath: m_LocalPosition.y 1464 | value: 0 1465 | objectReference: {fileID: 0} 1466 | - target: {fileID: 8222758811039587033, guid: 68f1edc8c4ad7914089d078421b1a0e9, type: 3} 1467 | propertyPath: m_LocalPosition.z 1468 | value: 0 1469 | objectReference: {fileID: 0} 1470 | - target: {fileID: 8222758811039587033, guid: 68f1edc8c4ad7914089d078421b1a0e9, type: 3} 1471 | propertyPath: m_LocalRotation.x 1472 | value: 0 1473 | objectReference: {fileID: 0} 1474 | - target: {fileID: 8222758811039587033, guid: 68f1edc8c4ad7914089d078421b1a0e9, type: 3} 1475 | propertyPath: m_LocalRotation.y 1476 | value: 0 1477 | objectReference: {fileID: 0} 1478 | - target: {fileID: 8222758811039587033, guid: 68f1edc8c4ad7914089d078421b1a0e9, type: 3} 1479 | propertyPath: m_LocalRotation.z 1480 | value: 0 1481 | objectReference: {fileID: 0} 1482 | - target: {fileID: 8222758811039587033, guid: 68f1edc8c4ad7914089d078421b1a0e9, type: 3} 1483 | propertyPath: m_LocalRotation.w 1484 | value: 1 1485 | objectReference: {fileID: 0} 1486 | - target: {fileID: 8222758811039587033, guid: 68f1edc8c4ad7914089d078421b1a0e9, type: 3} 1487 | propertyPath: m_RootOrder 1488 | value: 1 1489 | objectReference: {fileID: 0} 1490 | - target: {fileID: 8222758811039587033, guid: 68f1edc8c4ad7914089d078421b1a0e9, type: 3} 1491 | propertyPath: m_LocalEulerAnglesHint.x 1492 | value: 0 1493 | objectReference: {fileID: 0} 1494 | - target: {fileID: 8222758811039587033, guid: 68f1edc8c4ad7914089d078421b1a0e9, type: 3} 1495 | propertyPath: m_LocalEulerAnglesHint.y 1496 | value: 0 1497 | objectReference: {fileID: 0} 1498 | - target: {fileID: 8222758811039587033, guid: 68f1edc8c4ad7914089d078421b1a0e9, type: 3} 1499 | propertyPath: m_LocalEulerAnglesHint.z 1500 | value: 0 1501 | objectReference: {fileID: 0} 1502 | - target: {fileID: 8222758811039587035, guid: 68f1edc8c4ad7914089d078421b1a0e9, type: 3} 1503 | propertyPath: m_Name 1504 | value: XR Teleportation Demo Rig 1505 | objectReference: {fileID: 0} 1506 | m_RemovedComponents: [] 1507 | m_SourcePrefab: {fileID: 100100000, guid: 68f1edc8c4ad7914089d078421b1a0e9, type: 3} 1508 | --- !u!1 &1804690185 1509 | GameObject: 1510 | m_ObjectHideFlags: 0 1511 | m_CorrespondingSourceObject: {fileID: 0} 1512 | m_PrefabInstance: {fileID: 0} 1513 | m_PrefabAsset: {fileID: 0} 1514 | serializedVersion: 6 1515 | m_Component: 1516 | - component: {fileID: 1804690187} 1517 | - component: {fileID: 1804690186} 1518 | m_Layer: 0 1519 | m_Name: XR Interaction Manager 1520 | m_TagString: Untagged 1521 | m_Icon: {fileID: 0} 1522 | m_NavMeshLayer: 0 1523 | m_StaticEditorFlags: 0 1524 | m_IsActive: 1 1525 | --- !u!114 &1804690186 1526 | MonoBehaviour: 1527 | m_ObjectHideFlags: 0 1528 | m_CorrespondingSourceObject: {fileID: 0} 1529 | m_PrefabInstance: {fileID: 0} 1530 | m_PrefabAsset: {fileID: 0} 1531 | m_GameObject: {fileID: 1804690185} 1532 | m_Enabled: 1 1533 | m_EditorHideFlags: 0 1534 | m_Script: {fileID: 11500000, guid: 83e4e6cca11330d4088d729ab4fc9d9f, type: 3} 1535 | m_Name: 1536 | m_EditorClassIdentifier: 1537 | --- !u!4 &1804690187 1538 | Transform: 1539 | m_ObjectHideFlags: 0 1540 | m_CorrespondingSourceObject: {fileID: 0} 1541 | m_PrefabInstance: {fileID: 0} 1542 | m_PrefabAsset: {fileID: 0} 1543 | m_GameObject: {fileID: 1804690185} 1544 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 1545 | m_LocalPosition: {x: 0, y: 0, z: 0} 1546 | m_LocalScale: {x: 1, y: 1, z: 1} 1547 | m_Children: [] 1548 | m_Father: {fileID: 0} 1549 | m_RootOrder: 3 1550 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 1551 | --- !u!1 &1865294279 1552 | GameObject: 1553 | m_ObjectHideFlags: 0 1554 | m_CorrespondingSourceObject: {fileID: 0} 1555 | m_PrefabInstance: {fileID: 0} 1556 | m_PrefabAsset: {fileID: 0} 1557 | serializedVersion: 6 1558 | m_Component: 1559 | - component: {fileID: 1865294280} 1560 | - component: {fileID: 1865294283} 1561 | - component: {fileID: 1865294282} 1562 | - component: {fileID: 1865294281} 1563 | m_Layer: 0 1564 | m_Name: Cube (6) 1565 | m_TagString: Untagged 1566 | m_Icon: {fileID: 0} 1567 | m_NavMeshLayer: 0 1568 | m_StaticEditorFlags: 0 1569 | m_IsActive: 1 1570 | --- !u!4 &1865294280 1571 | Transform: 1572 | m_ObjectHideFlags: 0 1573 | m_CorrespondingSourceObject: {fileID: 0} 1574 | m_PrefabInstance: {fileID: 0} 1575 | m_PrefabAsset: {fileID: 0} 1576 | m_GameObject: {fileID: 1865294279} 1577 | m_LocalRotation: {x: -0, y: 0.64003426, z: -0, w: 0.76834637} 1578 | m_LocalPosition: {x: 10.103158, y: 0.5, z: 13.271078} 1579 | m_LocalScale: {x: 1, y: 1, z: 1} 1580 | m_Children: [] 1581 | m_Father: {fileID: 1597575027} 1582 | m_RootOrder: 6 1583 | m_LocalEulerAnglesHint: {x: 0, y: 79.589, z: 0} 1584 | --- !u!65 &1865294281 1585 | BoxCollider: 1586 | m_ObjectHideFlags: 0 1587 | m_CorrespondingSourceObject: {fileID: 0} 1588 | m_PrefabInstance: {fileID: 0} 1589 | m_PrefabAsset: {fileID: 0} 1590 | m_GameObject: {fileID: 1865294279} 1591 | m_Material: {fileID: 0} 1592 | m_IsTrigger: 0 1593 | m_Enabled: 1 1594 | serializedVersion: 2 1595 | m_Size: {x: 1, y: 1, z: 1} 1596 | m_Center: {x: 0, y: 0, z: 0} 1597 | --- !u!23 &1865294282 1598 | MeshRenderer: 1599 | m_ObjectHideFlags: 0 1600 | m_CorrespondingSourceObject: {fileID: 0} 1601 | m_PrefabInstance: {fileID: 0} 1602 | m_PrefabAsset: {fileID: 0} 1603 | m_GameObject: {fileID: 1865294279} 1604 | m_Enabled: 1 1605 | m_CastShadows: 1 1606 | m_ReceiveShadows: 1 1607 | m_DynamicOccludee: 1 1608 | m_MotionVectors: 1 1609 | m_LightProbeUsage: 1 1610 | m_ReflectionProbeUsage: 1 1611 | m_RayTracingMode: 2 1612 | m_RayTraceProcedural: 0 1613 | m_RenderingLayerMask: 1 1614 | m_RendererPriority: 0 1615 | m_Materials: 1616 | - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} 1617 | m_StaticBatchInfo: 1618 | firstSubMesh: 0 1619 | subMeshCount: 0 1620 | m_StaticBatchRoot: {fileID: 0} 1621 | m_ProbeAnchor: {fileID: 0} 1622 | m_LightProbeVolumeOverride: {fileID: 0} 1623 | m_ScaleInLightmap: 1 1624 | m_ReceiveGI: 1 1625 | m_PreserveUVs: 0 1626 | m_IgnoreNormalsForChartDetection: 0 1627 | m_ImportantGI: 0 1628 | m_StitchLightmapSeams: 1 1629 | m_SelectedEditorRenderState: 3 1630 | m_MinimumChartSize: 4 1631 | m_AutoUVMaxDistance: 0.5 1632 | m_AutoUVMaxAngle: 89 1633 | m_LightmapParameters: {fileID: 0} 1634 | m_SortingLayerID: 0 1635 | m_SortingLayer: 0 1636 | m_SortingOrder: 0 1637 | m_AdditionalVertexStreams: {fileID: 0} 1638 | --- !u!33 &1865294283 1639 | MeshFilter: 1640 | m_ObjectHideFlags: 0 1641 | m_CorrespondingSourceObject: {fileID: 0} 1642 | m_PrefabInstance: {fileID: 0} 1643 | m_PrefabAsset: {fileID: 0} 1644 | m_GameObject: {fileID: 1865294279} 1645 | m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} 1646 | --- !u!1 &1872325551 1647 | GameObject: 1648 | m_ObjectHideFlags: 0 1649 | m_CorrespondingSourceObject: {fileID: 0} 1650 | m_PrefabInstance: {fileID: 0} 1651 | m_PrefabAsset: {fileID: 0} 1652 | serializedVersion: 6 1653 | m_Component: 1654 | - component: {fileID: 1872325555} 1655 | - component: {fileID: 1872325554} 1656 | - component: {fileID: 1872325553} 1657 | - component: {fileID: 1872325552} 1658 | m_Layer: 0 1659 | m_Name: Locomotion System 1660 | m_TagString: Untagged 1661 | m_Icon: {fileID: 0} 1662 | m_NavMeshLayer: 0 1663 | m_StaticEditorFlags: 0 1664 | m_IsActive: 1 1665 | --- !u!114 &1872325552 1666 | MonoBehaviour: 1667 | m_ObjectHideFlags: 0 1668 | m_CorrespondingSourceObject: {fileID: 0} 1669 | m_PrefabInstance: {fileID: 0} 1670 | m_PrefabAsset: {fileID: 0} 1671 | m_GameObject: {fileID: 1872325551} 1672 | m_Enabled: 1 1673 | m_EditorHideFlags: 0 1674 | m_Script: {fileID: 11500000, guid: dc4f2c0214c9b494fa7eb5b8b2c02885, type: 3} 1675 | m_Name: 1676 | m_EditorClassIdentifier: 1677 | m_System: {fileID: 1872325554} 1678 | m_TurnUsage: 0 1679 | m_Controllers: [] 1680 | m_TurnAmount: 45 1681 | m_DebounceTime: 0.5 1682 | m_DeadZone: 0.75 1683 | --- !u!114 &1872325553 1684 | MonoBehaviour: 1685 | m_ObjectHideFlags: 0 1686 | m_CorrespondingSourceObject: {fileID: 0} 1687 | m_PrefabInstance: {fileID: 0} 1688 | m_PrefabAsset: {fileID: 0} 1689 | m_GameObject: {fileID: 1872325551} 1690 | m_Enabled: 1 1691 | m_EditorHideFlags: 0 1692 | m_Script: {fileID: 11500000, guid: 01f69dc1cb084aa42b2f2f8cd87bc770, type: 3} 1693 | m_Name: 1694 | m_EditorClassIdentifier: 1695 | m_System: {fileID: 1872325554} 1696 | --- !u!114 &1872325554 1697 | MonoBehaviour: 1698 | m_ObjectHideFlags: 0 1699 | m_CorrespondingSourceObject: {fileID: 0} 1700 | m_PrefabInstance: {fileID: 0} 1701 | m_PrefabAsset: {fileID: 0} 1702 | m_GameObject: {fileID: 1872325551} 1703 | m_Enabled: 1 1704 | m_EditorHideFlags: 0 1705 | m_Script: {fileID: 11500000, guid: 03a5df2202a8b96488c744be3bd0c33e, type: 3} 1706 | m_Name: 1707 | m_EditorClassIdentifier: 1708 | m_Timeout: 10 1709 | m_XRRig: {fileID: 0} 1710 | --- !u!4 &1872325555 1711 | Transform: 1712 | m_ObjectHideFlags: 0 1713 | m_CorrespondingSourceObject: {fileID: 0} 1714 | m_PrefabInstance: {fileID: 0} 1715 | m_PrefabAsset: {fileID: 0} 1716 | m_GameObject: {fileID: 1872325551} 1717 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 1718 | m_LocalPosition: {x: 0, y: 0, z: 0} 1719 | m_LocalScale: {x: 1, y: 1, z: 1} 1720 | m_Children: [] 1721 | m_Father: {fileID: 0} 1722 | m_RootOrder: 2 1723 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 1724 | --- !u!1 &1975913149 1725 | GameObject: 1726 | m_ObjectHideFlags: 0 1727 | m_CorrespondingSourceObject: {fileID: 0} 1728 | m_PrefabInstance: {fileID: 0} 1729 | m_PrefabAsset: {fileID: 0} 1730 | serializedVersion: 6 1731 | m_Component: 1732 | - component: {fileID: 1975913150} 1733 | m_Layer: 0 1734 | m_Name: Targets 1735 | m_TagString: Untagged 1736 | m_Icon: {fileID: 0} 1737 | m_NavMeshLayer: 0 1738 | m_StaticEditorFlags: 0 1739 | m_IsActive: 1 1740 | --- !u!4 &1975913150 1741 | Transform: 1742 | m_ObjectHideFlags: 0 1743 | m_CorrespondingSourceObject: {fileID: 0} 1744 | m_PrefabInstance: {fileID: 0} 1745 | m_PrefabAsset: {fileID: 0} 1746 | m_GameObject: {fileID: 1975913149} 1747 | m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} 1748 | m_LocalPosition: {x: -7.36942, y: -6.594094, z: 7.883108} 1749 | m_LocalScale: {x: 1, y: 1, z: 1} 1750 | m_Children: 1751 | - {fileID: 302041143} 1752 | - {fileID: 1750765586} 1753 | - {fileID: 786540792} 1754 | m_Father: {fileID: 0} 1755 | m_RootOrder: 4 1756 | m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} 1757 | --------------------------------------------------------------------------------