From 2318776a13a40f49668832607bb440862c88928f Mon Sep 17 00:00:00 2001 From: Gustavo Quiroz Date: Fri, 29 Jan 2021 15:05:13 +0100 Subject: [PATCH 1/6] feat: the new unity input system is now supported (#78) feat: [XR_Setup_Device_Based] and [XR_Setup_Action_Based] were introduced fix: UI controllers can now be drawn on top of dropdowns --- Editor/Interaction/DirectInteractorEditor.cs | 4 + Editor/Interaction/RayInteractorEditor.cs | 6 +- .../PackageDependencies/InputSystemChecker.cs | 26 - .../XRInteractionPackageEnabler.cs | 3 + Editor/XRInteractionSceneSetup.cs | 32 +- Resources/[XR_Setup_Action_Based].prefab | 3362 +++++++++++++++++ Resources/[XR_Setup_Action_Based].prefab.meta | 7 + ....prefab => [XR_Setup_Device_Based].prefab} | 474 ++- ...ta => [XR_Setup_Device_Based].prefab.meta} | 0 ...ers.meta => Creator XR Input Actions.meta} | 2 +- Runtime/Creator XR Input Actions/.sample.json | 4 + .../XRI Creator Continuous Move.preset | 125 + .../XRI Creator Continuous Move.preset.meta | 8 + .../XRI Creator Continuous Turn.preset | 109 + .../XRI Creator Continuous Turn.preset.meta | 8 + .../XRI Creator Input Actions.inputactions | 846 +++++ ...RI Creator Input Actions.inputactions.meta | 14 + .../XRI Creator Left Controller.preset | 359 ++ .../XRI Creator Left Controller.preset.meta | 8 + .../XRI Creator PresetManager.preset | 127 + .../XRI Creator PresetManager.preset.meta | 8 + .../XRI Creator Right Controller.preset | 359 ++ .../XRI Creator Right Controller.preset.meta | 8 + .../XRI Creator Snap Turn.preset | 121 + .../XRI Creator Snap Turn.preset.meta | 8 + .../Innoactive.Creator.XRInteraction.asmdef | 3 +- Runtime/Interaction/Action-based.meta | 8 + .../ActionBasedControllerManager.cs | 790 ++++ .../ActionBasedControllerManager.cs.meta | 2 +- .../Action-based/LocomotionSchemeManager.cs | 549 +++ .../LocomotionSchemeManager.cs.meta | 11 + Runtime/Interaction/Device-based.meta | 8 + .../{ => Device-based}/ControllerManager.cs | 0 .../ControllerManager.cs.meta | 0 Runtime/Interaction/Interactables.meta | 8 + .../InteractableHighlighter.cs | 0 .../InteractableHighlighter.cs.meta | 0 .../{ => Interactables}/InteractableObject.cs | 0 .../InteractableObject.cs.meta | 0 Runtime/Interaction/Interactors.meta | 8 + .../{ => Interactors}/DirectInteractor.cs | 0 .../DirectInteractor.cs.meta | 0 .../{ => Interactors}/RayInteractor.cs | 0 .../{ => Interactors}/RayInteractor.cs.meta | 0 .../Interaction/{ => Interactors}/SnapZone.cs | 0 .../{ => Interactors}/SnapZone.cs.meta | 0 .../SnapZonePreviewDrawer.cs | 0 .../SnapZonePreviewDrawer.cs.meta | 0 48 files changed, 7238 insertions(+), 177 deletions(-) delete mode 100644 Editor/PackageDependencies/InputSystemChecker.cs create mode 100644 Resources/[XR_Setup_Action_Based].prefab create mode 100644 Resources/[XR_Setup_Action_Based].prefab.meta rename Resources/{[XR_Setup].prefab => [XR_Setup_Device_Based].prefab} (86%) rename Resources/{[XR_Setup].prefab.meta => [XR_Setup_Device_Based].prefab.meta} (100%) rename Runtime/{Interaction/Highlighters.meta => Creator XR Input Actions.meta} (77%) create mode 100644 Runtime/Creator XR Input Actions/.sample.json create mode 100644 Runtime/Creator XR Input Actions/XRI Creator Continuous Move.preset create mode 100644 Runtime/Creator XR Input Actions/XRI Creator Continuous Move.preset.meta create mode 100644 Runtime/Creator XR Input Actions/XRI Creator Continuous Turn.preset create mode 100644 Runtime/Creator XR Input Actions/XRI Creator Continuous Turn.preset.meta create mode 100644 Runtime/Creator XR Input Actions/XRI Creator Input Actions.inputactions create mode 100644 Runtime/Creator XR Input Actions/XRI Creator Input Actions.inputactions.meta create mode 100644 Runtime/Creator XR Input Actions/XRI Creator Left Controller.preset create mode 100644 Runtime/Creator XR Input Actions/XRI Creator Left Controller.preset.meta create mode 100644 Runtime/Creator XR Input Actions/XRI Creator PresetManager.preset create mode 100644 Runtime/Creator XR Input Actions/XRI Creator PresetManager.preset.meta create mode 100644 Runtime/Creator XR Input Actions/XRI Creator Right Controller.preset create mode 100644 Runtime/Creator XR Input Actions/XRI Creator Right Controller.preset.meta create mode 100644 Runtime/Creator XR Input Actions/XRI Creator Snap Turn.preset create mode 100644 Runtime/Creator XR Input Actions/XRI Creator Snap Turn.preset.meta create mode 100644 Runtime/Interaction/Action-based.meta create mode 100644 Runtime/Interaction/Action-based/ActionBasedControllerManager.cs rename Editor/PackageDependencies/InputSystemChecker.cs.meta => Runtime/Interaction/Action-based/ActionBasedControllerManager.cs.meta (83%) create mode 100644 Runtime/Interaction/Action-based/LocomotionSchemeManager.cs create mode 100644 Runtime/Interaction/Action-based/LocomotionSchemeManager.cs.meta create mode 100644 Runtime/Interaction/Device-based.meta rename Runtime/Interaction/{ => Device-based}/ControllerManager.cs (100%) rename Runtime/Interaction/{ => Device-based}/ControllerManager.cs.meta (100%) create mode 100644 Runtime/Interaction/Interactables.meta rename Runtime/Interaction/{Highlighters => Interactables}/InteractableHighlighter.cs (100%) rename Runtime/Interaction/{Highlighters => Interactables}/InteractableHighlighter.cs.meta (100%) rename Runtime/Interaction/{ => Interactables}/InteractableObject.cs (100%) rename Runtime/Interaction/{ => Interactables}/InteractableObject.cs.meta (100%) create mode 100644 Runtime/Interaction/Interactors.meta rename Runtime/Interaction/{ => Interactors}/DirectInteractor.cs (100%) rename Runtime/Interaction/{ => Interactors}/DirectInteractor.cs.meta (100%) rename Runtime/Interaction/{ => Interactors}/RayInteractor.cs (100%) rename Runtime/Interaction/{ => Interactors}/RayInteractor.cs.meta (100%) rename Runtime/Interaction/{ => Interactors}/SnapZone.cs (100%) rename Runtime/Interaction/{ => Interactors}/SnapZone.cs.meta (100%) rename Runtime/Interaction/{ => Interactors}/SnapZonePreviewDrawer.cs (100%) rename Runtime/Interaction/{ => Interactors}/SnapZonePreviewDrawer.cs.meta (100%) diff --git a/Editor/Interaction/DirectInteractorEditor.cs b/Editor/Interaction/DirectInteractorEditor.cs index 02eedb4..f307285 100644 --- a/Editor/Interaction/DirectInteractorEditor.cs +++ b/Editor/Interaction/DirectInteractorEditor.cs @@ -161,7 +161,11 @@ public override void OnInspectorGUI() { DirectInteractor interactor = (DirectInteractor)targetObject; +#if XRIT_0_10_OR_NEWER + if (interactor.GetComponent() == null && interactor.GetComponent() == null) +#else if (interactor.GetComponent() == null) +#endif { EditorGUILayout.HelpBox(Tooltips.MissingRequiredController, MessageType.Warning, true); break; diff --git a/Editor/Interaction/RayInteractorEditor.cs b/Editor/Interaction/RayInteractorEditor.cs index 51bb5f0..8b1cb37 100644 --- a/Editor/Interaction/RayInteractorEditor.cs +++ b/Editor/Interaction/RayInteractorEditor.cs @@ -243,9 +243,11 @@ public override void OnInspectorGUI() foreach (Object targetObject in serializedObject.targetObjects) { RayInteractor interactor = (RayInteractor)targetObject; - - +#if XRIT_0_10_OR_NEWER + if (interactor.GetComponent() == null && interactor.GetComponent() == null) +#else if (interactor.GetComponent() == null) +#endif { EditorGUILayout.HelpBox(Tooltips.MissingRequiredController, MessageType.Warning, true); break; diff --git a/Editor/PackageDependencies/InputSystemChecker.cs b/Editor/PackageDependencies/InputSystemChecker.cs deleted file mode 100644 index 9cc924c..0000000 --- a/Editor/PackageDependencies/InputSystemChecker.cs +++ /dev/null @@ -1,26 +0,0 @@ -#if ENABLE_INPUT_SYSTEM && !ENABLE_LEGACY_INPUT_MANAGER -using System; -using UnityEditor; -using Innoactive.CreatorEditor.UI.Wizard; - -namespace Innoactive.CreatorEditor.XRInteraction -{ - /// - /// Helper class for alerting a potential risk of the new Input System affecting all IMGUI interactions. - /// - [InitializeOnLoad] - public class InputSystemChecker - { - static InputSystemChecker() - { - CreatorSetupWizard.SetupFinished += OnCreatorSetupFinished; - } - - private static void OnCreatorSetupFinished(object sender, EventArgs e) - { - const string message = "The new InputSystem is enabled. This currently disables UIs created with IMGUI.\n\nTo fix this go to \nEdit > ProjectSettings... > Player > Other Settings and set \"Active Input Handling\" to \"Both\""; - EditorUtility.DisplayDialog("Warning", message, "Understood"); - } - } -} -#endif diff --git a/Editor/PackageDependencies/XRInteractionPackageEnabler.cs b/Editor/PackageDependencies/XRInteractionPackageEnabler.cs index d0eac22..58de5f1 100644 --- a/Editor/PackageDependencies/XRInteractionPackageEnabler.cs +++ b/Editor/PackageDependencies/XRInteractionPackageEnabler.cs @@ -8,6 +8,9 @@ public class XRInteractionPackageEnabler : Dependency /// public override string Package { get; } = "com.unity.xr.interaction.toolkit"; + /// + public override string[] Samples { get; } = { "Default Input Actions", "XR Device Simulator" }; + /// public override int Priority { get; } = 4; diff --git a/Editor/XRInteractionSceneSetup.cs b/Editor/XRInteractionSceneSetup.cs index 97922ec..7913296 100644 --- a/Editor/XRInteractionSceneSetup.cs +++ b/Editor/XRInteractionSceneSetup.cs @@ -1,6 +1,6 @@ -using Innoactive.CreatorEditor.BasicInteraction; +using UnityEditor; using UnityEngine; -using Object = UnityEngine.Object; +using Innoactive.CreatorEditor.BasicInteraction; namespace Innoactive.CreatorEditor.XRInteraction { @@ -9,6 +9,8 @@ namespace Innoactive.CreatorEditor.XRInteraction /// public class XRInteractionSceneSetup : InteractionFrameworkSceneSetup { + private const string Title = "Obsolete XR Ring detected"; + /// public override void Setup() { @@ -17,8 +19,32 @@ public override void Setup() private void SetupXR() { + DeleteStaticObject("[XR_Setup]"); RemoveMainCamera(); - SetupPrefab("[XR_Setup]"); + +#if ENABLE_INPUT_SYSTEM && XRIT_0_10_OR_NEWER + DeleteStaticObject("[XR_Setup_Device_Based]"); + SetupPrefab("[XR_Setup_Action_Based]"); +#else + DeleteStaticObject("[XR_Setup_Action_Based]"); + SetupPrefab("[XR_Setup_Device_Based]"); +#endif + } + + private void DeleteStaticObject(string objectName) + { + GameObject oldRig = GameObject.Find(objectName); + + if (oldRig != null) + { + string Message = $"Creator changed the XR Rig loading to a new dynamic system, you have a static {objectName} in the current scene, do you want to delete it?"; + + if (EditorUtility.DisplayDialog(Title, Message, "Delete", "Skip")) + { + EditorUtility.SetDirty(oldRig); + Object.DestroyImmediate(oldRig); + } + } } } } \ No newline at end of file diff --git a/Resources/[XR_Setup_Action_Based].prefab b/Resources/[XR_Setup_Action_Based].prefab new file mode 100644 index 0000000..ea29a2a --- /dev/null +++ b/Resources/[XR_Setup_Action_Based].prefab @@ -0,0 +1,3362 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &254950453971294206 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1153462130033586318} + m_Layer: 0 + m_Name: '[XR_Setup_Action_Based]' + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1153462130033586318 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 254950453971294206} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 8096380263314292854} + - {fileID: 8232398725257180522} + - {fileID: 1870254907970836580} + - {fileID: 6094425812966656012} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2551566514137826033 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2670089473688130368} + m_Layer: 0 + m_Name: ModelPt + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2670089473688130368 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2551566514137826033} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4226580937276373881} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2859314466244083351 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6094425812966656012} + - component: {fileID: 7978373750211809889} + - component: {fileID: 4694192666642071984} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6094425812966656012 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2859314466244083351} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1153462130033586318} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &7978373750211809889 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2859314466244083351} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 10 +--- !u!114 &4694192666642071984 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2859314466244083351} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ab68ce6587aab0146b8dabefbd806791, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ClickSpeed: 0.3 + m_MoveDeadzone: 0.6 + m_RepeatDelay: 0.5 + m_RepeatRate: 0.1 + m_TrackedDeviceDragThresholdMultiplier: 2 + m_MaxTrackedDeviceRaycastDistance: 1000 + m_EnableXRInput: 1 + m_EnableMouseInput: 1 + m_EnableTouchInput: 1 +--- !u!1 &3001068243009787468 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8828615551242472943} + m_Layer: 0 + m_Name: ModelPt + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8828615551242472943 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3001068243009787468} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4640717108899920631} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &4535902918034316275 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8232398725257180522} + - component: {fileID: 3211701847606808562} + m_Layer: 0 + m_Name: XR Interaction Manager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8232398725257180522 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4535902918034316275} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1153462130033586318} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &3211701847606808562 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4535902918034316275} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 83e4e6cca11330d4088d729ab4fc9d9f, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &6068746411996636421 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4640717108899920631} + - component: {fileID: 7747180985291243575} + - component: {fileID: 7151388554539386832} + - component: {fileID: 4401965616013762662} + - component: {fileID: 3385063281379677918} + m_Layer: 0 + m_Name: Left UI Controller + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4640717108899920631 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6068746411996636421} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 8828615551242472943} + m_Father: {fileID: 9052434312264737045} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &7747180985291243575 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6068746411996636421} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: caff514de9b15ad48ab85dcff5508221, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UpdateTrackingType: 0 + m_EnableInputTracking: 1 + m_EnableInputActions: 0 + m_ModelPrefab: {fileID: 1306640934352848695, guid: 902b196ba17fa284bae10bdc5878a72d, + type: 3} + m_ModelTransform: {fileID: 0} + m_AnimateModel: 0 + m_ModelSelectTransition: + m_ModelDeSelectTransition: + m_PositionAction: + m_UseReference: 1 + m_Action: + m_Name: Position + m_Type: 0 + m_ExpectedControlType: + m_Id: ee2b90af-cb76-4d31-80a6-06fad8ac806a + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Reference: {fileID: -2024308242397127297, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + m_RotationAction: + m_UseReference: 1 + m_Action: + m_Name: Rotation + m_Type: 0 + m_ExpectedControlType: + m_Id: 4c57fe61-e6e1-4df3-bff3-6c688f6f9e9a + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Reference: {fileID: 8248158260566104461, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + m_SelectAction: + m_UseReference: 1 + m_Action: + m_Name: Select + m_Type: 0 + m_ExpectedControlType: + m_Id: 869302d5-d3c7-4c1b-a962-a7e033b42a15 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Reference: {fileID: -6131295136447488360, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + m_ActivateAction: + m_UseReference: 1 + m_Action: + m_Name: Activate + m_Type: 0 + m_ExpectedControlType: + m_Id: 4aec5842-effb-4789-a584-e3222db901f4 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Reference: {fileID: -5982496924579745919, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + m_UIPressAction: + m_UseReference: 1 + m_Action: + m_Name: UI Press + m_Type: 0 + m_ExpectedControlType: + m_Id: e65a640e-2a41-422f-82dd-ebfb73c6c378 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Reference: {fileID: -6395602842196007441, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + m_HapticDeviceAction: + m_UseReference: 1 + m_Action: + m_Name: Haptic Device + m_Type: 0 + m_ExpectedControlType: + m_Id: 80072ca0-f27a-4040-8ae9-a0fa7a761bbc + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Reference: {fileID: -8785819595477538065, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + m_RotateAnchorAction: + m_UseReference: 1 + m_Action: + m_Name: Rotate Anchor + m_Type: 0 + m_ExpectedControlType: + m_Id: 13f6cacf-e639-4a90-864c-abb89495ad0c + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Reference: {fileID: -7363382999065477798, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + m_TranslateAnchorAction: + m_UseReference: 1 + m_Action: + m_Name: Translate Anchor + m_Type: 0 + m_ExpectedControlType: + m_Id: 6713f8f9-89a2-46da-aad5-ae077ac477ee + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Reference: {fileID: 7779212132400271959, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + m_ButtonPressPoint: 0.5 +--- !u!114 &7151388554539386832 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6068746411996636421} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 203357f2f04686b4c860a9361fd12c36, type: 3} + m_Name: + m_EditorClassIdentifier: + m_InteractionManager: {fileID: 0} + m_InteractionLayerMask: + serializedVersion: 2 + m_Bits: 32 + m_AttachTransform: {fileID: 0} + m_StartingSelectedInteractable: {fileID: 0} + m_HoverEntered: + m_PersistentCalls: + m_Calls: [] + m_HoverExited: + m_PersistentCalls: + m_Calls: [] + m_SelectEntered: + m_PersistentCalls: + m_Calls: [] + m_SelectExited: + m_PersistentCalls: + m_Calls: [] + m_OnHoverEntered: + m_PersistentCalls: + m_Calls: [] + m_OnHoverExited: + m_PersistentCalls: + m_Calls: [] + m_OnSelectEntered: + m_PersistentCalls: + m_Calls: [] + m_OnSelectExited: + m_PersistentCalls: + m_Calls: [] + m_SelectActionTrigger: 1 + m_HideControllerOnSelect: 0 + m_PlayAudioClipOnSelectEntered: 0 + m_AudioClipForOnSelectEntered: {fileID: 0} + m_PlayAudioClipOnSelectExited: 0 + m_AudioClipForOnSelectExited: {fileID: 0} + m_PlayAudioClipOnSelectCanceled: 0 + m_AudioClipForOnSelectCanceled: {fileID: 0} + m_PlayAudioClipOnHoverEntered: 0 + m_AudioClipForOnHoverEntered: {fileID: 0} + m_PlayAudioClipOnHoverExited: 0 + m_AudioClipForOnHoverExited: {fileID: 0} + m_PlayAudioClipOnHoverCanceled: 0 + m_AudioClipForOnHoverCanceled: {fileID: 0} + m_PlayHapticsOnSelectEntered: 0 + m_HapticSelectEnterIntensity: 0 + m_HapticSelectEnterDuration: 0 + m_PlayHapticsOnSelectExited: 0 + m_HapticSelectExitIntensity: 0 + m_HapticSelectExitDuration: 0 + m_PlayHapticsOnSelectCanceled: 0 + m_HapticSelectCancelIntensity: 0 + m_HapticSelectCancelDuration: 0 + m_PlayHapticsOnHoverEntered: 0 + m_HapticHoverEnterIntensity: 0 + m_HapticHoverEnterDuration: 0 + m_PlayHapticsOnHoverExited: 0 + m_HapticHoverExitIntensity: 0 + m_HapticHoverExitDuration: 0 + m_PlayHapticsOnHoverCanceled: 0 + m_HapticHoverCancelIntensity: 0 + m_HapticHoverCancelDuration: 0 + m_LineType: 0 + m_MaxRaycastDistance: 30 + m_ReferenceFrame: {fileID: 0} + m_Velocity: 16 + m_Acceleration: 9.8 + m_AdditionalFlightTime: 0.5 + m_EndPointDistance: 30 + m_EndPointHeight: -10 + m_ControlPointDistance: 10 + m_ControlPointHeight: 5 + m_SampleFrequency: 20 + m_HitDetectionType: 0 + m_SphereCastRadius: 0 + m_RaycastMask: + serializedVersion: 2 + m_Bits: 32 + m_RaycastTriggerInteraction: 1 + m_KeepSelectedTargetValid: 1 + m_HoverToSelect: 0 + m_HoverTimeToSelect: 0.5 + m_EnableUIInteraction: 1 + m_AllowAnchorControl: 1 + m_UseForceGrab: 1 + m_RotateSpeed: 180 + m_TranslateSpeed: 1 +--- !u!120 &4401965616013762662 +LineRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6068746411996636421} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 0 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 6c97eba138bb6c64697ea7ca63a27ad7, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 5 + m_Positions: [] + m_Parameters: + serializedVersion: 3 + widthMultiplier: 0.02 + widthCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + colorGradient: + serializedVersion: 2 + key0: {r: 0, g: 0, b: 1, a: 1} + key1: {r: 0, g: 0, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + numCornerVertices: 4 + numCapVertices: 4 + alignment: 0 + textureMode: 0 + shadowBias: 0.5 + generateLightingData: 0 + m_UseWorldSpace: 1 + m_Loop: 0 +--- !u!114 &3385063281379677918 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6068746411996636421} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e988983f96fe1dd48800bcdfc82f23e9, type: 3} + m_Name: + m_EditorClassIdentifier: + m_LineWidth: 0.02 + m_OverrideInteractorLineLength: 1 + m_LineLength: 10 + m_WidthCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_ValidColorGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + m_InvalidColorGradient: + serializedVersion: 2 + key0: {r: 1, g: 0, b: 0, a: 1} + key1: {r: 1, g: 0, b: 0, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + m_SmoothMovement: 0 + m_FollowTightness: 10 + m_SnapThresholdDistance: 10 + m_Reticle: {fileID: 0} + m_StopLineAtFirstRaycastHit: 1 +--- !u!1 &6217365492625017833 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1870254907970836580} + - component: {fileID: 1642914142028344390} + m_Layer: 0 + m_Name: Input Action Manager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1870254907970836580 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6217365492625017833} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1153462130033586318} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1642914142028344390 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6217365492625017833} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 017c5e3933235514c9520e1dace2a4b2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ActionAssets: + - {fileID: -944628639613478452, guid: c348712bda248c246b8c49b3db54643f, type: 3} +--- !u!1 &6603483820383241204 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7469053385970781433} + - component: {fileID: 3361453039085913529} + - component: {fileID: 8063632501519474248} + - component: {fileID: 1791239607881723393} + - component: {fileID: 3161419117596926856} + - component: {fileID: 2499047784877654666} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7469053385970781433 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6603483820383241204} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 7978014070532965596} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!20 &3361453039085913529 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6603483820383241204} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.01 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!124 &8063632501519474248 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6603483820383241204} + m_Enabled: 1 +--- !u!81 &1791239607881723393 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6603483820383241204} + m_Enabled: 1 +--- !u!114 &3161419117596926856 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6603483820383241204} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c2fadf230d1919748a9aa21d40f74619, type: 3} + m_Name: + m_EditorClassIdentifier: + m_TrackingType: 0 + m_UpdateType: 0 + m_PositionAction: + m_Name: Position + m_Type: 0 + m_ExpectedControlType: + m_Id: 0bacfa51-7938-4a88-adae-9e8ba6c59d23 + m_Processors: + m_Interactions: + m_SingletonActionBindings: + - m_Name: + m_Id: f5efb008-b167-4d0f-b9e0-49a2350a85b3 + m_Path: /centerEyePosition + m_Interactions: + m_Processors: + m_Groups: + m_Action: Position + m_Flags: 0 + m_RotationAction: + m_Name: Rotation + m_Type: 0 + m_ExpectedControlType: + m_Id: 5439f14e-c9da-4bd1-ad3f-7121a75c10d9 + m_Processors: + m_Interactions: + m_SingletonActionBindings: + - m_Name: + m_Id: f984a7fd-f7e2-45ef-b21d-699a5d160f29 + m_Path: /centerEyeRotation + m_Interactions: + m_Processors: + m_Groups: + m_Action: Rotation + m_Flags: 0 +--- !u!114 &2499047784877654666 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6603483820383241204} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f391ac734d94ea34697b6cde3269f11a, type: 3} + m_Name: + m_EditorClassIdentifier: + uniqueName: Trainee +--- !u!1 &7485168110108878041 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8096380263314292854} + - component: {fileID: 1950888392195384575} + - component: {fileID: 3161419117596926862} + - component: {fileID: 7401476500642806535} + - component: {fileID: 3471543858207503529} + - component: {fileID: 3161419117596926850} + - component: {fileID: 3161419117596926848} + - component: {fileID: 3161419117596926849} + - component: {fileID: 3161419117596926852} + - component: {fileID: 3161419117596926853} + m_Layer: 0 + m_Name: XR Rig + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8096380263314292854 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7485168110108878041} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 7978014070532965596} + m_Father: {fileID: 1153462130033586318} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1950888392195384575 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7485168110108878041} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7448815bd5148434682b3d931066cd10, type: 3} + m_Name: + m_EditorClassIdentifier: + m_RigBaseGameObject: {fileID: 7485168110108878041} + m_CameraFloorOffsetObject: {fileID: 7978014070532965571} + m_CameraGameObject: {fileID: 6603483820383241204} + m_TrackingOriginMode: 2 + m_TrackingSpace: 3 + m_CameraYOffset: 1.36144 +--- !u!114 &3161419117596926862 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7485168110108878041} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2213c36610e3b1c4bbf886810ed9db12, type: 3} + m_Name: + m_EditorClassIdentifier: + m_System: {fileID: 7401476500642806535} + m_TurnAmount: 45 + m_DebounceTime: 0.5 + m_EnableTurnLeftRight: 1 + m_EnableTurnAround: 1 + m_LeftHandSnapTurnAction: + m_UseReference: 1 + m_Action: + m_Name: Left Hand Snap Turn + m_Type: 0 + m_ExpectedControlType: + m_Id: bcae984e-e222-4aec-9899-6a2de88a7166 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Reference: {fileID: 1010738217276881514, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + m_RightHandSnapTurnAction: + m_UseReference: 1 + m_Action: + m_Name: Right Hand Snap Turn + m_Type: 0 + m_ExpectedControlType: + m_Id: ef35997d-2cb6-4340-9edd-1239db5332f0 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Reference: {fileID: -6493913391331992944, guid: c348712bda248c246b8c49b3db54643f, + type: 3} +--- !u!114 &7401476500642806535 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7485168110108878041} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 03a5df2202a8b96488c744be3bd0c33e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Timeout: 10 + m_XRRig: {fileID: 1950888392195384575} +--- !u!114 &3471543858207503529 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7485168110108878041} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 01f69dc1cb084aa42b2f2f8cd87bc770, type: 3} + m_Name: + m_EditorClassIdentifier: + m_System: {fileID: 7401476500642806535} +--- !u!114 &3161419117596926850 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7485168110108878041} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 919e39492806b334982b6b84c90dd927, type: 3} + m_Name: + m_EditorClassIdentifier: + m_System: {fileID: 7401476500642806535} + m_TurnSpeed: 60 + m_LeftHandTurnAction: + m_UseReference: 1 + m_Action: + m_Name: Left Hand Turn + m_Type: 0 + m_ExpectedControlType: + m_Id: d065cb11-e9f6-4747-a3d4-1c032fc345a0 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Reference: {fileID: 1010738217276881514, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + m_RightHandTurnAction: + m_UseReference: 1 + m_Action: + m_Name: Right Hand Turn + m_Type: 0 + m_ExpectedControlType: + m_Id: e043a43a-0352-4ee2-ab81-9dafdfb41dc2 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Reference: {fileID: -6493913391331992944, guid: c348712bda248c246b8c49b3db54643f, + type: 3} +--- !u!114 &3161419117596926848 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7485168110108878041} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0bf296fc962d7184ab14ad1841598d5f, type: 3} + m_Name: + m_EditorClassIdentifier: + m_System: {fileID: 7401476500642806535} + m_MoveSpeed: 1 + m_EnableStrafe: 1 + m_UseGravity: 1 + m_GravityApplicationMode: 0 + m_ForwardSource: {fileID: 7469053385970781433} + m_LeftHandMoveAction: + m_UseReference: 1 + m_Action: + m_Name: Left Hand Move + m_Type: 0 + m_ExpectedControlType: + m_Id: 6da12c60-ad99-45b3-a0b1-a4ee1d30ddcc + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Reference: {fileID: 6972639530819350904, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + m_RightHandMoveAction: + m_UseReference: 1 + m_Action: + m_Name: Right Hand Move + m_Type: 0 + m_ExpectedControlType: + m_Id: 77f364a5-e031-452a-af50-144d41955e70 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Reference: {fileID: -8198699208435500284, guid: c348712bda248c246b8c49b3db54643f, + type: 3} +--- !u!143 &3161419117596926849 +CharacterController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7485168110108878041} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Height: 1.36144 + m_Radius: 0.1 + m_SlopeLimit: 45 + m_StepOffset: 0.3 + m_SkinWidth: 0.08 + m_MinMoveDistance: 0.001 + m_Center: {x: 0, y: 0, z: 0} +--- !u!114 &3161419117596926852 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7485168110108878041} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: af6bf904e410ee8479f9093d8830d1f8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_LocomotionProvider: {fileID: 3161419117596926862} + m_MinHeight: 0 + m_MaxHeight: Infinity +--- !u!114 &3161419117596926853 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7485168110108878041} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 58a9a7b4435e36f4fbc7000edd687974, type: 3} + m_Name: + m_EditorClassIdentifier: + moveScheme: 0 + turnStyle: 0 + moveForwardSource: 0 + actionAssets: + - {fileID: -944628639613478452, guid: c348712bda248c246b8c49b3db54643f, type: 3} + actionMaps: [] + actions: [] + baseControlScheme: Generic XR Controller + noncontinuousControlScheme: Noncontinuous Move + continuousControlScheme: Continuous Move + continuousMoveProvider: {fileID: 3161419117596926848} + continuousTurnProvider: {fileID: 3161419117596926850} + snapTurnProvider: {fileID: 3161419117596926862} + headForwardSource: {fileID: 7469053385970781433} + leftHandForwardSource: {fileID: 7978014071979369435} + rightHandForwardSource: {fileID: 7978014071415895673} +--- !u!1 &7783503986401448237 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7783503986401448238} + m_Layer: 0 + m_Name: ModelPt + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7783503986401448238 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7783503986401448237} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 7978014071979369435} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &7978014070459812431 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7978014070459812424} + - component: {fileID: 9052434312838395562} + - component: {fileID: 7978014070459812427} + - component: {fileID: 7978014070459812426} + - component: {fileID: 7978014070459812425} + m_Layer: 0 + m_Name: Left Teleport Controller + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7978014070459812424 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7978014070459812431} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 9052434312753700112} + m_Father: {fileID: 9052434312264737045} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &9052434312838395562 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7978014070459812431} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: caff514de9b15ad48ab85dcff5508221, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UpdateTrackingType: 0 + m_EnableInputTracking: 1 + m_EnableInputActions: 0 + m_ModelPrefab: {fileID: 1306640934352848695, guid: 902b196ba17fa284bae10bdc5878a72d, + type: 3} + m_ModelTransform: {fileID: 0} + m_AnimateModel: 0 + m_ModelSelectTransition: + m_ModelDeSelectTransition: + m_PositionAction: + m_UseReference: 1 + m_Action: + m_Name: Position + m_Type: 0 + m_ExpectedControlType: + m_Id: ee2b90af-cb76-4d31-80a6-06fad8ac806a + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Reference: {fileID: -2024308242397127297, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + m_RotationAction: + m_UseReference: 1 + m_Action: + m_Name: Rotation + m_Type: 0 + m_ExpectedControlType: + m_Id: 4c57fe61-e6e1-4df3-bff3-6c688f6f9e9a + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Reference: {fileID: 8248158260566104461, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + m_SelectAction: + m_UseReference: 1 + m_Action: + m_Name: Select + m_Type: 0 + m_ExpectedControlType: + m_Id: 869302d5-d3c7-4c1b-a962-a7e033b42a15 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Reference: {fileID: -4084014799535200556, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + m_ActivateAction: + m_UseReference: 1 + m_Action: + m_Name: Activate + m_Type: 0 + m_ExpectedControlType: + m_Id: 4aec5842-effb-4789-a584-e3222db901f4 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Reference: {fileID: -5982496924579745919, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + m_UIPressAction: + m_UseReference: 1 + m_Action: + m_Name: UI Press + m_Type: 0 + m_ExpectedControlType: + m_Id: e65a640e-2a41-422f-82dd-ebfb73c6c378 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Reference: {fileID: -6395602842196007441, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + m_HapticDeviceAction: + m_UseReference: 1 + m_Action: + m_Name: Haptic Device + m_Type: 0 + m_ExpectedControlType: + m_Id: 80072ca0-f27a-4040-8ae9-a0fa7a761bbc + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Reference: {fileID: -8785819595477538065, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + m_RotateAnchorAction: + m_UseReference: 1 + m_Action: + m_Name: Rotate Anchor + m_Type: 0 + m_ExpectedControlType: + m_Id: 13f6cacf-e639-4a90-864c-abb89495ad0c + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Reference: {fileID: -7363382999065477798, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + m_TranslateAnchorAction: + m_UseReference: 1 + m_Action: + m_Name: Translate Anchor + m_Type: 0 + m_ExpectedControlType: + m_Id: 6713f8f9-89a2-46da-aad5-ae077ac477ee + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Reference: {fileID: 7779212132400271959, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + m_ButtonPressPoint: 0.5 +--- !u!114 &7978014070459812427 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7978014070459812431} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6803edce0201f574f923fd9d10e5b30a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_InteractionManager: {fileID: 3211701847606808562} + m_InteractionLayerMask: + serializedVersion: 2 + m_Bits: 256 + m_AttachTransform: {fileID: 0} + m_StartingSelectedInteractable: {fileID: 0} + m_HoverEntered: + m_PersistentCalls: + m_Calls: [] + m_HoverExited: + m_PersistentCalls: + m_Calls: [] + m_SelectEntered: + m_PersistentCalls: + m_Calls: [] + m_SelectExited: + m_PersistentCalls: + m_Calls: [] + m_OnHoverEntered: + m_PersistentCalls: + m_Calls: [] + m_OnHoverExited: + m_PersistentCalls: + m_Calls: [] + m_OnSelectEntered: + m_PersistentCalls: + m_Calls: [] + m_OnSelectExited: + m_PersistentCalls: + m_Calls: [] + m_SelectActionTrigger: 1 + m_HideControllerOnSelect: 0 + m_PlayAudioClipOnSelectEntered: 0 + m_AudioClipForOnSelectEntered: {fileID: 0} + m_PlayAudioClipOnSelectExited: 0 + m_AudioClipForOnSelectExited: {fileID: 0} + m_PlayAudioClipOnSelectCanceled: 0 + m_AudioClipForOnSelectCanceled: {fileID: 0} + m_PlayAudioClipOnHoverEntered: 0 + m_AudioClipForOnHoverEntered: {fileID: 0} + m_PlayAudioClipOnHoverExited: 0 + m_AudioClipForOnHoverExited: {fileID: 0} + m_PlayAudioClipOnHoverCanceled: 0 + m_AudioClipForOnHoverCanceled: {fileID: 0} + m_PlayHapticsOnSelectEntered: 0 + m_HapticSelectEnterIntensity: 0 + m_HapticSelectEnterDuration: 0 + m_PlayHapticsOnSelectExited: 0 + m_HapticSelectExitIntensity: 0 + m_HapticSelectExitDuration: 0 + m_PlayHapticsOnSelectCanceled: 0 + m_HapticSelectCancelIntensity: 0 + m_HapticSelectCancelDuration: 0 + m_PlayHapticsOnHoverEntered: 0 + m_HapticHoverEnterIntensity: 0 + m_HapticHoverEnterDuration: 0 + m_PlayHapticsOnHoverExited: 0 + m_HapticHoverExitIntensity: 0 + m_HapticHoverExitDuration: 0 + m_PlayHapticsOnHoverCanceled: 0 + m_HapticHoverCancelIntensity: 0 + m_HapticHoverCancelDuration: 0 + m_LineType: 1 + m_MaxRaycastDistance: 30 + m_ReferenceFrame: {fileID: 0} + m_Velocity: 10 + m_Acceleration: 9.8 + m_AdditionalFlightTime: 0.5 + m_EndPointDistance: 30 + m_EndPointHeight: -10 + m_ControlPointDistance: 10 + m_ControlPointHeight: 5 + m_SampleFrequency: 20 + m_HitDetectionType: 0 + m_SphereCastRadius: 0 + m_RaycastMask: + serializedVersion: 2 + m_Bits: 256 + m_RaycastTriggerInteraction: 1 + m_KeepSelectedTargetValid: 1 + m_HoverToSelect: 0 + m_HoverTimeToSelect: 0.5 + m_EnableUIInteraction: 1 + m_AllowAnchorControl: 1 + m_UseForceGrab: 1 + m_RotateSpeed: 180 + m_TranslateSpeed: 1 +--- !u!120 &7978014070459812426 +LineRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7978014070459812431} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 0 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 6c97eba138bb6c64697ea7ca63a27ad7, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Positions: + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + m_Parameters: + serializedVersion: 3 + widthMultiplier: 0.02 + widthCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + colorGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + numCornerVertices: 4 + numCapVertices: 4 + alignment: 0 + textureMode: 0 + shadowBias: 0 + generateLightingData: 0 + m_UseWorldSpace: 1 + m_Loop: 0 +--- !u!114 &7978014070459812425 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7978014070459812431} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e988983f96fe1dd48800bcdfc82f23e9, type: 3} + m_Name: + m_EditorClassIdentifier: + m_LineWidth: 0.02 + m_OverrideInteractorLineLength: 1 + m_LineLength: 10 + m_WidthCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_ValidColorGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + m_InvalidColorGradient: + serializedVersion: 2 + key0: {r: 1, g: 0, b: 0, a: 1} + key1: {r: 1, g: 0, b: 0, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + m_SmoothMovement: 0 + m_FollowTightness: 10 + m_SnapThresholdDistance: 10 + m_Reticle: {fileID: 0} + m_StopLineAtFirstRaycastHit: 1 +--- !u!1 &7978014070532965571 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7978014070532965596} + m_Layer: 0 + m_Name: CameraOffset + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7978014070532965596 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7978014070532965571} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -1.438} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 7469053385970781433} + - {fileID: 9052434312264737045} + - {fileID: 9052434312966663560} + m_Father: {fileID: 8096380263314292854} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &7978014071415895672 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7978014071415895673} + - component: {fileID: 9052434313195313391} + - component: {fileID: 8424491340227888840} + - component: {fileID: 7978014071415895675} + m_Layer: 0 + m_Name: Right Base Controller + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7978014071415895673 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7978014071415895672} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 9052434313405598513} + m_Father: {fileID: 9052434312966663560} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &9052434313195313391 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7978014071415895672} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: caff514de9b15ad48ab85dcff5508221, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UpdateTrackingType: 0 + m_EnableInputTracking: 1 + m_EnableInputActions: 1 + m_ModelPrefab: {fileID: 1306640934352848695, guid: 902b196ba17fa284bae10bdc5878a72d, + type: 3} + m_ModelTransform: {fileID: 0} + m_AnimateModel: 0 + m_ModelSelectTransition: + m_ModelDeSelectTransition: + m_PositionAction: + m_UseReference: 1 + m_Action: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Reference: {fileID: -3326005586356538449, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + m_RotationAction: + m_UseReference: 1 + m_Action: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Reference: {fileID: 5101698808175986029, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + m_SelectAction: + m_UseReference: 1 + m_Action: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Reference: {fileID: 187161793506945269, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + m_ActivateAction: + m_UseReference: 1 + m_Action: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Reference: {fileID: 83097790271614945, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + m_UIPressAction: + m_UseReference: 1 + m_Action: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Reference: {fileID: 3279264004350380116, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + m_HapticDeviceAction: + m_UseReference: 1 + m_Action: + m_Name: Haptic Device + m_Type: 0 + m_ExpectedControlType: + m_Id: 59ea1b94-e9f8-4049-ab97-5920b11143a5 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Reference: {fileID: -8222252007134549311, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + m_RotateAnchorAction: + m_UseReference: 1 + m_Action: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Reference: {fileID: -5913262927076077117, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + m_TranslateAnchorAction: + m_UseReference: 1 + m_Action: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Reference: {fileID: 875253871413052681, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + m_ButtonPressPoint: 0.5 +--- !u!114 &8424491340227888840 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7978014071415895672} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b7231d59cedbff745ae8517a2b954506, type: 3} + m_Name: + m_EditorClassIdentifier: + m_InteractionManager: {fileID: 3211701847606808562} + m_InteractionLayerMask: + serializedVersion: 2 + m_Bits: 1 + m_AttachTransform: {fileID: 0} + m_StartingSelectedInteractable: {fileID: 0} + m_HoverEntered: + m_PersistentCalls: + m_Calls: [] + m_HoverExited: + m_PersistentCalls: + m_Calls: [] + m_SelectEntered: + m_PersistentCalls: + m_Calls: [] + m_SelectExited: + m_PersistentCalls: + m_Calls: [] + m_OnHoverEntered: + m_PersistentCalls: + m_Calls: [] + m_OnHoverExited: + m_PersistentCalls: + m_Calls: [] + m_OnSelectEntered: + m_PersistentCalls: + m_Calls: [] + m_OnSelectExited: + m_PersistentCalls: + m_Calls: [] + m_SelectActionTrigger: 1 + m_HideControllerOnSelect: 0 + m_PlayAudioClipOnSelectEntered: 0 + m_AudioClipForOnSelectEntered: {fileID: 0} + m_PlayAudioClipOnSelectExited: 0 + m_AudioClipForOnSelectExited: {fileID: 0} + m_PlayAudioClipOnSelectCanceled: 0 + m_AudioClipForOnSelectCanceled: {fileID: 0} + m_PlayAudioClipOnHoverEntered: 0 + m_AudioClipForOnHoverEntered: {fileID: 0} + m_PlayAudioClipOnHoverExited: 0 + m_AudioClipForOnHoverExited: {fileID: 0} + m_PlayAudioClipOnHoverCanceled: 0 + m_AudioClipForOnHoverCanceled: {fileID: 0} + m_PlayHapticsOnSelectEntered: 1 + m_HapticSelectEnterIntensity: 0.5 + m_HapticSelectEnterDuration: 0.25 + m_PlayHapticsOnSelectExited: 1 + m_HapticSelectExitIntensity: 0.5 + m_HapticSelectExitDuration: 0.125 + m_PlayHapticsOnSelectCanceled: 0 + m_HapticSelectCancelIntensity: 0 + m_HapticSelectCancelDuration: 0 + m_PlayHapticsOnHoverEntered: 1 + m_HapticHoverEnterIntensity: 0.25 + m_HapticHoverEnterDuration: 0.25 + m_PlayHapticsOnHoverExited: 1 + m_HapticHoverExitIntensity: 0.25 + m_HapticHoverExitDuration: 0.125 + m_PlayHapticsOnHoverCanceled: 0 + m_HapticHoverCancelIntensity: 0 + m_HapticHoverCancelDuration: 0 + precisionGrab: 1 +--- !u!135 &7978014071415895675 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7978014071415895672} + m_Material: {fileID: 0} + m_IsTrigger: 1 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.05 + m_Center: {x: 0, y: 0, z: 0} +--- !u!1 &7978014071796457453 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7978014071796457454} + - component: {fileID: 9052434313818666002} + - component: {fileID: 7978014071796457455} + - component: {fileID: 7978014071796457450} + - component: {fileID: 7978014071796457449} + m_Layer: 0 + m_Name: Right Teleport Controller + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7978014071796457454 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7978014071796457453} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 9052434314099892218} + m_Father: {fileID: 9052434312966663560} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &9052434313818666002 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7978014071796457453} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: caff514de9b15ad48ab85dcff5508221, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UpdateTrackingType: 0 + m_EnableInputTracking: 1 + m_EnableInputActions: 0 + m_ModelPrefab: {fileID: 1306640934352848695, guid: 902b196ba17fa284bae10bdc5878a72d, + type: 3} + m_ModelTransform: {fileID: 0} + m_AnimateModel: 0 + m_ModelSelectTransition: + m_ModelDeSelectTransition: + m_PositionAction: + m_UseReference: 1 + m_Action: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Reference: {fileID: -3326005586356538449, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + m_RotationAction: + m_UseReference: 1 + m_Action: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Reference: {fileID: 5101698808175986029, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + m_SelectAction: + m_UseReference: 1 + m_Action: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Reference: {fileID: -8270564778575511633, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + m_ActivateAction: + m_UseReference: 1 + m_Action: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Reference: {fileID: 83097790271614945, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + m_UIPressAction: + m_UseReference: 1 + m_Action: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Reference: {fileID: 3279264004350380116, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + m_HapticDeviceAction: + m_UseReference: 1 + m_Action: + m_Name: Haptic Device + m_Type: 0 + m_ExpectedControlType: + m_Id: 9ad5ff42-2240-49bb-89c4-c981d3c023eb + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Reference: {fileID: -8222252007134549311, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + m_RotateAnchorAction: + m_UseReference: 1 + m_Action: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Reference: {fileID: -5913262927076077117, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + m_TranslateAnchorAction: + m_UseReference: 1 + m_Action: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Reference: {fileID: 875253871413052681, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + m_ButtonPressPoint: 0.5 +--- !u!114 &7978014071796457455 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7978014071796457453} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6803edce0201f574f923fd9d10e5b30a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_InteractionManager: {fileID: 3211701847606808562} + m_InteractionLayerMask: + serializedVersion: 2 + m_Bits: 256 + m_AttachTransform: {fileID: 0} + m_StartingSelectedInteractable: {fileID: 0} + m_HoverEntered: + m_PersistentCalls: + m_Calls: [] + m_HoverExited: + m_PersistentCalls: + m_Calls: [] + m_SelectEntered: + m_PersistentCalls: + m_Calls: [] + m_SelectExited: + m_PersistentCalls: + m_Calls: [] + m_OnHoverEntered: + m_PersistentCalls: + m_Calls: [] + m_OnHoverExited: + m_PersistentCalls: + m_Calls: [] + m_OnSelectEntered: + m_PersistentCalls: + m_Calls: [] + m_OnSelectExited: + m_PersistentCalls: + m_Calls: [] + m_SelectActionTrigger: 1 + m_HideControllerOnSelect: 0 + m_PlayAudioClipOnSelectEntered: 0 + m_AudioClipForOnSelectEntered: {fileID: 0} + m_PlayAudioClipOnSelectExited: 0 + m_AudioClipForOnSelectExited: {fileID: 0} + m_PlayAudioClipOnSelectCanceled: 0 + m_AudioClipForOnSelectCanceled: {fileID: 0} + m_PlayAudioClipOnHoverEntered: 0 + m_AudioClipForOnHoverEntered: {fileID: 0} + m_PlayAudioClipOnHoverExited: 0 + m_AudioClipForOnHoverExited: {fileID: 0} + m_PlayAudioClipOnHoverCanceled: 0 + m_AudioClipForOnHoverCanceled: {fileID: 0} + m_PlayHapticsOnSelectEntered: 0 + m_HapticSelectEnterIntensity: 0 + m_HapticSelectEnterDuration: 0 + m_PlayHapticsOnSelectExited: 0 + m_HapticSelectExitIntensity: 0 + m_HapticSelectExitDuration: 0 + m_PlayHapticsOnSelectCanceled: 0 + m_HapticSelectCancelIntensity: 0 + m_HapticSelectCancelDuration: 0 + m_PlayHapticsOnHoverEntered: 0 + m_HapticHoverEnterIntensity: 0 + m_HapticHoverEnterDuration: 0 + m_PlayHapticsOnHoverExited: 0 + m_HapticHoverExitIntensity: 0 + m_HapticHoverExitDuration: 0 + m_PlayHapticsOnHoverCanceled: 0 + m_HapticHoverCancelIntensity: 0 + m_HapticHoverCancelDuration: 0 + m_LineType: 1 + m_MaxRaycastDistance: 30 + m_ReferenceFrame: {fileID: 0} + m_Velocity: 10 + m_Acceleration: 9.8 + m_AdditionalFlightTime: 0.5 + m_EndPointDistance: 30 + m_EndPointHeight: -10 + m_ControlPointDistance: 10 + m_ControlPointHeight: 5 + m_SampleFrequency: 20 + m_HitDetectionType: 0 + m_SphereCastRadius: 0 + m_RaycastMask: + serializedVersion: 2 + m_Bits: 256 + m_RaycastTriggerInteraction: 1 + m_KeepSelectedTargetValid: 1 + m_HoverToSelect: 0 + m_HoverTimeToSelect: 0.5 + m_EnableUIInteraction: 1 + m_AllowAnchorControl: 1 + m_UseForceGrab: 1 + m_RotateSpeed: 180 + m_TranslateSpeed: 1 +--- !u!120 &7978014071796457450 +LineRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7978014071796457453} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 0 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 6c97eba138bb6c64697ea7ca63a27ad7, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Positions: + - {x: 0, y: 0, z: 0} + - {x: 0, y: 0, z: 0} + m_Parameters: + serializedVersion: 3 + widthMultiplier: 0.02 + widthCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + colorGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + numCornerVertices: 0 + numCapVertices: 0 + alignment: 0 + textureMode: 0 + shadowBias: 0.5 + generateLightingData: 0 + m_UseWorldSpace: 1 + m_Loop: 0 +--- !u!114 &7978014071796457449 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7978014071796457453} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e988983f96fe1dd48800bcdfc82f23e9, type: 3} + m_Name: + m_EditorClassIdentifier: + m_LineWidth: 0.02 + m_OverrideInteractorLineLength: 1 + m_LineLength: 10 + m_WidthCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_ValidColorGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + m_InvalidColorGradient: + serializedVersion: 2 + key0: {r: 1, g: 0, b: 0, a: 1} + key1: {r: 1, g: 0, b: 0, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + m_SmoothMovement: 0 + m_FollowTightness: 10 + m_SnapThresholdDistance: 10 + m_Reticle: {fileID: 0} + m_StopLineAtFirstRaycastHit: 1 +--- !u!1 &7978014071979369434 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7978014071979369435} + - component: {fileID: 9052434312700467215} + - component: {fileID: 3983429610902661409} + - component: {fileID: 1992221866384065395} + m_Layer: 0 + m_Name: Left Base Controller + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7978014071979369435 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7978014071979369434} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 7783503986401448238} + m_Father: {fileID: 9052434312264737045} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &9052434312700467215 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7978014071979369434} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: caff514de9b15ad48ab85dcff5508221, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UpdateTrackingType: 0 + m_EnableInputTracking: 1 + m_EnableInputActions: 1 + m_ModelPrefab: {fileID: 1306640934352848695, guid: 902b196ba17fa284bae10bdc5878a72d, + type: 3} + m_ModelTransform: {fileID: 0} + m_AnimateModel: 0 + m_ModelSelectTransition: + m_ModelDeSelectTransition: + m_PositionAction: + m_UseReference: 1 + m_Action: + m_Name: Position + m_Type: 0 + m_ExpectedControlType: + m_Id: 8b170a9b-132e-486d-947e-6a244d4362ea + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Reference: {fileID: -2024308242397127297, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + m_RotationAction: + m_UseReference: 1 + m_Action: + m_Name: Rotation + m_Type: 0 + m_ExpectedControlType: + m_Id: 080819c2-8547-4beb-8522-e6356be16fb1 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Reference: {fileID: 8248158260566104461, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + m_SelectAction: + m_UseReference: 1 + m_Action: + m_Name: Select + m_Type: 0 + m_ExpectedControlType: + m_Id: 8e000d1c-13a4-4cc0-ad37-f2e125874399 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Reference: {fileID: -6131295136447488360, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + m_ActivateAction: + m_UseReference: 1 + m_Action: + m_Name: Activate + m_Type: 0 + m_ExpectedControlType: + m_Id: 3995f9f4-6aa7-409a-80d2-5f7ea1464fde + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Reference: {fileID: -5982496924579745919, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + m_UIPressAction: + m_UseReference: 1 + m_Action: + m_Name: UI Press + m_Type: 0 + m_ExpectedControlType: + m_Id: db89d01c-df6f-4954-b868-103dd5bdb514 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Reference: {fileID: -6395602842196007441, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + m_HapticDeviceAction: + m_UseReference: 1 + m_Action: + m_Name: Haptic Device + m_Type: 0 + m_ExpectedControlType: + m_Id: 3e09b626-c80d-40ec-9592-eb3fe89c2038 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Reference: {fileID: -8785819595477538065, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + m_RotateAnchorAction: + m_UseReference: 1 + m_Action: + m_Name: Rotate Anchor + m_Type: 0 + m_ExpectedControlType: + m_Id: 3dca8766-e652-4e78-8406-420aa73ba338 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Reference: {fileID: -7363382999065477798, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + m_TranslateAnchorAction: + m_UseReference: 1 + m_Action: + m_Name: Translate Anchor + m_Type: 0 + m_ExpectedControlType: + m_Id: e873605e-6a95-4389-8fbe-39069340ba92 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Reference: {fileID: 7779212132400271959, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + m_ButtonPressPoint: 0.5 +--- !u!114 &3983429610902661409 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7978014071979369434} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b7231d59cedbff745ae8517a2b954506, type: 3} + m_Name: + m_EditorClassIdentifier: + m_InteractionManager: {fileID: 3211701847606808562} + m_InteractionLayerMask: + serializedVersion: 2 + m_Bits: 1 + m_AttachTransform: {fileID: 0} + m_StartingSelectedInteractable: {fileID: 0} + m_HoverEntered: + m_PersistentCalls: + m_Calls: [] + m_HoverExited: + m_PersistentCalls: + m_Calls: [] + m_SelectEntered: + m_PersistentCalls: + m_Calls: [] + m_SelectExited: + m_PersistentCalls: + m_Calls: [] + m_OnHoverEntered: + m_PersistentCalls: + m_Calls: [] + m_OnHoverExited: + m_PersistentCalls: + m_Calls: [] + m_OnSelectEntered: + m_PersistentCalls: + m_Calls: [] + m_OnSelectExited: + m_PersistentCalls: + m_Calls: [] + m_SelectActionTrigger: 1 + m_HideControllerOnSelect: 0 + m_PlayAudioClipOnSelectEntered: 0 + m_AudioClipForOnSelectEntered: {fileID: 0} + m_PlayAudioClipOnSelectExited: 0 + m_AudioClipForOnSelectExited: {fileID: 0} + m_PlayAudioClipOnSelectCanceled: 0 + m_AudioClipForOnSelectCanceled: {fileID: 0} + m_PlayAudioClipOnHoverEntered: 0 + m_AudioClipForOnHoverEntered: {fileID: 0} + m_PlayAudioClipOnHoverExited: 0 + m_AudioClipForOnHoverExited: {fileID: 0} + m_PlayAudioClipOnHoverCanceled: 0 + m_AudioClipForOnHoverCanceled: {fileID: 0} + m_PlayHapticsOnSelectEntered: 1 + m_HapticSelectEnterIntensity: 0.5 + m_HapticSelectEnterDuration: 0.25 + m_PlayHapticsOnSelectExited: 1 + m_HapticSelectExitIntensity: 0.5 + m_HapticSelectExitDuration: 0.125 + m_PlayHapticsOnSelectCanceled: 0 + m_HapticSelectCancelIntensity: 0 + m_HapticSelectCancelDuration: 0 + m_PlayHapticsOnHoverEntered: 1 + m_HapticHoverEnterIntensity: 0.25 + m_HapticHoverEnterDuration: 0.25 + m_PlayHapticsOnHoverExited: 1 + m_HapticHoverExitIntensity: 0.25 + m_HapticHoverExitDuration: 0.125 + m_PlayHapticsOnHoverCanceled: 0 + m_HapticHoverCancelIntensity: 0 + m_HapticHoverCancelDuration: 0 + precisionGrab: 1 +--- !u!135 &1992221866384065395 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7978014071979369434} + m_Material: {fileID: 0} + m_IsTrigger: 1 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.05 + m_Center: {x: 0, y: 0, z: 0} +--- !u!1 &8617341708517649692 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4226580937276373881} + - component: {fileID: 6091198425661947378} + - component: {fileID: 8070011684469424022} + - component: {fileID: 8657554238946022645} + - component: {fileID: 1762117387947050719} + m_Layer: 0 + m_Name: Right UI Controller + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4226580937276373881 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8617341708517649692} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 2670089473688130368} + m_Father: {fileID: 9052434312966663560} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &6091198425661947378 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8617341708517649692} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: caff514de9b15ad48ab85dcff5508221, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UpdateTrackingType: 0 + m_EnableInputTracking: 1 + m_EnableInputActions: 0 + m_ModelPrefab: {fileID: 1306640934352848695, guid: 902b196ba17fa284bae10bdc5878a72d, + type: 3} + m_ModelTransform: {fileID: 0} + m_AnimateModel: 0 + m_ModelSelectTransition: + m_ModelDeSelectTransition: + m_PositionAction: + m_UseReference: 1 + m_Action: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Reference: {fileID: -3326005586356538449, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + m_RotationAction: + m_UseReference: 1 + m_Action: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Reference: {fileID: 5101698808175986029, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + m_SelectAction: + m_UseReference: 1 + m_Action: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Reference: {fileID: 187161793506945269, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + m_ActivateAction: + m_UseReference: 1 + m_Action: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Reference: {fileID: 83097790271614945, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + m_UIPressAction: + m_UseReference: 1 + m_Action: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Reference: {fileID: 3279264004350380116, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + m_HapticDeviceAction: + m_UseReference: 1 + m_Action: + m_Name: Haptic Device + m_Type: 0 + m_ExpectedControlType: + m_Id: 9ad5ff42-2240-49bb-89c4-c981d3c023eb + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Reference: {fileID: -8222252007134549311, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + m_RotateAnchorAction: + m_UseReference: 1 + m_Action: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Reference: {fileID: -5913262927076077117, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + m_TranslateAnchorAction: + m_UseReference: 1 + m_Action: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Reference: {fileID: 875253871413052681, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + m_ButtonPressPoint: 0.5 +--- !u!114 &8070011684469424022 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8617341708517649692} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 203357f2f04686b4c860a9361fd12c36, type: 3} + m_Name: + m_EditorClassIdentifier: + m_InteractionManager: {fileID: 3211701847606808562} + m_InteractionLayerMask: + serializedVersion: 2 + m_Bits: 32 + m_AttachTransform: {fileID: 0} + m_StartingSelectedInteractable: {fileID: 0} + m_HoverEntered: + m_PersistentCalls: + m_Calls: [] + m_HoverExited: + m_PersistentCalls: + m_Calls: [] + m_SelectEntered: + m_PersistentCalls: + m_Calls: [] + m_SelectExited: + m_PersistentCalls: + m_Calls: [] + m_OnHoverEntered: + m_PersistentCalls: + m_Calls: [] + m_OnHoverExited: + m_PersistentCalls: + m_Calls: [] + m_OnSelectEntered: + m_PersistentCalls: + m_Calls: [] + m_OnSelectExited: + m_PersistentCalls: + m_Calls: [] + m_SelectActionTrigger: 1 + m_HideControllerOnSelect: 0 + m_PlayAudioClipOnSelectEntered: 0 + m_AudioClipForOnSelectEntered: {fileID: 0} + m_PlayAudioClipOnSelectExited: 0 + m_AudioClipForOnSelectExited: {fileID: 0} + m_PlayAudioClipOnSelectCanceled: 0 + m_AudioClipForOnSelectCanceled: {fileID: 0} + m_PlayAudioClipOnHoverEntered: 0 + m_AudioClipForOnHoverEntered: {fileID: 0} + m_PlayAudioClipOnHoverExited: 0 + m_AudioClipForOnHoverExited: {fileID: 0} + m_PlayAudioClipOnHoverCanceled: 0 + m_AudioClipForOnHoverCanceled: {fileID: 0} + m_PlayHapticsOnSelectEntered: 0 + m_HapticSelectEnterIntensity: 0 + m_HapticSelectEnterDuration: 0 + m_PlayHapticsOnSelectExited: 0 + m_HapticSelectExitIntensity: 0 + m_HapticSelectExitDuration: 0 + m_PlayHapticsOnSelectCanceled: 0 + m_HapticSelectCancelIntensity: 0 + m_HapticSelectCancelDuration: 0 + m_PlayHapticsOnHoverEntered: 0 + m_HapticHoverEnterIntensity: 0 + m_HapticHoverEnterDuration: 0 + m_PlayHapticsOnHoverExited: 0 + m_HapticHoverExitIntensity: 0 + m_HapticHoverExitDuration: 0 + m_PlayHapticsOnHoverCanceled: 0 + m_HapticHoverCancelIntensity: 0 + m_HapticHoverCancelDuration: 0 + m_LineType: 0 + m_MaxRaycastDistance: 30 + m_ReferenceFrame: {fileID: 0} + m_Velocity: 16 + m_Acceleration: 9.8 + m_AdditionalFlightTime: 0.5 + m_EndPointDistance: 30 + m_EndPointHeight: -10 + m_ControlPointDistance: 10 + m_ControlPointHeight: 5 + m_SampleFrequency: 20 + m_HitDetectionType: 0 + m_SphereCastRadius: 0 + m_RaycastMask: + serializedVersion: 2 + m_Bits: 32 + m_RaycastTriggerInteraction: 1 + m_KeepSelectedTargetValid: 1 + m_HoverToSelect: 0 + m_HoverTimeToSelect: 0.5 + m_EnableUIInteraction: 1 + m_AllowAnchorControl: 1 + m_UseForceGrab: 1 + m_RotateSpeed: 180 + m_TranslateSpeed: 1 +--- !u!120 &8657554238946022645 +LineRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8617341708517649692} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 0 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 6c97eba138bb6c64697ea7ca63a27ad7, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 5 + m_Positions: [] + m_Parameters: + serializedVersion: 3 + widthMultiplier: 0.02 + widthCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + colorGradient: + serializedVersion: 2 + key0: {r: 0, g: 0, b: 1, a: 1} + key1: {r: 0, g: 0, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + numCornerVertices: 4 + numCapVertices: 4 + alignment: 0 + textureMode: 0 + shadowBias: 0.5 + generateLightingData: 0 + m_UseWorldSpace: 1 + m_Loop: 0 +--- !u!114 &1762117387947050719 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8617341708517649692} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e988983f96fe1dd48800bcdfc82f23e9, type: 3} + m_Name: + m_EditorClassIdentifier: + m_LineWidth: 0.02 + m_OverrideInteractorLineLength: 1 + m_LineLength: 10 + m_WidthCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_ValidColorGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + m_InvalidColorGradient: + serializedVersion: 2 + key0: {r: 1, g: 0, b: 0, a: 1} + key1: {r: 1, g: 0, b: 0, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + m_SmoothMovement: 0 + m_FollowTightness: 10 + m_SnapThresholdDistance: 10 + m_Reticle: {fileID: 0} + m_StopLineAtFirstRaycastHit: 1 +--- !u!1 &9052434312264737046 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9052434312264737045} + - component: {fileID: 9052434312264737044} + m_Layer: 0 + m_Name: LeftHand + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &9052434312264737045 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9052434312264737046} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 7978014071979369435} + - {fileID: 7978014070459812424} + - {fileID: 4640717108899920631} + m_Father: {fileID: 7978014070532965596} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &9052434312264737044 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9052434312264737046} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 41cc12ba1114e4f46929730a9389cb74, type: 3} + m_Name: + m_EditorClassIdentifier: + baseController: {fileID: 7978014071979369434} + teleportController: {fileID: 7978014070459812431} + uiController: {fileID: 6068746411996636421} + teleportModeActivate: {fileID: 1263111715868034790, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + teleportModeCancel: {fileID: 737890489006591557, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + uiModeActivate: {fileID: 1201092935185683357, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + turn: {fileID: 1010738217276881514, guid: c348712bda248c246b8c49b3db54643f, type: 3} + move: {fileID: 6972639530819350904, guid: c348712bda248c246b8c49b3db54643f, type: 3} + translateAnchor: {fileID: 7779212132400271959, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + rotateAnchor: {fileID: -7363382999065477798, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + selectState: + enabled: 0 + m_ID: 1 + onEnter: + m_PersistentCalls: + m_Calls: [] + onUpdate: + m_PersistentCalls: + m_Calls: [] + onExit: + m_PersistentCalls: + m_Calls: [] + teleportState: + enabled: 0 + m_ID: 2 + onEnter: + m_PersistentCalls: + m_Calls: [] + onUpdate: + m_PersistentCalls: + m_Calls: [] + onExit: + m_PersistentCalls: + m_Calls: [] + interactState: + enabled: 0 + m_ID: 3 + onEnter: + m_PersistentCalls: + m_Calls: [] + onUpdate: + m_PersistentCalls: + m_Calls: [] + onExit: + m_PersistentCalls: + m_Calls: [] + uiState: + enabled: 0 + m_ID: 4 + onEnter: + m_PersistentCalls: + m_Calls: [] + onUpdate: + m_PersistentCalls: + m_Calls: [] + onExit: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &9052434312753700113 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9052434312753700112} + m_Layer: 0 + m_Name: ModelPt + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &9052434312753700112 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9052434312753700113} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 7978014070459812424} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &9052434312966663561 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9052434312966663560} + - component: {fileID: 9052434312966663567} + m_Layer: 0 + m_Name: RightHand + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &9052434312966663560 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9052434312966663561} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 7978014071415895673} + - {fileID: 7978014071796457454} + - {fileID: 4226580937276373881} + m_Father: {fileID: 7978014070532965596} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &9052434312966663567 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9052434312966663561} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 41cc12ba1114e4f46929730a9389cb74, type: 3} + m_Name: + m_EditorClassIdentifier: + baseController: {fileID: 7978014071415895672} + teleportController: {fileID: 7978014071796457453} + uiController: {fileID: 8617341708517649692} + teleportModeActivate: {fileID: -8061240218431744966, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + teleportModeCancel: {fileID: 2307464322626738743, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + uiModeActivate: {fileID: -4794670585942407507, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + turn: {fileID: -6493913391331992944, guid: c348712bda248c246b8c49b3db54643f, type: 3} + move: {fileID: -8198699208435500284, guid: c348712bda248c246b8c49b3db54643f, type: 3} + translateAnchor: {fileID: 875253871413052681, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + rotateAnchor: {fileID: -5913262927076077117, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + selectState: + enabled: 0 + m_ID: 1 + onEnter: + m_PersistentCalls: + m_Calls: [] + onUpdate: + m_PersistentCalls: + m_Calls: [] + onExit: + m_PersistentCalls: + m_Calls: [] + teleportState: + enabled: 0 + m_ID: 2 + onEnter: + m_PersistentCalls: + m_Calls: [] + onUpdate: + m_PersistentCalls: + m_Calls: [] + onExit: + m_PersistentCalls: + m_Calls: [] + interactState: + enabled: 0 + m_ID: 3 + onEnter: + m_PersistentCalls: + m_Calls: [] + onUpdate: + m_PersistentCalls: + m_Calls: [] + onExit: + m_PersistentCalls: + m_Calls: [] + uiState: + enabled: 0 + m_ID: 4 + onEnter: + m_PersistentCalls: + m_Calls: [] + onUpdate: + m_PersistentCalls: + m_Calls: [] + onExit: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &9052434313405598514 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9052434313405598513} + m_Layer: 0 + m_Name: ModelPt + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &9052434313405598513 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9052434313405598514} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 7978014071415895673} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &9052434314099892219 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9052434314099892218} + m_Layer: 0 + m_Name: ModelPt + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &9052434314099892218 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9052434314099892219} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 7978014071796457454} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Resources/[XR_Setup_Action_Based].prefab.meta b/Resources/[XR_Setup_Action_Based].prefab.meta new file mode 100644 index 0000000..670ec46 --- /dev/null +++ b/Resources/[XR_Setup_Action_Based].prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 5aac64a257ad11e41908ccc1ccef9635 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Resources/[XR_Setup].prefab b/Resources/[XR_Setup_Device_Based].prefab similarity index 86% rename from Resources/[XR_Setup].prefab rename to Resources/[XR_Setup_Device_Based].prefab index fc99883..d574a6d 100644 --- a/Resources/[XR_Setup].prefab +++ b/Resources/[XR_Setup_Device_Based].prefab @@ -10,7 +10,7 @@ GameObject: m_Component: - component: {fileID: 1153462130033586318} m_Layer: 0 - m_Name: '[XR_Setup]' + m_Name: '[XR_Setup_Device_Based]' m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -124,11 +124,11 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: ab68ce6587aab0146b8dabefbd806791, type: 3} m_Name: m_EditorClassIdentifier: - clickSpeed: 0.3 - moveDeadzone: 0.6 - repeatDelay: 0.5 - repeatRate: 0.1 - trackedDeviceDragThresholdMultiplier: 2 + m_ClickSpeed: 0.3 + m_MoveDeadzone: 0.6 + m_RepeatDelay: 0.5 + m_RepeatRate: 0.1 + m_TrackedDeviceDragThresholdMultiplier: 2 m_MaxTrackedDeviceRaycastDistance: 1000 m_EnableXRInput: 1 m_EnableMouseInput: 1 @@ -180,18 +180,24 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UpdateTrackingType: 0 + m_EnableInputTracking: 1 m_EnableInputActions: 1 - m_PoseProvider: {fileID: 0} + m_ModelPrefab: {fileID: 1306640934352848695, guid: 902b196ba17fa284bae10bdc5878a72d, + type: 3} + m_ModelTransform: {fileID: 0} + m_AnimateModel: 0 + m_ModelSelectTransition: + m_ModelDeSelectTransition: m_ControllerNode: 5 m_SelectUsage: 0 m_ActivateUsage: 0 m_UIPressUsage: 2 m_AxisToPressThreshold: 0.1 - m_ModelPrefab: {fileID: 0} - m_ModelTransform: {fileID: 0} - m_AnimateModel: 0 - m_ModelSelectTransition: - m_ModelDeSelectTransition: + m_RotateAnchorLeft: 16 + m_RotateAnchorRight: 17 + m_MoveObjectIn: 14 + m_MoveObjectOut: 15 + m_PoseProvider: {fileID: 0} --- !u!114 &3379923548091305974 MonoBehaviour: m_ObjectHideFlags: 0 @@ -210,40 +216,62 @@ MonoBehaviour: m_Bits: 32 m_AttachTransform: {fileID: 0} m_StartingSelectedInteractable: {fileID: 0} - m_OnHoverEnter: + m_HoverEntered: + m_PersistentCalls: + m_Calls: [] + m_HoverExited: + m_PersistentCalls: + m_Calls: [] + m_SelectEntered: m_PersistentCalls: m_Calls: [] - m_OnHoverExit: + m_SelectExited: m_PersistentCalls: m_Calls: [] - m_OnSelectEnter: + m_OnHoverEntered: m_PersistentCalls: m_Calls: [] - m_OnSelectExit: + m_OnHoverExited: + m_PersistentCalls: + m_Calls: [] + m_OnSelectEntered: + m_PersistentCalls: + m_Calls: [] + m_OnSelectExited: m_PersistentCalls: m_Calls: [] m_SelectActionTrigger: 1 m_HideControllerOnSelect: 0 - m_PlayAudioClipOnSelectEnter: 0 - m_AudioClipForOnSelectEnter: {fileID: 0} - m_PlayAudioClipOnSelectExit: 0 - m_AudioClipForOnSelectExit: {fileID: 0} - m_PlayAudioClipOnHoverEnter: 0 - m_AudioClipForOnHoverEnter: {fileID: 0} - m_PlayAudioClipOnHoverExit: 0 - m_AudioClipForOnHoverExit: {fileID: 0} - m_PlayHapticsOnSelectEnter: 0 + m_PlayAudioClipOnSelectEntered: 0 + m_AudioClipForOnSelectEntered: {fileID: 0} + m_PlayAudioClipOnSelectExited: 0 + m_AudioClipForOnSelectExited: {fileID: 0} + m_PlayAudioClipOnSelectCanceled: 0 + m_AudioClipForOnSelectCanceled: {fileID: 0} + m_PlayAudioClipOnHoverEntered: 0 + m_AudioClipForOnHoverEntered: {fileID: 0} + m_PlayAudioClipOnHoverExited: 0 + m_AudioClipForOnHoverExited: {fileID: 0} + m_PlayAudioClipOnHoverCanceled: 0 + m_AudioClipForOnHoverCanceled: {fileID: 0} + m_PlayHapticsOnSelectEntered: 0 m_HapticSelectEnterIntensity: 0 m_HapticSelectEnterDuration: 0 - m_PlayHapticsOnSelectExit: 0 + m_PlayHapticsOnSelectExited: 0 m_HapticSelectExitIntensity: 0 m_HapticSelectExitDuration: 0 - m_PlayHapticsOnHoverEnter: 0 + m_PlayHapticsOnSelectCanceled: 0 + m_HapticSelectCancelIntensity: 0 + m_HapticSelectCancelDuration: 0 + m_PlayHapticsOnHoverEntered: 0 m_HapticHoverEnterIntensity: 0 m_HapticHoverEnterDuration: 0 - m_PlayHapticsOnHoverExit: 0 + m_PlayHapticsOnHoverExited: 0 m_HapticHoverExitIntensity: 0 m_HapticHoverExitDuration: 0 + m_PlayHapticsOnHoverCanceled: 0 + m_HapticHoverCancelIntensity: 0 + m_HapticHoverCancelDuration: 0 m_LineType: 0 m_MaxRaycastDistance: 30 m_ReferenceFrame: {fileID: 0} @@ -261,9 +289,14 @@ MonoBehaviour: serializedVersion: 2 m_Bits: 32 m_RaycastTriggerInteraction: 1 + m_KeepSelectedTargetValid: 1 m_HoverToSelect: 0 m_HoverTimeToSelect: 0.5 m_EnableUIInteraction: 1 + m_AllowAnchorControl: 1 + m_UseForceGrab: 1 + m_RotateSpeed: 180 + m_TranslateSpeed: 1 --- !u!120 &3360733281310062015 LineRenderer: m_ObjectHideFlags: 0 @@ -282,7 +315,7 @@ LineRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 10306, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 2100000, guid: 6c97eba138bb6c64697ea7ca63a27ad7, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -549,18 +582,24 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UpdateTrackingType: 0 + m_EnableInputTracking: 1 m_EnableInputActions: 1 - m_PoseProvider: {fileID: 0} + m_ModelPrefab: {fileID: 1306640934352848695, guid: 902b196ba17fa284bae10bdc5878a72d, + type: 3} + m_ModelTransform: {fileID: 0} + m_AnimateModel: 0 + m_ModelSelectTransition: + m_ModelDeSelectTransition: m_ControllerNode: 4 m_SelectUsage: 0 m_ActivateUsage: 0 m_UIPressUsage: 2 m_AxisToPressThreshold: 0.1 - m_ModelPrefab: {fileID: 0} - m_ModelTransform: {fileID: 0} - m_AnimateModel: 0 - m_ModelSelectTransition: - m_ModelDeSelectTransition: + m_RotateAnchorLeft: 16 + m_RotateAnchorRight: 17 + m_MoveObjectIn: 14 + m_MoveObjectOut: 15 + m_PoseProvider: {fileID: 0} --- !u!114 &4021559294842752849 MonoBehaviour: m_ObjectHideFlags: 0 @@ -579,40 +618,62 @@ MonoBehaviour: m_Bits: 32 m_AttachTransform: {fileID: 0} m_StartingSelectedInteractable: {fileID: 0} - m_OnHoverEnter: + m_HoverEntered: + m_PersistentCalls: + m_Calls: [] + m_HoverExited: + m_PersistentCalls: + m_Calls: [] + m_SelectEntered: + m_PersistentCalls: + m_Calls: [] + m_SelectExited: + m_PersistentCalls: + m_Calls: [] + m_OnHoverEntered: m_PersistentCalls: m_Calls: [] - m_OnHoverExit: + m_OnHoverExited: m_PersistentCalls: m_Calls: [] - m_OnSelectEnter: + m_OnSelectEntered: m_PersistentCalls: m_Calls: [] - m_OnSelectExit: + m_OnSelectExited: m_PersistentCalls: m_Calls: [] m_SelectActionTrigger: 1 m_HideControllerOnSelect: 0 - m_PlayAudioClipOnSelectEnter: 0 - m_AudioClipForOnSelectEnter: {fileID: 0} - m_PlayAudioClipOnSelectExit: 0 - m_AudioClipForOnSelectExit: {fileID: 0} - m_PlayAudioClipOnHoverEnter: 0 - m_AudioClipForOnHoverEnter: {fileID: 0} - m_PlayAudioClipOnHoverExit: 0 - m_AudioClipForOnHoverExit: {fileID: 0} - m_PlayHapticsOnSelectEnter: 0 + m_PlayAudioClipOnSelectEntered: 0 + m_AudioClipForOnSelectEntered: {fileID: 0} + m_PlayAudioClipOnSelectExited: 0 + m_AudioClipForOnSelectExited: {fileID: 0} + m_PlayAudioClipOnSelectCanceled: 0 + m_AudioClipForOnSelectCanceled: {fileID: 0} + m_PlayAudioClipOnHoverEntered: 0 + m_AudioClipForOnHoverEntered: {fileID: 0} + m_PlayAudioClipOnHoverExited: 0 + m_AudioClipForOnHoverExited: {fileID: 0} + m_PlayAudioClipOnHoverCanceled: 0 + m_AudioClipForOnHoverCanceled: {fileID: 0} + m_PlayHapticsOnSelectEntered: 0 m_HapticSelectEnterIntensity: 0 m_HapticSelectEnterDuration: 0 - m_PlayHapticsOnSelectExit: 0 + m_PlayHapticsOnSelectExited: 0 m_HapticSelectExitIntensity: 0 m_HapticSelectExitDuration: 0 - m_PlayHapticsOnHoverEnter: 0 + m_PlayHapticsOnSelectCanceled: 0 + m_HapticSelectCancelIntensity: 0 + m_HapticSelectCancelDuration: 0 + m_PlayHapticsOnHoverEntered: 0 m_HapticHoverEnterIntensity: 0 m_HapticHoverEnterDuration: 0 - m_PlayHapticsOnHoverExit: 0 + m_PlayHapticsOnHoverExited: 0 m_HapticHoverExitIntensity: 0 m_HapticHoverExitDuration: 0 + m_PlayHapticsOnHoverCanceled: 0 + m_HapticHoverCancelIntensity: 0 + m_HapticHoverCancelDuration: 0 m_LineType: 0 m_MaxRaycastDistance: 30 m_ReferenceFrame: {fileID: 0} @@ -630,9 +691,14 @@ MonoBehaviour: serializedVersion: 2 m_Bits: 32 m_RaycastTriggerInteraction: 1 + m_KeepSelectedTargetValid: 1 m_HoverToSelect: 0 m_HoverTimeToSelect: 0.5 m_EnableUIInteraction: 1 + m_AllowAnchorControl: 1 + m_UseForceGrab: 1 + m_RotateSpeed: 180 + m_TranslateSpeed: 1 --- !u!120 &3205198527227421379 LineRenderer: m_ObjectHideFlags: 0 @@ -651,7 +717,7 @@ LineRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 10306, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 2100000, guid: 6c97eba138bb6c64697ea7ca63a27ad7, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -945,7 +1011,7 @@ Camera: field of view: 60 orthographic: 0 orthographic size: 5 - m_Depth: 0 + m_Depth: -1 m_CullingMask: serializedVersion: 2 m_Bits: 4294967295 @@ -1095,12 +1161,14 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_System: {fileID: 7401476500642806535} + m_TurnAmount: 45 + m_DebounceTime: 0.5 + m_EnableTurnLeftRight: 1 + m_EnableTurnAround: 1 m_TurnUsage: 0 m_Controllers: - {fileID: 7978014071979369431} - {fileID: 7978014071415895669} - m_TurnAmount: 45 - m_DebounceTime: 0.5 m_DeadZone: 0.75 --- !u!114 &7401476500642806535 MonoBehaviour: @@ -1206,18 +1274,24 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UpdateTrackingType: 0 + m_EnableInputTracking: 1 m_EnableInputActions: 1 - m_PoseProvider: {fileID: 0} + m_ModelPrefab: {fileID: 1306640934352848695, guid: 902b196ba17fa284bae10bdc5878a72d, + type: 3} + m_ModelTransform: {fileID: 0} + m_AnimateModel: 0 + m_ModelSelectTransition: + m_ModelDeSelectTransition: m_ControllerNode: 4 m_SelectUsage: 2 m_ActivateUsage: 2 m_UIPressUsage: 2 m_AxisToPressThreshold: 0.1 - m_ModelPrefab: {fileID: 0} - m_ModelTransform: {fileID: 0} - m_AnimateModel: 0 - m_ModelSelectTransition: - m_ModelDeSelectTransition: + m_RotateAnchorLeft: 16 + m_RotateAnchorRight: 17 + m_MoveObjectIn: 14 + m_MoveObjectOut: 15 + m_PoseProvider: {fileID: 0} --- !u!114 &7978014070459812427 MonoBehaviour: m_ObjectHideFlags: 0 @@ -1236,40 +1310,62 @@ MonoBehaviour: m_Bits: 256 m_AttachTransform: {fileID: 0} m_StartingSelectedInteractable: {fileID: 0} - m_OnHoverEnter: + m_HoverEntered: + m_PersistentCalls: + m_Calls: [] + m_HoverExited: + m_PersistentCalls: + m_Calls: [] + m_SelectEntered: + m_PersistentCalls: + m_Calls: [] + m_SelectExited: + m_PersistentCalls: + m_Calls: [] + m_OnHoverEntered: m_PersistentCalls: m_Calls: [] - m_OnHoverExit: + m_OnHoverExited: m_PersistentCalls: m_Calls: [] - m_OnSelectEnter: + m_OnSelectEntered: m_PersistentCalls: m_Calls: [] - m_OnSelectExit: + m_OnSelectExited: m_PersistentCalls: m_Calls: [] m_SelectActionTrigger: 1 m_HideControllerOnSelect: 0 - m_PlayAudioClipOnSelectEnter: 0 - m_AudioClipForOnSelectEnter: {fileID: 0} - m_PlayAudioClipOnSelectExit: 0 - m_AudioClipForOnSelectExit: {fileID: 0} - m_PlayAudioClipOnHoverEnter: 0 - m_AudioClipForOnHoverEnter: {fileID: 0} - m_PlayAudioClipOnHoverExit: 0 - m_AudioClipForOnHoverExit: {fileID: 0} - m_PlayHapticsOnSelectEnter: 0 + m_PlayAudioClipOnSelectEntered: 0 + m_AudioClipForOnSelectEntered: {fileID: 0} + m_PlayAudioClipOnSelectExited: 0 + m_AudioClipForOnSelectExited: {fileID: 0} + m_PlayAudioClipOnSelectCanceled: 0 + m_AudioClipForOnSelectCanceled: {fileID: 0} + m_PlayAudioClipOnHoverEntered: 0 + m_AudioClipForOnHoverEntered: {fileID: 0} + m_PlayAudioClipOnHoverExited: 0 + m_AudioClipForOnHoverExited: {fileID: 0} + m_PlayAudioClipOnHoverCanceled: 0 + m_AudioClipForOnHoverCanceled: {fileID: 0} + m_PlayHapticsOnSelectEntered: 0 m_HapticSelectEnterIntensity: 0 m_HapticSelectEnterDuration: 0 - m_PlayHapticsOnSelectExit: 0 + m_PlayHapticsOnSelectExited: 0 m_HapticSelectExitIntensity: 0 m_HapticSelectExitDuration: 0 - m_PlayHapticsOnHoverEnter: 0 + m_PlayHapticsOnSelectCanceled: 0 + m_HapticSelectCancelIntensity: 0 + m_HapticSelectCancelDuration: 0 + m_PlayHapticsOnHoverEntered: 0 m_HapticHoverEnterIntensity: 0 m_HapticHoverEnterDuration: 0 - m_PlayHapticsOnHoverExit: 0 + m_PlayHapticsOnHoverExited: 0 m_HapticHoverExitIntensity: 0 m_HapticHoverExitDuration: 0 + m_PlayHapticsOnHoverCanceled: 0 + m_HapticHoverCancelIntensity: 0 + m_HapticHoverCancelDuration: 0 m_LineType: 1 m_MaxRaycastDistance: 30 m_ReferenceFrame: {fileID: 0} @@ -1287,9 +1383,14 @@ MonoBehaviour: serializedVersion: 2 m_Bits: 256 m_RaycastTriggerInteraction: 1 + m_KeepSelectedTargetValid: 1 m_HoverToSelect: 0 m_HoverTimeToSelect: 0.5 m_EnableUIInteraction: 1 + m_AllowAnchorControl: 1 + m_UseForceGrab: 1 + m_RotateSpeed: 180 + m_TranslateSpeed: 1 --- !u!120 &7978014070459812426 LineRenderer: m_ObjectHideFlags: 0 @@ -1625,19 +1726,24 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UpdateTrackingType: 0 + m_EnableInputTracking: 1 m_EnableInputActions: 1 - m_PoseProvider: {fileID: 0} - m_ControllerNode: 5 - m_SelectUsage: 3 - m_ActivateUsage: 2 - m_UIPressUsage: 0 - m_AxisToPressThreshold: 0.1 m_ModelPrefab: {fileID: 1306640934352848695, guid: 902b196ba17fa284bae10bdc5878a72d, type: 3} m_ModelTransform: {fileID: 0} m_AnimateModel: 0 m_ModelSelectTransition: m_ModelDeSelectTransition: + m_ControllerNode: 5 + m_SelectUsage: 3 + m_ActivateUsage: 2 + m_UIPressUsage: 0 + m_AxisToPressThreshold: 0.1 + m_RotateAnchorLeft: 16 + m_RotateAnchorRight: 17 + m_MoveObjectIn: 14 + m_MoveObjectOut: 15 + m_PoseProvider: {fileID: 0} --- !u!114 &8424491340227888840 MonoBehaviour: m_ObjectHideFlags: 0 @@ -1656,40 +1762,62 @@ MonoBehaviour: m_Bits: 1 m_AttachTransform: {fileID: 0} m_StartingSelectedInteractable: {fileID: 0} - m_OnHoverEnter: + m_HoverEntered: + m_PersistentCalls: + m_Calls: [] + m_HoverExited: + m_PersistentCalls: + m_Calls: [] + m_SelectEntered: + m_PersistentCalls: + m_Calls: [] + m_SelectExited: + m_PersistentCalls: + m_Calls: [] + m_OnHoverEntered: m_PersistentCalls: m_Calls: [] - m_OnHoverExit: + m_OnHoverExited: m_PersistentCalls: m_Calls: [] - m_OnSelectEnter: + m_OnSelectEntered: m_PersistentCalls: m_Calls: [] - m_OnSelectExit: + m_OnSelectExited: m_PersistentCalls: m_Calls: [] m_SelectActionTrigger: 1 m_HideControllerOnSelect: 0 - m_PlayAudioClipOnSelectEnter: 0 - m_AudioClipForOnSelectEnter: {fileID: 0} - m_PlayAudioClipOnSelectExit: 0 - m_AudioClipForOnSelectExit: {fileID: 0} - m_PlayAudioClipOnHoverEnter: 0 - m_AudioClipForOnHoverEnter: {fileID: 0} - m_PlayAudioClipOnHoverExit: 0 - m_AudioClipForOnHoverExit: {fileID: 0} - m_PlayHapticsOnSelectEnter: 1 + m_PlayAudioClipOnSelectEntered: 0 + m_AudioClipForOnSelectEntered: {fileID: 0} + m_PlayAudioClipOnSelectExited: 0 + m_AudioClipForOnSelectExited: {fileID: 0} + m_PlayAudioClipOnSelectCanceled: 0 + m_AudioClipForOnSelectCanceled: {fileID: 0} + m_PlayAudioClipOnHoverEntered: 0 + m_AudioClipForOnHoverEntered: {fileID: 0} + m_PlayAudioClipOnHoverExited: 0 + m_AudioClipForOnHoverExited: {fileID: 0} + m_PlayAudioClipOnHoverCanceled: 0 + m_AudioClipForOnHoverCanceled: {fileID: 0} + m_PlayHapticsOnSelectEntered: 1 m_HapticSelectEnterIntensity: 0.5 m_HapticSelectEnterDuration: 0.25 - m_PlayHapticsOnSelectExit: 1 + m_PlayHapticsOnSelectExited: 1 m_HapticSelectExitIntensity: 0.5 m_HapticSelectExitDuration: 0.125 - m_PlayHapticsOnHoverEnter: 1 + m_PlayHapticsOnSelectCanceled: 0 + m_HapticSelectCancelIntensity: 0 + m_HapticSelectCancelDuration: 0 + m_PlayHapticsOnHoverEntered: 1 m_HapticHoverEnterIntensity: 0.25 m_HapticHoverEnterDuration: 0.25 - m_PlayHapticsOnHoverExit: 1 + m_PlayHapticsOnHoverExited: 1 m_HapticHoverExitIntensity: 0.25 m_HapticHoverExitDuration: 0.125 + m_PlayHapticsOnHoverCanceled: 0 + m_HapticHoverCancelIntensity: 0 + m_HapticHoverCancelDuration: 0 precisionGrab: 1 --- !u!1 &7978014071796457453 GameObject: @@ -1738,18 +1866,24 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UpdateTrackingType: 0 + m_EnableInputTracking: 1 m_EnableInputActions: 1 - m_PoseProvider: {fileID: 0} + m_ModelPrefab: {fileID: 1306640934352848695, guid: 902b196ba17fa284bae10bdc5878a72d, + type: 3} + m_ModelTransform: {fileID: 0} + m_AnimateModel: 0 + m_ModelSelectTransition: + m_ModelDeSelectTransition: m_ControllerNode: 5 m_SelectUsage: 2 m_ActivateUsage: 2 m_UIPressUsage: 2 m_AxisToPressThreshold: 0.1 - m_ModelPrefab: {fileID: 0} - m_ModelTransform: {fileID: 0} - m_AnimateModel: 0 - m_ModelSelectTransition: - m_ModelDeSelectTransition: + m_RotateAnchorLeft: 16 + m_RotateAnchorRight: 17 + m_MoveObjectIn: 14 + m_MoveObjectOut: 15 + m_PoseProvider: {fileID: 0} --- !u!114 &7978014071796457455 MonoBehaviour: m_ObjectHideFlags: 0 @@ -1768,40 +1902,62 @@ MonoBehaviour: m_Bits: 256 m_AttachTransform: {fileID: 0} m_StartingSelectedInteractable: {fileID: 0} - m_OnHoverEnter: + m_HoverEntered: + m_PersistentCalls: + m_Calls: [] + m_HoverExited: + m_PersistentCalls: + m_Calls: [] + m_SelectEntered: + m_PersistentCalls: + m_Calls: [] + m_SelectExited: + m_PersistentCalls: + m_Calls: [] + m_OnHoverEntered: m_PersistentCalls: m_Calls: [] - m_OnHoverExit: + m_OnHoverExited: m_PersistentCalls: m_Calls: [] - m_OnSelectEnter: + m_OnSelectEntered: m_PersistentCalls: m_Calls: [] - m_OnSelectExit: + m_OnSelectExited: m_PersistentCalls: m_Calls: [] m_SelectActionTrigger: 1 m_HideControllerOnSelect: 0 - m_PlayAudioClipOnSelectEnter: 0 - m_AudioClipForOnSelectEnter: {fileID: 0} - m_PlayAudioClipOnSelectExit: 0 - m_AudioClipForOnSelectExit: {fileID: 0} - m_PlayAudioClipOnHoverEnter: 0 - m_AudioClipForOnHoverEnter: {fileID: 0} - m_PlayAudioClipOnHoverExit: 0 - m_AudioClipForOnHoverExit: {fileID: 0} - m_PlayHapticsOnSelectEnter: 0 + m_PlayAudioClipOnSelectEntered: 0 + m_AudioClipForOnSelectEntered: {fileID: 0} + m_PlayAudioClipOnSelectExited: 0 + m_AudioClipForOnSelectExited: {fileID: 0} + m_PlayAudioClipOnSelectCanceled: 0 + m_AudioClipForOnSelectCanceled: {fileID: 0} + m_PlayAudioClipOnHoverEntered: 0 + m_AudioClipForOnHoverEntered: {fileID: 0} + m_PlayAudioClipOnHoverExited: 0 + m_AudioClipForOnHoverExited: {fileID: 0} + m_PlayAudioClipOnHoverCanceled: 0 + m_AudioClipForOnHoverCanceled: {fileID: 0} + m_PlayHapticsOnSelectEntered: 0 m_HapticSelectEnterIntensity: 0 m_HapticSelectEnterDuration: 0 - m_PlayHapticsOnSelectExit: 0 + m_PlayHapticsOnSelectExited: 0 m_HapticSelectExitIntensity: 0 m_HapticSelectExitDuration: 0 - m_PlayHapticsOnHoverEnter: 0 + m_PlayHapticsOnSelectCanceled: 0 + m_HapticSelectCancelIntensity: 0 + m_HapticSelectCancelDuration: 0 + m_PlayHapticsOnHoverEntered: 0 m_HapticHoverEnterIntensity: 0 m_HapticHoverEnterDuration: 0 - m_PlayHapticsOnHoverExit: 0 + m_PlayHapticsOnHoverExited: 0 m_HapticHoverExitIntensity: 0 m_HapticHoverExitDuration: 0 + m_PlayHapticsOnHoverCanceled: 0 + m_HapticHoverCancelIntensity: 0 + m_HapticHoverCancelDuration: 0 m_LineType: 1 m_MaxRaycastDistance: 30 m_ReferenceFrame: {fileID: 0} @@ -1819,9 +1975,14 @@ MonoBehaviour: serializedVersion: 2 m_Bits: 256 m_RaycastTriggerInteraction: 1 + m_KeepSelectedTargetValid: 1 m_HoverToSelect: 0 m_HoverTimeToSelect: 0.5 m_EnableUIInteraction: 1 + m_AllowAnchorControl: 1 + m_UseForceGrab: 1 + m_RotateSpeed: 180 + m_TranslateSpeed: 1 --- !u!120 &7978014071796457450 LineRenderer: m_ObjectHideFlags: 0 @@ -2090,19 +2251,24 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_UpdateTrackingType: 0 + m_EnableInputTracking: 1 m_EnableInputActions: 1 - m_PoseProvider: {fileID: 0} - m_ControllerNode: 4 - m_SelectUsage: 3 - m_ActivateUsage: 2 - m_UIPressUsage: 0 - m_AxisToPressThreshold: 0.1 m_ModelPrefab: {fileID: 1306640934352848695, guid: 902b196ba17fa284bae10bdc5878a72d, type: 3} m_ModelTransform: {fileID: 0} m_AnimateModel: 0 m_ModelSelectTransition: m_ModelDeSelectTransition: + m_ControllerNode: 4 + m_SelectUsage: 3 + m_ActivateUsage: 2 + m_UIPressUsage: 0 + m_AxisToPressThreshold: 0.1 + m_RotateAnchorLeft: 16 + m_RotateAnchorRight: 17 + m_MoveObjectIn: 14 + m_MoveObjectOut: 15 + m_PoseProvider: {fileID: 0} --- !u!114 &3983429610902661409 MonoBehaviour: m_ObjectHideFlags: 0 @@ -2121,40 +2287,62 @@ MonoBehaviour: m_Bits: 1 m_AttachTransform: {fileID: 0} m_StartingSelectedInteractable: {fileID: 0} - m_OnHoverEnter: + m_HoverEntered: + m_PersistentCalls: + m_Calls: [] + m_HoverExited: + m_PersistentCalls: + m_Calls: [] + m_SelectEntered: + m_PersistentCalls: + m_Calls: [] + m_SelectExited: + m_PersistentCalls: + m_Calls: [] + m_OnHoverEntered: m_PersistentCalls: m_Calls: [] - m_OnHoverExit: + m_OnHoverExited: m_PersistentCalls: m_Calls: [] - m_OnSelectEnter: + m_OnSelectEntered: m_PersistentCalls: m_Calls: [] - m_OnSelectExit: + m_OnSelectExited: m_PersistentCalls: m_Calls: [] m_SelectActionTrigger: 1 m_HideControllerOnSelect: 0 - m_PlayAudioClipOnSelectEnter: 0 - m_AudioClipForOnSelectEnter: {fileID: 0} - m_PlayAudioClipOnSelectExit: 0 - m_AudioClipForOnSelectExit: {fileID: 0} - m_PlayAudioClipOnHoverEnter: 0 - m_AudioClipForOnHoverEnter: {fileID: 0} - m_PlayAudioClipOnHoverExit: 0 - m_AudioClipForOnHoverExit: {fileID: 0} - m_PlayHapticsOnSelectEnter: 1 + m_PlayAudioClipOnSelectEntered: 0 + m_AudioClipForOnSelectEntered: {fileID: 0} + m_PlayAudioClipOnSelectExited: 0 + m_AudioClipForOnSelectExited: {fileID: 0} + m_PlayAudioClipOnSelectCanceled: 0 + m_AudioClipForOnSelectCanceled: {fileID: 0} + m_PlayAudioClipOnHoverEntered: 0 + m_AudioClipForOnHoverEntered: {fileID: 0} + m_PlayAudioClipOnHoverExited: 0 + m_AudioClipForOnHoverExited: {fileID: 0} + m_PlayAudioClipOnHoverCanceled: 0 + m_AudioClipForOnHoverCanceled: {fileID: 0} + m_PlayHapticsOnSelectEntered: 1 m_HapticSelectEnterIntensity: 0.5 m_HapticSelectEnterDuration: 0.25 - m_PlayHapticsOnSelectExit: 1 + m_PlayHapticsOnSelectExited: 1 m_HapticSelectExitIntensity: 0.5 m_HapticSelectExitDuration: 0.125 - m_PlayHapticsOnHoverEnter: 1 + m_PlayHapticsOnSelectCanceled: 0 + m_HapticSelectCancelIntensity: 0 + m_HapticSelectCancelDuration: 0 + m_PlayHapticsOnHoverEntered: 1 m_HapticHoverEnterIntensity: 0.25 m_HapticHoverEnterDuration: 0.25 - m_PlayHapticsOnHoverExit: 1 + m_PlayHapticsOnHoverExited: 1 m_HapticHoverExitIntensity: 0.25 m_HapticHoverExitDuration: 0.125 + m_PlayHapticsOnHoverCanceled: 0 + m_HapticHoverCancelIntensity: 0 + m_HapticHoverCancelDuration: 0 precisionGrab: 1 --- !u!1 &8767993477320427908 GameObject: diff --git a/Resources/[XR_Setup].prefab.meta b/Resources/[XR_Setup_Device_Based].prefab.meta similarity index 100% rename from Resources/[XR_Setup].prefab.meta rename to Resources/[XR_Setup_Device_Based].prefab.meta diff --git a/Runtime/Interaction/Highlighters.meta b/Runtime/Creator XR Input Actions.meta similarity index 77% rename from Runtime/Interaction/Highlighters.meta rename to Runtime/Creator XR Input Actions.meta index 97404ed..f0b1074 100644 --- a/Runtime/Interaction/Highlighters.meta +++ b/Runtime/Creator XR Input Actions.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 216f40f2f60cfc54f9d9d8c121bc6e3f +guid: 2b6461d40e82ecb4894acc4251be34ed folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Runtime/Creator XR Input Actions/.sample.json b/Runtime/Creator XR Input Actions/.sample.json new file mode 100644 index 0000000..709ba66 --- /dev/null +++ b/Runtime/Creator XR Input Actions/.sample.json @@ -0,0 +1,4 @@ +{ + "displayName": "Default Input Actions", + "description": "Default set of input actions and presets for use with XR Interaction Toolkit behaviors that utilize the Input System." +} diff --git a/Runtime/Creator XR Input Actions/XRI Creator Continuous Move.preset b/Runtime/Creator XR Input Actions/XRI Creator Continuous Move.preset new file mode 100644 index 0000000..fca6c17 --- /dev/null +++ b/Runtime/Creator XR Input Actions/XRI Creator Continuous Move.preset @@ -0,0 +1,125 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!181963792 &2655988077585873504 +Preset: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: XRI Creator Continuous Move + m_TargetType: + m_NativeTypeID: 114 + m_ManagedTypePPtr: {fileID: 11500000, guid: 0bf296fc962d7184ab14ad1841598d5f, + type: 3} + m_ManagedTypeFallback: + m_Properties: + - target: {fileID: 0} + propertyPath: m_Enabled + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_EditorHideFlags + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_EditorClassIdentifier + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_System + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_MoveSpeed + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_EnableStrafe + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_UseGravity + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_GravityApplicationMode + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_ForwardSource + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LeftHandMoveAction.m_UseReference + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LeftHandMoveAction.m_Action.m_Name + value: Left Hand Move + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LeftHandMoveAction.m_Action.m_Type + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LeftHandMoveAction.m_Action.m_ExpectedControlType + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LeftHandMoveAction.m_Action.m_Id + value: 75f1b245-c357-48c8-9acb-8967bec9dda2 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LeftHandMoveAction.m_Action.m_Processors + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LeftHandMoveAction.m_Action.m_Interactions + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LeftHandMoveAction.m_Action.m_SingletonActionBindings.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LeftHandMoveAction.m_Reference + value: + objectReference: {fileID: 6972639530819350904, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + - target: {fileID: 0} + propertyPath: m_RightHandMoveAction.m_UseReference + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightHandMoveAction.m_Action.m_Name + value: Right Hand Move + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightHandMoveAction.m_Action.m_Type + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightHandMoveAction.m_Action.m_ExpectedControlType + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightHandMoveAction.m_Action.m_Id + value: 6bf6c732-e011-46b1-acc5-b649a4ec5f10 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightHandMoveAction.m_Action.m_Processors + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightHandMoveAction.m_Action.m_Interactions + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightHandMoveAction.m_Action.m_SingletonActionBindings.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightHandMoveAction.m_Reference + value: + objectReference: {fileID: -8198699208435500284, guid: c348712bda248c246b8c49b3db54643f, + type: 3} diff --git a/Runtime/Creator XR Input Actions/XRI Creator Continuous Move.preset.meta b/Runtime/Creator XR Input Actions/XRI Creator Continuous Move.preset.meta new file mode 100644 index 0000000..d47eaa1 --- /dev/null +++ b/Runtime/Creator XR Input Actions/XRI Creator Continuous Move.preset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 91f9da00cfdac5d49955df2d2d820b9c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Creator XR Input Actions/XRI Creator Continuous Turn.preset b/Runtime/Creator XR Input Actions/XRI Creator Continuous Turn.preset new file mode 100644 index 0000000..a9c3b0d --- /dev/null +++ b/Runtime/Creator XR Input Actions/XRI Creator Continuous Turn.preset @@ -0,0 +1,109 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!181963792 &2655988077585873504 +Preset: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: XRI Creator Continuous Turn + m_TargetType: + m_NativeTypeID: 114 + m_ManagedTypePPtr: {fileID: 11500000, guid: 919e39492806b334982b6b84c90dd927, + type: 3} + m_ManagedTypeFallback: + m_Properties: + - target: {fileID: 0} + propertyPath: m_Enabled + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_EditorHideFlags + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_EditorClassIdentifier + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_System + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TurnSpeed + value: 60 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LeftHandTurnAction.m_UseReference + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LeftHandTurnAction.m_Action.m_Name + value: Left Hand Turn + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LeftHandTurnAction.m_Action.m_Type + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LeftHandTurnAction.m_Action.m_ExpectedControlType + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LeftHandTurnAction.m_Action.m_Id + value: b9ac2485-f305-451c-9106-d1d25cc235dc + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LeftHandTurnAction.m_Action.m_Processors + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LeftHandTurnAction.m_Action.m_Interactions + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LeftHandTurnAction.m_Action.m_SingletonActionBindings.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LeftHandTurnAction.m_Reference + value: + objectReference: {fileID: 1010738217276881514, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + - target: {fileID: 0} + propertyPath: m_RightHandTurnAction.m_UseReference + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightHandTurnAction.m_Action.m_Name + value: Right Hand Turn + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightHandTurnAction.m_Action.m_Type + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightHandTurnAction.m_Action.m_ExpectedControlType + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightHandTurnAction.m_Action.m_Id + value: 93119ec4-ae3b-41c0-8fb4-7ff4c5e6f732 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightHandTurnAction.m_Action.m_Processors + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightHandTurnAction.m_Action.m_Interactions + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightHandTurnAction.m_Action.m_SingletonActionBindings.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightHandTurnAction.m_Reference + value: + objectReference: {fileID: -6493913391331992944, guid: c348712bda248c246b8c49b3db54643f, + type: 3} diff --git a/Runtime/Creator XR Input Actions/XRI Creator Continuous Turn.preset.meta b/Runtime/Creator XR Input Actions/XRI Creator Continuous Turn.preset.meta new file mode 100644 index 0000000..607bb11 --- /dev/null +++ b/Runtime/Creator XR Input Actions/XRI Creator Continuous Turn.preset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0caad3af14f9a414dbdf25ed41e5aa47 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Creator XR Input Actions/XRI Creator Input Actions.inputactions b/Runtime/Creator XR Input Actions/XRI Creator Input Actions.inputactions new file mode 100644 index 0000000..907f043 --- /dev/null +++ b/Runtime/Creator XR Input Actions/XRI Creator Input Actions.inputactions @@ -0,0 +1,846 @@ +{ + "name": "XRI Creator Input Actions", + "maps": [ + { + "name": "XRI HMD", + "id": "09ff3ccc-21b4-4346-a3a2-7c978b5af892", + "actions": [ + { + "name": "Position", + "type": "Value", + "id": "1a9029f8-7a46-46b9-9eff-e9ae8365f611", + "expectedControlType": "Vector3", + "processors": "", + "interactions": "" + }, + { + "name": "Rotation", + "type": "Value", + "id": "aed87fe6-2b01-4dd2-a8fa-195578fd8158", + "expectedControlType": "Quaternion", + "processors": "", + "interactions": "" + } + ], + "bindings": [ + { + "name": "", + "id": "cff1f981-6e1f-4e2c-a90c-715a0ea2e80e", + "path": "/centerEyePosition", + "interactions": "", + "processors": "", + "groups": "Generic XR Controller", + "action": "Position", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "e2017383-a3f6-4c46-acb1-012b8eece9cc", + "path": "/centerEyeRotation", + "interactions": "", + "processors": "", + "groups": "Generic XR Controller", + "action": "Rotation", + "isComposite": false, + "isPartOfComposite": false + } + ] + }, + { + "name": "XRI LeftHand", + "id": "5fe596f9-1b7b-49b7-80a7-3b5195caf74d", + "actions": [ + { + "name": "Position", + "type": "Value", + "id": "83a7af0b-87e3-42c3-a909-95fbf8091e4f", + "expectedControlType": "Vector3", + "processors": "", + "interactions": "" + }, + { + "name": "Rotation", + "type": "Value", + "id": "cb6b7130-2bac-4ef7-abe4-6991ae7d419d", + "expectedControlType": "Quaternion", + "processors": "", + "interactions": "" + }, + { + "name": "Select", + "type": "Button", + "id": "33754c03-48ec-46ef-9bc6-22ed6bfdd8e8", + "expectedControlType": "Button", + "processors": "", + "interactions": "" + }, + { + "name": "Activate", + "type": "Button", + "id": "0c0991c5-d329-4afc-8892-1076b440477c", + "expectedControlType": "Button", + "processors": "", + "interactions": "" + }, + { + "name": "UI Press", + "type": "Button", + "id": "7e1eced7-c774-4fe5-be8f-d8711f646d9e", + "expectedControlType": "Button", + "processors": "", + "interactions": "" + }, + { + "name": "Haptic Device", + "type": "PassThrough", + "id": "664a62b0-e178-421d-b3f8-014eec01591d", + "expectedControlType": "", + "processors": "", + "interactions": "" + }, + { + "name": "Teleport Select", + "type": "Button", + "id": "cbeaf823-3b69-4004-8ec8-13ea2ca3fc31", + "expectedControlType": "Button", + "processors": "", + "interactions": "" + }, + { + "name": "Teleport Mode Activate", + "type": "Button", + "id": "a21db72c-4843-4839-b4d0-3ce8d287cb86", + "expectedControlType": "Button", + "processors": "", + "interactions": "" + }, + { + "name": "Teleport Mode Cancel", + "type": "Button", + "id": "89ce8348-6001-41a3-85b9-f8f2e2dcad7c", + "expectedControlType": "Button", + "processors": "", + "interactions": "" + }, + { + "name": "Turn", + "type": "Value", + "id": "9164e093-ebd4-4923-af32-1b52f31c2d66", + "expectedControlType": "Vector2", + "processors": "", + "interactions": "" + }, + { + "name": "Move", + "type": "Value", + "id": "9693e25f-8a4f-4aed-842f-3961243c69a1", + "expectedControlType": "Vector2", + "processors": "", + "interactions": "" + }, + { + "name": "Rotate Anchor", + "type": "Value", + "id": "21b75b25-12ad-410f-b4f8-a7745b7aca27", + "expectedControlType": "Vector2", + "processors": "", + "interactions": "" + }, + { + "name": "Translate Anchor", + "type": "Value", + "id": "bfa204c7-3c92-4193-bad1-39eb71920042", + "expectedControlType": "Vector2", + "processors": "", + "interactions": "" + }, + { + "name": "UI Mode Activate", + "type": "Button", + "id": "e79be11e-456a-469f-afa0-e7569cbecd83", + "expectedControlType": "Button", + "processors": "", + "interactions": "" + } + ], + "bindings": [ + { + "name": "", + "id": "b34c79c1-ab5e-4851-87ac-abc43705eae0", + "path": "{LeftHand}/triggerPressed", + "interactions": "", + "processors": "", + "groups": "Generic XR Controller", + "action": "UI Press", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "79634234-07c9-488b-98bd-7d83eb6895c5", + "path": "{LeftHand}/deviceRotation", + "interactions": "", + "processors": "", + "groups": "Generic XR Controller", + "action": "Rotation", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "b8aebee7-fa03-43d4-bfb7-77a3f87452cc", + "path": "{LeftHand}/gripPressed", + "interactions": "", + "processors": "", + "groups": "Generic XR Controller", + "action": "Teleport Mode Cancel", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "3bf4fccb-bf42-4ec5-b215-c967f1d71642", + "path": "{LeftHand}/devicePosition", + "interactions": "", + "processors": "", + "groups": "Generic XR Controller", + "action": "Position", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "71a4d23f-3e9a-4513-923b-ba388c5e84bf", + "path": "{LeftHand}/gripPressed", + "interactions": "", + "processors": "", + "groups": "Generic XR Controller", + "action": "Select", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "487f4f2e-9e9b-49aa-b0f2-4037a24624f5", + "path": "{LeftHand}/triggerPressed", + "interactions": "", + "processors": "", + "groups": "Generic XR Controller", + "action": "Activate", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "99cb7ad1-51ec-4611-af68-92a85f2c17d6", + "path": "{LeftHand}/Primary2DAxis", + "interactions": "Sector(directions=12,sweepBehavior=1)", + "processors": "", + "groups": "Noncontinuous Move", + "action": "Turn", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "034c3ced-8f2c-44ce-892e-678ca433265b", + "path": "{LeftHand}/Primary2DAxis", + "interactions": "Sector(directions=2,sweepBehavior=2)", + "processors": "", + "groups": "Noncontinuous Move", + "action": "Turn", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "8e383b1a-270f-4c20-819b-89a59cffb498", + "path": "{LeftHand}/Primary2DAxis", + "interactions": "", + "processors": "StickDeadzone", + "groups": "Continuous Move", + "action": "Move", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "acdf9550-5529-4ff7-8558-73ecdf0d75bd", + "path": "{LeftHand}/*", + "interactions": "", + "processors": "", + "groups": "Generic XR Controller", + "action": "Haptic Device", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "2D Vector", + "id": "de8136fd-5b07-4794-bb96-63c6027cf1b6", + "path": "2DVector(mode=2)", + "interactions": "", + "processors": "StickDeadzone", + "groups": "", + "action": "Rotate Anchor", + "isComposite": true, + "isPartOfComposite": false + }, + { + "name": "up", + "id": "529c0dda-d254-4a71-8aa8-7dbdeabbe45d", + "path": "", + "interactions": "", + "processors": "", + "groups": "Generic XR Controller", + "action": "Rotate Anchor", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "down", + "id": "dad37c56-3fcd-4890-98bf-e06f80ba76ff", + "path": "", + "interactions": "", + "processors": "", + "groups": "Generic XR Controller", + "action": "Rotate Anchor", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "left", + "id": "e0dd3431-14bb-4817-ac71-ed700d5af1ca", + "path": "{LeftHand}/Primary2DAxis/x", + "interactions": "", + "processors": "Clamp(min=-1),Invert", + "groups": "Generic XR Controller", + "action": "Rotate Anchor", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "right", + "id": "0064f189-a00e-4cf8-9f53-be76a30cb97f", + "path": "{LeftHand}/Primary2DAxis/x", + "interactions": "", + "processors": "Clamp(max=1)", + "groups": "Generic XR Controller", + "action": "Rotate Anchor", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "2D Vector", + "id": "44d142b3-f6ac-4d08-8bd1-fac53cf9bb9e", + "path": "2DVector(mode=2)", + "interactions": "", + "processors": "StickDeadzone", + "groups": "", + "action": "Translate Anchor", + "isComposite": true, + "isPartOfComposite": false + }, + { + "name": "up", + "id": "b1dbcb6a-408c-413c-b2d1-7a10fe418324", + "path": "{LeftHand}/Primary2DAxis/y", + "interactions": "", + "processors": "Clamp(max=1)", + "groups": "Generic XR Controller", + "action": "Translate Anchor", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "down", + "id": "0e38a62a-8bee-4853-b87a-1af460e3ec33", + "path": "{LeftHand}/Primary2DAxis/y", + "interactions": "", + "processors": "Clamp(min=-1),Invert", + "groups": "Generic XR Controller", + "action": "Translate Anchor", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "left", + "id": "2f25805f-44a3-4716-983c-532473bcc03c", + "path": "", + "interactions": "", + "processors": "", + "groups": "Generic XR Controller", + "action": "Translate Anchor", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "right", + "id": "d97ccaa1-79ae-4ca7-b7dd-be5ce92c94a6", + "path": "", + "interactions": "", + "processors": "", + "groups": "Generic XR Controller", + "action": "Translate Anchor", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "", + "id": "b3670fbb-4534-42ae-b6e8-124f0236d01d", + "path": "{LeftHand}/triggerPressed", + "interactions": "", + "processors": "", + "groups": "Generic XR Controller", + "action": "Teleport Select", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "6c950e2a-8a97-436a-b5ef-cb27db09b91a", + "path": "{LeftHand}/triggerPressed", + "interactions": "", + "processors": "", + "groups": "Generic XR Controller", + "action": "Teleport Mode Activate", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "0cf3d989-0294-42f6-9fe6-751db7fe2d47", + "path": "{LeftHand}/gripPressed", + "interactions": "", + "processors": "", + "groups": "Generic XR Controller", + "action": "UI Mode Activate", + "isComposite": false, + "isPartOfComposite": false + } + ] + }, + { + "name": "XRI RightHand", + "id": "7960f8ef-2bf3-4281-aecc-4c03809d6c8c", + "actions": [ + { + "name": "Position", + "type": "Value", + "id": "c4990d70-7b8a-4ce1-b03c-da86716b8352", + "expectedControlType": "Vector3", + "processors": "", + "interactions": "" + }, + { + "name": "Rotation", + "type": "Value", + "id": "ee6bf5bf-bb0a-4a50-8327-cb654b19e298", + "expectedControlType": "Quaternion", + "processors": "", + "interactions": "" + }, + { + "name": "Select", + "type": "Button", + "id": "ac96c10b-c955-4a46-8e67-bf16bc069b53", + "expectedControlType": "Button", + "processors": "", + "interactions": "" + }, + { + "name": "Activate", + "type": "Button", + "id": "41976d89-60de-4deb-bff9-16b4af96b290", + "expectedControlType": "Button", + "processors": "", + "interactions": "" + }, + { + "name": "UI Press", + "type": "Button", + "id": "65174b45-c2ee-4f90-93bb-fb4084eaaab3", + "expectedControlType": "Button", + "processors": "", + "interactions": "" + }, + { + "name": "Haptic Device", + "type": "PassThrough", + "id": "57b2a1b4-3290-46d6-ac07-4854ee8f91b1", + "expectedControlType": "", + "processors": "", + "interactions": "" + }, + { + "name": "Teleport Select", + "type": "Button", + "id": "02e43582-8973-4940-af06-dff6158e3df2", + "expectedControlType": "Button", + "processors": "", + "interactions": "" + }, + { + "name": "Teleport Mode Activate", + "type": "Button", + "id": "a6c7231d-c55d-4dd4-9e87-877bb5522ef5", + "expectedControlType": "Button", + "processors": "", + "interactions": "" + }, + { + "name": "Teleport Mode Cancel", + "type": "Button", + "id": "d587b60c-39a0-4365-8075-477ce484ba0f", + "expectedControlType": "Button", + "processors": "", + "interactions": "" + }, + { + "name": "Turn", + "type": "Value", + "id": "9fb2eb2b-2fb6-4328-8167-10a1bf11b424", + "expectedControlType": "Vector2", + "processors": "", + "interactions": "" + }, + { + "name": "Move", + "type": "Value", + "id": "00a4dc9f-1ee6-4349-b0e9-72d5dccaadd6", + "expectedControlType": "Vector2", + "processors": "", + "interactions": "" + }, + { + "name": "Rotate Anchor", + "type": "Value", + "id": "9b5d8312-f609-4895-b70f-81a722b2ae11", + "expectedControlType": "Vector2", + "processors": "", + "interactions": "" + }, + { + "name": "Translate Anchor", + "type": "Value", + "id": "6f7cf253-7062-443b-b10f-2be48a33f027", + "expectedControlType": "Vector2", + "processors": "", + "interactions": "" + }, + { + "name": "UI Mode Active", + "type": "Button", + "id": "2610cf9a-103e-4523-832c-5daefb9ba8b4", + "expectedControlType": "Button", + "processors": "", + "interactions": "" + } + ], + "bindings": [ + { + "name": "", + "id": "fa59aed1-ae0b-4074-a58c-294b85f46228", + "path": "{RightHand}/triggerPressed", + "interactions": "", + "processors": "", + "groups": "Generic XR Controller", + "action": "Activate", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "8d2a5710-51f9-4e4b-a592-021821e5caa7", + "path": "{RightHand}/deviceRotation", + "interactions": "", + "processors": "", + "groups": "Generic XR Controller", + "action": "Rotation", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "de466e6e-12bf-46a1-b0fd-ffbc343f3399", + "path": "{RightHand}/gripPressed", + "interactions": "", + "processors": "", + "groups": "Generic XR Controller", + "action": "Teleport Mode Cancel", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "274078b0-62e5-4730-bcc2-6896b9ad9f0c", + "path": "{RightHand}/devicePosition", + "interactions": "", + "processors": "", + "groups": "Generic XR Controller", + "action": "Position", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "1ce80054-410d-4112-a332-50faa7fb4f23", + "path": "{RightHand}/gripPressed", + "interactions": "", + "processors": "", + "groups": "Generic XR Controller", + "action": "Select", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "92bb5b8f-bf48-4dab-af05-50a865773895", + "path": "{RightHand}/triggerPressed", + "interactions": "", + "processors": "", + "groups": "Generic XR Controller", + "action": "UI Press", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "d6c08c3d-3d41-4695-994d-1ac9016a5a9e", + "path": "{RightHand}/Primary2DAxis", + "interactions": "Sector(directions=12,sweepBehavior=1)", + "processors": "", + "groups": "Generic XR Controller", + "action": "Turn", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "70f78baa-0f00-4d32-a2b6-ea9e2090ecc2", + "path": "{RightHand}/Primary2DAxis", + "interactions": "Sector(directions=2,sweepBehavior=2)", + "processors": "", + "groups": "Generic XR Controller", + "action": "Turn", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "6011e1e6-b2dd-4cb1-8da5-29b03868f2c5", + "path": "{RightHand}/*", + "interactions": "", + "processors": "", + "groups": "Generic XR Controller", + "action": "Haptic Device", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "2D Vector", + "id": "61502e80-1b21-4116-890c-c0bc31c9dffd", + "path": "2DVector(mode=2)", + "interactions": "", + "processors": "StickDeadzone", + "groups": "", + "action": "Rotate Anchor", + "isComposite": true, + "isPartOfComposite": false + }, + { + "name": "up", + "id": "2b466c01-134f-40f2-b376-f7e9684e423b", + "path": "", + "interactions": "", + "processors": "", + "groups": "Generic XR Controller", + "action": "Rotate Anchor", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "down", + "id": "79757cb3-5b81-4a3d-bc3c-d2582f85d5db", + "path": "", + "interactions": "", + "processors": "", + "groups": "Generic XR Controller", + "action": "Rotate Anchor", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "left", + "id": "76425f70-54b8-4f8e-ad52-94debc75962c", + "path": "{RightHand}/Primary2DAxis/x", + "interactions": "", + "processors": "Clamp(min=-1),Invert", + "groups": "Generic XR Controller", + "action": "Rotate Anchor", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "right", + "id": "8df952de-cf29-4b5e-9a90-a6b4eee7f52c", + "path": "{RightHand}/Primary2DAxis/x", + "interactions": "", + "processors": "Clamp(max=1)", + "groups": "Generic XR Controller", + "action": "Rotate Anchor", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "2D Vector", + "id": "a4b1434f-f204-49c4-bcea-c25e321e93eb", + "path": "2DVector(mode=2)", + "interactions": "", + "processors": "StickDeadzone", + "groups": "", + "action": "Translate Anchor", + "isComposite": true, + "isPartOfComposite": false + }, + { + "name": "up", + "id": "4ced8328-f738-4bbd-937a-c09019acd234", + "path": "{RightHand}/Primary2DAxis/y", + "interactions": "", + "processors": "Clamp(max=1)", + "groups": "Generic XR Controller", + "action": "Translate Anchor", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "down", + "id": "f7e89e7c-f5a9-4f42-914f-945815a49033", + "path": "{RightHand}/Primary2DAxis/y", + "interactions": "", + "processors": "Clamp(min=-1),Invert", + "groups": "Generic XR Controller", + "action": "Translate Anchor", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "left", + "id": "df3b3e57-34c6-4200-b00e-6617123a9680", + "path": "", + "interactions": "", + "processors": "", + "groups": "Generic XR Controller", + "action": "Translate Anchor", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "right", + "id": "54ddc99c-3e9a-4c3a-9fdd-f5fb15952af4", + "path": "", + "interactions": "", + "processors": "", + "groups": "Generic XR Controller", + "action": "Translate Anchor", + "isComposite": false, + "isPartOfComposite": true + }, + { + "name": "", + "id": "c59cacef-64b0-4bc8-803e-d8942dead904", + "path": "{RightHand}/triggerPressed", + "interactions": "", + "processors": "", + "groups": "Generic XR Controller", + "action": "Teleport Select", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "ff6ce76f-be33-415d-9b08-36ccb7caa30b", + "path": "{RightHand}/triggerPressed", + "interactions": "", + "processors": "", + "groups": "Generic XR Controller", + "action": "Teleport Mode Activate", + "isComposite": false, + "isPartOfComposite": false + }, + { + "name": "", + "id": "ae7ba8b1-27b2-4ba3-a3f4-2afd79d45e03", + "path": "{RightHand}/gripPressed", + "interactions": "", + "processors": "", + "groups": "Generic XR Controller", + "action": "UI Mode Active", + "isComposite": false, + "isPartOfComposite": false + } + ] + } + ], + "controlSchemes": [ + { + "name": "Generic XR Controller", + "bindingGroup": "Generic XR Controller", + "devices": [ + { + "devicePath": "{LeftHand}", + "isOptional": true, + "isOR": false + }, + { + "devicePath": "{RightHand}", + "isOptional": true, + "isOR": false + }, + { + "devicePath": "", + "isOptional": true, + "isOR": false + }, + { + "devicePath": "", + "isOptional": true, + "isOR": false + } + ] + }, + { + "name": "Continuous Move", + "bindingGroup": "Continuous Move", + "devices": [ + { + "devicePath": "{LeftHand}", + "isOptional": false, + "isOR": false + }, + { + "devicePath": "{RightHand}", + "isOptional": false, + "isOR": false + } + ] + }, + { + "name": "Noncontinuous Move", + "bindingGroup": "Noncontinuous Move", + "devices": [ + { + "devicePath": "{LeftHand}", + "isOptional": false, + "isOR": false + }, + { + "devicePath": "{RightHand}", + "isOptional": false, + "isOR": false + } + ] + } + ] +} \ No newline at end of file diff --git a/Runtime/Creator XR Input Actions/XRI Creator Input Actions.inputactions.meta b/Runtime/Creator XR Input Actions/XRI Creator Input Actions.inputactions.meta new file mode 100644 index 0000000..621872e --- /dev/null +++ b/Runtime/Creator XR Input Actions/XRI Creator Input Actions.inputactions.meta @@ -0,0 +1,14 @@ +fileFormatVersion: 2 +guid: c348712bda248c246b8c49b3db54643f +ScriptedImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 2 + userData: + assetBundleName: + assetBundleVariant: + script: {fileID: 11500000, guid: 8404be70184654265930450def6a9037, type: 3} + generateWrapperCode: 0 + wrapperCodePath: + wrapperClassName: + wrapperCodeNamespace: diff --git a/Runtime/Creator XR Input Actions/XRI Creator Left Controller.preset b/Runtime/Creator XR Input Actions/XRI Creator Left Controller.preset new file mode 100644 index 0000000..4de61e7 --- /dev/null +++ b/Runtime/Creator XR Input Actions/XRI Creator Left Controller.preset @@ -0,0 +1,359 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!181963792 &2655988077585873504 +Preset: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: XRI Creator Left Controller + m_TargetType: + m_NativeTypeID: 114 + m_ManagedTypePPtr: {fileID: 11500000, guid: caff514de9b15ad48ab85dcff5508221, + type: 3} + m_ManagedTypeFallback: + m_Properties: + - target: {fileID: 0} + propertyPath: m_Enabled + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_EditorHideFlags + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_EditorClassIdentifier + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_UpdateTrackingType + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_EnableInputTracking + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_EnableInputActions + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_ModelPrefab + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_ModelTransform + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_AnimateModel + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_ModelSelectTransition + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_ModelDeSelectTransition + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PositionAction.m_UseReference + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PositionAction.m_Action.m_Name + value: Position + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PositionAction.m_Action.m_Type + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PositionAction.m_Action.m_ExpectedControlType + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PositionAction.m_Action.m_Id + value: 26d2aaa4-6518-4d33-8fae-419043a723d4 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PositionAction.m_Action.m_Processors + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PositionAction.m_Action.m_Interactions + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PositionAction.m_Action.m_SingletonActionBindings.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PositionAction.m_Reference + value: + objectReference: {fileID: -2024308242397127297, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + - target: {fileID: 0} + propertyPath: m_RotationAction.m_UseReference + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RotationAction.m_Action.m_Name + value: Rotation + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RotationAction.m_Action.m_Type + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RotationAction.m_Action.m_ExpectedControlType + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RotationAction.m_Action.m_Id + value: d7a15530-737b-416a-9d5d-a8b51ba6c682 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RotationAction.m_Action.m_Processors + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RotationAction.m_Action.m_Interactions + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RotationAction.m_Action.m_SingletonActionBindings.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RotationAction.m_Reference + value: + objectReference: {fileID: 8248158260566104461, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + - target: {fileID: 0} + propertyPath: m_SelectAction.m_UseReference + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SelectAction.m_Action.m_Name + value: Select + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SelectAction.m_Action.m_Type + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SelectAction.m_Action.m_ExpectedControlType + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SelectAction.m_Action.m_Id + value: 05483079-4b7c-4369-9176-fb8514428e98 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SelectAction.m_Action.m_Processors + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SelectAction.m_Action.m_Interactions + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SelectAction.m_Action.m_SingletonActionBindings.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SelectAction.m_Reference + value: + objectReference: {fileID: -6131295136447488360, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + - target: {fileID: 0} + propertyPath: m_ActivateAction.m_UseReference + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_ActivateAction.m_Action.m_Name + value: Activate + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_ActivateAction.m_Action.m_Type + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_ActivateAction.m_Action.m_ExpectedControlType + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_ActivateAction.m_Action.m_Id + value: 38e5c09b-96d2-40e4-ae8e-3bfb9eb16727 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_ActivateAction.m_Action.m_Processors + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_ActivateAction.m_Action.m_Interactions + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_ActivateAction.m_Action.m_SingletonActionBindings.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_ActivateAction.m_Reference + value: + objectReference: {fileID: -5982496924579745919, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + - target: {fileID: 0} + propertyPath: m_UIPressAction.m_UseReference + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_UIPressAction.m_Action.m_Name + value: UI Press + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_UIPressAction.m_Action.m_Type + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_UIPressAction.m_Action.m_ExpectedControlType + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_UIPressAction.m_Action.m_Id + value: 347fe4ac-83bc-44f7-a0d2-2793a5775161 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_UIPressAction.m_Action.m_Processors + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_UIPressAction.m_Action.m_Interactions + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_UIPressAction.m_Action.m_SingletonActionBindings.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_UIPressAction.m_Reference + value: + objectReference: {fileID: -6395602842196007441, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + - target: {fileID: 0} + propertyPath: m_HapticDeviceAction.m_UseReference + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_HapticDeviceAction.m_Action.m_Name + value: Haptic Device + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_HapticDeviceAction.m_Action.m_Type + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_HapticDeviceAction.m_Action.m_ExpectedControlType + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_HapticDeviceAction.m_Action.m_Id + value: 35cfed17-bcaf-4ff9-9fe0-fa1727b7619b + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_HapticDeviceAction.m_Action.m_Processors + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_HapticDeviceAction.m_Action.m_Interactions + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_HapticDeviceAction.m_Action.m_SingletonActionBindings.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_HapticDeviceAction.m_Reference + value: + objectReference: {fileID: -8785819595477538065, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + - target: {fileID: 0} + propertyPath: m_RotateAnchorAction.m_UseReference + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RotateAnchorAction.m_Action.m_Name + value: Rotate Anchor + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RotateAnchorAction.m_Action.m_Type + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RotateAnchorAction.m_Action.m_ExpectedControlType + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RotateAnchorAction.m_Action.m_Id + value: 4fcd4b62-1769-4cc4-aaee-aea2fc40d24f + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RotateAnchorAction.m_Action.m_Processors + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RotateAnchorAction.m_Action.m_Interactions + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RotateAnchorAction.m_Action.m_SingletonActionBindings.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RotateAnchorAction.m_Reference + value: + objectReference: {fileID: -7363382999065477798, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + - target: {fileID: 0} + propertyPath: m_TranslateAnchorAction.m_UseReference + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TranslateAnchorAction.m_Action.m_Name + value: Translate Anchor + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TranslateAnchorAction.m_Action.m_Type + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TranslateAnchorAction.m_Action.m_ExpectedControlType + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TranslateAnchorAction.m_Action.m_Id + value: 7bfe4461-8d15-4a61-9fa6-28ce950c9996 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TranslateAnchorAction.m_Action.m_Processors + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TranslateAnchorAction.m_Action.m_Interactions + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TranslateAnchorAction.m_Action.m_SingletonActionBindings.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TranslateAnchorAction.m_Reference + value: + objectReference: {fileID: 7779212132400271959, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + - target: {fileID: 0} + propertyPath: m_ButtonPressPoint + value: 0.5 + objectReference: {fileID: 0} diff --git a/Runtime/Creator XR Input Actions/XRI Creator Left Controller.preset.meta b/Runtime/Creator XR Input Actions/XRI Creator Left Controller.preset.meta new file mode 100644 index 0000000..23df222 --- /dev/null +++ b/Runtime/Creator XR Input Actions/XRI Creator Left Controller.preset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ffd8268f7307a0c48a067dad4a8fe060 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Creator XR Input Actions/XRI Creator PresetManager.preset b/Runtime/Creator XR Input Actions/XRI Creator PresetManager.preset new file mode 100644 index 0000000..a3dfd71 --- /dev/null +++ b/Runtime/Creator XR Input Actions/XRI Creator PresetManager.preset @@ -0,0 +1,127 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!181963792 &2655988077585873504 +Preset: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: XRI Creator PresetManager + m_TargetType: + m_NativeTypeID: 1386491679 + m_ManagedTypePPtr: {fileID: 0} + m_ManagedTypeFallback: + m_Properties: + - target: {fileID: 0} + propertyPath: m_DefaultPresets.Array.size + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_DefaultPresets.Array.data[0].first.m_NativeTypeID + value: 114 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_DefaultPresets.Array.data[0].first.m_ManagedTypePPtr + value: + objectReference: {fileID: 11500000, guid: 2213c36610e3b1c4bbf886810ed9db12, type: 3} + - target: {fileID: 0} + propertyPath: m_DefaultPresets.Array.data[0].first.m_ManagedTypeFallback + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_DefaultPresets.Array.data[0].second.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_DefaultPresets.Array.data[0].second.Array.data[0].m_Preset + value: + objectReference: {fileID: 2655988077585873504, guid: 18697d253d848974aa7052cba872c9f0, + type: 2} + - target: {fileID: 0} + propertyPath: m_DefaultPresets.Array.data[0].second.Array.data[0].m_Filter + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_DefaultPresets.Array.data[1].first.m_NativeTypeID + value: 114 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_DefaultPresets.Array.data[1].first.m_ManagedTypePPtr + value: + objectReference: {fileID: 11500000, guid: caff514de9b15ad48ab85dcff5508221, type: 3} + - target: {fileID: 0} + propertyPath: m_DefaultPresets.Array.data[1].first.m_ManagedTypeFallback + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_DefaultPresets.Array.data[1].second.Array.size + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_DefaultPresets.Array.data[1].second.Array.data[0].m_Preset + value: + objectReference: {fileID: 2655988077585873504, guid: 1421ad86ff3787b4dae70fe9e699a25f, + type: 2} + - target: {fileID: 0} + propertyPath: m_DefaultPresets.Array.data[1].second.Array.data[0].m_Filter + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_DefaultPresets.Array.data[1].second.Array.data[1].m_Preset + value: + objectReference: {fileID: 2655988077585873504, guid: ffd8268f7307a0c48a067dad4a8fe060, + type: 2} + - target: {fileID: 0} + propertyPath: m_DefaultPresets.Array.data[1].second.Array.data[1].m_Filter + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_DefaultPresets.Array.data[2].first.m_NativeTypeID + value: 114 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_DefaultPresets.Array.data[2].first.m_ManagedTypePPtr + value: + objectReference: {fileID: 11500000, guid: 919e39492806b334982b6b84c90dd927, type: 3} + - target: {fileID: 0} + propertyPath: m_DefaultPresets.Array.data[2].first.m_ManagedTypeFallback + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_DefaultPresets.Array.data[2].second.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_DefaultPresets.Array.data[2].second.Array.data[0].m_Preset + value: + objectReference: {fileID: 2655988077585873504, guid: 0caad3af14f9a414dbdf25ed41e5aa47, + type: 2} + - target: {fileID: 0} + propertyPath: m_DefaultPresets.Array.data[2].second.Array.data[0].m_Filter + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_DefaultPresets.Array.data[3].first.m_NativeTypeID + value: 114 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_DefaultPresets.Array.data[3].first.m_ManagedTypePPtr + value: + objectReference: {fileID: 11500000, guid: 0bf296fc962d7184ab14ad1841598d5f, type: 3} + - target: {fileID: 0} + propertyPath: m_DefaultPresets.Array.data[3].first.m_ManagedTypeFallback + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_DefaultPresets.Array.data[3].second.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_DefaultPresets.Array.data[3].second.Array.data[0].m_Preset + value: + objectReference: {fileID: 2655988077585873504, guid: 91f9da00cfdac5d49955df2d2d820b9c, + type: 2} + - target: {fileID: 0} + propertyPath: m_DefaultPresets.Array.data[3].second.Array.data[0].m_Filter + value: + objectReference: {fileID: 0} diff --git a/Runtime/Creator XR Input Actions/XRI Creator PresetManager.preset.meta b/Runtime/Creator XR Input Actions/XRI Creator PresetManager.preset.meta new file mode 100644 index 0000000..ed160ae --- /dev/null +++ b/Runtime/Creator XR Input Actions/XRI Creator PresetManager.preset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ae7e3398afd914b4ba3cbdf74bd4ae9c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Creator XR Input Actions/XRI Creator Right Controller.preset b/Runtime/Creator XR Input Actions/XRI Creator Right Controller.preset new file mode 100644 index 0000000..1e6b174 --- /dev/null +++ b/Runtime/Creator XR Input Actions/XRI Creator Right Controller.preset @@ -0,0 +1,359 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!181963792 &2655988077585873504 +Preset: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: XRI Creator Right Controller + m_TargetType: + m_NativeTypeID: 114 + m_ManagedTypePPtr: {fileID: 11500000, guid: caff514de9b15ad48ab85dcff5508221, + type: 3} + m_ManagedTypeFallback: + m_Properties: + - target: {fileID: 0} + propertyPath: m_Enabled + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_EditorHideFlags + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_EditorClassIdentifier + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_UpdateTrackingType + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_EnableInputTracking + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_EnableInputActions + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_ModelPrefab + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_ModelTransform + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_AnimateModel + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_ModelSelectTransition + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_ModelDeSelectTransition + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PositionAction.m_UseReference + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PositionAction.m_Action.m_Name + value: Position + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PositionAction.m_Action.m_Type + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PositionAction.m_Action.m_ExpectedControlType + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PositionAction.m_Action.m_Id + value: 93ead265-4bff-4199-8ddf-33c028dcfee9 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PositionAction.m_Action.m_Processors + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PositionAction.m_Action.m_Interactions + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PositionAction.m_Action.m_SingletonActionBindings.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_PositionAction.m_Reference + value: + objectReference: {fileID: -3326005586356538449, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + - target: {fileID: 0} + propertyPath: m_RotationAction.m_UseReference + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RotationAction.m_Action.m_Name + value: Rotation + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RotationAction.m_Action.m_Type + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RotationAction.m_Action.m_ExpectedControlType + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RotationAction.m_Action.m_Id + value: cd9a8368-32d3-4e58-86a0-6fe78d199369 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RotationAction.m_Action.m_Processors + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RotationAction.m_Action.m_Interactions + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RotationAction.m_Action.m_SingletonActionBindings.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RotationAction.m_Reference + value: + objectReference: {fileID: 5101698808175986029, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + - target: {fileID: 0} + propertyPath: m_SelectAction.m_UseReference + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SelectAction.m_Action.m_Name + value: Select + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SelectAction.m_Action.m_Type + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SelectAction.m_Action.m_ExpectedControlType + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SelectAction.m_Action.m_Id + value: 3207346a-8b2f-4b24-b45a-90ea1cdef7fb + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SelectAction.m_Action.m_Processors + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SelectAction.m_Action.m_Interactions + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SelectAction.m_Action.m_SingletonActionBindings.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_SelectAction.m_Reference + value: + objectReference: {fileID: 187161793506945269, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + - target: {fileID: 0} + propertyPath: m_ActivateAction.m_UseReference + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_ActivateAction.m_Action.m_Name + value: Activate + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_ActivateAction.m_Action.m_Type + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_ActivateAction.m_Action.m_ExpectedControlType + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_ActivateAction.m_Action.m_Id + value: ed3be3cd-637e-48d6-ae4b-dd97305eaa40 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_ActivateAction.m_Action.m_Processors + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_ActivateAction.m_Action.m_Interactions + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_ActivateAction.m_Action.m_SingletonActionBindings.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_ActivateAction.m_Reference + value: + objectReference: {fileID: 83097790271614945, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + - target: {fileID: 0} + propertyPath: m_UIPressAction.m_UseReference + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_UIPressAction.m_Action.m_Name + value: UI Press + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_UIPressAction.m_Action.m_Type + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_UIPressAction.m_Action.m_ExpectedControlType + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_UIPressAction.m_Action.m_Id + value: 55ce5c5d-aad8-4ebf-9f21-899ff595a062 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_UIPressAction.m_Action.m_Processors + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_UIPressAction.m_Action.m_Interactions + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_UIPressAction.m_Action.m_SingletonActionBindings.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_UIPressAction.m_Reference + value: + objectReference: {fileID: 3279264004350380116, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + - target: {fileID: 0} + propertyPath: m_HapticDeviceAction.m_UseReference + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_HapticDeviceAction.m_Action.m_Name + value: Haptic Device + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_HapticDeviceAction.m_Action.m_Type + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_HapticDeviceAction.m_Action.m_ExpectedControlType + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_HapticDeviceAction.m_Action.m_Id + value: 60f81e0e-3fab-4e26-90b6-a5ab762e2bb1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_HapticDeviceAction.m_Action.m_Processors + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_HapticDeviceAction.m_Action.m_Interactions + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_HapticDeviceAction.m_Action.m_SingletonActionBindings.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_HapticDeviceAction.m_Reference + value: + objectReference: {fileID: -8222252007134549311, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + - target: {fileID: 0} + propertyPath: m_RotateAnchorAction.m_UseReference + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RotateAnchorAction.m_Action.m_Name + value: Rotate Anchor + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RotateAnchorAction.m_Action.m_Type + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RotateAnchorAction.m_Action.m_ExpectedControlType + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RotateAnchorAction.m_Action.m_Id + value: aca8fec0-a925-428d-a6b7-25cfbd478258 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RotateAnchorAction.m_Action.m_Processors + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RotateAnchorAction.m_Action.m_Interactions + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RotateAnchorAction.m_Action.m_SingletonActionBindings.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RotateAnchorAction.m_Reference + value: + objectReference: {fileID: -5913262927076077117, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + - target: {fileID: 0} + propertyPath: m_TranslateAnchorAction.m_UseReference + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TranslateAnchorAction.m_Action.m_Name + value: Translate Anchor + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TranslateAnchorAction.m_Action.m_Type + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TranslateAnchorAction.m_Action.m_ExpectedControlType + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TranslateAnchorAction.m_Action.m_Id + value: 161874b5-2545-4bb2-bea4-eeddeb4fabf6 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TranslateAnchorAction.m_Action.m_Processors + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TranslateAnchorAction.m_Action.m_Interactions + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TranslateAnchorAction.m_Action.m_SingletonActionBindings.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TranslateAnchorAction.m_Reference + value: + objectReference: {fileID: 875253871413052681, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + - target: {fileID: 0} + propertyPath: m_ButtonPressPoint + value: 0.5 + objectReference: {fileID: 0} diff --git a/Runtime/Creator XR Input Actions/XRI Creator Right Controller.preset.meta b/Runtime/Creator XR Input Actions/XRI Creator Right Controller.preset.meta new file mode 100644 index 0000000..3e45cf7 --- /dev/null +++ b/Runtime/Creator XR Input Actions/XRI Creator Right Controller.preset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1421ad86ff3787b4dae70fe9e699a25f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Creator XR Input Actions/XRI Creator Snap Turn.preset b/Runtime/Creator XR Input Actions/XRI Creator Snap Turn.preset new file mode 100644 index 0000000..3103d71 --- /dev/null +++ b/Runtime/Creator XR Input Actions/XRI Creator Snap Turn.preset @@ -0,0 +1,121 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!181963792 &2655988077585873504 +Preset: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: XRI Creator Snap Turn + m_TargetType: + m_NativeTypeID: 114 + m_ManagedTypePPtr: {fileID: 11500000, guid: 2213c36610e3b1c4bbf886810ed9db12, + type: 3} + m_ManagedTypeFallback: + m_Properties: + - target: {fileID: 0} + propertyPath: m_Enabled + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_EditorHideFlags + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_EditorClassIdentifier + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_System + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_TurnAmount + value: 45 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_DebounceTime + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_EnableTurnLeftRight + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_EnableTurnAround + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LeftHandSnapTurnAction.m_UseReference + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LeftHandSnapTurnAction.m_Action.m_Name + value: Left Hand Snap Turn + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LeftHandSnapTurnAction.m_Action.m_Type + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LeftHandSnapTurnAction.m_Action.m_ExpectedControlType + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LeftHandSnapTurnAction.m_Action.m_Id + value: a1d07c24-ca50-422a-a23f-685d9fabf63b + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LeftHandSnapTurnAction.m_Action.m_Processors + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LeftHandSnapTurnAction.m_Action.m_Interactions + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LeftHandSnapTurnAction.m_Action.m_SingletonActionBindings.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_LeftHandSnapTurnAction.m_Reference + value: + objectReference: {fileID: 1010738217276881514, guid: c348712bda248c246b8c49b3db54643f, + type: 3} + - target: {fileID: 0} + propertyPath: m_RightHandSnapTurnAction.m_UseReference + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightHandSnapTurnAction.m_Action.m_Name + value: Right Hand Snap Turn + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightHandSnapTurnAction.m_Action.m_Type + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightHandSnapTurnAction.m_Action.m_ExpectedControlType + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightHandSnapTurnAction.m_Action.m_Id + value: a7b54797-6974-4f75-81d0-42b9c15ef1e0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightHandSnapTurnAction.m_Action.m_Processors + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightHandSnapTurnAction.m_Action.m_Interactions + value: + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightHandSnapTurnAction.m_Action.m_SingletonActionBindings.Array.size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 0} + propertyPath: m_RightHandSnapTurnAction.m_Reference + value: + objectReference: {fileID: -6493913391331992944, guid: c348712bda248c246b8c49b3db54643f, + type: 3} diff --git a/Runtime/Creator XR Input Actions/XRI Creator Snap Turn.preset.meta b/Runtime/Creator XR Input Actions/XRI Creator Snap Turn.preset.meta new file mode 100644 index 0000000..dda21dd --- /dev/null +++ b/Runtime/Creator XR Input Actions/XRI Creator Snap Turn.preset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 18697d253d848974aa7052cba872c9f0 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Innoactive.Creator.XRInteraction.asmdef b/Runtime/Innoactive.Creator.XRInteraction.asmdef index ea82e05..1e40de5 100644 --- a/Runtime/Innoactive.Creator.XRInteraction.asmdef +++ b/Runtime/Innoactive.Creator.XRInteraction.asmdef @@ -3,7 +3,8 @@ "references": [ "GUID:c8561f9de838ac04d8feeda695bc572d", "GUID:474da18fc7b8c9c4c9db09e343483375", - "GUID:fe685ec1767f73d42b749ea8045bfe43" + "GUID:fe685ec1767f73d42b749ea8045bfe43", + "GUID:75469ad4d38634e559750d17036d5f7c" ], "includePlatforms": [], "excludePlatforms": [], diff --git a/Runtime/Interaction/Action-based.meta b/Runtime/Interaction/Action-based.meta new file mode 100644 index 0000000..746680b --- /dev/null +++ b/Runtime/Interaction/Action-based.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 68241a9daa38fa8499f2fde2e2b6b198 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Interaction/Action-based/ActionBasedControllerManager.cs b/Runtime/Interaction/Action-based/ActionBasedControllerManager.cs new file mode 100644 index 0000000..b5aea08 --- /dev/null +++ b/Runtime/Interaction/Action-based/ActionBasedControllerManager.cs @@ -0,0 +1,790 @@ +#if XRIT_0_10_OR_NEWER +using System; +using System.Collections.Generic; +using System.Linq; +using UnityEngine; +using UnityEngine.Events; +using UnityEngine.InputSystem; +using UnityEngine.XR.Interaction.Toolkit; + +namespace Innoactive.Creator.XRInteraction +{ + /// + /// Use this class to map input actions to each controller state (mode) + /// and set up the transitions between controller states (modes). + /// + [AddComponentMenu("XR/Action Based Controller Manager")] + [DefaultExecutionOrder(ControllerManagerUpdateOrder)] + public class ActionBasedControllerManager : MonoBehaviour + { + private const int ControllerManagerUpdateOrder = 10; + + /// + /// Reference to an interaction state. + /// + public enum StateID + { + None, + Select, + Teleport, + Interact, + UI + } + + [Serializable] + public class StateEnterEvent : UnityEvent + { + } + + [Serializable] + public class StateUpdateEvent : UnityEvent + { + } + + [Serializable] + public class StateExitEvent : UnityEvent + { + } + + /// + /// Use this class to create a controller state and set up its enter, update, and exit events. + /// + [Serializable] + public class ControllerState + { + [SerializeField] + [Tooltip("Sets the controller state to be active. " + + "For the default states, setting this value to true will automatically update their StateUpdateEvent.")] + private bool enabled; + + /// + /// Sets the controller state to be active. + /// For the default states, setting this value to true will automatically update their . + /// + public bool Enabled + { + get => enabled; + set => enabled = value; + } + + [SerializeField] + [HideInInspector] + private StateID m_ID; + + /// + /// Sets the identifier of the from all the optional Controller States that the holds. + /// + public StateID ID + { + get => m_ID; + set => m_ID = value; + } + + [SerializeField] + private StateEnterEvent onEnter = new StateEnterEvent(); + + /// + /// The that will be invoked when entering the controller state. + /// + public StateEnterEvent OnEnter + { + get => onEnter; + set => onEnter = value; + } + + [SerializeField] + private StateUpdateEvent onUpdate = new StateUpdateEvent(); + + /// + /// The that will be invoked when updating the controller state. + /// + public StateUpdateEvent OnUpdate + { + get => onUpdate; + set => onUpdate = value; + } + + [SerializeField] + private StateExitEvent onExit = new StateExitEvent(); + + /// + /// The that will be invoked when exiting the controller state. + /// + public StateExitEvent OnExit + { + get => onExit; + set => onExit = value; + } + + public ControllerState(StateID defaultId = StateID.None) => ID = defaultId; + } + + [Space] + [Header("Controller GameObjects")] + + [SerializeField] + [Tooltip("The base controller GameObject, used for changing default settings on its components during state transitions.")] + private GameObject baseController; + + /// + /// The base controller , used for changing default settings on its components during state transitions. + /// + public GameObject BaseController + { + get => baseController; + set => baseController = value; + } + + [SerializeField] + [Tooltip("The teleport controller GameObject, used for changing default settings on its components during state transitions.")] + private GameObject teleportController; + + /// + /// The teleport controller , used for changing default settings on its components during state transitions. + /// + public GameObject TeleportController + { + get => teleportController; + set => teleportController = value; + } + + [SerializeField] + [Tooltip("The UI controller GameObject, used for changing default settings on its components during state transitions.")] + private GameObject uiController; + + /// + /// The UI controller , used for changing default settings on its components during state transitions. + /// + public GameObject UIController + { + get => uiController; + set => uiController = value; + } + + [Space] + [Header("Controller Actions")] + + // State transition actions + [SerializeField] + [Tooltip("The reference to the action of activating the teleport mode for this controller.")] + private InputActionReference teleportModeActivate; + + /// + /// The reference to the action of activating the teleport mode for this controller." + /// + public InputActionReference TeleportModeActivate + { + get => teleportModeActivate; + set => teleportModeActivate = value; + } + + [SerializeField] + [Tooltip("The reference to the action of canceling the teleport mode for this controller.")] + private InputActionReference teleportModeCancel; + + /// + /// The reference to the action of canceling the teleport mode for this controller." + /// + public InputActionReference TeleportModeCancel + { + get => teleportModeCancel; + set => teleportModeCancel = value; + } + + [SerializeField] + [Tooltip("The reference to the action of activating the teleport mode for this controller.")] + private InputActionReference uiModeActivate; + + /// + /// The reference to the action of activating the teleport mode for this controller." + /// + public InputActionReference UIModeActivate + { + get => uiModeActivate; + set => uiModeActivate = value; + } + + // Character movement actions + [SerializeField] + [Tooltip("The reference to the action of turning the XR rig with this controller.")] + private InputActionReference turn; + + /// + /// The reference to the action of turning the XR rig with this controller. + /// + public InputActionReference Turn + { + get => turn; + set => turn = value; + } + + [SerializeField] + [Tooltip("The reference to the action of moving the XR rig with this controller.")] + private InputActionReference move; + + /// + /// The reference to the action of moving the XR rig with this controller. + /// + public InputActionReference Move + { + get => move; + set => move = value; + } + + // Object control actions + [SerializeField] + [Tooltip("The reference to the action of translating the selected object of this controller.")] + private InputActionReference translateAnchor; + + /// + /// The reference to the action of translating the selected object of this controller. + /// + public InputActionReference TranslateAnchor + { + get => translateAnchor; + set => translateAnchor = value; + } + + [SerializeField] + [Tooltip("The reference to the action of rotating the selected object of this controller.")] + private InputActionReference rotateAnchor; + + /// + /// The reference to the action of rotating the selected object of this controller. + /// + public InputActionReference RotateAnchor + { + get => rotateAnchor; + set => rotateAnchor = value; + } + + [Space] + [Header("Default States")] + +#pragma warning disable IDE0044 // Add readonly modifier -- readonly fields cannot be serialized by Unity + [SerializeField] + [Tooltip("The default Select state and events for the controller.")] + private ControllerState selectState = new ControllerState(StateID.Select); + + /// + /// (Read Only) The default Select state. + /// + public ControllerState SelectState => selectState; + + [SerializeField] + [Tooltip("The default Teleport state and events for the controller.")] + private ControllerState teleportState = new ControllerState(StateID.Teleport); + + /// + /// (Read Only) The default Teleport state. + /// + public ControllerState TeleportState => teleportState; + + [SerializeField] + [Tooltip("The default Interact state and events for the controller.")] + private ControllerState interactState = new ControllerState(StateID.Interact); + + /// + /// (Read Only) The default Interact state. + /// + public ControllerState InteractState => interactState; + + [SerializeField] + [Tooltip("The default Interact state and events for the controller.")] + private ControllerState uiState = new ControllerState(StateID.UI); + + /// + /// (Read Only) The default Interact state. + /// + public ControllerState UIState => uiState; +#pragma warning restore IDE0044 + + // The list to store and run the default states + private readonly List defaultStates = new List(); + + // Components of the controller to switch on and off for different states + private XRBaseController baseXRController; + private XRBaseInteractor baseXRInteractor; + private XRInteractorLineVisual baseXRLineVisual; + + private XRBaseController teleportXRController; + private XRBaseInteractor teleportXRInteractor; + private XRInteractorLineVisual teleportLineVisual; + + private XRBaseController uiXRController; + private XRBaseInteractor uiXRInteractor; + private XRInteractorLineVisual uiLineVisual; + + protected void OnEnable() + { + FindBaseControllerComponents(); + FindTeleportControllerComponents(); + FindUIControllerComponents(); + + // Add default state events. + selectState.OnEnter.AddListener(OnEnterSelectState); + selectState.OnUpdate.AddListener(OnUpdateSelectState); + selectState.OnExit.AddListener(OnExitSelectState); + + teleportState.OnEnter.AddListener(OnEnterTeleportState); + teleportState.OnUpdate.AddListener(OnUpdateTeleportState); + teleportState.OnExit.AddListener(OnExitTeleportState); + + interactState.OnEnter.AddListener(OnEnterInteractState); + interactState.OnUpdate.AddListener(OnUpdateInteractState); + interactState.OnExit.AddListener(OnExitInteractState); + + uiState.OnEnter.AddListener(OnEnterUIState); + uiState.OnUpdate.AddListener(OnUpdateUIState); + uiState.OnExit.AddListener(OnExitUIState); + } + + protected void OnDisable() + { + // Remove default state events. + selectState.OnEnter.RemoveListener(OnEnterSelectState); + selectState.OnUpdate.RemoveListener(OnUpdateSelectState); + selectState.OnExit.RemoveListener(OnExitSelectState); + + teleportState.OnEnter.RemoveListener(OnEnterTeleportState); + teleportState.OnUpdate.RemoveListener(OnUpdateTeleportState); + teleportState.OnExit.RemoveListener(OnExitTeleportState); + + interactState.OnEnter.RemoveListener(OnEnterInteractState); + interactState.OnUpdate.RemoveListener(OnUpdateInteractState); + interactState.OnExit.RemoveListener(OnExitInteractState); + + uiState.OnEnter.RemoveListener(OnEnterUIState); + uiState.OnUpdate.RemoveListener(OnUpdateUIState); + uiState.OnExit.RemoveListener(OnExitUIState); + } + + protected void Start() + { + // Add states to the list + defaultStates.Add(selectState); + defaultStates.Add(teleportState); + defaultStates.Add(interactState); + defaultStates.Add(uiState); + + // Initialize to start in m_SelectState + TransitionState(null, selectState); + } + + protected void Update() + { + foreach (ControllerState state in defaultStates) + { + if (state.Enabled) + { + state.OnUpdate.Invoke(); + return; + } + } + } + + private void TransitionState(ControllerState fromState, ControllerState toState) + { + if (fromState != null) + { + fromState.Enabled = false; + fromState.OnExit.Invoke(toState?.ID ?? StateID.None); + } + + if (toState != null) + { + toState.OnEnter.Invoke(fromState?.ID ?? StateID.None); + toState.Enabled = true; + } + } + + private void FindBaseControllerComponents() + { + if (baseController == null) + { + Debug.LogWarning("Missing reference to Base Controller GameObject.", this); + return; + } + + if (baseXRController == null) + { + baseXRController = baseController.GetComponent(); + + if (baseXRController == null) + { + Debug.LogWarning($"Cannot find any {nameof(XRBaseController)} component on the Base Controller GameObject.", this); + } + } + + if (baseXRInteractor == null) + { + baseXRInteractor = baseController.GetComponent(); + + if (baseXRInteractor == null) + { + Debug.LogWarning($"Cannot find any {nameof(XRBaseInteractor)} component on the Base Controller GameObject.", this); + } + } + + // Only check the line visual component for RayInteractor, since DirectInteractor does not use the line visual component + if (baseXRInteractor is XRRayInteractor && baseXRLineVisual == null) + { + baseXRLineVisual = baseController.GetComponent(); + + if (baseXRLineVisual == null) + { + Debug.LogWarning($"Cannot find any {nameof(XRInteractorLineVisual)} component on the Base Controller GameObject.", this); + } + } + } + + private void FindTeleportControllerComponents() + { + if (teleportController == null) + { + Debug.LogWarning("Missing reference to the Teleport Controller GameObject.", this); + return; + } + + if (teleportXRController == null) + { + teleportXRController = teleportController.GetComponent(); + + if (teleportXRController == null) + { + Debug.LogWarning($"Cannot find {nameof(XRBaseController)} component on the Teleport Controller GameObject.", this); + } + } + + if (teleportLineVisual == null) + { + teleportLineVisual = teleportController.GetComponent(); + + if (teleportLineVisual == null) + { + Debug.LogWarning($"Cannot find {nameof(XRInteractorLineVisual)} component on the Teleport Controller GameObject.", this); + } + } + + if (teleportXRInteractor == null) + { + teleportXRInteractor = teleportController.GetComponent(); + + if (teleportXRInteractor == null) + { + Debug.LogWarning($"Cannot find {nameof(XRRayInteractor)} component on the Teleport Controller GameObject.", this); + } + } + } + + private void FindUIControllerComponents() + { + if (uiController == null) + { + Debug.LogWarning("Missing reference to the UI Controller GameObject.", this); + return; + } + + if (uiXRController == null) + { + uiXRController = uiController.GetComponent(); + + if (uiXRController == null) + { + Debug.LogWarning($"Cannot find {nameof(XRBaseController)} component on the UI Controller GameObject.", this); + } + } + + if (uiLineVisual == null) + { + uiLineVisual = uiController.GetComponent(); + + if (uiLineVisual == null) + { + Debug.LogWarning($"Cannot find {nameof(XRInteractorLineVisual)} component on the UI Controller GameObject.", this); + } + } + + if (uiXRInteractor == null) + { + uiXRInteractor = uiController.GetComponent(); + + if (uiXRInteractor == null) + { + Debug.LogWarning($"Cannot find {nameof(XRRayInteractor)} component on the UI Controller GameObject.", this); + } + } + } + + /// + /// Find and configure the components on the base controller. + /// + /// Set it true to enable the base controller, false to disable it. + private void SetBaseController(bool enable) + { + FindBaseControllerComponents(); + + if (baseXRController != null) + { + baseXRController.enableInputActions = enable; + } + + if (baseXRInteractor != null) + { + baseXRInteractor.enabled = enable; + } + + if (baseXRInteractor is XRRayInteractor && baseXRLineVisual != null) + { + baseXRLineVisual.enabled = enable; + } + } + + /// + /// Find and configure the components on the teleport controller. + /// + /// Set it true to enable the teleport controller, false to disable it. + private void SetTeleportController(bool enable) + { + FindTeleportControllerComponents(); + + if (teleportLineVisual != null) + { + teleportLineVisual.enabled = enable; + } + + if (teleportXRController != null) + { + teleportXRController.enableInputActions = enable; + } + + if (teleportXRInteractor != null) + { + teleportXRInteractor.enabled = enable; + } + } + + /// + /// Find and configure the components on the UI controller. + /// + /// Set it true to enable the UI controller, false to disable it. + private void SetUIController(bool enable) + { + FindUIControllerComponents(); + + if (uiLineVisual != null) + { + uiLineVisual.enabled = enable; + } + + if (uiXRController != null) + { + uiXRController.enableInputActions = enable; + } + + if (uiXRInteractor != null) + { + uiXRInteractor.enabled = enable; + } + } + + private void OnEnterSelectState(StateID previousStateId) + { + // Change controller and enable actions depending on the previous state + switch (previousStateId) + { + case StateID.None: + // Enable transitions to Teleport state + EnableAction(teleportModeActivate); + EnableAction(teleportModeCancel); + + // Enable turn and move actions + EnableAction(turn); + EnableAction(move); + + // Enable base controller components + SetBaseController(true); + break; + case StateID.Select: + break; + case StateID.Teleport: + case StateID.UI: + EnableAction(turn); + EnableAction(move); + SetBaseController(true); + break; + case StateID.Interact: + EnableAction(turn); + EnableAction(move); + break; + default: + Debug.Assert(false, $"Unhandled case when entering Select from {previousStateId}."); + break; + } + } + + private void OnExitSelectState(StateID nextStateId) + { + // Change controller and disable actions depending on the next state + switch (nextStateId) + { + case StateID.None: + case StateID.Select: + break; + case StateID.Teleport: + case StateID.UI: + DisableAction(turn); + DisableAction(move); + SetBaseController(false); + break; + case StateID.Interact: + DisableAction(turn); + DisableAction(move); + break; + default: + Debug.Assert(false, $"Unhandled case when exiting Select to {nextStateId}."); + break; + } + } + + private void OnEnterTeleportState(StateID previousStateId) => SetTeleportController(true); + + private void OnExitTeleportState(StateID nextStateId) => SetTeleportController(false); + + private void OnEnterInteractState(StateID previousStateId) + { + // Enable object control actions + EnableAction(translateAnchor); + EnableAction(rotateAnchor); + } + + private void OnExitInteractState(StateID nextStateId) + { + // Disable object control actions + DisableAction(translateAnchor); + DisableAction(rotateAnchor); + } + + private void OnEnterUIState(StateID previousStateId) => SetUIController(true); + + private void OnExitUIState(StateID nextStateId) => SetUIController(false); + + /// + /// This method is automatically called each frame to handle initiating transitions out of the Select state. + /// + private void OnUpdateSelectState() + { + if (IsInteractorInteracting()) + { + return; + } + + // Transition from Select state to Teleport state when the user triggers the "Teleport Mode Activate" action but not the "Cancel Teleport" action + InputAction teleportModeAction = GetInputAction(teleportModeActivate); + InputAction cancelTeleportModeAction = GetInputAction(teleportModeCancel); + InputAction uiModeAction = GetInputAction(uiModeActivate); + + bool isUIModeTriggered = uiModeAction != null && uiModeAction.triggered; + bool isTriggerTeleportMode = teleportModeAction != null && teleportModeAction.triggered; + bool shouldCancelTeleport = cancelTeleportModeAction != null && cancelTeleportModeAction.triggered; + + if (isUIModeTriggered) + { + TransitionState(selectState, uiState); + return; + } + else if (isTriggerTeleportMode && shouldCancelTeleport == false) + { + TransitionState(selectState, teleportState); + return; + } + + // Transition from Select state to Interact state when the interactor has a selectTarget + FindBaseControllerComponents(); + + if (baseXRInteractor.selectTarget != null) + { + TransitionState(selectState, interactState); + } + } + + /// + /// Updated every frame to handle the transition to m_SelectState state. + /// + private void OnUpdateTeleportState() + { + // Transition from Teleport state to Select state when we release the Teleport trigger or cancel Teleport mode + InputAction teleportModeAction = GetInputAction(teleportModeActivate); + InputAction cancelTeleportModeAction = GetInputAction(teleportModeCancel); + + bool shouldCancelTeleport = cancelTeleportModeAction != null && cancelTeleportModeAction.triggered; + bool isTeleportModeReleased = teleportModeAction != null && teleportModeAction.phase == InputActionPhase.Waiting; + + if (shouldCancelTeleport || isTeleportModeReleased) + { + TransitionState(teleportState, selectState); + } + } + + private void OnUpdateInteractState() + { + // Transition from Interact state to Select state when the base interactor no longer has a select target + if (baseXRInteractor.selectTarget == null) + { + TransitionState(interactState, selectState); + } + } + + private void OnUpdateUIState() + { + // Transition from UI state to Select state when we release the UI trigger + InputAction isUIModeTriggered = GetInputAction(uiModeActivate); + + bool isButtonReleased = isUIModeTriggered != null && isUIModeTriggered.phase == InputActionPhase.Waiting; + + if (isButtonReleased) + { + TransitionState(uiState, selectState); + } + } + + private void EnableAction(InputActionReference actionReference) + { + InputAction action = GetInputAction(actionReference); + + if (action != null && !action.enabled) + { + action.Enable(); + } + } + + private void DisableAction(InputActionReference actionReference) + { + InputAction action = GetInputAction(actionReference); + + if (action != null && action.enabled) + { + action.Disable(); + } + } + + private bool IsInteractorInteracting() + { + if (baseXRInteractor == null) + { + return false; + } + + List hoverTargets = new List(); + baseXRInteractor.GetHoverTargets(hoverTargets); + + return hoverTargets.Any() || baseXRInteractor.selectTarget != null; + } + + private InputAction GetInputAction(InputActionReference actionReference) + { + return actionReference != null ? actionReference.action : null; + } + } +} +#endif \ No newline at end of file diff --git a/Editor/PackageDependencies/InputSystemChecker.cs.meta b/Runtime/Interaction/Action-based/ActionBasedControllerManager.cs.meta similarity index 83% rename from Editor/PackageDependencies/InputSystemChecker.cs.meta rename to Runtime/Interaction/Action-based/ActionBasedControllerManager.cs.meta index 05f7aea..d1ba7d2 100644 --- a/Editor/PackageDependencies/InputSystemChecker.cs.meta +++ b/Runtime/Interaction/Action-based/ActionBasedControllerManager.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 9afeebd56f5437d428eab4deb0565bf8 +guid: 41cc12ba1114e4f46929730a9389cb74 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Runtime/Interaction/Action-based/LocomotionSchemeManager.cs b/Runtime/Interaction/Action-based/LocomotionSchemeManager.cs new file mode 100644 index 0000000..8597b3c --- /dev/null +++ b/Runtime/Interaction/Action-based/LocomotionSchemeManager.cs @@ -0,0 +1,549 @@ +#if XRIT_0_10_OR_NEWER +using System; +using System.ComponentModel; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.InputSystem; +using UnityEngine.XR.Interaction.Toolkit; + +namespace Innoactive.Creator.XRInteraction +{ + /// + /// Use this class as a central manager to configure locomotion control schemes and configuration preferences. + /// + /// + /// Input bindings will often overlap between different locomotion methods, and this class can be used to + /// set binding masks which are used to determine which bindings of an action to enable and which to ignore. + /// + /// + /// Teleport (Input Action) + /// (1) Binding <XRController>{LeftHand}/PrimaryButton (Use in control scheme "Generic XR") + /// (2) Binding <XRController>{LeftHand}/Primary2DAxis (Use in control scheme "Noncontinuous Move") + /// Move (Input Action) + /// (3) Binding <XRController>{LeftHand}/Primary2DAxis (Use in control scheme "Continuous Move") + /// + /// Set ="Generic XR" + /// Set ="Noncontinuous Move" + /// Set ="Continuous Move" + /// Set to be both input actions (Teleport and Move). + /// + /// When =, + /// bindings (1) and (2) will be enabled, but binding (3) will be disabled. + /// + /// When =, + /// bindings (1) and (3) will be enabled, but binding (2) will be disabled. + /// + /// + public class LocomotionSchemeManager : MonoBehaviour + { + /// + /// Sets which movement control scheme to use. + /// + /// + public enum MoveSchemeType + { + /// + /// Use noncontinuous movement control scheme. + /// + Noncontinuous, + + /// + /// Use continuous movement control scheme. + /// + Continuous, + } + + /// + /// Sets which turn style of locomotion to use. + /// + /// + public enum TurnStyleType + { + /// + /// Use snap turning to rotate the direction you are facing by snapping by a specified angle. + /// + Snap, + + /// + /// Use continuous turning to smoothly rotate the direction you are facing by a specified speed. + /// + Continuous + } + + /// + /// Sets which orientation the forward direction of continuous movement is relative to. + /// + /// + /// + public enum MoveForwardSourceType + { + /// + /// Use to continuously move in a direction based on the head orientation. + /// + Head, + + /// + /// Use to continuously move in a direction based on the left hand orientation. + /// + LeftHand, + + /// + /// Use to continuously move in a direction based on the right hand orientation. + /// + RightHand, + } + + [SerializeField] + [Tooltip("Controls which movement control scheme to use.")] + private MoveSchemeType moveScheme; + + /// + /// Controls which movement control scheme to use. + /// + /// + public MoveSchemeType MoveScheme + { + get => moveScheme; + set + { + SetMoveScheme(value); + moveScheme = value; + } + } + + [SerializeField] + [Tooltip("Controls which turn style of locomotion to use.")] + private TurnStyleType turnStyle; + + /// + /// Controls which turn style of locomotion to use. + /// + /// + public TurnStyleType TurnStyle + { + get => turnStyle; + set + { + SetTurnStyle(value); + turnStyle = value; + } + } + + [SerializeField] + [Tooltip("Controls which orientation the forward direction of continuous movement is relative to.")] + private MoveForwardSourceType moveForwardSource; + + /// + /// Controls which orientation the forward direction of continuous movement is relative to. + /// + /// + public MoveForwardSourceType MoveForwardSource + { + get => moveForwardSource; + set + { + SetMoveForwardSource(value); + moveForwardSource = value; + } + } + + [SerializeField] + [Tooltip("Input action assets associated with locomotion to affect when the active movement control scheme is set." + + " Can use this list by itself or together with the Action Maps list to set control scheme masks by Asset or Map.")] + private List actionAssets; + + /// + /// Input action assets associated with locomotion to affect when the active movement control scheme is set. + /// Can use this list by itself or together with the Action Maps list to set control scheme masks by Asset or Map. + /// + /// + public List ActionAssets + { + get => actionAssets; + set => actionAssets = value; + } + + [SerializeField] + [Tooltip("Input action maps associated with locomotion to affect when the active movement control scheme is set." + + " Can use this list together with the Action Assets list to set control scheme masks by Map instead of the whole Asset.")] + private List actionMaps; + + /// + /// Input action maps associated with locomotion to affect when the active movement control scheme is set. + /// Can use this list together with the Action Assets list to set control scheme masks by Map instead of the whole Asset. + /// + /// + public List ActionMaps + { + get => actionMaps; + set => actionMaps = value; + } + + [SerializeField] + [Tooltip("Input actions associated with locomotion to affect when the active movement control scheme is set." + + " Can use this list to select exactly the actions to affect instead of setting control scheme masks by Asset or Map.")] + private List actions; + + /// + /// Input actions associated with locomotion that are affected by the active movement control scheme. + /// Can use this list to select exactly the actions to affect instead of setting control scheme masks by Asset or Map. + /// + /// + /// + public List Actions + { + get => actions; + set => actions = value; + } + + [SerializeField] + [Tooltip("Name of an input control scheme that defines the grouping of bindings that should remain enabled when applying any movement control scheme." + + " Control schemes are created and named in the Input Actions window. The other movement control schemes are applied additively to this scheme." + + " Can be an empty string, which means only bindings that match the specified movement control scheme will be enabled.")] + private string baseControlScheme; + + /// + /// Name of an input control scheme that defines the grouping of bindings that should remain enabled when applying any movement control scheme. + /// Control schemes are created and named in the Input Actions window. The other movement control schemes are applied additively to this scheme. + /// Can be an empty string, which means only bindings that match the specified movement control scheme will be enabled. + /// + public string BaseControlScheme + { + get => baseControlScheme; + set => baseControlScheme = value; + } + + [SerializeField] + [Tooltip("Name of an input control scheme that defines the grouping of bindings that should remain enabled when applying the noncontinuous movement control scheme." + + " Control schemes are created and named in the Input Actions window. Can be an empty string, which means only bindings that match the" + + " base control scheme will be enabled.")] + private string noncontinuousControlScheme; + + /// + /// Name of an input control scheme that defines the grouping of bindings that should remain enabled when applying the noncontinuous movement control scheme. + /// Control schemes are created and named in the Input Actions window. Can be an empty string, which means only bindings that match the + /// base control scheme will be enabled. + /// + public string NoncontinuousControlScheme + { + get => noncontinuousControlScheme; + set => noncontinuousControlScheme = value; + } + + [SerializeField] + [Tooltip("Name of an input control scheme that defines the grouping of bindings that should remain enabled when applying the continuous movement control scheme." + + " Control schemes are created and named in the Input Actions window. Can be an empty string, which means only bindings that match the" + + " base control scheme will be enabled.")] + private string continuousControlScheme; + + /// + /// Name of an input control scheme that defines the grouping of bindings that should remain enabled when applying the continuous movement control scheme. + /// Control schemes are created and named in the Input Actions window. Can be an empty string, which means only bindings that match the + /// base control scheme will be enabled. + /// + public string ContinuousControlScheme + { + get => continuousControlScheme; + set => continuousControlScheme = value; + } + + [SerializeField] + [Tooltip("Stores the locomotion provider for continuous movement.")] + private ContinuousMoveProviderBase continuousMoveProvider; + + /// + /// Stores the locomotion provider for continuous movement. + /// + /// + public ContinuousMoveProviderBase ContinuousMoveProvider + { + get => continuousMoveProvider; + set => continuousMoveProvider = value; + } + + [SerializeField] + [Tooltip("Stores the locomotion provider for continuous turning.")] + private ContinuousTurnProviderBase continuousTurnProvider; + + /// + /// Stores the locomotion provider for continuous turning. + /// + /// + public ContinuousTurnProviderBase ContinuousTurnProvider + { + get => continuousTurnProvider; + set => continuousTurnProvider = value; + } + + [SerializeField] + [Tooltip("Stores the locomotion provider for snap turning.")] + private SnapTurnProviderBase snapTurnProvider; + + /// + /// Stores the locomotion provider for snap turning. + /// + /// + public SnapTurnProviderBase SnapTurnProvider + { + get => snapTurnProvider; + set => snapTurnProvider = value; + } + + [SerializeField] + [Tooltip("Stores the \"Head\" Transform used with continuous movement when inputs should be relative to head orientation (usually the main camera).")] + private Transform headForwardSource; + + /// + /// Stores the "Head" used with continuous movement when inputs should be relative to head orientation (usually the main camera). + /// + public Transform HeadForwardSource + { + get => headForwardSource; + set => headForwardSource = value; + } + + [SerializeField] + [Tooltip("Stores the \"Left Hand\" Transform used with continuous movement when inputs should be relative to the left hand's orientation.")] + private Transform leftHandForwardSource; + + /// + /// Stores the "Left Hand" used with continuous movement when inputs should be relative to the left hand's orientation. + /// + public Transform LeftHandForwardSource + { + get => leftHandForwardSource; + set => leftHandForwardSource = value; + } + + [SerializeField] + [Tooltip("Stores the \"Right Hand\" Transform used with continuous movement when inputs should be relative to the right hand's orientation.")] + private Transform rightHandForwardSource; + + /// + /// Stores the "Right Hand" used with continuous movement when inputs should be relative to the right hand's orientation. + /// + public Transform RightHandForwardSource + { + get => rightHandForwardSource; + set => rightHandForwardSource = value; + } + + private void OnEnable() + { + SetMoveScheme(moveScheme); + SetTurnStyle(turnStyle); + SetMoveForwardSource(moveForwardSource); + } + + private void OnDisable() + { + ClearBindingMasks(); + } + + private void SetMoveScheme(MoveSchemeType scheme) + { + switch (scheme) + { + case MoveSchemeType.Noncontinuous: + SetBindingMasks(noncontinuousControlScheme); + + if (continuousMoveProvider != null) + { + continuousMoveProvider.enabled = false; + } + break; + case MoveSchemeType.Continuous: + SetBindingMasks(continuousControlScheme); + + if (continuousMoveProvider != null) + { + continuousMoveProvider.enabled = true; + } + break; + default: + throw new InvalidEnumArgumentException(nameof(scheme), (int)scheme, typeof(MoveSchemeType)); + } + } + + private void SetTurnStyle(TurnStyleType style) + { + if (style != TurnStyleType.Snap && style != TurnStyleType.Continuous) + { + throw new InvalidEnumArgumentException(nameof(style), (int)style, typeof(TurnStyleType)); + } + + if (continuousTurnProvider != null) + { + continuousTurnProvider.enabled = style != TurnStyleType.Snap; + } + + if (snapTurnProvider != null) + { + if (style == TurnStyleType.Snap) + { + // TODO: If the Continuous Turn and Snap Turn providers both use the same + // action, then disabling the first provider will cause the action to be + // disabled, so the action needs to be enabled, which is done by forcing + // the OnEnable() of the second provider to be called. + // ReSharper disable Unity.InefficientPropertyAccess + snapTurnProvider.enabled = false; + snapTurnProvider.enabled = true; + // ReSharper restore Unity.InefficientPropertyAccess + } + + snapTurnProvider.enableTurnLeftRight = style == TurnStyleType.Snap; + } + } + + private void SetMoveForwardSource(MoveForwardSourceType forwardSource) + { + if (continuousMoveProvider == null) + { + Debug.LogError($"Cannot set forward source to {forwardSource}, the reference to the {nameof(ContinuousMoveProviderBase)} is missing or the object has been destroyed.", this); + return; + } + + switch (forwardSource) + { + case MoveForwardSourceType.Head: + continuousMoveProvider.forwardSource = headForwardSource; + break; + case MoveForwardSourceType.LeftHand: + continuousMoveProvider.forwardSource = leftHandForwardSource; + break; + case MoveForwardSourceType.RightHand: + continuousMoveProvider.forwardSource = rightHandForwardSource; + break; + default: + throw new InvalidEnumArgumentException(nameof(forwardSource), (int)forwardSource, typeof(MoveForwardSourceType)); + } + } + + private void SetBindingMasks(string controlSchemeName) + { + foreach (InputActionReference actionReference in actions) + { + if (actionReference == null) + { + continue; + } + + InputAction action = actionReference.action; + + if (action == null) + { + Debug.LogError($"Cannot set binding mask on {actionReference} since the action could not be found.", this); + continue; + } + + // Get the (optional) base control scheme and the control scheme to apply on top of base + InputControlScheme? baseInputControlScheme = FindControlScheme(baseControlScheme, actionReference); + InputControlScheme? inputControlScheme = FindControlScheme(controlSchemeName, actionReference); + + action.bindingMask = GetBindingMask(baseInputControlScheme, inputControlScheme); + } + + if (actionMaps.Count > 0 && actionAssets.Count == 0) + { + Debug.LogError($"Cannot set binding mask on action maps since no input action asset references have been set.", this); + } + + foreach (InputActionAsset actionAsset in actionAssets) + { + if (actionAsset == null) + { + continue; + } + + // Get the (optional) base control scheme and the control scheme to apply on top of base + InputControlScheme? baseInputControlScheme = FindControlScheme(baseControlScheme, actionAsset); + InputControlScheme? inputControlScheme = FindControlScheme(controlSchemeName, actionAsset); + + if (actionMaps.Count == 0) + { + actionAsset.bindingMask = GetBindingMask(baseInputControlScheme, inputControlScheme); + continue; + } + + foreach (string mapName in actionMaps) + { + InputActionMap actionMap = actionAsset.FindActionMap(mapName); + + if (actionMap == null) + { + Debug.LogError($"Cannot set binding mask on \"{mapName}\" since the action map not be found in '{actionAsset}'.", this); + continue; + } + + actionMap.bindingMask = GetBindingMask(baseInputControlScheme, inputControlScheme); + } + } + } + + private void ClearBindingMasks() + { + SetBindingMasks(string.Empty); + } + + private InputControlScheme? FindControlScheme(string controlSchemeName, InputActionReference action) + { + if (action == null) + { + throw new ArgumentNullException(nameof(action)); + } + + if (string.IsNullOrEmpty(controlSchemeName)) + { + return null; + } + + InputActionAsset asset = action.asset; + + if (asset == null) + { + Debug.LogError($"Cannot find control scheme \"{controlSchemeName}\" for '{action}' since it does not belong to an {nameof(InputActionAsset)}.", this); + return null; + } + + return FindControlScheme(controlSchemeName, asset); + } + + private InputControlScheme? FindControlScheme(string controlSchemeName, InputActionAsset asset) + { + if (asset == null) + { + throw new ArgumentNullException(nameof(asset)); + } + + if (string.IsNullOrEmpty(controlSchemeName)) + { + return null; + } + + InputControlScheme? scheme = asset.FindControlScheme(controlSchemeName); + + if (scheme == null) + { + Debug.LogError($"Cannot find control scheme \"{controlSchemeName}\" in '{asset}'.", this); + return null; + } + + return scheme; + } + + private static InputBinding? GetBindingMask(InputControlScheme? baseInputControlScheme, InputControlScheme? inputControlScheme) + { + if (inputControlScheme.HasValue) + { + return baseInputControlScheme.HasValue + ? InputBinding.MaskByGroups(baseInputControlScheme.Value.bindingGroup, inputControlScheme.Value.bindingGroup) + : InputBinding.MaskByGroup(inputControlScheme.Value.bindingGroup); + } + + return baseInputControlScheme.HasValue + ? InputBinding.MaskByGroup(baseInputControlScheme.Value.bindingGroup) + : (InputBinding?)null; + } + } +} +#endif \ No newline at end of file diff --git a/Runtime/Interaction/Action-based/LocomotionSchemeManager.cs.meta b/Runtime/Interaction/Action-based/LocomotionSchemeManager.cs.meta new file mode 100644 index 0000000..7647191 --- /dev/null +++ b/Runtime/Interaction/Action-based/LocomotionSchemeManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 58a9a7b4435e36f4fbc7000edd687974 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Interaction/Device-based.meta b/Runtime/Interaction/Device-based.meta new file mode 100644 index 0000000..d461a1a --- /dev/null +++ b/Runtime/Interaction/Device-based.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a48cb661e017cd84286be5e0438e4fd1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Interaction/ControllerManager.cs b/Runtime/Interaction/Device-based/ControllerManager.cs similarity index 100% rename from Runtime/Interaction/ControllerManager.cs rename to Runtime/Interaction/Device-based/ControllerManager.cs diff --git a/Runtime/Interaction/ControllerManager.cs.meta b/Runtime/Interaction/Device-based/ControllerManager.cs.meta similarity index 100% rename from Runtime/Interaction/ControllerManager.cs.meta rename to Runtime/Interaction/Device-based/ControllerManager.cs.meta diff --git a/Runtime/Interaction/Interactables.meta b/Runtime/Interaction/Interactables.meta new file mode 100644 index 0000000..154d5d2 --- /dev/null +++ b/Runtime/Interaction/Interactables.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d849b2c84fb4ba54080a182fa7be172c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Interaction/Highlighters/InteractableHighlighter.cs b/Runtime/Interaction/Interactables/InteractableHighlighter.cs similarity index 100% rename from Runtime/Interaction/Highlighters/InteractableHighlighter.cs rename to Runtime/Interaction/Interactables/InteractableHighlighter.cs diff --git a/Runtime/Interaction/Highlighters/InteractableHighlighter.cs.meta b/Runtime/Interaction/Interactables/InteractableHighlighter.cs.meta similarity index 100% rename from Runtime/Interaction/Highlighters/InteractableHighlighter.cs.meta rename to Runtime/Interaction/Interactables/InteractableHighlighter.cs.meta diff --git a/Runtime/Interaction/InteractableObject.cs b/Runtime/Interaction/Interactables/InteractableObject.cs similarity index 100% rename from Runtime/Interaction/InteractableObject.cs rename to Runtime/Interaction/Interactables/InteractableObject.cs diff --git a/Runtime/Interaction/InteractableObject.cs.meta b/Runtime/Interaction/Interactables/InteractableObject.cs.meta similarity index 100% rename from Runtime/Interaction/InteractableObject.cs.meta rename to Runtime/Interaction/Interactables/InteractableObject.cs.meta diff --git a/Runtime/Interaction/Interactors.meta b/Runtime/Interaction/Interactors.meta new file mode 100644 index 0000000..0437f03 --- /dev/null +++ b/Runtime/Interaction/Interactors.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a26fda03f879b1645981f7bd38c3700a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Interaction/DirectInteractor.cs b/Runtime/Interaction/Interactors/DirectInteractor.cs similarity index 100% rename from Runtime/Interaction/DirectInteractor.cs rename to Runtime/Interaction/Interactors/DirectInteractor.cs diff --git a/Runtime/Interaction/DirectInteractor.cs.meta b/Runtime/Interaction/Interactors/DirectInteractor.cs.meta similarity index 100% rename from Runtime/Interaction/DirectInteractor.cs.meta rename to Runtime/Interaction/Interactors/DirectInteractor.cs.meta diff --git a/Runtime/Interaction/RayInteractor.cs b/Runtime/Interaction/Interactors/RayInteractor.cs similarity index 100% rename from Runtime/Interaction/RayInteractor.cs rename to Runtime/Interaction/Interactors/RayInteractor.cs diff --git a/Runtime/Interaction/RayInteractor.cs.meta b/Runtime/Interaction/Interactors/RayInteractor.cs.meta similarity index 100% rename from Runtime/Interaction/RayInteractor.cs.meta rename to Runtime/Interaction/Interactors/RayInteractor.cs.meta diff --git a/Runtime/Interaction/SnapZone.cs b/Runtime/Interaction/Interactors/SnapZone.cs similarity index 100% rename from Runtime/Interaction/SnapZone.cs rename to Runtime/Interaction/Interactors/SnapZone.cs diff --git a/Runtime/Interaction/SnapZone.cs.meta b/Runtime/Interaction/Interactors/SnapZone.cs.meta similarity index 100% rename from Runtime/Interaction/SnapZone.cs.meta rename to Runtime/Interaction/Interactors/SnapZone.cs.meta diff --git a/Runtime/Interaction/SnapZonePreviewDrawer.cs b/Runtime/Interaction/Interactors/SnapZonePreviewDrawer.cs similarity index 100% rename from Runtime/Interaction/SnapZonePreviewDrawer.cs rename to Runtime/Interaction/Interactors/SnapZonePreviewDrawer.cs diff --git a/Runtime/Interaction/SnapZonePreviewDrawer.cs.meta b/Runtime/Interaction/Interactors/SnapZonePreviewDrawer.cs.meta similarity index 100% rename from Runtime/Interaction/SnapZonePreviewDrawer.cs.meta rename to Runtime/Interaction/Interactors/SnapZonePreviewDrawer.cs.meta From f8156be5d95b7db16c49b7116b6b759724c17a24 Mon Sep 17 00:00:00 2001 From: Simon L Date: Mon, 1 Feb 2021 12:22:01 +0100 Subject: [PATCH 2/6] feat: added dynamically loaded xr rigs for xr --- Editor/XRInteractionSceneSetup.cs | 27 +++++++--------------- Runtime/Rigs.meta | 8 +++++++ Runtime/Rigs/XRLegacySetup.cs | 34 ++++++++++++++++++++++++++++ Runtime/Rigs/XRLegacySetup.cs.meta | 11 +++++++++ Runtime/Rigs/XRSetup.cs | 36 ++++++++++++++++++++++++++++++ Runtime/Rigs/XRSetup.cs.meta | 3 +++ Runtime/Rigs/XRSetupBase.cs | 14 ++++++++++++ Runtime/Rigs/XRSetupBase.cs.meta | 3 +++ 8 files changed, 117 insertions(+), 19 deletions(-) create mode 100644 Runtime/Rigs.meta create mode 100644 Runtime/Rigs/XRLegacySetup.cs create mode 100644 Runtime/Rigs/XRLegacySetup.cs.meta create mode 100644 Runtime/Rigs/XRSetup.cs create mode 100644 Runtime/Rigs/XRSetup.cs.meta create mode 100644 Runtime/Rigs/XRSetupBase.cs create mode 100644 Runtime/Rigs/XRSetupBase.cs.meta diff --git a/Editor/XRInteractionSceneSetup.cs b/Editor/XRInteractionSceneSetup.cs index 7913296..afd8561 100644 --- a/Editor/XRInteractionSceneSetup.cs +++ b/Editor/XRInteractionSceneSetup.cs @@ -1,9 +1,10 @@ -using UnityEditor; +using UnityEditor; using UnityEngine; using Innoactive.CreatorEditor.BasicInteraction; namespace Innoactive.CreatorEditor.XRInteraction { + /// /// Scene setup for XR-Interaction. /// @@ -11,38 +12,26 @@ public class XRInteractionSceneSetup : InteractionFrameworkSceneSetup { private const string Title = "Obsolete XR Ring detected"; + private const string Message = "Creator changed the Rig loading to a new dynamic system, you still have the old XR_Setup in the current scene, do you want to delete it?"; + /// public override void Setup() - { - SetupXR(); - } - - private void SetupXR() { DeleteStaticObject("[XR_Setup]"); - RemoveMainCamera(); - -#if ENABLE_INPUT_SYSTEM && XRIT_0_10_OR_NEWER - DeleteStaticObject("[XR_Setup_Device_Based]"); - SetupPrefab("[XR_Setup_Action_Based]"); -#else - DeleteStaticObject("[XR_Setup_Action_Based]"); - SetupPrefab("[XR_Setup_Device_Based]"); -#endif } private void DeleteStaticObject(string objectName) { - GameObject oldRig = GameObject.Find(objectName); + GameObject objectToDelete = GameObject.Find(objectName); - if (oldRig != null) + if (objectToDelete != null) { string Message = $"Creator changed the XR Rig loading to a new dynamic system, you have a static {objectName} in the current scene, do you want to delete it?"; if (EditorUtility.DisplayDialog(Title, Message, "Delete", "Skip")) { - EditorUtility.SetDirty(oldRig); - Object.DestroyImmediate(oldRig); + EditorUtility.SetDirty(objectToDelete); + Object.DestroyImmediate(objectToDelete); } } } diff --git a/Runtime/Rigs.meta b/Runtime/Rigs.meta new file mode 100644 index 0000000..a4010e5 --- /dev/null +++ b/Runtime/Rigs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1d1e38c7ed723644ca934a054135d919 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Rigs/XRLegacySetup.cs b/Runtime/Rigs/XRLegacySetup.cs new file mode 100644 index 0000000..fc4a40e --- /dev/null +++ b/Runtime/Rigs/XRLegacySetup.cs @@ -0,0 +1,34 @@ +namespace Innoactive.Creator.Components.Runtime.Rigs +{ + /// + /// Setup for XR with the old input system. + /// + public class XRLegacySetup : XRSetupBase + { + /// + public override string Name { get; } = "XR Legacy Rig"; + + /// + public override string PrefabName { get; } = "[XR_Setup_Device_Based]"; + + /// + public override bool CanBeUsed() + { +#if ENABLE_LEGACY_INPUT_MANAGER + return IsEventManagerInScene() == false; +#else + return false; +#endif + } + + /// + public override string GetSetupTooltip() + { +#if ENABLE_LEGACY_INPUT_MANAGER + return "Can't be used while there is already a XRInteractionManager in the scene."; +#else + return "Enable the legacy input system to allow using this rig."; +#endif + } + } +} diff --git a/Runtime/Rigs/XRLegacySetup.cs.meta b/Runtime/Rigs/XRLegacySetup.cs.meta new file mode 100644 index 0000000..66c8f01 --- /dev/null +++ b/Runtime/Rigs/XRLegacySetup.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9ff9e7c96f037b44294b662c9c69cc5d +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Rigs/XRSetup.cs b/Runtime/Rigs/XRSetup.cs new file mode 100644 index 0000000..a08ba86 --- /dev/null +++ b/Runtime/Rigs/XRSetup.cs @@ -0,0 +1,36 @@ +using Innoactive.Creator.BasicInteraction.RigSetup; + +namespace Innoactive.Creator.Components.Runtime.Rigs +{ + /// + /// Setup for the standard XR rig. + /// + public class XRSetup : XRSetupBase + { + /// + public override string Name { get; } = "XR Rig"; + + /// + public override string PrefabName { get; } = "[XR_Setup_Action_Based]"; + + /// + public override bool CanBeUsed() + { +#if ENABLE_INPUT_SYSTEM + return IsEventManagerInScene() == false; +#else + return false; +#endif + } + + /// + public override string GetSetupTooltip() + { +#if ENABLE_INPUT_SYSTEM + return "Can't be used while there is already a XRInteractionManager in the scene."; +#else + return "Enable the new input system to allow using this rig."; +#endif + } + } +} diff --git a/Runtime/Rigs/XRSetup.cs.meta b/Runtime/Rigs/XRSetup.cs.meta new file mode 100644 index 0000000..1c31d1a --- /dev/null +++ b/Runtime/Rigs/XRSetup.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 155c60d767db41e6946196f4baf42c22 +timeCreated: 1611137157 \ No newline at end of file diff --git a/Runtime/Rigs/XRSetupBase.cs b/Runtime/Rigs/XRSetupBase.cs new file mode 100644 index 0000000..dbd8ef7 --- /dev/null +++ b/Runtime/Rigs/XRSetupBase.cs @@ -0,0 +1,14 @@ +using Innoactive.Creator.BasicInteraction.RigSetup; +using UnityEngine; +using UnityEngine.XR.Interaction.Toolkit; + +namespace Innoactive.Creator.Components.Runtime.Rigs +{ + public abstract class XRSetupBase : InteractionRigProvider + { + protected bool IsEventManagerInScene() + { + return GameObject.FindObjectOfType() != null; + } + } +} \ No newline at end of file diff --git a/Runtime/Rigs/XRSetupBase.cs.meta b/Runtime/Rigs/XRSetupBase.cs.meta new file mode 100644 index 0000000..6c09ae5 --- /dev/null +++ b/Runtime/Rigs/XRSetupBase.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: dcfd8211370c4716a655f32ff16f0b2a +timeCreated: 1611656695 \ No newline at end of file From 619866d7e14eeea1c1fe295f1eb95450262b4a12 Mon Sep 17 00:00:00 2001 From: Gustavo Quiroz Date: Mon, 1 Feb 2021 16:54:23 +0100 Subject: [PATCH 3/6] fix: signatures methods updated to latest XRIT API (#80) fix: deprecated methods were marked as obsolete --- .../Innoactive.Creator.XRInteraction.asmdef | 5 + .../Interactables/InteractableHighlighter.cs | 72 +++++++++-- .../Interactables/InteractableObject.cs | 122 ++++++++++++++++-- .../Interactors/DirectInteractor.cs | 80 +++++++++--- Runtime/Interaction/Interactors/SnapZone.cs | 34 ++++- Runtime/Properties/GrabbableProperty.cs | 20 ++- Runtime/Properties/SnapZoneProperty.cs | 21 ++- Runtime/Properties/SnappableProperty.cs | 22 +++- Runtime/Properties/TouchableProperty.cs | 21 ++- Runtime/Properties/UsableProperty.cs | 23 +++- 10 files changed, 362 insertions(+), 58 deletions(-) diff --git a/Runtime/Innoactive.Creator.XRInteraction.asmdef b/Runtime/Innoactive.Creator.XRInteraction.asmdef index 1e40de5..28bafa4 100644 --- a/Runtime/Innoactive.Creator.XRInteraction.asmdef +++ b/Runtime/Innoactive.Creator.XRInteraction.asmdef @@ -25,6 +25,11 @@ "name": "com.unity.xr.interaction.toolkit", "expression": "0.10.0-preview", "define": "XRIT_0_10_OR_NEWER" + }, + { + "name": "com.unity.xr.interaction.toolkit", + "expression": "1.0.0-pre.2", + "define": "XRIT_1_0_OR_NEWER" } ], "noEngineReferences": false diff --git a/Runtime/Interaction/Interactables/InteractableHighlighter.cs b/Runtime/Interaction/Interactables/InteractableHighlighter.cs index 8f965b7..3f63062 100644 --- a/Runtime/Interaction/Interactables/InteractableHighlighter.cs +++ b/Runtime/Interaction/Interactables/InteractableHighlighter.cs @@ -103,17 +103,25 @@ private void OnEnable() interactableObject = gameObject.GetComponent(); } -#if XRIT_0_10_OR_NEWER +#if XRIT_1_0_OR_NEWER + interactableObject.firstHoverEntered.AddListener(OnTouched); + interactableObject.selectEntered.AddListener(OnGrabbed); + interactableObject.selectExited.AddListener(OnReleased); + interactableObject.activated.AddListener(OnUsed); + interactableObject.deactivated.AddListener(OnUnused); +#elif XRIT_0_10_OR_NEWER interactableObject.onFirstHoverEntered.AddListener(OnTouched); interactableObject.onSelectEntered.AddListener(OnGrabbed); interactableObject.onSelectExited.AddListener(OnReleased); + interactableObject.onActivate.AddListener(OnUsed); + interactableObject.onDeactivate.AddListener(OnUnused); #else interactableObject.onFirstHoverEnter.AddListener(OnTouched); interactableObject.onSelectEnter.AddListener(OnGrabbed); interactableObject.onSelectExit.AddListener(OnReleased); -#endif interactableObject.onActivate.AddListener(OnUsed); interactableObject.onDeactivate.AddListener(OnUnused); +#endif } private void OnDisable() @@ -124,17 +132,30 @@ private void OnDisable() externalHighlights.Clear(); } -#if XRIT_0_10_OR_NEWER - interactableObject?.onFirstHoverEntered.RemoveListener(OnTouched); - interactableObject?.onSelectEntered.RemoveListener(OnGrabbed); - interactableObject?.onSelectExited.RemoveListener(OnReleased); + if (interactableObject == false) + { + return; + } + +#if XRIT_1_0_OR_NEWER + interactableObject.firstHoverEntered.RemoveListener(OnTouched); + interactableObject.selectEntered.RemoveListener(OnGrabbed); + interactableObject.selectExited.RemoveListener(OnReleased); + interactableObject.activated.RemoveListener(OnUsed); + interactableObject.deactivated.RemoveListener(OnUnused); +#elif XRIT_0_10_OR_NEWER + interactableObject.onFirstHoverEntered.RemoveListener(OnTouched); + interactableObject.onSelectEntered.RemoveListener(OnGrabbed); + interactableObject.onSelectExited.RemoveListener(OnReleased); + interactableObject.onActivate.RemoveListener(OnUsed); + interactableObject.onDeactivate.RemoveListener(OnUnused); #else - interactableObject?.onFirstHoverEnter.RemoveListener(OnTouched); - interactableObject?.onSelectEnter.RemoveListener(OnGrabbed); - interactableObject?.onSelectExit.RemoveListener(OnReleased); + interactableObject.onFirstHoverEnter.RemoveListener(OnTouched); + interactableObject.onSelectEnter.RemoveListener(OnGrabbed); + interactableObject.onSelectExit.RemoveListener(OnReleased); + interactableObject.onActivate.RemoveListener(OnUsed); + interactableObject.onDeactivate.RemoveListener(OnUnused); #endif - interactableObject?.onActivate.RemoveListener(OnUsed); - interactableObject?.onDeactivate.RemoveListener(OnUnused); } private void OnValidate() @@ -225,6 +246,33 @@ public void StopHighlighting(string highlightID) } } +#if XRIT_1_0_OR_NEWER + private void OnTouched(HoverEnterEventArgs arguments) + { + OnTouchHighlight(); + } + + private void OnGrabbed(SelectEnterEventArgs arguments) + { + OnGrabHighlight(); + } + + private void OnReleased(SelectExitEventArgs arguments) + { + OnTouchHighlight(); + } + + private void OnUsed(ActivateEventArgs arguments) + { + OnUseHighlight(); + } + + private void OnUnused(DeactivateEventArgs arg0) + { + OnGrabHighlight(); + } +#else + private void OnTouched(XRBaseInteractor interactor) { OnTouchHighlight(); @@ -249,7 +297,7 @@ private void OnUnused(XRBaseInteractor interactor) { OnGrabHighlight(); } - +#endif private IEnumerator Highlight(Material highlightMaterial, Func shouldContinueHighlighting, string highlightID = "") { if (highlightMeshRenderer == null || renderers == null || renderers.Any() == false) diff --git a/Runtime/Interaction/Interactables/InteractableObject.cs b/Runtime/Interaction/Interactables/InteractableObject.cs index 4bbefc4..caf871c 100644 --- a/Runtime/Interaction/Interactables/InteractableObject.cs +++ b/Runtime/Interaction/Interactables/InteractableObject.cs @@ -1,7 +1,4 @@ -using System; -using System.Linq; -using System.Collections; -using System.Collections.Generic; +using System.Collections; using UnityEngine; using UnityEngine.XR.Interaction.Toolkit; @@ -145,7 +142,15 @@ public virtual void ForceStopInteracting() { if (IsActivated) { +#if XRIT_1_0_OR_NEWER + OnDeactivated(new DeactivateEventArgs + { + interactable = this, + interactor = selectingInteractor + }); +#else OnDeactivate(selectingInteractor); +#endif } StartCoroutine(StopInteractingForOneFrame()); @@ -156,26 +161,60 @@ public virtual void ForceStopInteracting() /// public virtual void ForceUse() { +#if XRIT_1_0_OR_NEWER + OnActivated(new ActivateEventArgs + { + interactable = this, + interactor = selectingInteractor + }); +#else OnActivate(selectingInteractor); +#endif } internal void ForceSelectEnter(XRBaseInteractor interactor) { -#if XRIT_0_10_OR_NEWER +#if XRIT_1_0_OR_NEWER + OnSelectEntering(new SelectEnterEventArgs + { + interactable = this, + interactor = interactor + }); +#elif XRIT_0_10_OR_NEWER OnSelectEntering(interactor); #else OnSelectEnter(interactor); #endif } +#if XRIT_1_0_OR_NEWER + /// + /// This method is called by the Interaction Manager + /// right before the Interactor first initiates selection of an Interactable + /// in a first pass. + /// + /// Event data containing the Interactor that is initiating the selection. + /// + /// is only valid during this method call, do not hold a reference to it. + /// + /// + protected override void OnSelectEntering(SelectEnterEventArgs arguments) + { + base.OnSelectEntering(arguments); + XRBaseInteractor interactor = arguments.interactor; +#elif XRIT_0_10_OR_NEWER /// This method is called by the interaction manager /// when the interactor first initiates selection of an interactable. /// Interactor that is initiating the selection. -#if XRIT_0_10_OR_NEWER + [System.Obsolete("OnSelectEntering(XRBaseInteractor) has been deprecated. Please, upgrade the XR Interaction Toolkit from the Package Manager to the latest available version.")] protected override void OnSelectEntering(XRBaseInteractor interactor) { base.OnSelectEntering(interactor); #else + /// This method is called by the interaction manager + /// when the interactor first initiates selection of an interactable. + /// Interactor that is initiating the selection. + [System.Obsolete("OnSelectEnter(XRBaseInteractor) has been deprecated. Please, upgrade the XR Interaction Toolkit from the Package Manager to the latest available version.")] protected override void OnSelectEnter(XRBaseInteractor interactor) { base.OnSelectEnter(interactor); @@ -191,15 +230,35 @@ protected override void OnSelectEnter(XRBaseInteractor interactor) } } } - + +#if XRIT_1_0_OR_NEWER + /// + /// This method is called by the Interaction Manager + /// right before the Interactor ends selection of an Interactable + /// in a first pass. + /// + /// Event data containing the Interactor that is ending the selection. + /// + /// is only valid during this method call, do not hold a reference to it. + /// + /// + protected override void OnSelectExiting(SelectExitEventArgs arguments) + { + base.OnSelectExiting(arguments); + XRBaseInteractor interactor = arguments.interactor; +#elif XRIT_0_10_OR_NEWER /// This method is called by the interaction manager /// when the interactor ends selection of an interactable. /// Interactor that is ending the selection. -#if XRIT_0_10_OR_NEWER + [System.Obsolete("OnSelectExiting(XRBaseInteractor) has been deprecated. Please, upgrade the XR Interaction Toolkit from the Package Manager to the latest available version.")] protected override void OnSelectExiting(XRBaseInteractor interactor) { base.OnSelectExiting(interactor); #else + /// This method is called by the interaction manager + /// when the interactor ends selection of an interactable. + /// Interactor that is ending the selection. + [System.Obsolete("OnSelectExit(XRBaseInteractor) has been deprecated. Please, upgrade the XR Interaction Toolkit from the Package Manager to the latest available version.")] protected override void OnSelectExit(XRBaseInteractor interactor) { base.OnSelectExit(interactor); @@ -209,10 +268,30 @@ protected override void OnSelectExit(XRBaseInteractor interactor) selectingSocket = null; } } - + +#if XRIT_1_0_OR_NEWER + /// + /// This method is called by the + /// when the Interactor begins an activation event on this selected Interactable. + /// + /// Event data containing the Interactor that is sending the activate event. + /// + /// is only valid during this method call, do not hold a reference to it. + /// + /// + protected override void OnActivated(ActivateEventArgs arguments) + { + if (isUsable) + { + IsActivated = true; + base.OnActivated(arguments); + } + } +#else /// This method is called by the interaction manager /// when the interactor sends an activation event down to an interactable. /// Interactor that is sending the activation event. + [System.Obsolete("OnActivate(XRBaseInteractor) has been deprecated. Please, upgrade the XR Interaction Toolkit from the Package Manager to the latest available version.")] protected override void OnActivate(XRBaseInteractor interactor) { if (isUsable) @@ -221,10 +300,32 @@ protected override void OnActivate(XRBaseInteractor interactor) base.OnActivate(interactor); } } +#endif +#if XRIT_1_0_OR_NEWER + /// + /// This method is called by the + /// when the Interactor ends an activation event on this selected Interactable. + /// + /// Event data containing the Interactor that is sending the deactivate event. + /// + /// is only valid during this method call, do not hold a reference to it. + /// + /// + protected override void OnDeactivated(DeactivateEventArgs arguments) + { + if (isUsable) + { + IsActivated = false; + base.OnDeactivated(arguments); + } + } + +#else /// This method is called by the interaction manager /// when the interactor sends a deactivation event down to an interactable. /// Interactor that is sending the activation event. + [System.Obsolete("OnDeactivate(XRBaseInteractor) has been deprecated. Please, upgrade the XR Interaction Toolkit from the Package Manager to the latest available version.")] protected override void OnDeactivate(XRBaseInteractor interactor) { if (isUsable) @@ -233,6 +334,7 @@ protected override void OnDeactivate(XRBaseInteractor interactor) base.OnDeactivate(interactor); } } +#endif private IEnumerator StopInteractingForOneFrame() { @@ -242,7 +344,7 @@ private IEnumerator StopInteractingForOneFrame() if (selectingSocket != null) { SnapZone snapZone = selectingSocket as SnapZone; - snapZone.ForceUnselect(); + snapZone?.ForceUnselect(); } yield return new WaitUntil(() => hoveringInteractors.Count == 0 && selectingInteractor == null); diff --git a/Runtime/Interaction/Interactors/DirectInteractor.cs b/Runtime/Interaction/Interactors/DirectInteractor.cs index 6fffb82..8544f75 100644 --- a/Runtime/Interaction/Interactors/DirectInteractor.cs +++ b/Runtime/Interaction/Interactors/DirectInteractor.cs @@ -65,13 +65,20 @@ public virtual void AttemptGrab() forceGrab = true; } -#if XRIT_0_10_OR_NEWER +#if XRIT_1_0_OR_NEWER /// - /// This method is called when the interactor first initiates selection of an interactable. + /// This method is called by the Interaction Manager + /// right before the Interactor first initiates selection of an Interactable + /// in a first pass. /// - /// Interactable that is being selected. - protected override void OnSelectEntering(XRBaseInteractable interactable) + /// Event data containing the Interactable that is being selected. + /// + /// is only valid during this method call, do not hold a reference to it. + /// + /// + protected override void OnSelectEntering(SelectEnterEventArgs arguments) { + XRBaseInteractable interactable = arguments.interactable; InteractableObject interactableObject = interactable as InteractableObject; if (precisionGrab && interactableObject.attachTransform == null) @@ -88,29 +95,42 @@ protected override void OnSelectEntering(XRBaseInteractable interactable) break; } } - - base.OnSelectEntering(interactable); + + base.OnSelectEntering(arguments); } - +#elif XRIT_0_10_OR_NEWER /// - /// This method is called by the interaction manager when the interactor ends selection of an interactable. + /// This method is called when the interactor first initiates selection of an interactable. /// - /// Interactable that is no longer selected. - protected override void OnSelectExiting(XRBaseInteractable interactable) + /// Interactable that is being selected. + [System.Obsolete("OnSelectEntering(XRBaseInteractable) has been deprecated. Please, upgrade the XR Interaction Toolkit from the Package Manager to the latest available version.")] + protected override void OnSelectEntering(XRBaseInteractable interactable) { - base.OnSelectExiting(interactable); - - if (precisionGrab) + InteractableObject interactableObject = interactable as InteractableObject; + + if (precisionGrab && interactableObject.attachTransform == null) { - attachTransform.localPosition = initialAttachPosition; - attachTransform.localRotation = initialAttachRotation; + switch (interactableObject.movementType) + { + case XRBaseInteractable.MovementType.VelocityTracking: + case XRBaseInteractable.MovementType.Kinematic: + attachTransform.SetPositionAndRotation(interactable.transform.position, interactable.transform.rotation); + break; + case XRBaseInteractable.MovementType.Instantaneous: + Debug.LogWarning("Precision Grab is currently not compatible with interactable objects with Movement Type configured as Instantaneous.\n" + + $"Please change the Movement Type in {interactable.name}.", interactable); + break; + } } + + base.OnSelectEntering(interactable); } #else /// /// This method is called when the interactor first initiates selection of an interactable. /// /// Interactable that is being selected. + [System.Obsolete("OnSelectEnter(XRBaseInteractable) has been deprecated. Please, upgrade the XR Interaction Toolkit from the Package Manager to the latest available version.")] protected override void OnSelectEnter(XRBaseInteractable interactable) { InteractableObject interactableObject = interactable as InteractableObject; @@ -131,21 +151,47 @@ protected override void OnSelectEnter(XRBaseInteractable interactable) base.OnSelectEnter(interactable); } +#endif +#if XRIT_1_0_OR_NEWER + /// + /// This method is called by the Interaction Manager + /// right before the Interactor ends selection of an Interactable + /// in a first pass. + /// + /// Event data containing the Interactable that is no longer selected. + /// + /// is only valid during this method call, do not hold a reference to it. + /// + /// + protected override void OnSelectExiting(SelectExitEventArgs arguments) + { + base.OnSelectExiting(arguments); +#elif XRIT_0_10_OR_NEWER /// /// This method is called by the interaction manager when the interactor ends selection of an interactable. /// /// Interactable that is no longer selected. + [System.Obsolete("OnSelectExiting(XRBaseInteractable) has been deprecated. Please, upgrade the XR Interaction Toolkit from the Package Manager to the latest available version.")] + protected override void OnSelectExiting(XRBaseInteractable interactable) + { + base.OnSelectExiting(interactable); +#else + /// + /// This method is called by the interaction manager when the interactor ends selection of an interactable. + /// + /// Interactable that is no longer selected. + [System.Obsolete("OnSelectExit(XRBaseInteractable) has been deprecated. Please, upgrade the XR Interaction Toolkit from the Package Manager to the latest available version.")] protected override void OnSelectExit(XRBaseInteractable interactable) { base.OnSelectExit(interactable); - +#endif if (precisionGrab) { attachTransform.localPosition = initialAttachPosition; attachTransform.localRotation = initialAttachRotation; } } -#endif + } } diff --git a/Runtime/Interaction/Interactors/SnapZone.cs b/Runtime/Interaction/Interactors/SnapZone.cs index 3603f37..52a68e4 100644 --- a/Runtime/Interaction/Interactors/SnapZone.cs +++ b/Runtime/Interaction/Interactors/SnapZone.cs @@ -205,7 +205,10 @@ protected override void OnEnable() snapZoneHoverTargets.Clear(); -#if XRIT_0_10_OR_NEWER +#if XRIT_1_0_OR_NEWER + selectEntered.AddListener(OnAttach); + selectExited.AddListener(OnDetach); +#elif XRIT_0_10_OR_NEWER onSelectEntered.AddListener(OnAttach); onSelectExited.AddListener(OnDetach); #else @@ -221,7 +224,10 @@ protected override void OnDisable() AttachParent(); snapZoneHoverTargets.Clear(); -#if XRIT_0_10_OR_NEWER +#if XRIT_1_0_OR_NEWER + selectEntered.RemoveListener(OnAttach); + selectExited.RemoveListener(OnDetach); +#elif XRIT_0_10_OR_NEWER onSelectEntered.RemoveListener(OnAttach); onSelectExited.RemoveListener(OnDetach); #else @@ -230,8 +236,15 @@ protected override void OnDisable() #endif } + +#if XRIT_1_0_OR_NEWER + private void OnAttach(SelectEnterEventArgs arguments) + { + XRBaseInteractable interactable = arguments.interactable; +#else private void OnAttach(XRBaseInteractable interactable) { +#endif if (interactable != null) { Rigidbody rigid = interactable.gameObject.GetComponent(); @@ -240,8 +253,14 @@ private void OnAttach(XRBaseInteractable interactable) } } +#if XRIT_1_0_OR_NEWER + private void OnDetach(SelectExitEventArgs arguments) + { + XRBaseInteractable interactable = arguments.interactable; +#else private void OnDetach(XRBaseInteractable interactable) { +#endif if (interactable != null) { Rigidbody rigid = interactable.gameObject.GetComponent(); @@ -469,7 +488,13 @@ public virtual void ForceSelect(XRBaseInteractable interactable) if (interactable.IsSelectableBy(this)) { -#if XRIT_0_10_OR_NEWER +#if XRIT_1_0_OR_NEWER + OnSelectEntering(new SelectEnterEventArgs + { + interactable = interactable, + interactor = this + }); +#elif XRIT_0_10_OR_NEWER OnSelectEntering(interactable); #else OnSelectEnter(interactable); @@ -480,8 +505,7 @@ public virtual void ForceSelect(XRBaseInteractable interactable) interactableObject.ForceSelectEnter(this); } - interactable.transform.position = attachTransform.position; - interactable.transform.rotation = attachTransform.rotation; + interactable.transform.SetPositionAndRotation(attachTransform.position, attachTransform.rotation); ForceSelectTarget = interactable; } else diff --git a/Runtime/Properties/GrabbableProperty.cs b/Runtime/Properties/GrabbableProperty.cs index aacc73d..5736a90 100644 --- a/Runtime/Properties/GrabbableProperty.cs +++ b/Runtime/Properties/GrabbableProperty.cs @@ -43,7 +43,10 @@ protected override void OnEnable() { base.OnEnable(); -#if XRIT_0_10_OR_NEWER +#if XRIT_1_0_OR_NEWER + Interactable.selectEntered.AddListener(HandleXRGrabbed); + Interactable.selectExited.AddListener(HandleXRUngrabbed); +#elif XRIT_0_10_OR_NEWER Interactable.onSelectEntered.AddListener(HandleXRGrabbed); Interactable.onSelectExited.AddListener(HandleXRUngrabbed); #else @@ -58,7 +61,10 @@ protected override void OnDisable() { base.OnDisable(); -#if XRIT_0_10_OR_NEWER +#if XRIT_1_0_OR_NEWER + Interactable.selectEntered.RemoveListener(HandleXRGrabbed); + Interactable.selectExited.RemoveListener(HandleXRUngrabbed); +#elif XRIT_0_10_OR_NEWER Interactable.onSelectEntered.RemoveListener(HandleXRGrabbed); Interactable.onSelectExited.RemoveListener(HandleXRUngrabbed); #else @@ -66,19 +72,27 @@ protected override void OnDisable() Interactable.onSelectExit.RemoveListener(HandleXRUngrabbed); #endif } - + protected void Reset() { Interactable.IsGrabbable = true; GetComponent().isKinematic = false; } +#if XRIT_1_0_OR_NEWER + private void HandleXRGrabbed(SelectEnterEventArgs arguments) +#else private void HandleXRGrabbed(XRBaseInteractor interactor) +#endif { EmitGrabbed(); } +#if XRIT_1_0_OR_NEWER + private void HandleXRUngrabbed(SelectExitEventArgs arguments) +#else private void HandleXRUngrabbed(XRBaseInteractor interactor) +#endif { EmitUngrabbed(); } diff --git a/Runtime/Properties/SnapZoneProperty.cs b/Runtime/Properties/SnapZoneProperty.cs index 73bfd6d..a8ffc5c 100644 --- a/Runtime/Properties/SnapZoneProperty.cs +++ b/Runtime/Properties/SnapZoneProperty.cs @@ -67,7 +67,10 @@ protected override void OnEnable() { base.OnEnable(); -#if XRIT_0_10_OR_NEWER +#if XRIT_1_0_OR_NEWER + SnapZone.selectEntered.AddListener(HandleObjectSnapped); + SnapZone.selectExited.AddListener(HandleObjectUnsnapped); +#elif XRIT_0_10_OR_NEWER SnapZone.onSelectEntered.AddListener(HandleObjectSnapped); SnapZone.onSelectExited.AddListener(HandleObjectUnsnapped); #else @@ -80,7 +83,11 @@ protected override void OnDisable() { base.OnDisable(); -#if XRIT_0_10_OR_NEWER +#if XRIT_1_0_OR_NEWER + SnapZone.selectEntered.RemoveListener(HandleObjectSnapped); + SnapZone.selectExited.RemoveListener(HandleObjectUnsnapped); + +#elif XRIT_0_10_OR_NEWER SnapZone.onSelectEntered.RemoveListener(HandleObjectSnapped); SnapZone.onSelectExited.RemoveListener(HandleObjectUnsnapped); #else @@ -89,8 +96,14 @@ protected override void OnDisable() #endif } +#if XRIT_1_0_OR_NEWER + private void HandleObjectSnapped(SelectEnterEventArgs arguments) + { + XRBaseInteractable interactable = arguments.interactable; +#else private void HandleObjectSnapped(XRBaseInteractable interactable) { +#endif SnappedObject = interactable.gameObject.GetComponent(); if (SnappedObject == null) { @@ -102,7 +115,11 @@ private void HandleObjectSnapped(XRBaseInteractable interactable) } } +#if XRIT_1_0_OR_NEWER + private void HandleObjectUnsnapped(SelectExitEventArgs arguments) +#else private void HandleObjectUnsnapped(XRBaseInteractable interactable) +#endif { if (SnappedObject != null) { diff --git a/Runtime/Properties/SnappableProperty.cs b/Runtime/Properties/SnappableProperty.cs index 8f74510..7a26a97 100644 --- a/Runtime/Properties/SnappableProperty.cs +++ b/Runtime/Properties/SnappableProperty.cs @@ -58,7 +58,10 @@ public XRBaseInteractable Interactable { base.OnEnable(); -#if XRIT_0_10_OR_NEWER +#if XRIT_1_0_OR_NEWER + Interactable.selectEntered.AddListener(HandleSnappedToDropZone); + Interactable.selectExited.AddListener(HandleUnsnappedFromDropZone); +#elif XRIT_0_10_OR_NEWER Interactable.onSelectEntered.AddListener(HandleSnappedToDropZone); Interactable.onSelectExited.AddListener(HandleUnsnappedFromDropZone); #else @@ -71,7 +74,10 @@ public XRBaseInteractable Interactable protected new virtual void OnDisable() { -#if XRIT_0_10_OR_NEWER +#if XRIT_1_0_OR_NEWER + Interactable.selectEntered.RemoveListener(HandleSnappedToDropZone); + Interactable.selectExited.RemoveListener(HandleUnsnappedFromDropZone); +#elif XRIT_0_10_OR_NEWER Interactable.onSelectEntered.RemoveListener(HandleSnappedToDropZone); Interactable.onSelectEntered.RemoveListener(HandleUnsnappedFromDropZone); #else @@ -80,9 +86,15 @@ public XRBaseInteractable Interactable #endif } +#if XRIT_1_0_OR_NEWER + private void HandleSnappedToDropZone(SelectEnterEventArgs arguments) + { + XRBaseInteractor interactor = arguments.interactor; +#else private void HandleSnappedToDropZone(XRBaseInteractor interactor) { - SnappedZone = interactor.GetComponent(); +#endif + SnappedZone = interactor.GetComponent(); if (SnappedZone == null) { @@ -98,7 +110,11 @@ private void HandleSnappedToDropZone(XRBaseInteractor interactor) EmitSnapped(); } +#if XRIT_1_0_OR_NEWER + private void HandleUnsnappedFromDropZone(SelectExitEventArgs arguments) +#else private void HandleUnsnappedFromDropZone(XRBaseInteractor interactor) +#endif { SnappedZone = null; EmitUnsnapped(); diff --git a/Runtime/Properties/TouchableProperty.cs b/Runtime/Properties/TouchableProperty.cs index cb3a296..082d24e 100644 --- a/Runtime/Properties/TouchableProperty.cs +++ b/Runtime/Properties/TouchableProperty.cs @@ -1,5 +1,4 @@ using System; -using System.Collections.Generic; using UnityEngine; using UnityEngine.XR.Interaction.Toolkit; using Innoactive.Creator.Core.Properties; @@ -42,7 +41,11 @@ protected InteractableObject Interactable protected override void OnEnable() { base.OnEnable(); -#if XRIT_0_10_OR_NEWER + +#if XRIT_1_0_OR_NEWER + Interactable.firstHoverEntered.AddListener(HandleXRTouched); + Interactable.lastHoverExited.AddListener(HandleXRUntouched); +#elif XRIT_0_10_OR_NEWER Interactable.onFirstHoverEntered.AddListener(HandleXRTouched); Interactable.onLastHoverExited.AddListener(HandleXRUntouched); #else @@ -56,7 +59,11 @@ protected override void OnEnable() protected override void OnDisable() { base.OnDisable(); -#if XRIT_0_10_OR_NEWER + +#if XRIT_1_0_OR_NEWER + Interactable.firstHoverEntered.RemoveListener(HandleXRTouched); + Interactable.lastHoverExited.RemoveListener(HandleXRUntouched); +#elif XRIT_0_10_OR_NEWER Interactable.onFirstHoverEntered.RemoveListener(HandleXRTouched); Interactable.onLastHoverExited.RemoveListener(HandleXRUntouched); #else @@ -71,12 +78,20 @@ protected void Reset() gameObject.GetComponent().isKinematic = false; } +#if XRIT_1_0_OR_NEWER + private void HandleXRTouched(HoverEnterEventArgs arguments) +#else private void HandleXRTouched(XRBaseInteractor interactor) +#endif { EmitTouched(); } +#if XRIT_1_0_OR_NEWER + private void HandleXRUntouched(HoverExitEventArgs arguments) +#else private void HandleXRUntouched(XRBaseInteractor interactor) +#endif { EmitUntouched(); } diff --git a/Runtime/Properties/UsableProperty.cs b/Runtime/Properties/UsableProperty.cs index b0519a6..b333553 100644 --- a/Runtime/Properties/UsableProperty.cs +++ b/Runtime/Properties/UsableProperty.cs @@ -47,10 +47,14 @@ protected InteractableObject Interactable protected override void OnEnable() { base.OnEnable(); - + +#if XRIT_1_0_OR_NEWER + Interactable.activated.AddListener(HandleXRUsageStarted); + Interactable.deactivated.AddListener(HandleXRUsageStopped); +#else Interactable.onActivate.AddListener(HandleXRUsageStarted); Interactable.onDeactivate.AddListener(HandleXRUsageStopped); - +#endif InternalSetLocked(IsLocked); } @@ -58,22 +62,35 @@ protected override void OnDisable() { base.OnDisable(); +#if XRIT_1_0_OR_NEWER + Interactable.activated.RemoveListener(HandleXRUsageStarted); + Interactable.deactivated.RemoveListener(HandleXRUsageStopped); +#else Interactable.onActivate.RemoveListener(HandleXRUsageStarted); Interactable.onDeactivate.RemoveListener(HandleXRUsageStopped); +#endif } - + protected void Reset() { Interactable.IsUsable = true; gameObject.GetComponent().isKinematic = false; } +#if XRIT_1_0_OR_NEWER + private void HandleXRUsageStarted(ActivateEventArgs arguments) +#else private void HandleXRUsageStarted(XRBaseInteractor interactor) +#endif { EmitUsageStarted(); } +#if XRIT_1_0_OR_NEWER + private void HandleXRUsageStopped(DeactivateEventArgs arguments) +#else private void HandleXRUsageStopped(XRBaseInteractor interactor) +#endif { EmitUsageStopped(); } From 90bf8fa3f7d94489a4ee19f012c6700d60e1e751 Mon Sep 17 00:00:00 2001 From: Gustavo Quiroz Date: Wed, 3 Feb 2021 17:14:54 +0100 Subject: [PATCH 4/6] fix: property name updated to latest XRIT API (#81) fix: duplicated key for scene setup was removed --- ...oactive.CreatorEditor.XRInteraction.asmdef | 5 +++++ .../Interaction/InteractableObjectEditor.cs | 21 ++++++++++++++++++- Editor/XRInteractionSceneSetup.cs | 10 ++++----- Runtime/Rigs/XRSetupBase.cs | 2 +- 4 files changed, 31 insertions(+), 7 deletions(-) diff --git a/Editor/Innoactive.CreatorEditor.XRInteraction.asmdef b/Editor/Innoactive.CreatorEditor.XRInteraction.asmdef index d74c466..d0d19ae 100644 --- a/Editor/Innoactive.CreatorEditor.XRInteraction.asmdef +++ b/Editor/Innoactive.CreatorEditor.XRInteraction.asmdef @@ -29,6 +29,11 @@ "name": "com.unity.xr.interaction.toolkit", "expression": "0.10.0-preview", "define": "XRIT_0_10_OR_NEWER" + }, + { + "name": "com.unity.xr.interaction.toolkit", + "expression": "1.0.0-pre.2", + "define": "XRIT_1_0_OR_NEWER" } ], "noEngineReferences": false diff --git a/Editor/Interaction/InteractableObjectEditor.cs b/Editor/Interaction/InteractableObjectEditor.cs index 2ed1c5d..b3b51af 100644 --- a/Editor/Interaction/InteractableObjectEditor.cs +++ b/Editor/Interaction/InteractableObjectEditor.cs @@ -29,6 +29,10 @@ internal class InteractableObjectEditor : Editor private SerializedProperty gravityOnDetachProperty; private SerializedProperty retainTransformParentProperty; +#if XRIT_1_0_OR_NEWER + private SerializedProperty customReticle; +#endif + private SerializedProperty onFirstHoverEntered; private SerializedProperty onHoverEntered; private SerializedProperty onHoverExited; @@ -78,6 +82,10 @@ private static class Tooltips public static readonly GUIContent IsGrabbable = new GUIContent("Is Grabbable", "Determines if this Interactable Object can be grabbed."); public static readonly GUIContent IsUsable = new GUIContent("Is Usable", "Determines if this Interactable Object can be used."); public static readonly GUIContent HighlightOptions = new GUIContent("Enable Highlighting", "Adds an InteractableHighlighter component to this Interactable."); + +#if XRIT_1_0_OR_NEWER + public static readonly GUIContent CustomReticle = EditorGUIUtility.TrTextContent("Custom Reticle", "The reticle that will appear at the end of the line when it is valid."); +#endif } private void OnEnable() @@ -101,9 +109,16 @@ private void OnEnable() throwSmoothingCurveProperty = serializedObject.FindProperty("m_ThrowSmoothingCurve"); throwVelocityScaleProperty = serializedObject.FindProperty("m_ThrowVelocityScale"); throwAngularVelocityScaleProperty = serializedObject.FindProperty("m_ThrowAngularVelocityScale"); - gravityOnDetachProperty = serializedObject.FindProperty("m_GravityOnDetach"); retainTransformParentProperty = serializedObject.FindProperty("m_RetainTransformParent"); interactionManager = serializedObject.FindProperty("m_InteractionManager"); + +#if XRIT_1_0_OR_NEWER + gravityOnDetachProperty = serializedObject.FindProperty("m_ForceGravityOnDetach"); + customReticle = serializedObject.FindProperty("m_CustomReticle"); +#else + gravityOnDetachProperty = serializedObject.FindProperty("m_GravityOnDetach"); +#endif + #if XRIT_0_10_OR_NEWER onFirstHoverEntered = serializedObject.FindProperty("m_OnFirstHoverEntered"); onHoverEntered = serializedObject.FindProperty("m_OnHoverEntered"); @@ -154,6 +169,10 @@ public override void OnInspectorGUI() EditorGUILayout.PropertyField(interactionLayerMaskProperty, Tooltips.InteractionLayerMask); EditorGUILayout.PropertyField(collidersProperty, Tooltips.Colliders, true); +#if XRIT_1_0_OR_NEWER + EditorGUILayout.PropertyField(customReticle, Tooltips.CustomReticle); +#endif + EditorGUILayout.Space(); EditorGUILayout.PropertyField(movementTypeProperty, Tooltips.MovementType); diff --git a/Editor/XRInteractionSceneSetup.cs b/Editor/XRInteractionSceneSetup.cs index afd8561..129ebb3 100644 --- a/Editor/XRInteractionSceneSetup.cs +++ b/Editor/XRInteractionSceneSetup.cs @@ -4,15 +4,15 @@ namespace Innoactive.CreatorEditor.XRInteraction { - /// /// Scene setup for XR-Interaction. /// public class XRInteractionSceneSetup : InteractionFrameworkSceneSetup { private const string Title = "Obsolete XR Ring detected"; - - private const string Message = "Creator changed the Rig loading to a new dynamic system, you still have the old XR_Setup in the current scene, do you want to delete it?"; + + /// + public override string Key { get; } = "XRInteractionSetup"; /// public override void Setup() @@ -26,9 +26,9 @@ private void DeleteStaticObject(string objectName) if (objectToDelete != null) { - string Message = $"Creator changed the XR Rig loading to a new dynamic system, you have a static {objectName} in the current scene, do you want to delete it?"; + string message = $"Creator changed the XR Rig loading to a new dynamic system, you have a static {objectName} in the current scene, do you want to delete it?"; - if (EditorUtility.DisplayDialog(Title, Message, "Delete", "Skip")) + if (EditorUtility.DisplayDialog(Title, message, "Delete", "Skip")) { EditorUtility.SetDirty(objectToDelete); Object.DestroyImmediate(objectToDelete); diff --git a/Runtime/Rigs/XRSetupBase.cs b/Runtime/Rigs/XRSetupBase.cs index dbd8ef7..7b2e264 100644 --- a/Runtime/Rigs/XRSetupBase.cs +++ b/Runtime/Rigs/XRSetupBase.cs @@ -8,7 +8,7 @@ public abstract class XRSetupBase : InteractionRigProvider { protected bool IsEventManagerInScene() { - return GameObject.FindObjectOfType() != null; + return Object.FindObjectOfType() != null; } } } \ No newline at end of file From e62af5d58493a7a1f0a237e6650ddf134cb4a485 Mon Sep 17 00:00:00 2001 From: Gustavo Quiroz Date: Wed, 3 Feb 2021 18:15:42 +0100 Subject: [PATCH 5/6] feat: xr simulator rig setup was added (#82) --- .../XRInteractionPackageEnabler.cs | 2 +- Editor/SceneSetup.meta | 8 +++ .../XRInteractionSceneSetup.cs | 10 +++ .../XRInteractionSceneSetup.cs.meta | 0 Editor/SceneSetup/XRSimulatorImporter.cs | 66 +++++++++++++++++++ Editor/SceneSetup/XRSimulatorImporter.cs.meta | 11 ++++ Runtime/Rigs/XRSimulatorSetup.cs | 36 ++++++++++ Runtime/Rigs/XRSimulatorSetup.cs.meta | 11 ++++ 8 files changed, 143 insertions(+), 1 deletion(-) create mode 100644 Editor/SceneSetup.meta rename Editor/{ => SceneSetup}/XRInteractionSceneSetup.cs (75%) rename Editor/{ => SceneSetup}/XRInteractionSceneSetup.cs.meta (100%) create mode 100644 Editor/SceneSetup/XRSimulatorImporter.cs create mode 100644 Editor/SceneSetup/XRSimulatorImporter.cs.meta create mode 100644 Runtime/Rigs/XRSimulatorSetup.cs create mode 100644 Runtime/Rigs/XRSimulatorSetup.cs.meta diff --git a/Editor/PackageDependencies/XRInteractionPackageEnabler.cs b/Editor/PackageDependencies/XRInteractionPackageEnabler.cs index 58de5f1..8c8baaf 100644 --- a/Editor/PackageDependencies/XRInteractionPackageEnabler.cs +++ b/Editor/PackageDependencies/XRInteractionPackageEnabler.cs @@ -3,7 +3,7 @@ /// /// Adds Unity's XR-Interaction-Toolkit package as a dependency and sets specified symbol for script compilation. /// - public class XRInteractionPackageEnabler : Dependency + public class XRInteractionPackageEnabler : Dependency { /// public override string Package { get; } = "com.unity.xr.interaction.toolkit"; diff --git a/Editor/SceneSetup.meta b/Editor/SceneSetup.meta new file mode 100644 index 0000000..cdaae11 --- /dev/null +++ b/Editor/SceneSetup.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e38c794506940e14392414e73df7506c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/XRInteractionSceneSetup.cs b/Editor/SceneSetup/XRInteractionSceneSetup.cs similarity index 75% rename from Editor/XRInteractionSceneSetup.cs rename to Editor/SceneSetup/XRInteractionSceneSetup.cs index 129ebb3..9c840d0 100644 --- a/Editor/XRInteractionSceneSetup.cs +++ b/Editor/SceneSetup/XRInteractionSceneSetup.cs @@ -1,6 +1,7 @@ using UnityEditor; using UnityEngine; using Innoactive.CreatorEditor.BasicInteraction; +using Innoactive.CreatorEditor.PackageManager.XRInteraction; namespace Innoactive.CreatorEditor.XRInteraction { @@ -18,6 +19,15 @@ public class XRInteractionSceneSetup : InteractionFrameworkSceneSetup public override void Setup() { DeleteStaticObject("[XR_Setup]"); + +#if XRIT_1_0_OR_NEWER + XRSimulatorImporter simulatorImporter = new XRSimulatorImporter(); + + if (string.IsNullOrEmpty(simulatorImporter.SimulatorRigPath) || AssetDatabase.GetMainAssetTypeAtPath(simulatorImporter.SimulatorRigPath) == null) + { + simulatorImporter.ImportSimulatorRig(); + } +#endif } private void DeleteStaticObject(string objectName) diff --git a/Editor/XRInteractionSceneSetup.cs.meta b/Editor/SceneSetup/XRInteractionSceneSetup.cs.meta similarity index 100% rename from Editor/XRInteractionSceneSetup.cs.meta rename to Editor/SceneSetup/XRInteractionSceneSetup.cs.meta diff --git a/Editor/SceneSetup/XRSimulatorImporter.cs b/Editor/SceneSetup/XRSimulatorImporter.cs new file mode 100644 index 0000000..2687acb --- /dev/null +++ b/Editor/SceneSetup/XRSimulatorImporter.cs @@ -0,0 +1,66 @@ +#if XRIT_1_0_OR_NEWER +using System.IO; +using System.Linq; +using UnityEditor; +using UnityEngine; + +namespace Innoactive.CreatorEditor.PackageManager.XRInteraction +{ + /// + /// Helper class to generate a new XR Simulator Rig out of the `[XR_Setup_Action_Based]` and the `XR Device Simulator` sample. + /// + internal class XRSimulatorImporter + { + public string SimulatorRigPath { get; } = null; + + private const string SimulatorPathKey = "SimulatorRigPath"; + private const string SamplePrefabName = "XR Device Simulator"; + private const string ActionRigName = "[XR_Setup_Action_Based]"; + private const string SimulatorPrefabName = "[XR_Setup_Simulator]"; + + public XRSimulatorImporter() + { + SimulatorRigPath = EditorPrefs.GetString(SimulatorPathKey); + } + + /// + /// Imports a new `[XR_Setup_Simulator]` prefab based on the `[XR_Setup_Action_Based]` and the `XR Device Simulator` prefabs. + /// + /// The generated prefab is imported into the `XR Interaction Component`’s `Resources` folder. + public void ImportSimulatorRig() + { + GameObject simulator = LoadPrefab(SamplePrefabName, "Samples", out string simulatorRigPath); + GameObject actionRig = LoadPrefab(ActionRigName, "Innoactive", out string actionRigPath); + + if (simulator == null || actionRig == null) + { + Debug.LogError($"{SimulatorPrefabName} could not be generated. {(simulator == null ? SamplePrefabName : ActionRigName)} is missing."); + return; + } + + simulatorRigPath = $"{Path.GetDirectoryName(actionRigPath)}/{SimulatorPrefabName}.prefab"; + + simulator.transform.SetParent(actionRig.transform); + PrefabUtility.SaveAsPrefabAsset(actionRig, simulatorRigPath); + + EditorPrefs.SetString(SimulatorPathKey, simulatorRigPath); + PrefabUtility.UnloadPrefabContents(simulator); + } + + private GameObject LoadPrefab(string prefabName, string searchFolder, out string assetPath) + { + string filter = $"t:Prefab {prefabName}"; + string prefabGUID = AssetDatabase.FindAssets(filter, new[] {$"Assets/{searchFolder}"}).FirstOrDefault(); + + if (string.IsNullOrEmpty(prefabGUID) == false) + { + assetPath = AssetDatabase.GUIDToAssetPath(prefabGUID); + return PrefabUtility.LoadPrefabContents(assetPath); + } + + assetPath = string.Empty; + return null; + } + } +} +#endif diff --git a/Editor/SceneSetup/XRSimulatorImporter.cs.meta b/Editor/SceneSetup/XRSimulatorImporter.cs.meta new file mode 100644 index 0000000..b798ff7 --- /dev/null +++ b/Editor/SceneSetup/XRSimulatorImporter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 43efd49818da23e45a752417e436a747 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Rigs/XRSimulatorSetup.cs b/Runtime/Rigs/XRSimulatorSetup.cs new file mode 100644 index 0000000..12b43d2 --- /dev/null +++ b/Runtime/Rigs/XRSimulatorSetup.cs @@ -0,0 +1,36 @@ +namespace Innoactive.Creator.Components.Runtime.Rigs +{ + /// + /// Setup for XR Device Simulator. + /// + public class XRSimulatorSetup : XRSetupBase + { + /// + public override string Name { get; } = "XR Simulator"; + + /// + public override string PrefabName { get; } = "[XR_Setup_Simulator]"; + + /// + public override bool CanBeUsed() + { +#if ENABLE_INPUT_SYSTEM && XRIT_1_0_OR_NEWER + return IsEventManagerInScene() == false; +#else + return false; +#endif + } + + /// + public override string GetSetupTooltip() + { +#if !XRIT_1_0_OR_NEWER + return "Please upgrade the XR Interaction Toolkit from the Package Manager to the latest available version."; +#elif ENABLE_INPUT_SYSTEM + return "Can't be used while there is already a XRInteractionManager in the scene."; +#else + return "Enable the new input system to allow using this rig."; +#endif + } + } +} \ No newline at end of file diff --git a/Runtime/Rigs/XRSimulatorSetup.cs.meta b/Runtime/Rigs/XRSimulatorSetup.cs.meta new file mode 100644 index 0000000..c59719d --- /dev/null +++ b/Runtime/Rigs/XRSimulatorSetup.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 55ab20e36a36c8b409723d1ea35e5d11 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: From 14c40d548f415fddae4dc8cca69fbf01bb696c3e Mon Sep 17 00:00:00 2001 From: Gustavo Quiroz Date: Thu, 4 Feb 2021 20:36:25 +0100 Subject: [PATCH 6/6] fix: proper implementation of the force select method (#83) --- Runtime/Interaction/Interactables/InteractableObject.cs | 6 ++++++ Runtime/Interaction/Interactors/SnapZone.cs | 6 ++++++ Runtime/Properties/SnapZoneProperty.cs | 1 - 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/Runtime/Interaction/Interactables/InteractableObject.cs b/Runtime/Interaction/Interactables/InteractableObject.cs index caf871c..1c18622 100644 --- a/Runtime/Interaction/Interactables/InteractableObject.cs +++ b/Runtime/Interaction/Interactables/InteractableObject.cs @@ -180,6 +180,12 @@ internal void ForceSelectEnter(XRBaseInteractor interactor) interactable = this, interactor = interactor }); + + OnSelectEntered(new SelectEnterEventArgs + { + interactable = this, + interactor = interactor + }); #elif XRIT_0_10_OR_NEWER OnSelectEntering(interactor); #else diff --git a/Runtime/Interaction/Interactors/SnapZone.cs b/Runtime/Interaction/Interactors/SnapZone.cs index 52a68e4..85f8a2c 100644 --- a/Runtime/Interaction/Interactors/SnapZone.cs +++ b/Runtime/Interaction/Interactors/SnapZone.cs @@ -494,6 +494,12 @@ public virtual void ForceSelect(XRBaseInteractable interactable) interactable = interactable, interactor = this }); + + OnSelectEntered(new SelectEnterEventArgs + { + interactable = interactable, + interactor = this + }); #elif XRIT_0_10_OR_NEWER OnSelectEntering(interactable); #else diff --git a/Runtime/Properties/SnapZoneProperty.cs b/Runtime/Properties/SnapZoneProperty.cs index a8ffc5c..2b659e4 100644 --- a/Runtime/Properties/SnapZoneProperty.cs +++ b/Runtime/Properties/SnapZoneProperty.cs @@ -86,7 +86,6 @@ protected override void OnDisable() #if XRIT_1_0_OR_NEWER SnapZone.selectEntered.RemoveListener(HandleObjectSnapped); SnapZone.selectExited.RemoveListener(HandleObjectUnsnapped); - #elif XRIT_0_10_OR_NEWER SnapZone.onSelectEntered.RemoveListener(HandleObjectSnapped); SnapZone.onSelectExited.RemoveListener(HandleObjectUnsnapped);