From 85dce6d3d9d5c1543fc3d84df748365882269cfa Mon Sep 17 00:00:00 2001 From: Unity Technologies <@unity> Date: Thu, 12 Dec 2024 00:00:00 +0000 Subject: [PATCH] com.unity.xr.interaction.toolkit@3.1.0-pre.1 ## [3.1.0-pre.1] - 2024-12-12 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ### Added - Added the ability to trigger a 180° degree snap turn around on the Continuous Turn Provider directly instead of having to use a partially enabled Snap Turn Provider. Added properties to enable or disable left-right turning and turn around in the `ContinuousTurnProvider` to match the `SnapTurnProvider` options. - Added support for anchor manipulation from controller thumbstick input to the Near-Far Interactor GameObject. The Interaction Attach Controller now has additional properties when Use Manipulation Input is enabled for allowing rotation (horizontal and vertical) and translation along the selection line. - Added custom Inspector window for the Interaction Attach Controller. - Added `GravityProvider` to handle gravity instead of being applied with the move and grab providers. - Added `JumpProvider` to handle simple jumping functionality. This implements the added `IGravityController` interface. - Added ability to control whether gravity begins to apply or stays paused when releasing with the `ClimbProvider`. - Added a `SimulatedDeviceLifecycleManager` component that handles all the simulated devices, and works in tandem with simulator classes such as `XRDeviceSimulator`. - Added a `SimulatedHandExpressionManager` component that handles the simulated hand expressions, and works in tandem with simulator classes such as `XRDeviceSimulator`. - Added the new `XR Interaction Simulator` which provides a simplified interface for simulating XR interaction in the editor. - Added public properties that wrap serialized fields in some behaviors and their corresponding Editor classes (`CurveInteractionCaster`, `XRInteractorLineVisual`, `XRRayInteractor`, and `UIInputModule`). ### Changed - Changed the `XRI Default Input Actions` in the Starter Assets sample to include a Jump Input Action. - Changed the XR Origin (XR Rig) prefab in the Starter Assets sample to include the `JumpProvider` and `GravityProvider` by default. - Changed some APIs used by the `XRPokeInteractor` for enabling the ability to poke UGUI canvases from `internal` to `public` to allow for custom interactor implementations. (Forward port from 2.6.0) - Changed Snap Turn Provider turn around behavior to only trigger once per turn around action. Repeat turns while the thumbstick is pushed in a direction will thus only apply to left or right. - Changed the XR Origin (XR Rig) prefab in the Starter Assets sample to enable turn around on the Continuous Turn Provider so that functionality is enabled by default if Smooth Turn Enabled is true on the Controller Input Action Manager. - Changed the Near-Far Interactor prefab in the Starter Assets sample to enable anchor manipulation (Translate and Horizontal Rotation). - Changed `ContinuousMoveProvider` to implement the `IGravityController` interface. - Changed `ContinuousMoveProvider` to handle falling movement differently than grounded movement. - Changed `ClimbProvider` to implement the `IGravityController` interface. - Changed `ClimbProvider` to zero out gravity accumulation while climbing by implementing the added `IGravityController` interface. - Changed `ClimbProvider` to no longer force unconstrained movement through collisions (see `forceUnconstrained` in `XROriginMovement`). - Changed scripts to improve performance of processing interaction strength (tagged `XRI.ProcessInteractionStrength` in Profiler). - Changed some internal methods to be public or protected (`AttachPointVelocityTracker.ResetVelocityTracking`, `CurveInteractionCaster.OnDrawGizmosSelected`, and `XRBodyTransformer.OnDrawGizmosSelected`). --- CHANGELOG.md | 38 + Documentation~/TableOfContents.md | 3 +- Documentation~/affordance-system.md | 2 +- Documentation~/continuous-turn-provider.md | 2 + Documentation~/create-basic-scene.md | 2 +- .../images/continuous-turn-provider.png | Bin 17190 -> 27790 bytes Documentation~/index.md | 2 +- .../interaction-attach-controller.md | 11 +- Documentation~/samples-starter-assets.md | 2 +- Documentation~/whats-new-2.2.md | 2 +- Documentation~/whats-new-3.1.md | 41 + Documentation~/xri-settings.md | 10 +- .../SimulatedDeviceLifecycleManagerEditor.cs | 79 + ...ulatedDeviceLifecycleManagerEditor.cs.meta | 2 +- .../Simulation/XRDeviceSimulatorEditor.cs | 17 +- .../XRDeviceSimulatorSettingsEditor.cs | 46 +- .../XRInteractionSimulatorEditor.cs | 386 + .../XRInteractionSimulatorEditor.cs.meta | 11 + Editor/Interaction/Attachment.meta | 8 + .../InteractionAttachControllerEditor.cs | 281 + .../InteractionAttachControllerEditor.cs.meta | 11 + .../XRControllerRecordingEditor.cs | 8 +- .../Visuals/XRInteractorLineVisualEditor.cs | 4 +- .../Interactors/XRRayInteractorEditor.cs | 10 +- Editor/Locomotion/Gravity.meta | 8 + .../Gravity/GravityProviderEditor.cs | 265 + .../Gravity/GravityProviderEditor.cs.meta | 11 + Editor/Locomotion/Jump.meta | 8 + Editor/Locomotion/Jump/JumpProviderEditor.cs | 187 + .../Jump/JumpProviderEditor.cs.meta | 11 + .../Movement/GrabMoveProviderEditor.cs | 2 +- .../XRInteractionToolkitSettingsProvider.cs | 4 +- Runtime/AR/Gestures/DragGestureRecognizer.cs | 4 +- Runtime/AR/Gestures/PinchGestureRecognizer.cs | 4 +- Runtime/AR/Gestures/TapGestureRecognizer.cs | 4 +- Runtime/AR/Gestures/TwistGestureRecognizer.cs | 4 +- .../TwoFingerDragGestureRecognizer.cs | 4 +- .../Provider/BaseAffordanceStateProvider.cs | 10 +- .../Simulation/Hands/XRSimulatedHandState.cs | 2 + .../SimulatedDeviceLifecycleManager.cs | 472 + .../SimulatedDeviceLifecycleManager.cs.meta | 11 + .../Simulation/SimulatedHandExpression.cs | 91 + .../SimulatedHandExpression.cs.meta | 11 + .../SimulatedHandExpressionManager.cs | 70 + .../SimulatedHandExpressionManager.cs.meta | 11 + .../Inputs/Simulation/XRDeviceSimulator.cs | 1030 +- .../XRDeviceSimulator.deprecated.cs | 293 + .../XRDeviceSimulator.deprecated.cs.meta | 11 + .../XRDeviceSimulatorLoader.deprecated.cs | 21 + ...RDeviceSimulatorLoader.deprecated.cs.meta} | 0 .../Simulation/XRDeviceSimulatorSettings.cs | 18 +- .../Simulation/XRInteractionSimulator.cs | 1801 ++ .../Simulation/XRInteractionSimulator.cs.meta | 11 + ...der.cs => XRInteractionSimulatorLoader.cs} | 50 +- .../XRInteractionSimulatorLoader.cs.meta | 11 + .../Simulation/XRSimulatedController.cs | 2 +- .../Simulation/XRSimulatedControllerState.cs | 13 + Runtime/Inputs/Simulation/XRSimulatedHMD.cs | 2 +- .../Inputs/Simulation/XRSimulatorUtility.cs | 453 + .../Simulation/XRSimulatorUtility.cs.meta | 11 + .../Attachment/AttachPointVelocityTracker.cs | 2 +- .../Attachment/InteractionAttachController.cs | 400 +- .../Interactables/XRBaseInteractable.cs | 155 +- .../Casters/CurveInteractionCaster.cs | 4 +- .../Visuals/XRInteractorLineVisual.cs | 4 +- .../Interactors/XRBaseInteractor.cs | 101 +- .../Interactors/XRInteractionGroup.cs | 6 +- .../Interactors/XRPokeInteractor.cs | 24 +- .../Interactors/XRRayInteractor.cs | 4 +- .../Interaction/XRInteractionUpdateOrder.cs | 21 + Runtime/Locomotion/Climbing/ClimbProvider.cs | 197 +- Runtime/Locomotion/Gravity.meta | 8 + Runtime/Locomotion/Gravity/GravityOverride.cs | 19 + .../Gravity/GravityOverride.cs.meta | 11 + Runtime/Locomotion/Gravity/GravityProvider.cs | 500 + .../Gravity/GravityProvider.cs.meta | 11 + .../Locomotion/Gravity/IGravityController.cs | 51 + .../Gravity/IGravityController.cs.meta | 11 + Runtime/Locomotion/Jump.meta | 8 + Runtime/Locomotion/Jump/JumpProvider.cs | 490 + Runtime/Locomotion/Jump/JumpProvider.cs.meta | 11 + .../Locomotion/Legacy/SnapTurnProviderBase.cs | 9 +- .../Movement/ConstrainedMoveProvider.cs | 39 +- .../ConstrainedMoveProvider.deprecated.cs | 37 + .../Movement/ContinuousMoveProvider.cs | 152 +- .../ContinuousMoveProvider.deprecated.cs | 42 + .../ContinuousMoveProvider.deprecated.cs.meta | 11 + .../Movement/TwoHandedGrabMoveProvider.cs | 7 +- .../Teleportation/TeleportationProvider.cs | 1 - .../Turning/ContinuousTurnProvider.cs | 41 +- .../Locomotion/Turning/SnapTurnProvider.cs | 9 +- Runtime/Locomotion/XRBodyTransformer.cs | 2 +- Runtime/UI/TrackedDeviceEventData.cs | 2 +- Runtime/UI/TrackedDeviceGraphicRaycaster.cs | 19 +- Runtime/UI/TrackedDeviceModel.cs | 43 +- Runtime/UI/UIInputModule.cs | 18 +- Runtime/Utilities/RegistrationList.cs | 28 +- .../Primitives/ColorTweenableVariable.cs | 14 +- Runtime/XRHelpURLConstants.cs | 33 +- .../HandsDemoScene.unity | 2 +- .../Prefabs/XR Origin Hands (XR Rig).prefab | 16 + .../Interactors/Left_NearFarInteractor.prefab | 25 + .../Right_NearFarInteractor.prefab | 4 + .../Prefabs/XR Origin (XR Rig).prefab | 269 +- .../Scripts/ControllerInputActionManager.cs | 96 +- .../Scripts/DynamicMoveProvider.cs | 2 +- .../XRI Default Input Actions.inputactions | 32 +- .../ControllerOverlayLinesRight.png | Bin 10696 -> 0 bytes ...ion.Toolkit.Samples.DeviceSimulator.asmdef | 20 + ...vice Controller Controls.inputactions.meta | 14 - ...evice Simulator Controls.inputactions.meta | 14 - .../XRDeviceSimulator.meta | 8 + .../{ => XRDeviceSimulator}/Scripts.meta | 0 .../Scripts/XRDeviceSimulatorControllerUI.cs | 0 .../Scripts/XRDeviceSimulatorHandsUI.cs | 37 +- .../Scripts/XRDeviceSimulatorHandsUI.cs.meta | 0 .../Scripts/XRDeviceSimulatorUI.cs | 94 +- .../Scripts/XRDeviceSimulatorUI.cs.meta | 0 .../{ => XRDeviceSimulator}/UI.meta | 0 .../UI/Controller.meta} | 0 .../UI/Controller}/ControllerLeft.png | Bin .../UI/Controller}/ControllerLeft.png.meta | 0 .../ControllerOverlayLinesLeft.png | Bin .../UI/Controller}/ControllerRight.png | Bin .../UI/Controller}/ControllerRight.png.meta | 0 .../UI/Controller}/xr_ctlr.png | Bin .../UI/Controller}/xr_ctlr.png.meta | 0 .../{ => XRDeviceSimulator}/UI/General.meta | 0 .../UI/General/CloseWindow.png | Bin .../UI/General/CloseWindow.png.meta | 0 .../UI/General/CycleXRDevices.png | Bin .../UI/General/CycleXRDevices.png.meta | 0 .../UI/General/DeviceSimUI_bg.png | Bin .../UI/General/DeviceSimUI_bg.png.meta | 0 .../UI/General/Gripper.png | Bin .../UI/General/Gripper.png.meta | 0 .../UI/General/KeyboardIcon.png | Bin .../UI/General/KeyboardIcon.png.meta | 0 .../UI/General/Locked.png | Bin .../UI/General/Locked.png.meta | 0 .../UI/General/Look.png | Bin .../UI/General/Look.png.meta | 0 .../UI/General/OpenWindow.png | Bin .../UI/General/OpenWindow.png.meta | 0 .../UI/General/Unlocked.png | Bin .../UI/General/Unlocked.png.meta | 0 .../UI/General/btn_bgbottom.png | Bin .../UI/General/btn_bgbottom.png.meta | 0 .../{ => XRDeviceSimulator}/UI/Hands.meta | 0 .../UI/Hands/Hand_Default.png | Bin .../UI/Hands/Hand_Default.png.meta | 0 .../UI/Hands/Hand_Fist.png | Bin .../UI/Hands/Hand_Fist.png.meta | 0 .../UI/Hands/Hand_Grab.png | Bin .../UI/Hands/Hand_Grab.png.meta | 0 .../UI/Hands/Hand_Open.png | Bin .../UI/Hands/Hand_Open.png.meta | 0 .../UI/Hands/Hand_Pinch.png | Bin .../UI/Hands/Hand_Pinch.png.meta | 0 .../UI/Hands/Hand_Poke.png | Bin .../UI/Hands/Hand_Poke.png.meta | 0 .../UI/Hands/Hand_Thumb.png | Bin .../UI/Hands/Hand_Thumb.png.meta | 0 .../{ => XRDeviceSimulator}/UI/Hands/hand.png | Bin .../UI/Hands/hand.png.meta | 0 .../UI/Head.meta} | 0 .../UI/Head}/HMD.png | Bin .../UI/Head}/HMD.png.meta | 0 .../UI/Head}/HMDOverlay.png | Bin .../UI/Head}/HMDOverlay.png.meta | 0 .../UI/Head}/HMD_d.png | Bin .../UI/Head}/HMD_d.png.meta | 0 .../UI/Head}/MoveRotateTool.png | Bin .../UI/Head}/MoveRotateTool.png.meta | 0 .../UI/Head}/Movement.png | Bin .../UI/Head}/Movement.png.meta | 0 .../UI/Head}/XR.png | Bin .../UI/Head}/XR.png.meta | 0 .../UI/Head}/xr_hmd.png | Bin .../UI/Head}/xr_hmd.png.meta | 0 .../{ => XRDeviceSimulator}/UI/Mouse.meta | 0 .../UI/Mouse/Cursor.png | Bin .../UI/Mouse/Cursor.png.meta | 0 .../UI/Mouse/Mouse.png | Bin .../UI/Mouse/Mouse.png.meta | 0 .../UI/Mouse/MouseMoveAround.png | Bin .../UI/Mouse/MouseMoveAround.png.meta | 0 .../UI/Mouse/MouseR.png | Bin .../UI/Mouse/MouseR.png.meta | 0 .../UI/Mouse/MouseR_d.png | Bin .../UI/Mouse/MouseR_d.png.meta | 0 .../UI/XR Device Simulator UI.prefab | 0 .../UI/XR Device Simulator UI.prefab.meta | 0 ...XR Device Controller Controls.inputactions | 0 .../XR Device Hand Controls.inputactions | 0 .../XR Device Hand Controls.inputactions.meta | 0 .../XR Device Simulator Controls.inputactions | 0 .../XR Device Simulator.prefab | 246 +- .../XR Device Simulator.prefab.meta | 0 .../XRInteractionSimulator.meta | 8 + .../XRInteractionSimulator/Scripts.meta | 8 + .../XRInteractionSimulator/UI.meta | 8 + .../XRInteractionSimulator/UI/Controller.meta | 8 + .../UI/Controller/BothControllers.png | Bin 0 -> 1444 bytes .../UI/Controller/BothControllers.png.meta | 114 + .../UI/Controller/ControllerLeft.png | Bin 0 -> 2468 bytes .../UI/Controller/ControllerLeft.png.meta} | 43 +- .../UI/Controller/ControllerRight.png | Bin 0 -> 2527 bytes .../UI/Controller/ControllerRight.png.meta | 140 + .../UI/Controller/LeftController.png | Bin 0 -> 1106 bytes .../UI/Controller/LeftController.png.meta | 114 + .../UI/Controller/RightController.png | Bin 0 -> 1097 bytes .../UI/Controller/RightController.png.meta | 114 + .../XRInteractionSimulator/UI/General.meta | 8 + .../UI/General/SwitchIcon.png | Bin 0 -> 306 bytes .../UI/General/SwitchIcon.png.meta | 140 + .../XRInteractionSimulator/UI/General/bg.png | Bin 0 -> 489 bytes .../UI/General/bg.png.meta | 114 + .../XRInteractionSimulator/UI/Hands.meta | 8 + .../XRInteractionSimulator/UI/Hands/Grab.png | Bin 0 -> 900 bytes .../UI/Hands/Grab.png.meta | 114 + .../UI/Hands/Hand_Left.png | Bin 0 -> 1186 bytes .../UI/Hands/Hand_Left.png.meta | 114 + .../UI/Hands/Hand_Right.png | Bin 0 -> 1166 bytes .../UI/Hands/Hand_Right.png.meta | 114 + .../XRInteractionSimulator/UI/Hands/Hands.png | Bin 0 -> 1315 bytes .../UI/Hands/Hands.png.meta | 114 + .../UI/Hands/LeftHandOutline@2x.png | Bin 0 -> 1103 bytes .../UI/Hands/LeftHandOutline@2x.png.meta | 140 + .../UI/Hands/LeftHandOutlineThin@2x.png | Bin 0 -> 963 bytes .../XRInteractionSimulator/UI/Hands/Pinch.png | Bin 0 -> 1373 bytes .../UI/Hands/Pinch.png.meta | 114 + .../XRInteractionSimulator/UI/Hands/Poke.png | Bin 0 -> 929 bytes .../UI/Hands/Poke.png.meta | 114 + .../UI/Hands/RightHandOutline@2x.png | Bin 0 -> 1107 bytes .../UI/Hands/RightHandOutline@2x.png.meta | 140 + .../UI/Hands/RightHandOutlineThin@2x.png | Bin 0 -> 900 bytes .../XRInteractionSimulator/UI/Headset.meta | 8 + .../UI/Headset/HeadsetOutline.png | Bin 0 -> 1014 bytes .../UI/Headset/HeadsetOutline.png.meta | 114 + .../UI/Headset/HeadsetOutline@2x.png | Bin 0 -> 1268 bytes .../UI/Headset/HeadsetOutline@2x.png.meta | 140 + .../XRInteractionSimulator/UI/Highlight.meta | 8 + .../UI/Highlight/RoundedHighlight.png | Bin 0 -> 869 bytes .../UI/Highlight/RoundedHighlight.png.meta} | 12 +- .../UI/Highlight/highlight_head.png | Bin 0 -> 1167 bytes .../UI/Highlight/highlight_head.png.meta | 140 + .../XRInteractionSimulator/UI/Modes.meta | 8 + .../UI/Modes/MirrorMode@2x.png | Bin 0 -> 510 bytes .../UI/Modes/MirrorMode@2x.png.meta | 140 + .../UI/Modes/NavigationMode@2x.png | Bin 0 -> 589 bytes .../UI/Modes/NavigationMode@2x.png.meta | 140 + .../XRInteractionSimulator/UI/Rotate.meta | 8 + .../UI/Rotate/BackRotate@2x.png | Bin 0 -> 774 bytes .../UI/Rotate/BackRotate@2x.png.meta | 140 + .../UI/Rotate/ForwardRotate@2x.png | Bin 0 -> 736 bytes .../UI/Rotate/ForwardRotate@2x.png.meta | 140 + .../UI/Rotate/LeftRotate@2x.png | Bin 0 -> 599 bytes .../UI/Rotate/LeftRotate@2x.png.meta | 140 + .../UI/Rotate/RightRotate@2x.png | Bin 0 -> 626 bytes .../UI/Rotate/RightRotate@2x.png.meta | 140 + .../UI/Rotate/RotateDownArrow.png | Bin 0 -> 290 bytes .../UI/Rotate/RotateDownArrow.png.meta | 140 + .../UI/Rotate/RotateLeftArrow.png | Bin 0 -> 268 bytes .../UI/Rotate/RotateLeftArrow.png.meta | 140 + .../UI/Rotate/RotateRightArrow.png | Bin 0 -> 275 bytes .../UI/Rotate/RotateRightArrow.png.meta | 140 + .../UI/Rotate/RotateUpArrow.png | Bin 0 -> 274 bytes .../UI/Rotate/RotateUpArrow.png.meta | 140 + .../XRInteractionSimulator/UI/Translate.meta | 8 + .../UI/Translate/TranslateBack@2x.png | Bin 0 -> 477 bytes .../UI/Translate/TranslateBack@2x.png.meta | 140 + .../UI/Translate/TranslateDown.png | Bin 0 -> 698 bytes .../UI/Translate/TranslateDown.png.meta | 114 + .../UI/Translate/TranslateForward@2x.png | Bin 0 -> 486 bytes .../UI/Translate/TranslateLeft@2x.png | Bin 0 -> 460 bytes .../UI/Translate/TranslateLeft@2x.png.meta | 140 + .../UI/Translate/TranslateRight@2x.png | Bin 0 -> 464 bytes .../UI/Translate/TranslateRight@2x.png.meta | 140 + .../UI/Translate/TranslateUp.png | Bin 0 -> 725 bytes .../UI/Translate/TranslateUp.png.meta | 114 + .../UI/XR Interaction Simulator UI.prefab | 26884 ++++++++++++++++ .../XR Interaction Simulator.prefab | 1163 + .../XR Interaction Simulator.prefab.meta | 7 + Tests/Editor/PackageScriptsTests.cs | 427 + Tests/Editor/PackageScriptsTests.cs.meta | 11 + Tests/Runtime/LocomotionTests.cs | 45 + Tests/Runtime/RegistrationListTests.cs | 20 + ValidationExceptions.json | 2 +- package.json | 12 +- 290 files changed, 40715 insertions(+), 1464 deletions(-) create mode 100644 Documentation~/whats-new-3.1.md create mode 100644 Editor/Inputs/Simulation/SimulatedDeviceLifecycleManagerEditor.cs rename Samples~/XR Device Simulator/Scripts/XRDeviceSimulatorControllerUI.cs.meta => Editor/Inputs/Simulation/SimulatedDeviceLifecycleManagerEditor.cs.meta (83%) create mode 100644 Editor/Inputs/Simulation/XRInteractionSimulatorEditor.cs create mode 100644 Editor/Inputs/Simulation/XRInteractionSimulatorEditor.cs.meta create mode 100644 Editor/Interaction/Attachment.meta create mode 100644 Editor/Interaction/Attachment/InteractionAttachControllerEditor.cs create mode 100644 Editor/Interaction/Attachment/InteractionAttachControllerEditor.cs.meta create mode 100644 Editor/Locomotion/Gravity.meta create mode 100644 Editor/Locomotion/Gravity/GravityProviderEditor.cs create mode 100644 Editor/Locomotion/Gravity/GravityProviderEditor.cs.meta create mode 100644 Editor/Locomotion/Jump.meta create mode 100644 Editor/Locomotion/Jump/JumpProviderEditor.cs create mode 100644 Editor/Locomotion/Jump/JumpProviderEditor.cs.meta create mode 100644 Runtime/Inputs/Simulation/SimulatedDeviceLifecycleManager.cs create mode 100644 Runtime/Inputs/Simulation/SimulatedDeviceLifecycleManager.cs.meta create mode 100644 Runtime/Inputs/Simulation/SimulatedHandExpression.cs create mode 100644 Runtime/Inputs/Simulation/SimulatedHandExpression.cs.meta create mode 100644 Runtime/Inputs/Simulation/SimulatedHandExpressionManager.cs create mode 100644 Runtime/Inputs/Simulation/SimulatedHandExpressionManager.cs.meta create mode 100644 Runtime/Inputs/Simulation/XRDeviceSimulator.deprecated.cs create mode 100644 Runtime/Inputs/Simulation/XRDeviceSimulator.deprecated.cs.meta create mode 100644 Runtime/Inputs/Simulation/XRDeviceSimulatorLoader.deprecated.cs rename Runtime/Inputs/Simulation/{XRDeviceSimulatorLoader.cs.meta => XRDeviceSimulatorLoader.deprecated.cs.meta} (100%) create mode 100644 Runtime/Inputs/Simulation/XRInteractionSimulator.cs create mode 100644 Runtime/Inputs/Simulation/XRInteractionSimulator.cs.meta rename Runtime/Inputs/Simulation/{XRDeviceSimulatorLoader.cs => XRInteractionSimulatorLoader.cs} (54%) create mode 100644 Runtime/Inputs/Simulation/XRInteractionSimulatorLoader.cs.meta create mode 100644 Runtime/Inputs/Simulation/XRSimulatorUtility.cs create mode 100644 Runtime/Inputs/Simulation/XRSimulatorUtility.cs.meta create mode 100644 Runtime/Locomotion/Gravity.meta create mode 100644 Runtime/Locomotion/Gravity/GravityOverride.cs create mode 100644 Runtime/Locomotion/Gravity/GravityOverride.cs.meta create mode 100644 Runtime/Locomotion/Gravity/GravityProvider.cs create mode 100644 Runtime/Locomotion/Gravity/GravityProvider.cs.meta create mode 100644 Runtime/Locomotion/Gravity/IGravityController.cs create mode 100644 Runtime/Locomotion/Gravity/IGravityController.cs.meta create mode 100644 Runtime/Locomotion/Jump.meta create mode 100644 Runtime/Locomotion/Jump/JumpProvider.cs create mode 100644 Runtime/Locomotion/Jump/JumpProvider.cs.meta create mode 100644 Runtime/Locomotion/Movement/ContinuousMoveProvider.deprecated.cs create mode 100644 Runtime/Locomotion/Movement/ContinuousMoveProvider.deprecated.cs.meta delete mode 100644 Samples~/XR Device Simulator/UI/ControllerDevice/ControllerOverlayLinesRight.png delete mode 100644 Samples~/XR Device Simulator/XR Device Controller Controls.inputactions.meta delete mode 100644 Samples~/XR Device Simulator/XR Device Simulator Controls.inputactions.meta create mode 100644 Samples~/XR Device Simulator/XRDeviceSimulator.meta rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/Scripts.meta (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/Scripts/XRDeviceSimulatorControllerUI.cs (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/Scripts/XRDeviceSimulatorHandsUI.cs (74%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/Scripts/XRDeviceSimulatorHandsUI.cs.meta (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/Scripts/XRDeviceSimulatorUI.cs (92%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/Scripts/XRDeviceSimulatorUI.cs.meta (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/UI.meta (100%) rename Samples~/XR Device Simulator/{UI/ControllerDevice.meta => XRDeviceSimulator/UI/Controller.meta} (100%) rename Samples~/XR Device Simulator/{UI/ControllerDevice => XRDeviceSimulator/UI/Controller}/ControllerLeft.png (100%) rename Samples~/XR Device Simulator/{UI/ControllerDevice => XRDeviceSimulator/UI/Controller}/ControllerLeft.png.meta (100%) rename Samples~/XR Device Simulator/{UI/ControllerDevice => XRDeviceSimulator/UI/Controller}/ControllerOverlayLinesLeft.png (100%) rename Samples~/XR Device Simulator/{UI/ControllerDevice => XRDeviceSimulator/UI/Controller}/ControllerRight.png (100%) rename Samples~/XR Device Simulator/{UI/ControllerDevice => XRDeviceSimulator/UI/Controller}/ControllerRight.png.meta (100%) rename Samples~/XR Device Simulator/{UI/ControllerDevice => XRDeviceSimulator/UI/Controller}/xr_ctlr.png (100%) rename Samples~/XR Device Simulator/{UI/ControllerDevice => XRDeviceSimulator/UI/Controller}/xr_ctlr.png.meta (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/UI/General.meta (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/UI/General/CloseWindow.png (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/UI/General/CloseWindow.png.meta (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/UI/General/CycleXRDevices.png (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/UI/General/CycleXRDevices.png.meta (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/UI/General/DeviceSimUI_bg.png (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/UI/General/DeviceSimUI_bg.png.meta (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/UI/General/Gripper.png (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/UI/General/Gripper.png.meta (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/UI/General/KeyboardIcon.png (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/UI/General/KeyboardIcon.png.meta (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/UI/General/Locked.png (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/UI/General/Locked.png.meta (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/UI/General/Look.png (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/UI/General/Look.png.meta (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/UI/General/OpenWindow.png (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/UI/General/OpenWindow.png.meta (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/UI/General/Unlocked.png (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/UI/General/Unlocked.png.meta (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/UI/General/btn_bgbottom.png (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/UI/General/btn_bgbottom.png.meta (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/UI/Hands.meta (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/UI/Hands/Hand_Default.png (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/UI/Hands/Hand_Default.png.meta (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/UI/Hands/Hand_Fist.png (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/UI/Hands/Hand_Fist.png.meta (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/UI/Hands/Hand_Grab.png (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/UI/Hands/Hand_Grab.png.meta (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/UI/Hands/Hand_Open.png (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/UI/Hands/Hand_Open.png.meta (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/UI/Hands/Hand_Pinch.png (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/UI/Hands/Hand_Pinch.png.meta (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/UI/Hands/Hand_Poke.png (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/UI/Hands/Hand_Poke.png.meta (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/UI/Hands/Hand_Thumb.png (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/UI/Hands/Hand_Thumb.png.meta (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/UI/Hands/hand.png (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/UI/Hands/hand.png.meta (100%) rename Samples~/XR Device Simulator/{UI/HeadDevice.meta => XRDeviceSimulator/UI/Head.meta} (100%) rename Samples~/XR Device Simulator/{UI/HeadDevice => XRDeviceSimulator/UI/Head}/HMD.png (100%) rename Samples~/XR Device Simulator/{UI/HeadDevice => XRDeviceSimulator/UI/Head}/HMD.png.meta (100%) rename Samples~/XR Device Simulator/{UI/HeadDevice => XRDeviceSimulator/UI/Head}/HMDOverlay.png (100%) rename Samples~/XR Device Simulator/{UI/HeadDevice => XRDeviceSimulator/UI/Head}/HMDOverlay.png.meta (100%) rename Samples~/XR Device Simulator/{UI/HeadDevice => XRDeviceSimulator/UI/Head}/HMD_d.png (100%) rename Samples~/XR Device Simulator/{UI/HeadDevice => XRDeviceSimulator/UI/Head}/HMD_d.png.meta (100%) rename Samples~/XR Device Simulator/{UI/HeadDevice => XRDeviceSimulator/UI/Head}/MoveRotateTool.png (100%) rename Samples~/XR Device Simulator/{UI/HeadDevice => XRDeviceSimulator/UI/Head}/MoveRotateTool.png.meta (100%) rename Samples~/XR Device Simulator/{UI/HeadDevice => XRDeviceSimulator/UI/Head}/Movement.png (100%) rename Samples~/XR Device Simulator/{UI/HeadDevice => XRDeviceSimulator/UI/Head}/Movement.png.meta (100%) rename Samples~/XR Device Simulator/{UI/HeadDevice => XRDeviceSimulator/UI/Head}/XR.png (100%) rename Samples~/XR Device Simulator/{UI/HeadDevice => XRDeviceSimulator/UI/Head}/XR.png.meta (100%) rename Samples~/XR Device Simulator/{UI/HeadDevice => XRDeviceSimulator/UI/Head}/xr_hmd.png (100%) rename Samples~/XR Device Simulator/{UI/HeadDevice => XRDeviceSimulator/UI/Head}/xr_hmd.png.meta (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/UI/Mouse.meta (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/UI/Mouse/Cursor.png (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/UI/Mouse/Cursor.png.meta (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/UI/Mouse/Mouse.png (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/UI/Mouse/Mouse.png.meta (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/UI/Mouse/MouseMoveAround.png (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/UI/Mouse/MouseMoveAround.png.meta (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/UI/Mouse/MouseR.png (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/UI/Mouse/MouseR.png.meta (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/UI/Mouse/MouseR_d.png (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/UI/Mouse/MouseR_d.png.meta (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/UI/XR Device Simulator UI.prefab (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/UI/XR Device Simulator UI.prefab.meta (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/XR Device Controller Controls.inputactions (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/XR Device Hand Controls.inputactions (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/XR Device Hand Controls.inputactions.meta (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/XR Device Simulator Controls.inputactions (100%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/XR Device Simulator.prefab (50%) rename Samples~/XR Device Simulator/{ => XRDeviceSimulator}/XR Device Simulator.prefab.meta (100%) create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator.meta create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/Scripts.meta create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI.meta create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Controller.meta create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Controller/BothControllers.png create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Controller/BothControllers.png.meta create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Controller/ControllerLeft.png rename Samples~/XR Device Simulator/{UI/ControllerDevice/ControllerOverlayLinesLeft.png.meta => XRInteractionSimulator/UI/Controller/ControllerLeft.png.meta} (78%) create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Controller/ControllerRight.png create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Controller/ControllerRight.png.meta create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Controller/LeftController.png create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Controller/LeftController.png.meta create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Controller/RightController.png create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Controller/RightController.png.meta create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/General.meta create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/General/SwitchIcon.png create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/General/SwitchIcon.png.meta create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/General/bg.png create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/General/bg.png.meta create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Hands.meta create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Hands/Grab.png create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Hands/Grab.png.meta create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Hands/Hand_Left.png create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Hands/Hand_Left.png.meta create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Hands/Hand_Right.png create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Hands/Hand_Right.png.meta create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Hands/Hands.png create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Hands/Hands.png.meta create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Hands/LeftHandOutline@2x.png create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Hands/LeftHandOutline@2x.png.meta create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Hands/LeftHandOutlineThin@2x.png create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Hands/Pinch.png create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Hands/Pinch.png.meta create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Hands/Poke.png create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Hands/Poke.png.meta create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Hands/RightHandOutline@2x.png create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Hands/RightHandOutline@2x.png.meta create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Hands/RightHandOutlineThin@2x.png create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Headset.meta create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Headset/HeadsetOutline.png create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Headset/HeadsetOutline.png.meta create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Headset/HeadsetOutline@2x.png create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Headset/HeadsetOutline@2x.png.meta create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Highlight.meta create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Highlight/RoundedHighlight.png rename Samples~/XR Device Simulator/{UI/ControllerDevice/ControllerOverlayLinesRight.png.meta => XRInteractionSimulator/UI/Highlight/RoundedHighlight.png.meta} (97%) create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Highlight/highlight_head.png create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Highlight/highlight_head.png.meta create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Modes.meta create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Modes/MirrorMode@2x.png create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Modes/MirrorMode@2x.png.meta create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Modes/NavigationMode@2x.png create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Modes/NavigationMode@2x.png.meta create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Rotate.meta create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Rotate/BackRotate@2x.png create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Rotate/BackRotate@2x.png.meta create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Rotate/ForwardRotate@2x.png create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Rotate/ForwardRotate@2x.png.meta create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Rotate/LeftRotate@2x.png create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Rotate/LeftRotate@2x.png.meta create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Rotate/RightRotate@2x.png create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Rotate/RightRotate@2x.png.meta create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Rotate/RotateDownArrow.png create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Rotate/RotateDownArrow.png.meta create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Rotate/RotateLeftArrow.png create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Rotate/RotateLeftArrow.png.meta create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Rotate/RotateRightArrow.png create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Rotate/RotateRightArrow.png.meta create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Rotate/RotateUpArrow.png create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Rotate/RotateUpArrow.png.meta create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Translate.meta create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Translate/TranslateBack@2x.png create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Translate/TranslateBack@2x.png.meta create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Translate/TranslateDown.png create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Translate/TranslateDown.png.meta create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Translate/TranslateForward@2x.png create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Translate/TranslateLeft@2x.png create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Translate/TranslateLeft@2x.png.meta create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Translate/TranslateRight@2x.png create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Translate/TranslateRight@2x.png.meta create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Translate/TranslateUp.png create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/Translate/TranslateUp.png.meta create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/UI/XR Interaction Simulator UI.prefab create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/XR Interaction Simulator.prefab create mode 100644 Samples~/XR Device Simulator/XRInteractionSimulator/XR Interaction Simulator.prefab.meta create mode 100644 Tests/Editor/PackageScriptsTests.cs create mode 100644 Tests/Editor/PackageScriptsTests.cs.meta diff --git a/CHANGELOG.md b/CHANGELOG.md index 1e4ec67f..3f3c7e72 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,44 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). + +## [3.1.0-pre.1] - 2024-12-12 + +### Added +- Added the ability to trigger a 180° degree snap turn around on the Continuous Turn Provider directly instead of having to use a partially enabled Snap Turn Provider. Added properties to enable or disable left-right turning and turn around in the `ContinuousTurnProvider` to match the `SnapTurnProvider` options. +- Added support for anchor manipulation from controller thumbstick input to the Near-Far Interactor GameObject. The Interaction Attach Controller now has additional properties when Use Manipulation Input is enabled for allowing rotation (horizontal and vertical) and translation along the selection line. +- Added custom Inspector window for the Interaction Attach Controller. +- Added `GravityProvider` to handle gravity instead of being applied with the move and grab providers. +- Added `JumpProvider` to handle simple jumping functionality. This implements the added `IGravityController` interface. +- Added ability to control whether gravity begins to apply or stays paused when releasing with the `ClimbProvider`. +- Added a `SimulatedDeviceLifecycleManager` component that handles all the simulated devices, and works in tandem with simulator classes such as `XRDeviceSimulator`. +- Added a `SimulatedHandExpressionManager` component that handles the simulated hand expressions, and works in tandem with simulator classes such as `XRDeviceSimulator`. +- Added the new `XR Interaction Simulator` which provides a simplified interface for simulating XR interaction in the editor. +- Added public properties that wrap serialized fields in some behaviors and their corresponding Editor classes (`CurveInteractionCaster`, `XRInteractorLineVisual`, `XRRayInteractor`, and `UIInputModule`). + +### Changed +- Changed the `XRI Default Input Actions` in the Starter Assets sample to include a Jump Input Action. +- Changed the XR Origin (XR Rig) prefab in the Starter Assets sample to include the `JumpProvider` and `GravityProvider` by default. +- Changed some APIs used by the `XRPokeInteractor` for enabling the ability to poke UGUI canvases from `internal` to `public` to allow for custom interactor implementations. (Forward port from 2.6.0) +- Changed Snap Turn Provider turn around behavior to only trigger once per turn around action. Repeat turns while the thumbstick is pushed in a direction will thus only apply to left or right. +- Changed the XR Origin (XR Rig) prefab in the Starter Assets sample to enable turn around on the Continuous Turn Provider so that functionality is enabled by default if Smooth Turn Enabled is true on the Controller Input Action Manager. +- Changed the Near-Far Interactor prefab in the Starter Assets sample to enable anchor manipulation (Translate and Horizontal Rotation). +- Changed `ContinuousMoveProvider` to implement the `IGravityController` interface. +- Changed `ContinuousMoveProvider` to handle falling movement differently than grounded movement. +- Changed `ClimbProvider` to implement the `IGravityController` interface. +- Changed `ClimbProvider` to zero out gravity accumulation while climbing by implementing the added `IGravityController` interface. +- Changed `ClimbProvider` to no longer force unconstrained movement through collisions (see `forceUnconstrained` in `XROriginMovement`). +- Changed scripts to improve performance of processing interaction strength (tagged `XRI.ProcessInteractionStrength` in Profiler). +- Changed some internal methods to be public or protected (`AttachPointVelocityTracker.ResetVelocityTracking`, `CurveInteractionCaster.OnDrawGizmosSelected`, and `XRBodyTransformer.OnDrawGizmosSelected`). +- Changed `com.unity.xr.core-utils` dependency from 2.2.3 to 2.4.0. + +### Deprecated +- Deprecated `useGravity` from `ContinuousMoveProvider` and the abstract `ConstrainedMoveProvider` (`GrabMoveProvider` and `TwoHandedGrabMoveProvider`). This functionality has been replaced with the Gravity Provider component and its `useGravity` property. +- Deprecated some nested types in `XRDeviceSimulator` and replaced them with either nested or unnested types within the `UnityEngine.XR.Interaction.Toolkit.Inputs.Simulation` namespace. + +### Fixed +- Fixed `BaseAffordanceStateProvider` so it passes the previous `AffordanceStateData` to custom affordance state receivers. + ## [3.0.7] - 2024-11-06 ### Added diff --git a/Documentation~/TableOfContents.md b/Documentation~/TableOfContents.md index defb2975..42f6ad3c 100644 --- a/Documentation~/TableOfContents.md +++ b/Documentation~/TableOfContents.md @@ -1,7 +1,8 @@ * [XR Interaction Toolkit](index.md) -* [What's new in 3.0](whats-new-3.0.md) +* [What's new in 3.1](whats-new-3.1.md) * [XRI 3.0 upgrade guide](upgrade-guide-3.0.md) * Previous releases + * [What's new in 3.0](whats-new-3.0.md) * [What's new in 2.6](whats-new-2.6.md) * [What's new in 2.5](whats-new-2.5.md) * [What's new in 2.4](whats-new-2.4.md) diff --git a/Documentation~/affordance-system.md b/Documentation~/affordance-system.md index 1220715b..1b333d21 100644 --- a/Documentation~/affordance-system.md +++ b/Documentation~/affordance-system.md @@ -24,7 +24,7 @@ Affordance receivers are components that receive `Affordance State` change event ## Affordance themes -Themes are a convenient way to encapsulate configuration for a specific type of `Affordance Receiver`. This makes it easy to create themes for any of the affordance data types and drive a uniform look and feel for the project. It also allows you to tweak settings in one place and not have to worry about updating each GameObject or prefab with those changes. Under the hood, an `Affordance Theme` is merely a [ScriptableObject](https://docs.unity3d.com/Manual/class-ScriptableObject.html) designed to use the newer [Datum](https://docs.unity3d.com/Packages/com.unity.xr.core-utils@2.2/api/Unity.XR.CoreUtils.Datums.Datum-1.html) architecture along with some editor code to make them easier to visualize and configure. +Themes are a convenient way to encapsulate configuration for a specific type of `Affordance Receiver`. This makes it easy to create themes for any of the affordance data types and drive a uniform look and feel for the project. It also allows you to tweak settings in one place and not have to worry about updating each GameObject or prefab with those changes. Under the hood, an `Affordance Theme` is merely a [ScriptableObject](https://docs.unity3d.com/Manual/class-ScriptableObject.html) designed to use the newer [Datum](https://docs.unity3d.com/Packages/com.unity.xr.core-utils@2.4/api/Unity.XR.CoreUtils.Datums.Datum-1.html) architecture along with some editor code to make them easier to visualize and configure. The theme contains a list of affordance states and the values that should be blended during interactions. The Audio Affordance Theme contains Audio Clip references for when the state is either entered (**State Entered**) or exited (**State Exited**), and Unity will play them using [`AudioSource.PlayOneShot`](https://docs.unity3d.com/ScriptReference/AudioSource.PlayOneShot.html). The other Affordance Theme types (Color, Float, Vector2, Vector3, and Vector4) contains that typed value that is interpolated between two values: the start value (**Animation State Start Value**) and the target value (**Animation State End Value**). Above the list of states is the State Animation Curve. When each animation is triggered by the Affordance Receiver, it will use this curve to determine the value. 0 on the curve corresponds to the Start Value and 1 corresponds to the End Value. This animation curve can also be driven by the interaction strength or a custom script to provide even more flexibility in the way you want your effects to look and feel. diff --git a/Documentation~/continuous-turn-provider.md b/Documentation~/continuous-turn-provider.md index dd64bb20..304d3020 100644 --- a/Documentation~/continuous-turn-provider.md +++ b/Documentation~/continuous-turn-provider.md @@ -12,5 +12,7 @@ Locomotion provider that allows the user to smoothly rotate their rig continuous |**Mediator**| The behavior that this provider communicates with for access to the mediator's XR Body Transformer. If one is not provided, this provider will attempt to locate one during its Awake call. | |**Transform Priority**| The queue order of this provider's transformations of the XR Origin. The lower the value, the earlier the transformations are applied. | | **Turn Speed** | The number of degrees/second clockwise to rotate when turning clockwise. | +| **Enable Turn Left Right** | Controls whether to enable left and right continuous turns. | | +| **Enable Turn Around** | Controls whether to enable 180° snap turns. | | **Left Hand Turn Input** | Reads input data from the left hand controller. Input Action must be a Value action type (Vector 2). | | **Right Hand Turn Input** | Reads input data from the right hand controller. Input Action must be a Value action type (Vector 2). | diff --git a/Documentation~/create-basic-scene.md b/Documentation~/create-basic-scene.md index 907ef5e3..0d1232c0 100644 --- a/Documentation~/create-basic-scene.md +++ b/Documentation~/create-basic-scene.md @@ -43,7 +43,7 @@ If you prefer to set up the XR Origin yourself, you can add a minimal one from t > [!TIP] > If you already have components that are referencing the original Camera GameObject, you may want to keep the original Camera instead. Drag the original Camera in the Hierarchy window to be a child GameObject of Camera Offset then reset the Transform by clicking the **More menu (⋮)** in the Inspector window next to Transform and select **Reset**. Then use the **More menu (⋮)** to **Copy Component** and **Paste Component As New** to move each additional component from the new Camera GameObject to your old Camera GameObject. Finally delete the new Camera GameObject and update **Camera GameObject** on XR Origin to your Camera. -The [XR Origin](https://docs.unity3d.com/Packages/com.unity.xr.core-utils@2.2/manual/xr-origin.html) component on this GameObject transforms trackable devices like the head-mounted display and controllers to their final position in the Unity scene. This is the GameObject that is moved around the environment to achieve locomotion rather than applying movement directly to the Main Camera itself. +The [XR Origin](https://docs.unity3d.com/Packages/com.unity.xr.core-utils@2.4/manual/xr-origin.html) component on this GameObject transforms trackable devices like the head-mounted display and controllers to their final position in the Unity scene. This is the GameObject that is moved around the environment to achieve locomotion rather than applying movement directly to the Main Camera itself. The Camera Offset child GameObject that is created is automatically assigned as the value of **Camera Floor Offset Object** on XR Origin. This GameObject's position is updated automatically by Unity depending on the **Tracking Origin Mode** value on XR Origin. diff --git a/Documentation~/images/continuous-turn-provider.png b/Documentation~/images/continuous-turn-provider.png index d62a2b44830c49dfbdf0aad19c6952808b65b6a8..0184f75b21024f7977638f5a04cf8d6c8f572ddb 100644 GIT binary patch literal 27790 zcmY&=1ymGo*e~7E-3`9<<8nfK% zha3MvS20hYDc{9dUkT$p=S5Geg-kx{p<}V(lfi6%$?LzL1G7!ZBfuXB&to!;*&p_< zZFlEcH#?PWAp(%TbnZM3qn3tQ>pcGu0r*y?=CLz=!#A-D<`Pa?Rt7UpxJ2Pj_&|58F-R|GkI&wo+q|>|wV5 z`3$sv+V6bEx+XB1kcIJWf#Cb;rEl8h+cBh1Da)dNRkq!4x89x4hFvU9+@1_eSve2L z+}>R*zUul3-l*EMRv(p^^KD&kxzW$Ja&I!e+f6kQsR=V&rjgV69m>GWuLg6(bT~~g zxXQE?sGY;?rmIY=1a{spw9MEqwn`ZGI@5GUJW6)gF>nsoop-_dxUWdeuF-DjHu?fu zziZwdN3oyf*oxUIlFp`1tJCV|?RnhC*39@K2E|UZCxJ$6ZY2Ntyt>rg+K|+PpH8#K zp2t9V) zVA03*s#$`^LVP3ViBv*rlH=#&Q!ul1oXWs^_eMJ>V z;8cV*fa4VUb*cHFHJOEDL~4A$ zmU&D^p-$Slx>~g7b8vDhC?W#NF!gC_o>Ev-!+KB97KWk@ssZ_Q=c%t7k&VjW6S4ae@{*7 z&TZymHBrjLIPmVfuJIGCZ)=qNHuUdO4&1W+76KpcUJ$2p8NMCUE7Rqjk#8zi&)a`n z@34m}yo4}S@B;hdcz}DrS^xVx7Sj5Q#lS@xw-K3@FKhD7xDpq|c>&vLPxV>7U)MVr zZWS*29!NwVy_+n{+--!$1X@KK^) z?51d{LHv8M=W?P@&!eq^nQ-IntQs#Cd<~%?sPm76=IATRZ?8_2n}p>*%f~ZI;R_io z=106$ zjwxjNMHA-h9gVN%sT^AvdKhvHe8Cl4Z!Ju9theYRRQkN2Fn0gPt}@z$by!L0Z&U4% zsPaBp&x)U@>`Lxa!=^VC#j@d8`?_v%OL#?#69VkQ7?* z`g}@&<-bytZba#)oIn?FDRciWkTO<0-Oxj?ZOK*Ct&aW0PenQ|(pst|w9YqVnr{SbwqPa?WtU0HtF2O<(-Ckhc zH3k*A6f=Wi5Fk+FA@X@2TWtOAO9zE9CKU}EEd=pZq>1L4|4KC5OY~S0oB=EvaoLUX z`h_GmBD=}5$J%L#$Y@arjNAmw4Ji$Dx4CzD0oS%7+*=uZ)(LCNP;@#@tI?TSYh~yf z<*S?BM5n?a7yny_!zE~v2htTmVs@5W#IhvQ#|FtT3h#)4n3wI2!lY)qm#c~C?gqo{ z!N@PfomxjfD=3@h3EF?eKtF#z2=Tm4uv={?q?3tV!srx)VRMO%spm4jUi99i5y1<| zy_Grq@IXxz+~Kj$bd|8g{K$uHrdtAvsz9+yz4mxkWEj+Qt{z4_0<+zLYIeM}nRMfT z$5ZaR)jcsm&xMoF#`^Boucy=P3dCP)Q=~W<90%8Q{CtMf+4~DWL?#degX)jswFlY< zFM+>Pf3fX;moVJGLeFmslhyjG5PDEyDciw=(t(k*P!od0C@%4Uxag;ZW$LGo>)%;^ zYZR$(*?CJnKbYhBUVmzTTCig4m34npQ|b(`a5k~OiF#i3siM$2K!*#LJO4WE5f za=_hnpSLhw2Q~pd-Was?r_UK->B#pfBMzkHdC$d1=TW%fBpjHNIKo6?knrg`^UQNow#5T7U+u97+IzGJg0rk3}dA~`S z^K)g(aSW`TL9IH0al_6OAcfCU8iiJN$_eb18$>E!*6`K>`41Lh2uzj*n;x|e)1cm<52N9 zVxEL9OgrX+*qd;S&4zbdumV^kJCSCwntLePBNuE^&JR1X(@z2J!HAY5##w9aKAc;(n$&l^{9ShCREq5X?q2 zM^gSqFHdrSh@H1eph>{<=gVirdsaKz=Ay262if5qXf3z#T@r_fG_O#@xU^7JCsPd< z1-^0=t69b~rd$MUwud9wjMoJ<_ z%q53ZikYFlVJnY{*m_?0HZnWW2}Zf=x5qtuxs zqm$F7OJL)$ZYpDNYMglSpa!ec#PTr{H)5Nl_T%G5+wm`3cuXdcLUD=+)7^6Xu@yXv z=zL51vZ{E0!f<*QDHH0;eeT_4Jw^(>0s>8GXVdMP)yh1~XeX0kB7fDnbmy1VANb=-6(qkQ(n2Zra*TEt@5I;&_UuGW%W9yP?_6J3YVAR!{k zFfjgzm39#Imd0S($B1JSjOvKs{+K}>rc*;NjZcy&b>E;H?&ZTfKJp=o8iM+@WjeNFP^e(9rqtutLmO@P2 z0;WwPQSHoDrNYtMZdc)LK4V-&C;o)&Csf)>o`bEJ93vU@eR#$x)(SZtv zDui2#GKmT!YSk`^(ijvcRgdfw6_w}2{`T=IL0aatDwmx4yz4rYonapp z8}A0+GgKhf?z5{URR#T=B23*`#UNf>ue(u;+*$QDHzD_w$zWQ|r`NGUX8gISg>jh{ z1}luNXQKhbGz^(nr!diPa{}X5@=tQAw2|q$S)kb$VZlRUs!c{3YC3}c>gs8F6wI*= z(Iej-$A-m1bV#QoepZxd0NLY)k2<0s@~F9!NK#su6Qccljl)~kC0_?L)?=7gjC+AXZ4bSlDqz=$_0WKB@`R@44meW zfNaTNVPhDP5n?M}Z_(l)XWh+dqn=0v-rZB)np4+PmZLbt<~!9j{5=T`aohx_&rHfF z4p=!YZ_#i7Xz%2y37r?rtdgC>Kx~QI@8tQ@Q$X@KNQkgRA?5R1(f{2f1)CkoIvQ0; z{&a~jdR-E9P4Lp`WW~my|Gw^JTqBx=k1_l^CqpEXf+lYF>!b$*q?Z7iv4P98x> zs^ONv@-pSa0Yu|L@+Mqt3}DL<|Ld*dv4)Wm>VV7T3Ykze=;UCn)3U72kN0{yO>VYV zlJBQ^rb=EhdH&6h?7x`*1rVb}fchuH@pBx8u{vALt8A|$JLK&MAC|mPAxw&q7o@DU9!?v5@@|wTE)GVhpe~n? zXmnJF#96eA+^>>XpXa*BjH%0%o??`!<%sqn5CfXz-xr&#E~(dQEyVgMZca^C+SL0R zP@{Q3PcP_7#m;C#M*#o2qEk-6DiKdNa8YVAF--g9%*xP17wG4++7p%Z>LcqeK$jjs zRd9-EZ=CO;fTov%8^_6G9!>Z@SYCqk4|DsMK&8%mGYT$d9a6I;1tlj!? zpE&7`)M9#7p{;W6yZ3!+O_blbLGXvUo_?cCkpXg=;2(}ZJl};OY-N?2#R-0q zb%-T6gcCm9o)w`7t{Z~{hyzEB9%yOYKTnei;e3(e7_kawO7VJtZqu;N22!e5`{kC! zzAjJnE$cxaSw*5p(g$=H87W`DK=m>>$tiVjO0`wT3Z{nq^M4i5bgihjCaKvgGzJ`p z1Rox+53C1_rHyYS;lUA`Co0-04OLU?Hy+Y#wZs@s*dI7$0fA%(Tyl zND3Pfes!dXVzc_ZgM1k-!K{4z?7|d9Oo=c#RbeQmd&14%{ZA~Js>pe-;Dl%v?>bqo zKP9gk0YO1MCULqtS@%RId9ocad!NN&R2asQ!R<1*(&WBV7(6O3pYJRJTH`w3jYb}v zU2CTRW*#N{+9`Nc#&dseCdX?f+RQMRZ%FvL=*GC3*wca{%F&RehNTefxyH?0jvNUZ zDS8b5+XJ|kQEK$F>2|-YcF4tbbBH9L2ouc_i`1S|l19uU<<(?CLhp>oKNoilNE3C`qd9jLtW?FDz(xL} zH|=}rY%WW}Uv_n6)}`4D0poYWCUMVcN)*6$y7_7u+NNto7_Q6liKe~a*I#bZEFniy zNO%`2c^QQE&nGXQC4gLRWOWfbxH#yU?{uFX%a}juMJEZx3RN#tZNSA>gmFBEh1uRj zv*g}t?~rUROF}jcgl0+5iXkY(Om+sv?Fbp-uN(4o)5tNHzBt{~w1pILzYQuk-F;g4 zMjBBTeE^?{?8zQFoge*6%5=;Wtaly^c@8FCGcL$JSr)f6e;o5VD$gVOrN~gRh8U6%amr&;FS7 zUDs=Jns>J$rsRE^t#YV3Wlp?0jVhL&8o>qohsP5J3*rzu2pZbY-`)Zno0P3ZaopB~G;fePq9>40^eshgJ>}Z)xA~9W_HsQG_@&vjH-a`|4-N z+Vo|zy18b0UW|rJSCv=s6SzmPf;3?|SW=S$$%7YlUU+1P8?+Oj)Gz{)4DDB;f%;%$ zu#u>jnd_IK{{{!|R6c4#Sl8G40-5Zn2bqNOgdek`O|d16Rg{*0;gW^mH44}3>hJlV zoO@t#GxI!guxX+4Rc@n(hJji~TAlT!CtL@ukgjCe&1ik2&`fXqu!FOmsq{VAlEx;c z{1?gAvq}9LE(mV=kil%6#ix9xv>0-w6-F)M<%EKH@68;~u~ka)rR8HJvuYa!-N@3x zNISDYT9^Ftv86*BeDb0DLK===6-fCnC`H(=etlo*)*PUUm-O!cVWZ6{M|stK$DA=4 zh(~gfaQ^Y8&)a686WOA(cZ)}n0r!JPkjoH#T=;MqlM(NvG^-^*qpU{qyqEnHeaju1 zZB1yI<2FaXsYwjFNJwa83Yp~QP+=lfQU!6t8O2{mFjzylCy3R|d#`xDSGSpxKZLl$ z0T(3@^=2o&!R-f-)>mo(p=b>W>QUaQ`*q(#Zg)2$$EGtmf}MO-U( ze#Q$M;nhsM`YG!_almhafj_zIP;j(z@!P%ZiQkty1W{kPNBc5Es`?$Ge<;gjqMigO z+=Otbzo4jA@xe(@@KNO0L+^-XJGBWFmYV97^(}-hej=rM5Os2NF&YZ>TIM@4D}>0< zc$ZhkN2TN8;1h_MdQ#D&h_tnCBQ{u#DFvAC^|)+wo}IvIxIZ;m$7mRCR zieJN@5z#VllvwRWj7) zr`1)eVl@qpssnUO1x~?k$^K~41nnP{Gk>`(Yu%dWIoGaYUlxR;)Ecyv=tER@)cqqa zark!*V)81G+Xpz@G_w(lxxxLv7&RJI6z&25v>L7V35O}Y^YcZE-rLZ=M*u*sEiY3p z=ocU4^ZySxCCMdYdW!>~tS{eJpHC6#yNm^c;no1R8hx=@=>xL3`(J|=R`}a|UWu;X zIo7t7SBH=;D3+`5!XYuFFYQ9Q>!V__eP%pV<2(AGza@ab_~>24G-ulr$+l7**qWX^ z?lEfXE2~q`Y%EO}PrC6p2ID-R?XOF-LkA)>8_!e(s{1vx`_t8QhnIr9F>8qyr0>>} z)zKE?=8$T0;;2Q&=7D8VbEsDw9P{EO>Tk<*!wp&h+?Mp^hr|xVh0I`4OZqNuyVI{I zS+EZ5>*rZdM7qp(r>l8Ub4+*b>0>ZL;?C2YH^NrBzQa_*#p+m9KlX;zieSRVmY|`b zjzf>A1PA8>ZuX${zmJwe@%k;cc>->|rkXt+udP3!up_ zffl#!bGFTbou^0Uh_si|d% zqV}Y**K+tuj0w$Ws>_Wm$GKD;qsKQjIVzgu_Pj3dC%&a-N%(qHP4c*Kb4->yIS%FR zYdgN(`x0>a@n$1Xd4AX~9bG>;RILsX^5B6MC$!6th{Yyp3M*mGR@0`c0)##m2X z%&P;FO>yBcGa}E9aq+7B*}LEDdc#+J`ZT|jrhsn!weXQ0Wj0_BTNR4OHJ~rM1nfiO zDEKTS_#GDv{v0Q(iS|vDyy}E&V$igQu`1K&jp!;?oHikQxJ<9M5a$4}yyKi73bX8!)$#rX5EsOWGCjVpFsuMu z(nWje@IuCAWqHn5yc1`UGZ|RdyS2kHnDMcn#@MeZJQq&4#)~>?jI#vo*Mx!|YUH8` zUq62Pa&kA^+VD1Q zM1PNrhVwx%={)gvsj`~^f-A?kWhvd~e9MD&zA0*>?*5@yAjfq`WIxk77vevia26?; ze8NOr@$>xcO!rT7nCi{f3lrcV9+L@6VQ&V41!G~-kD$d+j-mC({x~m^pddJEqlrY0 zX0K)#uqt-%m!d~TOYRyvSh5(weFDjm4VFwYnH<_>87XuL&qcblI^D;~=rg4(4nN6+ zGCPEt^Ozlmr{PVqJt2~PB%Eg)97K-SIjw(rQYkerX*d6QgN!2>qNW`E~_A z=sG4Gm7H9wOn0>W?e~``lsVUcPjk-N`2LM^R_F@#h+aHO;B4Ps!n>_{vUNof#%mG_ z1FOss(9%%HQ7EIVZ>Sb_L&8vwSh0R`Z(?a>>s!fj8TAYv8BXIUg4_Z*FX`{^CSYc3 zo2gBBeb%&uBObT}ve!X7>wa~i(k)L`1ae7G2dM0;emMwn?rYyCm)9 z(RKAppI7Go$s96_&Jf`qrG~RS4ho|iV)&BWAfhEYo;>sQ=@ygh7BDN)ch)HVMmL`? zz@EhF-r=uFcEyr;?o5_rw^I0WfD}LwLV*TSzY#}U$3R&LbsV!h^f(lgPFVxO_##AN zoG?T1iP%yQa){$Yh>6*0pJK4cU8T=^q&pe&$j&X z|Gvvn@3-etZ|{4|g}LpbD{b=2l;?Tm3yG8bQ1pOJNAr;`LH~j$kn7$fEqr#2WI0j6 zvCW6H2J}Dp@vaOKFUx*}yIpgAwfUg!?_0f6oO-+DOP))OQ_0qL2Q_2#CfT}N3#^kV zPU^iP@O#-(XR?L#Cy?_VgXKXIzkMh~K!vQ#w(g>C>JHL0a332Ha*z!+wQ(Z286Q7NF^gHUkNqbm^^(d5R)~w6GIxDDPhKstP3%_S9`Z`}asIt_g@NAS;&O3?R|E3&#zTTI`F3C-^fiCU zly39w5cPl%SB6*Exay75ArzgBS>6wyC|X=X8;Dl6J$@V*lQahDL8u3{!;;Cv?Vs>D zFt*-!hIAbCE?Qt1bKA;%_)wvHD7Nz1PgrV)51Zz92Cq5HKT>NjvNZ(C<&Q**Mp|as zAWZNHgKF=P{v(zB-;w+k2Ut2#lI)ekmeDA2Ab{=nYdVm1zqKZ+)SG%7NK(!)^!OE9=>NfXApNm4kJxPr@H_W zU(vH`4FcXwR~(i5j9L-Wc;eLbh(SC?{Sza{nsrPKO|q)E654~$;Xkgu=Zu}Y4pSyr6o z2)lte7?HF?(LCDEX=Y?&1dVr^sX?4?v$#6`)TT90ozm^sQM55*xp0%LYkQ$js%!q!?6)?YTP%iJ#;u^8cExUoHjxj8=_<+N$=zk0foywjcZWh8IJ z^RGWBi*J#i#(D{urJ@=g1>4{@pT%WIra9IjBBOo}I?i-&=rn(%eQe;;$8r}ktQR5M zmy8p~$b0j;!P^Is{QFV?(+>p8!~xuK&Uh{)bZp|0L&Cobmg`=B$cc!8x6*>R0tR~V zYB@+^FHz(LsOf5-9?D^m^2qCDpVW=3CF2Ig^cks|b+S zHi<$7DpI>Mrk;P$rnD`4Qs>`}fEOz~D=dY$C$5E_oo=3_UFL=%Re|kg_TdM_ZRzFd zNxTk$(=QnJ=!UaIU36Wub+)s-&n`KBb6CcjxOi~np#|L^MHrzr-9AYV!zZKF*Nydc zjcaW59X7sq#oIxvNs)z!`9uEn?Z&fqatwILBc4?Wk|95G7V(9;iNd96Uq{Ty>lLXS z*3n-iwJ4;R@-BVsqdJarX_pOz*2&|v_Hm#Px3Mi=sTS5mg(nO1KP=SJZCX`1u5mH~ z&#PqV%X3!^qsv&uFNU$_VNXM{n@o~1spPrPcnj3i#*RiZ?Xq9-|7{`vWYdyFKvhQ8 zkn{Va#hOEvt|>HjvXRo43x@Os2}P9FLQ%dO+-B_HAb0*>SO z`kh=0M^qb}KyEBaylxRnx`;YzBC~t-h>7fZ_$EsdYwkbViMZAhmzqu(`u!W&ef1O> z*i|8#5l>mNQt=yU-aqkmyHC7+Uc>v^3B?|!)1Hb}^2=L4%ePTpJQK23BUeHH43kUl z$3z;HKhHm^ShjbdbX;e$Ec_<;8luGJ{fhKtdKWii(H1Z^s1RE+BT%3302Mp@`#JH; zCdUcRGjtuVA0Bytt_;kn_C2%gC%))qN<>*Sh}e1Ng08YO5LPni-Muys|0F9G%J^4s z3Ycs?#&hr_LoP{)EpuI*f~TvfzYAK}?SFIbJ}iEsQpI}4qxbIDM*+)%=O!J4K*cq% z%D))hc{y?R50C*ig4s$T5^lq{z^C^#_yZ8jD|IP>vEoPYr`n2E2z(|FHK(E5^kz=9 zZy=H5u+$!00igLab76IK2EnR=I=d+~xu7w?Av0%wn)f6;;}cAFe=;Z&s?mWoUal`x z?{#FBd9brxT1kqnu{o6U;!Qg&nrMC64fpQ)EV-VybF4^t9!TEYn+%5SHrW)bB3z{W zR!^30tn0BB% z4jue4yn8V?=%_6Z7AI`R5(z6<=Ja~4FWIo@W$GMgemni?+}xy0l&)4n_dsh5{h5Qo zPI(G)NlkjSR*fvmX}vx$;+!+k{^Y1lNFHl_ONruRz4+{^@CN^e&%7H4P<;#`hdE&# zfbMYi>rk;tqi(PvMO6u_3qT?GmyiOhF0n_i-2af~J5 zU|sZv5jrbKMpE#Y1nHuQNL>j4k~U*}1rkB)A4T2%;+M@}PIbB;r)S<}@!K+*Da&{P zH%yy$hyUEKVKYU2|7*wKF^(EoHb5w}M2aEP0BlkCa^oNEm9?3vv2?h!j%QVfqOcLKi^H;WrW|>Yn7D>{9Zf%u{?Wwp~0;aY< zK2Q4<7BTzM_CzV$BA&$Q$f*)WwHkw5l?OvZM#+S_C%+HMe!@U&LPVIuNG7J0|dA7d7laq|vb9WJ+ND zd@i9i;|Z;90Ps3kE5r?~o=4zd{;)u~SOWI}mESDILoKKPr+O)T*ddR|rb6)~|HAc{ z9+faBAADLjGvG*KOfuur(D174&DMLmZ~w-e?2b4gvRmKe(-xn!Mw`pRP?Ss2%X1;s zD%DP{S&}M`iM=}P#KUWat6@je_DC@q%q!VZJ@mMb#TgUOs+C~W1eHfXr|LDIhAe&M zO&Caifnverg-@dwK25-BrE4hMMkf>^+{yA)W>>N>lAIl>KKerTcG+iE%VfEuDB7kg zM*eNoQ_XZE@k@znH3Pas`AI-ont^$!q>=)0U0MK4gHr-6QB+Z-KvDy)`@z`sQQl0` zpf6v3geMRUw5~7jUMbL|?#p5|cR9^G7War3!*Z4zsi7m^@42T2p7DNl4=qvt3D99) z-jX!hW`qvK;c1Q@ z*SSH#PxO9p-FvBwX50(;>ca``aSSefF@q+)ir;;N7Z+HFo zRzu&kO4qu|RT$rcL$knLi0tJE%oxG}>Z?3g#3kG9xr$M_dIJ2g`#R^ow|IGh6fz;Y z<fDhc-gR8_mfv0bJFVMhO#{B~N8n9|KFxxpt=d?X%Ttj_;GebquJV?2Y} z-Sa2UNM6bW_%%onsQ04~pEUETQxCuuuKP^OlZ{_cqpzF5piiqeI|Kvs{>FQHqmgY$;;+3PZV;UyD3)gn~%DwLcfD!jYxWiH~|mc zjwy5Zb;vc$H+!l-R1i&eGtH3Q@zVVQ>GBPufGbNOuR{|d5XQ`ec@AZZKxskV*bK0d zeb7MNKz=me_wH<}XdhmBYvPq^Kn(9?rc*}WXYb>+FIf&r_FzxlY92~B#E;HMbPNdm zT#uieg5J}=S)`oa1O&H*v;BE7eyLLAX6> z4}Q>GIE;8bY_`N=JpDgGmb(a|jjsU?&z(sj!L8Qnmy2>5C+3e^We}9JxC2qfy#ShszEfVVI0n86mqxVn5##6%0fXZ#e&`m=&b#s2Fr&) zgKqls-EP2I+5)bA{F5Om!HR|#XI*OVHAn@hbI|%6{&&9>?}6v~W`!r?N(zU&P8MOJ zTwe#K0d%;r7av?E^{g9_P_cTgIp1PDm8Lg6V!X`05FIh4|Aqhw>w;%J?uP}#=0!HM zlLJ%|ARx_g^`2ZL7$Bd%P&{3Aumnu25mpO2-(rI+*v#>|Fv?H+vZ7-EtlsJ8C~pdT z$|jzoAJKL?fUI`&$&lDQM`g=Oz}=aS^RLGN3PJ8MLx_KI{_;%gkeSuHQOPPz5z)DT z2yFik5WkOh(u5Bv;E-~6PLJn1zy}HpRwHRVGQ_qDljlIxTmU+}TJcA3!9 z>HFcb-roqc`WJKBAbAo!`}*=dmpBt!uoy1yn$#TB+J7Bm|2^%HhHl~#mVPuq;^$T# z(Ln{!1rU{i;SdaXP7@Z*@ZXmR5Z_l zvbJM2oV&->cI)Cz(-hLxgRYaMUKf#7yoW*m04o2Q78;07JF82arIdo9fT~E>Us*!w z^lm5wIcSyo2%H-5#Hn~q{7&Mci7is@E>qezT&S`KmDe5QYHHt?8Z_3pvA1vqH*n;# zuH9(@W0n5g7C@VS*?VvSQ>9(D(M@c(L0}h@sVo@VYlTw=EchyAYxH?$YNQ$zG&V&E zqNQm2yZ>fHtl%YidxZU8(&Ut|@2!Q$yp==rMF6RdJ!7INu1R>w5 zg*uUO#kG2x2g|tNucL(#aU)H62pps0ef zOBfsczh4281#h9`N@l=j>+Ry15g4z!1vnh~ahm7pCHUs3 zhw1$KspWnu_>K#0DxY6M#!4&%%14*7-Bj*x1EM=%-8)m2=|UwtpOZ%qE1&vFE}#sr z^|lD}(q{JQm=A|F(s>hbCcCg99mKDM*F%gV?7;qSm0zO10a=d+zF`{IUICjC`pYzN zaQC&UKnVlHL=NQ-L6INL@jLE=e!S$d-HsvQSmUc5BjYwQkmP$Hb5tJ2MSDcK20W@& zfIV7FRLy{4(ESvQM#v3^lNqsV+VS|SfX);u@yz9yz*KJ?b(MJ!u18Ai!b+zJn@eloz+=~w<`Z>~WvGwQ9NPejAPI-OE zQ!&$LCS^i{B0Yu0kV~)@EsexEwRdkiu(?t62_wBvS=F-1{ahVDf7)6^$E9X>U37lW zO4D6F36kqqgQ8;+jtk;5LKFeFM+#G=I^0S^J)JL6;K}nWU?oxUnuRsPeWTVkkh{=e zRc!?U7{VA^k@XbKIZ$f59`!pD)MF*{)W4q@15-_EtR@?`l52cZU5)VKuh#?X19>ZA zyR@N4Hfw$vY)QvKMuf$Y1Rj-cMlZU0-k8F!` zSo1QYGKDF9W8H_)?FzvVLqXTXKhGLWwr$VU7W;z6GDa5ohHCF|9lY1BxJS)Hi%0^H z$^Z?6vazY7AKCoCThs$~aZ0P-Q5PAeR8tQ7awF_^r!TI(eY=yNDxj&Fvl`H9_enjo zQBg3eX9$?70RRLcPakBBNVp6D#arWBdDAyI9@3rrNPX4xmmGiazqn^v^?=zY;NP?t zgkhJe=SdRs(2z>Da(qxI1H(aps$d?J$)Ff`%vhTFn=<^^1oJ_U&J}S`lB8TEa@0IJ z#^3Ay<^RPA9|j_?9_%Q^g-;$u3#@*X$X&ti^q%>GZ%jg3B)=aLjBbWG>NfDSKEn&t zxL!tJ9yDNX4CQ3C;23)Lf>N%=*ks{`VmYC1Z5ZyTf@k zU5BWhWhJSVe6K~#7Eh9+l#h6u-7aTvE`yWya15=w!F@MXLF4yFsqSL$P~WWi)^8Ny z8kkA*T3=tk2&39pM*6Fq&h>Qm){DbLN>n0bhAEo!E~jHaC|YQ|`0uG#i!J35tQojl zywvzc^$zn(<7ybxI#tKZE91qe@!6>B#eom^|A}Q$s_QjmAtcy#3opnFnHQ@S5C5R# z_VT%qoinNe_`Yje-y==YoD143z`zF^jB0Vy918-LYm#2qKo>*;f!eOvYlo|+CfRJv8`U7Duxv-wsU@MS+q4jZ2 ztrm%NkKs6ExikHUccs9UvROzX9T=m{Lm?wp#g$j3(DhYWdB<@%d3WZYbN@Oh<^ zO-nZ5tU|muL6ku&bIQRJZsNiVb7n|SZ_ad9FX#<5ktsdWyp=RWzqgaXrKZ85>qsGQDz)nxlOTnJz{nAFq< z@y?z9=_`YTbfo0)`A-nO%C(zs`VO3O-6}z*7UwHa#7JXFZdw7qg{Hy0!HnG;5bNN{ z5gJkcyBjbMHV@X*(;ll1ZT00qrh~N5T>w6Sy<7nT-HHqL}Q~-6W^&Y)!ap`GpO3U=jD|E z0bryMVQ?o0-d`2p+}|9GljQ+}u$kAqy8)iwfPDw;#0-)5cqNv*3EsWrqVd|Oqykzv z0Z$=dAVQOI0!IScLwB^h?fLG^{(n6MEo>M>kYP_T;ghgH`+&GHAVlI&FzztPd;}-s zFBq`gf=~a#!y+aFY72fRszN@eHX=j7HJS%$5Y{W$8JuhEgCoK_pUdo#oUM1nlN7lC ze5@HHU1GG#0Sep-Nj`Z*D?Tl8d)VnRXr3sceLOMU{9kw3!*s9&iz!>SAN4oiusD;$ zGsD|g_8`Z-?wI+^Qckf9xVo(uJ5$3Gr8?@cQDE(}g|w4l>gJk&hT#h04sIaN3ptPk zJ;n;&V=l(krJ|$ST~c2KfW7>l_s|>Mr|U4*UQDfV~8IU z`nepteQ2sBZmm`M$p6?M>Yn=d^K5ht2%Dqid8`-%y;&}?>)~`+d!RIisEe5!-1?zl6EFCF+I8ERRFxz8ui#Sxh5894K=uT& zgbqcL{@02iLw8gxC9ykjMNl! z&uLW#Xw1yyIbOVTE-+sfqJI{xLZ%sg9r+p$V$AWcpjmHQl zFc4ns6d*ZyK{?e+SpW5n47(}NA_RdI^{+D|!6GvMm+K(G^|b%Le{_M77lPDyDxoH+ z`%5Mk?o#S^E;#+%WrM#<6vj&QV-sAFwGR(1yFj2~Vk5L0d+?&q%|O0@KWaeb z%nF`WWDHsFgCBLbS{3Z%CHY2Lkv}|rC@*Kj`7iWn5oSAWLwE9@mFljCq}3hPetWjr zs2m1d7j@PiOU5NoBe^z|Z+UWfqa8rRVGa}+y0Uq199AaW;l^~5499&C07-h)koN`X zMM`foH@REN3>u&5vu?fEdp1lLpkw4_L!KGlukLUDdKs>}z4M=~vrSepqKPh_{m~3c zePi1=CFJ&sF}4f{zXP%2yxuoeMpIjokn_*MjOCEAO*$qDuW?b$2~dLiwMsM?bg6O% zbFI}^fNGUyNAJK?+5!^2`yjIJ3?3bz)aJO%(tHxz`0_CoD9nrI`*?S>Q@N>RBU}az zBk(C5U~u7=26U~0#{_uh`JZQklACv0@5?xtuPlluwp(SQ>IYgfsb4=v@}7F;vo0{| zt#t|mLo)Oy%h#?e*JVaOMcql+u|~j5IixNSQqSCW+|TikX#*@}P6N zbd!DXW5Kj#I=`Cyez>TDzv;4T4d<3vDEY(Gq)czJ;eUoSF^@RP6t8dkraW0s! z2Hm<6$K4FH6fXM_*3jTa*UhE@u4YdEEjZo=50S8Bbo2tS+XA!JVO}&-?gmV@U`{fl zneD=-+u?#5kna-8%xfH2*Aq~X1%?2W{%E2)gaGL@A+-@I8DFz|@+mYQc^fpA2;XAm zL|Tag4~?%u3Gsa+1Z{OXb982}YOq;Di}9j*Kylx9XuaB4(l={4|6>P#Oax>Yrx)&n zU2tiQ7++pQV4hP5vmi09bW=IHakt&ps7SXJzXs2c5CRWn=xZyJ_5}@}8(#XAvbs8~ zCxQ3EH@(wVs3OhM0i2{l=>VV~9p@zYfcOw&49G{Z#O4w3n`DN|lbSvcy#u`m)hIEBlX`-hJaF+Q_)PIY6HI2vy*GizqEESPWLh^dJdcQSHdjYg{u|AfORl*F3w@?) z9BorzzXGKom8?y;p_{~f`O?spiMsyg{4B|-nqkrtPsJ9`@aXYp zQ>@>hv32!7@07PZGHruDZX(B}|1pJ%oo?Wz1nP&7TR=+toP`CMFrHDKuy1Z`F{0q? zOFyvy>XxOLY=|493O;cmiHtiKU{jWfLutz=bR`N_TLF5Jo7T5C&VXK#nw|hdJH`%@ zbqo@N(YlQG?>8wMMTil``b$vA*!%xPiZho3^Q?wnBW{qlNOMH$?o^Za`y>E5|EIC{ zjD~A}z_v5WC}SACj^2r0M`w%@Q4I}^boxZMvI8(jCO*MhzyBNlq7mc7(w*j zqYa+zzuvXpkI(bbTJwdqXWPH)zV3UYegRyW?hZE*w80Qm1yHsn<}yV#)mnzoRW|8S z-)kHb(~!w|3Z4QEjB>;|8FO$1E~Mt4)!MX|)qmP=jIJ}x?W)tfy0mQ|hO}6_9O9rh zS3WUwj{w+xn{#Ws=f}7CKR~mGep7~+1aShKu+0Z~15#Q-7vh*(fY2bBwb1wLd;{X?Frm z&e8Z2jr|^a-{Aq~gH&Tm2&F?mI`d7FsVPZ|_axzno8^XYuWR5= z8h0DBUf7?5ryq?Cow<87n}lF)^n@k=8ka{@rj2yo-WKoTOeP5sq&m}8H)T==OvZrd z+r|g!GSTRg>oO`+PTKt=*%!L!Vmq6_Q9=NEl#I;{eJs@(`RYKg-7pxSJ88J3!q5YQ z0iAZLGgE5eYpcL!$qDH}wQZG?=Y(#VGax{}qfT@=0f1vkmzSy?^POs?_GO$Ffdd-n z7eGigXfJ*r8+CB!Oq&>pHtfbs&e!Z4z45>^bEd?OhD%CY+NJzt=E1k!Dt7G6rTOxB ziP7cdVV31IX={X)s`4bOYkme#jS!n7M8xv`pkOcwKFF3ZAvD&@O&`^Jd9v_(n-0QI zrb_1zWIkU3U4eOkTL$!AfcdU~1GYyYmYUR1FDYX_+O5OCbLx%h{D7^u_-ffLZb1f0 zvKiq-2GJfe)Adt$T%G`X4|0Z{3V{f4el#}rOA>!wl1QO)t+ zH(oqKA1qDD8+GJxn|rpgz_lRYrN1Rd42bSR70}Y18g?hDvu=D`cGai#a%+T_Ve6)} z;r`YebflOhM$AQr@)`rJCna2BTcBM)a(#`Vj?Y{VPJyuGx>hNz2c9a&7C@XJrUP1O zy=G*3d?y<+kK?vPnnGb%zfBJnyv|M~n#5QNwax`iK#r!+S z>B7VlD{M4z5C=2YN*P(QouD5ZQr=59jqi6pci5m@PJR}hSfV8wulS7EA;5P5Zf8uyo4}-;2N70<|w9jx94Z@TuE_e#^xlO>B`f()T3lpG6# zRfLM-Lp{2xFjO4=7NsyW7ChsVvc>ILQbs$~@$9Y%Z&mj5b_U;eS>zAm>^L+2U;W1?GS###bA8ZyVgBR;26nH39I zEe^o?kgITf<0ms>wHQ(yRbl79Hlii|Z~_W%$fT}$K+aKq(^jtRai|Bn-_rBAnJghv`tSyn>-hp?p+zP85YMz*GEHT>_-G-E0cYPbrVvw(xo8ShfF zD(S`hl2T*0YYGd8!v$jmVp$=<6(daR0i((ueVt)l2wj`Z`$~Gij+IQJWt(4Ze%@bI z^Jl#u#?`-2x(WV!JdLws)FJmn*f;Ixc<5~P`~gf)sQUJ|uljWc(4b-qJ#t4cGsiFX z=jv3%_)5TY{;I89W#8Vm6~le+PC-{#PiCBSlozvoXhY*JJ}3^M+q`HELyS%b4Uz^V zF9T5mgEMG##ZJaluXvQp@sZ<5CxWr5<5psLhD=x6ga~-*s3Dw+_ase5r=ZJPFU%ob zdm4tEponwku3^zcbMam`wf6(W46g}(aX_`4q+}O`bWz4`x)KgS3a;uS85Bt7kCFnfhzO~E*-5Qy*Bwu?XXLdYiGwlR(O->xes+x{aX0A65|Eq z3W@bLa<)M~mT;5cFSn~M#+WT!ClVJRW_2-*7Lxi|_LVU6M$&vPAAevf2g^mjnO>-2 znQK5IZuL*AcE0qQlUWXYW}=n(Ne;O%lIn@xJpn$dyH-y~@2Q%8OJR}9^Cjk;U6aD! z8%v_F85QEsjEawpqor~1Hu*cyb8nuk)$EoVIx4!t-T5A;Lbe6@<(KLHf_ZaSgZSvP zgBBNdSq0WHxAGs`&uP?_4DZ)%9aR4K6xND*g<`i*eF+km#_flGm32uC86;-0;;+{f zShS?l$%_^sW+sP7(A(0d#9ENX$fG`olNk}4l`j};dLwUI9rdgWFp!X?f`PKu$W*{Pn(jhhY5C6(4zcdZEBV{eB~UX-7%-%4Ku1Q;gWg<#@g{bhBk*Bc3Zhf#UFDM1~1I9Ee z%Ew50$f4z%3mWHn;&V?bw_r_}{XM_n!_Yyj+Uq%4CI&jfX-_CjRS7WCs$rklL`7Bw zSE4=4$JYfPZ>w-sk8cL}da!)y5Avq;-)|W^yv*BUO^6W(U1@6is=aYQq+5-O07@jB3{S~+q4zW{+PX><8*(q*EX%Xu-!^Yu8xO_=y{YSuL%VR4ljH1 z$PMZ9X}+Rsx;IGNF2yQf1QtIkR<>g0lR&P1tr`gdeP!cw#Pjx0j)rrmCnoT)u;q~K zkk!ynC{KeB(tmZ+N0jS}TKwqZz7+hmAa3=El7Wq-6C>$PvYURAiGfc*kk;pj=vMmR z1F_swA%x07(V{bys*>+L+P21}=MO)G>FFS2odn(tPlNxg$*%8uH%~A4__pusoRGON zw+H*a4)@KIB_xE;5lyuA$$Q*(n1o>5?v2bDn~b&<*CSWfP-n)aapYWlfuEO9m28!w&qb6(M$=Ug61cOrN*wc{I@f z!ee>*aYEK@#L{`Yw3>joeg(hoIrsoKGFaN)a zL;_w6?ecd$?-{Ur5yg-rB>wP3VxABC|9AcxMv|b-XE0k{mgM@O+*bBo`REkszHV#x zm~M>#jm`**EZgKJmA&L~Vk3;7onqrv1a;xjpVw0Ri_aZNOq`A3yeQ%|(`IV0Db8r^ zUgCX_lY>67Nue6h&KeWkXnMLvp7%FuRD&p$%w!E#JwAQKGj>$nh*n!k(wnBkOH;YI z3msh{iBBlC)0^bz7F3sC`Qxl8$iEyrC-Ks9>g%!Zjj8h(5;_a)!wFKoAx>qRX^tTwwOx{B&6g?|(4R=h9o9--FH} z)97<)FisRX(S>|i3SVLQI2)KpPP+5*KZ)fUl5eplRNfnt< z++M-47t0GeeL;Ev>ss$DO`(ly(P}fZmjD(Q96bCJzb{@LsBEw;=O2ws`Gwb@Ut6C4 zb64zyYSYcK=35V|c_k~1=e5=8H^iWyoTto!EjTW_65{?XAl8K?H_BMIhynUOq?^lo zlxFkMtY|NOFlo`Yq|wZM|4p5**x2B2EqA!tdgB+PMUgfAP^-6_gyBfBxcJur|HxAY zjTHC&-B0W8NHzaes z`DSkd*G7NlPbzyF&3t@XZn!hmXcn?h$vDQY&$k-$iB_87Hud8N+GH3~5)W0TEaV>P zixBn{JV-*%cH#3&VR7TK3`&shMSQ@_O=3suIPtBYZv3e#km5WO?NOt(&`C7l7b|NB z%3uV=EmM@lt1y4fyNT~gqZ7?7J_F$NH#IM1P8rS;@D=|@Z29#D3%hOv48W?gkpeg` ziJVD#NCN>H+Jgu_?4R(wf-nGj=4?RgwCS! z^k0`{7n{$ghW4{Xl&@5ha=z|sD{}od-WV=l>h_mK*xwg*98zET?~j_$mC;l@ErqCt zUpVMkdK$9k)S48!*|hE5y=#NNB0X&GA|ssK{Z{<`ZGtY#WyL+c3RV-8gGwnNTy~3?d5Yl$tkfIXY<@bx zhK>`WcCizV0H5B|TquFXIkpy&F@#*-;!($&W zWoTWJ@?_-SQ^1kPGVpj$SwMG4LC4n>T6z`sBhH}UJ^juAU=SizrA4;or)=px2RLCV zMz(OsIsc&iA)O#4J(XWk<8P^;+4~P3F@6w#0v1d;*@cdm@FS8GvyNniIJ5X=4|@wK z{r;7?gwcEV5#R0noSJxVLmue1ud>H?VexT6c%MFlP8VJiK}O^~TF>6c5k_`zq&~v3 zo|@0+IT!Xr_NTqSQ(Q5ge0a@R2Z8KhK2q2|yCH~5917Qut2m2}qIh%{G zLe$xm4|2nB;ey@RXfbTBq-Ut>ibqe8b{ijEYCZ%`MehP^IsQMf(o~Vj+dZ)NIARws zpif{#GI_LpC&p5Xo7r4INsH`QpjI781H?Uwo1 zgc~1q^BU{Xejj{A)tIM>?%;n1P}A&-=z13fcWXQ1%rmf~)nR_y{!ZW=*SR2gwV_xN zAVqLNNxG;&wkRDHs8J;{!jS8=VSPQ?o@GR8K{o4DW-X0O8)MLLlhV2f(>Bii&X)S6 zIB5#@Xy`aVwxb>udzEs$-^&efWB8kdENuL?$s9UFXH~p*YEb`r$X(TJja(@9R)ODa zOTe;Z**Ji=w2+`V5yDo&Mn!kU{DQV--&#mQWb#6*gDxm!bh5+pExY zqC_`<^!O+#3aUJblC*BD`ZjM|uJbbt$W;#>e9Y)1V7k6PerfbupAR!5&L;D~cskK& z70VZPW4bPZ;LK1~KG!-MJv4(cn^$y@vIb?5T&5+ZHlXlaTevkd{Z(5`kzG%RXh!%R(7C0?BQt~0kQ3D9) z?++7t8v)g#Q*jkFM3}6dGy6IF)LQF7xsl@o?(6WnpHZZbYTpIp<8NQ%I(O>=w>Pd- z48#IredFpK1%tt$7kp28Dviw~M2g6{2N~XPTZC74--wp+$?+#W^d?jo9KCpLB0G|0 zhs|g!KbclqA^^2J!2|Xq6w)58-aR~09n5=Mklz$KTZ?@9S{Sul7Hb;yf+BjTCW#G)s1UKBs zyhOk1aLZsO0Eqnur5iYTNc8h4@644WRqp0#s*hg1M{|;}zuy}F`)&tt9bSGegT?{_ zy83KqLq->klGv!fMNO;weOx(meg)VhnLF$(@qsC!T8#}fC#YSTlY(bMmn$J64~*Ds zD~wnTxcruUw)0~GU%cy4#@VTIzHsa^TML4*h6?>lk*B$Y4jmLbV+21?ZvR2?4w%Yj z^86*zfinR@{;c5%in?6C5tN07l291yB+t2udKPMsW;t&j>AQJj8idnw6%9fiSQ~?C6<>~%3K!eb4b16&{3A!Og}byr>ma_*0O(lpg&vE`bx&dFutWTyvB7Q=qPzZ zv_jS0dc9J^$u+PTs&N{FjtFDkeVZ;irI-1~cJwawg38 z=_J%>k5pCI`u)xq`eA;8-<@vOGsfZxeoDA;}_p;K7RTf zoX<|^R8VvoMSKjnpg#HaZVo?w*wpgF<^X4}cpcPZBF+~>h2Q{dzSwn>CXKv5S;VMr zR`pSCWWkEM=T-r~><7L&*h8wv4AYDoH)HA80*8nWHq?w}9}5$DzXNJ8lfYO5uzn}A zGC#6|NO0aUAZEM>)P3ZJr(xRxCQ|OWDg!lw243QQVCkpZNeU^1B>Sq2^PX0AC?34^ z{Cv7Zhpc+n-_Dl3y}V3!$t|UN4paSuxU;*M=A=3VyymYjc9OX`vYz#p5?&YRHV~>4Nuq$;Qg@o`gG{`ml<|c=8Jyzac@t(4-M;S0I7nQec4qvG|DM)uYR8Yc zP3>43pF68250m%{aXF2xRza}CP|N-6&xjD`F9gC3{sjGMHU{PD^Y+Qi%Sv5_7ON=Qx=!7mWT0LcoMY9hrjB z4}9k$2|5mDyX&jf>_;E*WE)J&`i~MgAU-`Ei8z6cQtPx+c(6%uWhgg{cEVP1Rfr4t z1xfg#Ld>O*Xi4XX*TU?thnL{T*>S@i3c!7Qkd%Rxp0S1xinh)}~~eNDg~5acFXPEDsITh@5pnOVxm%*-CF2}g$H zq$DSU;mITg(r_aHx0ge)4P*$C9yX%qm`GI7xj~=4wNEOy`I<0}lhM?)(ilz)+%##G zi+&{xv4SG?ov=pFotQORVuMB=CUe&w2vPiW0@jKKq5o7FA@wyHixT zT4~~<@pph4@NBB;trXqTaa#T(>NRDfM~u(J6}8`?ZDoq0%abYPJMv8;d2$W4?w8O) z#`0&cjvgfyov6b9q!Fd!X`*cx%`-pz-MSdIuQOjSty>+?o&5r3pPg?Kc(gz&i_f%N z#RXf?6d~fh8n7NVd(7qfNIgGIUHw*Uz|6)^<7ep zI(TPQWvUj0e+Y7ntm@HCyw!2{IhyDoo4Tk|37rN5@7G+MtB@x1p4jZtPgV5sOFne^ zuxp*bqBMV2Y=Zr^FuC$c!fIW3#!*SqkCjG?xBly;1SOd|-!N1{$U@d_302YC%z97O z`|p&{IaqefSG?qs&vsE{;74)Fjl8Nh+xzD{g_Msy_9d586>A}t90^uyc%a|wK{9hJ zH+{Ckzd=?NXxVr3FS|<_QO*NT5AL4`#3#3K#xI&{NY$^k^}M2$ zpoa`{6a5^PJfNKIkfv>4Xmmn?&aFS2iWc%kS(aRCVnJO7z4V(unSdwi+eDP6z4AC9U{Cktn^&#{RcigdA*kYRF!!}S;B^uEEF{kk zb7)t9GPKJx77~WCJ|tJAB@0a2t*qpbM~x~|iEEi{lR1JuuEpT$bSF{D^N<-~I5fa_ z+!Ny9Q(VaRH?k$3lp_Zs4R0hRF{8Il@hE8IC8;j+cf&Pif)u&DB>0|z_3+LJooyIP z>Uec*QBzkzSI5iCq=!7h9Ld~$$zy`H)=qJ+;&9~VB8#L`XXdv|7)iXZV<3o5CvmW6XS2}?HiCEl5K z!@GN~+MUAkP`^qfOKAic;;uwEz*$tbLK0Gg0#gRcNPlz$PMt(X`)d%r=nM9t;eV@l z37k<_?NPFlxa71@esIdB&Z!&0P7Y?!$VI>)Vr=r1q`+V-qfSbjYv%Tp-LqOMqsS|0 zlx}k}_#`Q0K)Skng678TXnEuPLrP?`RmA92GR!ebBQtiCyIA!HRea(+ulwm<(Ac~% zq0p!T27*eoIbvu|t@lMPo}fvylibGVMCG`JJx6|$Fx*xI4)GI2I*xnJ!cxuuy<1fT zUa*l)*&B}SGzsGW$=tc>2Ndf2k25&&1^%MgoK1f9ZWEOXYx|zPyuJO7VLtW6#Z^hP z>cLON_QlD^YSEbIwIqql`RzXR#}<%h8#4M5 z&%E%J|H|llS#iCi&`gY1*DT%p0<9W>Lmiju9e?SK|YOq{x$P6&q_SC zb&*U;e3P?bCvYVbQ;ugrkpc(_MYoRYsM9G*BU+QwB6-JpQPVMW?N151@;qxbGE-` z;~`wQ^%1KQFR{WA|0Ap~+ki@$UEzikyq#v1l^8WPprg1{AbI{U?dwCb*OYxu8X7cF zp?ox#&gpX*JM=^a1Wnbr@wX-18AI&rh;F24ge_S>-&~Q0kV%(I#xo|SkAy;x!zn$L z2yDyuHmqK+#P+ST)hVtqX!w-~Hv96JU{wUmWl@)UDZCGMP10m*Fx_SX>2{}3&{>F( zg1$09^VQ)`9@CHu|DGBJyfJ!Hl&w^T?DN0u!}^}ao3|7ywrxI}3!HdNcT_#K4xrwse8jLXunpKbjRlLpAsTN(hnKWxQ*gEEuJ<- z-6Izsq^z5nZ<1-kB cF1fx0rBQt{JK6!>A$H3^*BDu+?GXKc00ytX;s5{u literal 17190 zcmbunWmuF^zc(t~!VuEk-5`xHbc50*NJ%$CN)O#7B}j+}QqnEmCEdsj-6;a+#^>z4 z-}gG_z0Qa8LGM9kVC8@PY8j=eu7HC{hWYH-GaMyFu=cZO2$R6;9CTFRZyL9xT;PG= zuB{;Rta6NE7x)6%=9Sv3XV0n=u>QV90lvm?Q8aLW_Ka5e=??I>8sGFbU3b8**zvIRK6jIoVsPHqxMWcmZC83lE21=lrmq9oah$f|=C9 z@1+u?9vXucs32f1LOHEe3dN|MR>(QPLaW*2`HVtrFEN z3)omL`8V084@IZ35osZN45xF#T8`UeYTgav^Fz+w@!O2$m`j{=p;2e*nFai6y_ixl z=&Db}_*KjjUC0vtNm(w{)LKzMmcz7l9@9=c!DF$`&U&ja4yFTidmP~MH*?n9B*1TU?Tcv7fyX4<^ zJ|@Ol(CTn|F|9F5>An2+tw>#*%8!_x5^kaFT3^T@&*v?XebCoJ>C(_2zevbPXZ^K$(%kA$JjgTe12-WKX$T_UUq{XXCTu$o@ zo@JBA%V}80Q(@E~lpt}H`74*)sj;ghiI^>geFg<+HstaCdi0l`nd84^%Y!I+%s&vN zGYsISA(??eW7io$=7zYA_Ol0uHe*LC^M4PsJBl53NI?Nt3pS$$Ho0l|Q>t{)Jb(8) z9?C^-)H@3=Jg5V2eo`;mu%woHWFy&hesqUj(jKiS&%$;=B~j zxHPD>&O)Q|=`{BI^#+!1P7xVsNXR^eyKfc6jIGwd%quKxQZmppTM}lqP z;m4e5OuA=-W$xBH6T|me@yun*jjme`$MKQ-4|m56mx*~jlM2+1WP zGi#ME8Bhq{rK9t`UhyuSnok$lL;p1@q%;>|%Cr=v@U}0OwBElX@ZL)dEpN@px$T#+ z-{B8fnx5%`8o0?D_)PvvzhlEnI{sRbr8c3Jw@-uIa$evcJN6I>-;1g^L#0wza<*(N zZ9NulV(YOSJB;nyciUsVC@=7}rev3}Dxrbrhr+PojzBvq4#@n4?;Y>-`Qa+8y&88> z;LHs)`NMv$B%PMw6CQz9JSF}8dMIv5vE^&m(=%dv{~^}WOi|ChOtZ&7bFh=2xWZ@@ zE*~IwhYh1p5WT}KeS-K@j@P1H{anON``@$S*^GE;r0qu18i_t3-Px7+tuAP-dO2J6 z7Dk$^@!o8OeZ0ig{A=!7VC3!KhXnYO^O6k5iL%dm`zgJ1i1Owk&6g2i!Y<}GUHdOb z^FMZ0+gervcP0wzx#BY}UxlI;=l(ocs2%0)r?7n3l6v@=11wWr>Fc$i$5d!dLW+ju zg6Ve^uBILe*B%fIP3k5%KuD&ap}&$vS=9fLFc=9;h)~?cZs$M%j92&#Q*>LpbNvFk zoi1H;^}%d~(Z>%p>b|yqT|`7iBrm9;%P)F7UB4S!YXhBT~=yHxQtp;0W7 z5Z-SE{+(||g)TS@`lTQ5Iv!h^U?1(ZdUU4@E|ZY{A{J#5GcdDyj&0jZ zC&P9+L-Y-gGJFuq-(Qtb>#Ytiphz+!MXCG#es>7VI4FV$C=jLCy#t?tG3zPO1{HBh9O4qTh| z6xmIe%zCnVh7IU}SKOm>OTUFezeqb@-fSgkNLUv5TFix5`7U0lyNXPwq!Q0m>{qrN zEml1D9i=O*!L7_{gx^N2etlEE&dVB&kE&O}p6M@H(6wK(y+4+AR?zDIO1u`NIbaC3 z>%Bf&S;AxqGQf3&Z$|IrcRbWC+}tv;=NUaz^$I}#%JBP*mckOu?s;uM;rh6*ff?cw z@#Tsm7gkp(ZHTC*5OFIq>C$0svNY~DuONV&~tT4>=~d?uf3VUW*i5(bMaJ0QxfOpxiZNdG zKUZTf{EM@F*GPvsT%Vq0tzl~Ma5mSGng94ecz*d9n46Bf5Y56vGoaxf6~(gbvlTas zcSb<$TZB!~g>y5V|1hKe=fg0<^$K^;t%{Dew#E4ZmAB;pw1x}O_0MkU(y`Uq%KVC? z?hDt_hVzvCzdi9(PE$ouqg%mHN{w&Ej}P~U)m4;pVd8sHKk8)Y$d(j#a`;T>Ux8=t znfCC%GJA0jC_rzSM(=+c*?i&3vmA@e|3y=DCJu#eu3Az1<8C(WW(lg2_5^xC_GKJY47EWsa}Eh7Cw74cP*@8#ZtfV@ZZk_}r-W)=4* z=3ZB&a<*L`i|rj(Q;$hGnAyX&nS)3V)EN$F|d@LdR1lb?+yZ5#W3qQ$&dOGWk3(x^|2 zVgSj_XAW^Qq|>@(UE%Tuz;nG18h+{rmgI-uXdeBxLBqNanXnTC{C_!31)>+8z!YfNYejwTkJ!K4Ba`ezrp35uMD;3bH~jdwMs^LJGbX z>c-Qn=wyli`u6|xsaz4c5S>Y%LK+1CEDLjX22Ip2P_`drrV%JuFEZbh>t+es&$2|< zWYl^cE-F|1UcR^I2P?h-ry1f@C=+SQl}Ut!@#^7eJD>@HuyEwoNW(}7RtqN#1M0Gv$1{Kv+rZT( zi?xp`@MdGim$x&PQ$zChT_U4OI`Z)E;SUH%+Mczlnx4z=3mnfGrv<41py9a{ewO<2 zl_DO*3}YlgVto~9xTx)V)vt^14Od};_!*S+rOT&)LFkwa;W=;yp)|z3`lb*f6nWy^X(2NZpdvd;MyQm zeg&NrVbTn;owixG)%+I3zlf zBQlLyev!&Ec99c-OYP*xKl4iTZfk+@2ZB4_ z;&$YP7^edIF<;#?jNYN&t`pitkK9SPey-bdpTv{bqq$@rp@ogkop$F(ma*FAX9VCc%kYcqj>k5&M*!lC9yY8w z0hPy!+8Vjm9X?jp8c!+qQGq&OruAyk{;I2eD_-nC<<)+^=o1LLGjF-mPGv|2d;FY@ zvxXHWjK=7g@e$al@##qATF*L~+MLfvII@Orz}>@Vl8}!P&7mOlJm*-Rh`Uw4;~#zL zHo5YfmI)Hp!xIw+OAX&w@~)wd#~qJ>*~IK{CuU&j_fiQDS6eEvMM}HmK~ZolmS@`& zwM)4Rt3?Mbvrtcaq6jM31$T2giM8tc$EptI!iObx#hc*sm}Qah5AL74wy3%5qxwYq zLqBM%g9$arR|U_iDZ5wi?KP9UoCDev*oFlpwKf_IuC6H^gQ?F77`bw&)5=b*j#IW%Thd0IZmCR zE%To6W>iVtF=9l#jUf*XrR^QHB<6m(?_-ZtSqacpfRvR{86V{6D}Z-5&dDXnNLufp zpHn^eqjQ;uFHW{sxA6O%st%~Q@78NmjnMMAz^UTtEA}50-Tfb`S$e~{Bjnf%5pl^Y z^r+;0qlzYf7KQIRV^!Mz+2@!hNE83Wqi&S&u+wY*9S8nkU1)mT1jip#EPx)WH&01w_GfZFc-H~%s=fEP-1E>C3 zc)mgSQgTWbUOVnS5`Ek3gq`_Gfk=9yn45;6n??ieJ0b9xOYY-4G6siguq8jI1;zc^&6h2)ehV~>1ull#?xdY;G(P4Fd<4N)g z1fDzV8H#?!HzAtpZ_3mjbV5@@Sz$QEAH_24Uj?Tv&S``O6K4t-OD31F@B&oVVHXc#O`JHZG(AaLaYGJe%-h5aD(VFRO>JvxECkVFcbErm1n_{*ow3)ijOO&wZoRKDQiRqeP&fcrOb50>i`a@&EDy z#3>NS{YHxoEAAyWEjKZ}IxkdOV_M;ihFVL9&}y6jzsI=XZOmb3#0(2a?)FqG@{Ev? zT7d9l;S85dVI~&(mk1dhLNrs<+i#y(qVbW8Hq_~g{)3Moh5z%M@x9q4k}@){aRXE+ zl6lN)_(!%v<%)=m;C#c=^EB@E8yT(Cww%lTIXDh)xUlo8gJT4GS@aj}@`5*Ih+kQL zL?*t3Vah}U?f3_jmiY^a)qqc=B(lITCH@-+HPR{XCo2(U?hQw>P zYdmOeDri;JjK6h@dL4AL5y`C1y3_r;`{>yB3I3!~Yw;Ja0Z7B@;m=%0$?4^snNb5b z-7s#Y3GsdcN;lsf+6Zi=RsguLjL9~9V8%-2W@8esPLLYD2S(*zDkws z+&pp!SS}B9LH8LV4>w!hDsb3Q?YQKV#z&6imqpFBG%W&?!|I3FN8iQvV122 z4)|3ji^22V{{SFEPP!qLu;`Xu$Hltp-Abr(QM7J_;Q~7DQO_9%0nyf8`SOLa2wK6%M(O06fP%J`V8}*&RI}(h`1p6c$+26TjOL;M=gT z<&`zKpJu)vX=gVNLjP9J9=UdD{XpnD(dp z86a8B$|Ek++36Tkfuhil6_%Bm8pdD8uOcSN`f#(%m1E_5GqP99 zbeOY`qQ4lU#pmx!)61Rd_eEG9fcQaLkC}57MmF?gE+hAM*BSxIC*x^#s&HYeA;K1F zL|(iVv^$PFRxf|v9!Hh$I>V}`y76~+62$DH^062I#syABlXD|H#V zKZo9HA05pc_!+4a_=R!oo&TuqI7g_FItd*u+P2?c8MVaSRd6%miNim*{``{XHpI%R z$1~0kL4V$N+Il`Vtp7Y?Cm4;&)~R`yiQG5FyV!NB?+VgOG9{hnuKYDrgC>>M@$C0t zz542~!}Us~i5U4_mE%%9ES7&vG0lBrrT=80+4S>;J8C6Hq1XN8T@njHYX}krc`J^u}M+vW0#G zHN7gLbzAn>6+tYFNbv1}g05hV1*7w`#9A(XadiSu@{`z)qh@zVS^UdQbaE2oGYyH$ z*GrbgW5)rd31xx5P^}z{BEKfdiX19w-9VrT60Z+ueDr% zA*v$D%8OKjEpQ#%Jf~`O)_!|F7c`~>zU7d{?N-}LK}^i}jTn=5jzizoxnhcu&w2!K zKU+!;W(+Xb9jdQdfjd0c9c^?+aPfY*i7D2pIC7=dMkCwnNoDDTRYGf|MCs8>T>yh( zDIT@$l|z}4Ga&wl(kXMN?+<$GA22B9`BgUMQCFS;I%*LaXKy?JMGwd1z)h}=pdHsK z3%YS4t-p5w0jq}`w_Q(tx>lmXO*3*%VN&xV&@xnvo!QPts}NcyQ=*GD%G53Ujqo|# zRjLd+D;Xj&iCK{I!>xYzdUo1+z2_CI5AMY0?Ek0ac6ctRdQG{ONGne^Pfs|`*+T$t z&>g2m<(qLmBB(rcn<03>YAulg&z~vj*#6TTivjqw8}K$}nH`mqO(lHWRZ!Fw&hn?MWodE=Va?TgK5mI}7^pEar^ zi6eH?8o2#fyCbQVufOH>T($cLw|LNu8rLs_0<^JaNR{P1b=c8*Q}|0>ZXD9 zIz4>0!P%_kD4GQ|TXct}YRp^FxcwkT{D4?KuT{hymU(}*) z%|W=d5+*$a8R6`O=uEf>5~j0OLE?4dIsVkNCUSLGNeqQS_e+nN#n~#O5hmm#{p^yw zkLL}KKM;pH5}|)Ig&}~C#V_@6noxmt6e;z$K+s7$Uc6mG@cqm{U}^tE6Qsbc9i)Pf zo^E;9cT%k(8GPeu-Qui>j~@GHkU2lcaL%5PSPT0S0gb{OCDv09{OYQonRl=M2OH!< zUPQf8*elVLv44vSt4#xyW^%fBY--X)Zbm|H)?GyE00JM&ot}!$N~A#?=WsHr6sw}x z3&sQ#k){w8%gvrBUA%j7CUE8KZ`Up!?#f#{Xv!l6~PW4zC~vj1S1d-$~(^C!Jj%p2721rvnD zS9tin4h3k@AKtSF$hodteR>n+C$B}wh*~d$O!yj11Q?f$8vpZ5GsHb24HWGe77ou3sBValLa;P$)1Bw??73~xBgynj#RukAnn!W%KDc(Hxe@SV0 z#Jm^DfPmN2>18f^^&Vs;MAuy%enyD$^xFm_0WZ{=^{vbeUd`6m2)tJ#rvu_i1!c(P zWK823_kbWVE1#wGF`0)tQ`NAN^*jW>Yc+0gFZuZ4-t9=_kn@HvIy(ZQlvSG5B%k%T zFser=7YzJF|6brIszIUGAfYt)UfJ|MsujQtrRJud>k(#KIr)H@vQl4$t$OkZc%4i3 zLuO1n)>FSH>Ti$MxZ!!zt0CNls;com_!arp1o2XPvfx5@6Ca-(jFLNB@S-7FYd@jS+OMuXg!LwSf_kE^4CBDh~c(v?)y8JCQMMLT^ zAQ8a#LZE!X?ca3dyNSZbSTpV;hi>8E*JzJTyAuVny1|Ii7FGgbq`-ra z1ax0a_>lm{DbAtnj(|*lF5r0SLW=-3x>H9(!fF~LG$Qk+Uk07#O5vs89-TUs=VZB@ zqKor$GJ%03vE9t5IJUd~ii1e~7)q6?raw1yhJav?@?m>I#H!`7$n8Po)Q?r>wNftf z+4dqsQ)EyrT5FVXKPrrWvOR=mmXNdz_qM}@`XDUr2l8T7^VHK;DstLKWA9lL?w zG4F6xE3t+qF~6XKTzu()wp1$kru7VEi@2AVpmht-Mn6p@VbW zc9A8j_u~w!Me448^4ObtB0R0DLF0H5UyEXVg~ZnXyJhPw?z>rZB^(6#cnsf5)}vY4 zb^t_(E9=0G zK4)G}hk3E=0^dyUsY-#7`5S+>$#Io`@3-#9yvEOup^yyiiziJ63uIUZXF?;UXuZ_a znqIU+rwHI=*wm8ZlZVC!0J{^{8p~K8PoDi@ujl9Z&P0n4C0ZGLcd?to^tutH7Bo3$ z7PRs_{_Q&ME;_{;pMe*S zWQ=v4gItLaM~tf5v@3|B2i^cUlmM>8MWTsmwMFGQuXDQm=Q<@ZzheIud^ z;~@u1W#2f+g^`aY%sJV)^)zCo?^qCr;^oA13coBkX?&h~;k4V(YQm7=V4m`(LibXFxPi zmV8|X#b*t>wU!--FGnnSvQs53!h!fH@$7+Y7)s!qx96& zOg&Rb?@_kT=K{xa%)$@ie@}jPi5K6T$khcsK6r%$keQ7Pc`Up3FC_W=Uhz9_(-jBK zUwfoNe$vN3m;2L0fQ2OXMH}RaA?NxQ@%-v=sk9iRj2+B)T)*VR|1$!IU(dud4d-G+ zv@7X*%aN#&y5vr?W~FJHubqTOw?D`Vd{%}QTugO!4a;^eskd4S>wN#~YZ_pz#ANYW z%IiWn9*?{`YPF2frz+?SYft1-6~$FDxYR265uK-sl&pcq2o;VErLpTkMktqSZN_Js z3jwhNu$}^;oby4C_Z5Dz;^{$`MNWHzGbBV2NP=j1)Pj_aR8JcaFpy<;zpunkY{bvXC)sNyIyu5l_NGu6&32P0pK8o zF^H3$y>{cmmSkgc-JtMPZWRa@IW$Tvytrv2!C@B$6q?0X0AV;~wWzjP=yFkan2R|-?WEsA^<9h%|UHX?Mon+wDio~jE>A4a0N{b zKLTSBTKGasn7htV`_p>_t)I{Mo*~b1+Rez)*n5llHdB}-P)Qs};wfxADIe8*mJsdL zidukJvlR-W>w!TkWQOdz-xP}_&IagV!X3A90VTGXN}?xG8)w7Z8Y()3#a>kka;eW2 zD?fpDvQ}-Zz^S67jlWAyM^hXPO7faL_e(CxNR?th{+m(E2j=+l*UeRqC9TsMQW9^d z1?;B4a&@R1(JY~1CvJ@?+!G{QV%H^V*$3|WrlxsA`-?xyn*dWodq28xhU)4IwEKxK z=LK9Duz$iHSpb*`8)M-&%V)0D%7*>%l!qE7`XyApq`)L4n3T@B9#r=)x+{DrBbeia z`0D_&OBrVhYl5Yvq}<96UMf>k+ zX_SC1Cjt!EVJCk5mXVzhB;f8!5Qj{lDpcKt+RSZ`@o8|)z@)|=eWW(?s4uS5Kr2B& z(8ysGuqzKGUux3vn!xFbpZK=Sc@o)7(Z9Vb#CfTCZrN6T%SI!J!?Cic; z1vUn-%dhAPCSEH7s1DTuMMze*fOSaf{}X8v6(^r8y`^j8X^I36f8o~sqrV40Nz}&h z$;xyI&TsWU?In&bBorA@P3HzyZvOVe$WGC zak%;I^b7u=UCdhRdnO&z_Mcb!-iOO}fKzN0WDj#Pa=;7AxeW%yK0d(qeO{tRyewQ& zioMMm#LN)gIj+m_p5Q4#XY|DlB=Pw7{E*{SK`V)DHy+`fC5#HatftC8i-+qp@j9#PmSpLV2fA-2bk7y97JD8g- z`_+LB^y2)elzsF=Lq-B2sn^)7bOK6X;c+>rp4 zNaUz-YibG;0VMu6YWsGQb7St=Ml0a8Y43;U5zI5L*=KWB+nZ+7n6iYOA)A3SzArdX zk?_tfKm3(BpB>?=eRoTCzIvcNeRx?6OYf>3DNM_DbbeJ2WawHPdGHw(r+|p0<>C+f z3`6EX&R5-bLEOAar_Fn6@phvVZEjdy0(BmY>~;jN^yYIxY#dnEtwEx-xz?cLk-7=ZU0n zQ&hJweRHjF0+_KO`fe3}#is@=$)%hVqFE4S70UpDHjB%oIg^y%dfo%u8#v8IMc_G> zM}U+f(8vok(7Ekf~iePyrIX()!WUfe4d9j*r4~ zya3xSgo9@o2`eH3G{0wiO{)nnoM+s-w_fD%CRcB{CY{IUhW-ZiMu=ar3rlzzXH`NR zH-R`u-M_)i_X$Y16ZR;(^_X<4g$&nY(pL?q>XD2Uv(IMr_j3wW+^Grg3p=Q?%Z?v^ z`5a%vt5Qrnpu%?B&YL3@)V{*RDy1W8o`Z@_VxEuWTTfy>#cK*?C}dtP*W*6ljNvYs zJ#D?Ye7A_UN?u5%MGS|-s)NY#4)O;d_|ran%V6uRstsN4PWNB!MPid$jBkY#n-1tl z21(9DnGC#EzZ(6by2@UHC&y7tVH|XSc@^M3T}9qLadU@!K!eDB*Od~kl9Z=ka*s)` z5HCP%;-U54xec*4G}MeYb1Vuu3u7g2)B`^K|&+qakR@U?nEs@^Pvx&ERM z8=E_|p2}xOiq!?)|0w~K`73J^*IuI80LIH4zoVwB;8gKg<4QWRj~A;rw|#tEREGB# zJQn?1bZ|;Bv_bpj#%i2}a1|6`ktAD-{v55hZGUU!@wiP9SU&!Kdjpd8oy!`U%%*+L zizB(bK93V0ca65xC75)V^!jNA2K|x_+fVVI}~&;cCkaaR*8&f#vT46E~G)Vq>b~C@x1iNaG-(-v1f> zNwnn#4*I-#9Xwjb1jl8*s(vsby_$xCZ`g;8PUg{?W95dbF)J=^47r zSSZal&qtDxdDrT1N6UY~siu1uq~AT4yfJU#94AFMfS3)$tOTW(Z$32MSml6~GWB}w44?)@rQ0vWfnw!h`#x13k8cB_pU z{fk?Y&FZ-Lv6l$7E1(*pZujP#%lzH4_!OSIZ#i;m|G@2S6O_eb#G5Tlr*nNWk+B1h zZb)*+vC)pinkHeK!6^@q9Zn9|eL)hxLQ&f#fWS!Gq^Q0+-&E59`A+p<)7GIYxsZ$` z-5$(p@jKS>p$d0fs$qs7L3yZnz5Dr&gxhlU);p0a;7KipJec{V#cSaw^2h<%*7u!BCQ~5V_T4xAxk86VB@`Y$lJo~{5YsvY-xU=uc0ZR zNxQw!l5c93iRj4Fwf2l+;pA@+9!0lY1_NVb0*uW%Ux;QNu-tC14y~mJ`>k(^P^|AG z)JhzB-@8M`%dDsW;J`kcwv7~4TaNbqus=N8bluY4_L*#Qo{8k`yWGCQH!0XeTg9Gr zS&2}RNl%T(ssJLU_1F7!m9sKXmSeKx*zAawk9~ZQ%A2O1q1y;PC9tJuRnEI2_XXib zc`|PnDjH#GKt4wB3dh1lJvOtFOO1Gu@A(d>gWsN??fojxXuj@jL`Ti&jZe9pcMrC$ zcUoCor0Bd<=1zu-dOa4f9VNuDhiPu1zIfXyV&I$jjsGN)nC$a-vva2%#N%L|_s3DP z5}4G7X3Z$rnH4yb`W2}vM5p=zsB7Zb6wR_;3cur$=~cJ`hP8ANOel;~AvM(-PIoQ3 z+c*$oa=s`dDdoD*?wFm`=21bJwG=R8d_MU%4K_ukGa5pgpUFyuYV|5SX+_J_NwU&M zo>|yFoy{8ndrQH199x?*;Jd5C?4j%MXq&iTh|+D=6z?+W z0F_h@7y6!Dl7hb}D2JNf#14c(APlN58(zeRO`T%YV={FOP!CFIBWH)cv^h|)Mp zwa}?YV>kA)V9JD4Dv=yj%r6P49Z8pNd}CzM&ES{QNO-; zG4wD=u#K`U;nHz_vbUa-_E;&^~_pO7#;t!q0NY z8RK-xOz&!OmwWvQ`~b?Qy*(i714R1Y?ORiXWD~Q&$%hy~RwDJz*ZzM+YgdG!N!Au5 zJyW9u$zZ}`l1i-}R0Q@gv5eK^JGETDF0X1)h6MTZDCRud?<$ecDYcgv|1)r(?RKjg z?LP2WBLA)n>4)lT*u^aDw%jzJn#DE3K$(@kQEP7&~B2$Li5UqQT=M{$NGV9 z`Yj8p)Z#rO-*`^S*$f+}kK30xzWGoUFXx4rIvW@myvI|)_NC)Hp(mb4ix@dhYlJu< zb&q4E4X5i5Mh( z!NA%6#UxXRE+>4r24w%8nS;<^4e#D_MA3?R9q5yrFiyYr&w1uP6>;_D$SbJZT> z;e|)C$f8#}Xh>SUTT#whSX9RSKKnmV8y)w9ZUFutB46MOB0Vu1`io&vf~e_}BCSE>W#k|rBk&(u zW3l}b6>;{?%AZdSix?|1&BM4i)(^Nb^4Wn#-Uc9HBf#l!c>j#7RrMqH{+nCJTsU@D z5+u3&U%%ED`3A)amf&=-@J6Y261PK;N@Zle0vW^sa7kmJ&3&y!MLq4Y9MdUw0MBAe z@bq=B`(wvCX~Be@1!b8egQh9Gdj^Xr!sb0D6LPTqT!$Advxi>;1W`x;-!;;1p{6)a zoJPVbKJvz!MDuF6nl4&99(_LyH)RVa>Wd0XcT5n@hjUqTt49iM2^;LU2R_EXTP@)< zkY$3V$}{Pnc=l<*wWR?;7Gd$zKOECeJKE>Fh1=HW>5fF)f4Fo^-%?~$>f2CJH_X=^ z39o!xOO$lxdi5M?TWvSZ)S`NUVX8fNjkEgq_WV#t=~ijiNyPA6{5(0*l`)+a6)6FS zR{_J2hHj|oYy?Q8GH&BDEaGa#?+8Z1?Bht^W7EVr(7n9e`!$@`k}YiB`E2Q==S3qy zDs$SFf3w%&`!%&8kZTx~l$N4To*9rGiS@jJZ<&2oy|eCNnuG2NfmB%0JZOB@mg_Xb zh=cMw1r^M#q&$}hlty$608}I9HJB~zoHzOt7NsKUm6Mf+wN6T(f4)xD z0#Ul|(7f&^mVNU3t=eou-M0EV!-s3uev0pZt94M7$(sQ$dIzAQIoyRBp*!vvD!K=1EU``vBk(uE=vPYF55NR&FruImow<#3B|iBG$Rtm^hDi z3NNTk1-SZxh$wKzqS5$jH|q3Ta{mLKwC_aLkZVrQKyg=O48<{Sf8Sl`>2~Y3DdVq= z{Dh!5zQb($p35igTVyMiUwiw*iOGKx8~i{(*L58|f0$$$0_I{2QHEyU&Do-#3osGrJ>1mI32s$gUP11vbG?5|GQ@A_` z!s^PH1Sfm%n*&YU-(+|whT1-kFEfmN()pX*%Q9{X5DRy&z{OObildF)hWBo_~XB!^(JRk>P6@~!ns^QARh3R%{?jyia4 z#U~LFH9?*sPWpkajy7~BJ?WyztrB4~Yn`-&k=rVYlaQ%8X}c`5>{_zF+Y628_h7qXp7PpiBIv4I8;N z!#9$+zy?~H-}Hq!pBvxtAI_m@kqFpozF#4lED{~~sm@{C$n)koc`z}XR}M#i9u_jx zr^!LZGPdzktIF@*BdOtkRq4eKsHyL6@$9w|J2pKhq_Uu-c)reV`Zbk+^Qt&wVf!lu zWLK1`93Vj~GHC&FX=|n%5)C#3?&RL2P9#$;atmX*Zu;DJsk^m0eN=g(6}|EOYDjwE zl%d3aFQ>d5y@N*mO0_jGXgu>n2#{&mN+F^X-MH6a$L@JiYw?S0x)m-^`@=sYi}!$$ zziFY@`T=cvG*!rPbTc}`bO>Rbj?*TVJfdfm9*4KIK^cia76xaIveg!udp1emiNpYr zK6wYyT2Pmc1)-*&1JSeG)rjnfx2R`Tr2nW8wT*V?5kMH3Nq3E}aGa!VTP2)6D-0+A zDQkcrZnPEuqmWcDMjYZc+X@r1}o`KPB8bdNp^L zrVtf}tOz^V{>$CvzD>)y_VY2xyMqwu7jC})5TVA5TkDX?e>7;S&?Yf8d#*?+B}Xn* ztFkh2<9lhEfeD@R@W`Rsxf+?U7BD{F)qtE1x(oyupY5fFYy?K??2VKcnU~~3Sv5rE zquUatAJz7SGZTC-`C|Iw1Qt_E-DhFbc>wn{dJ0)c|&n8zN-RqgiR$`ob$?Rk1itOt-;(i?G! zoLcfer)4N4vC(ThaXNW;qYJiEJvC66-Cph4qXE2NUsho;9AWw^1Nbl9&daI@L%khP$ zNNi|$w4Z2v<2PnfvRf>gxis2vV>O=ED$?L}FBHBD&>Q6u4Q21)rU;auk)3Cp=~nG> zrxaH7g|YNIKr|L;r-yMPrrm3Tk&l;CQ`+`Ojd_7oNCxxNPR;rvk1tce0=j7XN4Jfh zuo`DPTA2@Enq_|=IDWD^weu>|hZ*w7#$K3{a_5c@$U0AZ(wtqXzxXLHRV1JMA1>4z zf`WAbHP*`v_ER;fz8m+YJxbt?(5#bkb&V4z&J&PNzeUZ{MQ+oes(%WluJHhkyI^Y4 zO!aIC25woq@C*^2N{jQR1FUkGRBF zJLT}dhtH-4#kWw59qckZ>uBBMX9X*P!?J6e$N8phDuinPTnL`CRZ1-RYfjR$+$m_J z5~n(!9yL(pskM_v@m}kzKC ze+tqkbh-J%o^G)p3iDnuZV&u?Apj(iW=CHl3v<67lN$TqNfDkJaL+%wIGdRvie;78 z_%jp-@yXVaV7>MeyAC6Ckyt)VD~6B$kHJbk+5bqC%x zGXu0!u-kF?TEkpq28rmaG1$E;-~Yp!#w5Szbn>T$ut|(4v_asp7IW3@&)HYE2Q&;J7>+WcP_5v<6VmnMW`BJolIgZY&P7&Y)W zVw+R!k2QAJ^X0zqd}6i?&T3H$c*=e|$VvV&^30+te<;Tcy@xTwAjSB!pcL&vsCsMU zy6IWdSizmy!rfD_o%O5TBhPGI52@++H4UoN#B@~CMCuS|ubAyN7)#kyf6c02lv^-p zE;TKyiD>*{Z+lp6H%G+Uy_4pU^`*S^^jjE%qz(^|m}&$<<~UB@-{DG>dhXAnoPQ+` z?1lvrkAlBsGz$Y!CgXzs(Ut@pmgqc|HBwjdsa!amr%_sFi8VYJAW`c8iE^5l|7>Hr zV=C(z`nHoXazB2YNL7b;QN2v!M2Ad1F7oU>Upoyf1PI%wvVF*i(q%oOl+(I$@|iQy z0Alk0ZYoCo|9mPbgR`nlpV(OH!DQb5{xf?^VUI{oAgoWa=ZWON|84P1NlqPHDPtb; Fe*taD^IHG_ diff --git a/Documentation~/index.md b/Documentation~/index.md index b1d1ddf8..30c243fa 100644 --- a/Documentation~/index.md +++ b/Documentation~/index.md @@ -35,7 +35,7 @@ The XR Interaction Toolkit package has several dependencies which are automatica * [Input System (com.unity.inputsystem)](https://docs.unity3d.com/Packages/com.unity.inputsystem@1.8/manual/index.html) * [Mathematics (com.unity.mathematics)](https://docs.unity3d.com/Packages/com.unity.mathematics@1.2/manual/index.html) * [Unity UI (com.unity.ugui)](https://docs.unity3d.com/Packages/com.unity.ugui@1.0/manual/index.html) -* [XR Core Utilities (com.unity.xr.core-utils)](https://docs.unity3d.com/Packages/com.unity.xr.core-utils@2.2/manual/index.html) +* [XR Core Utilities (com.unity.xr.core-utils)](https://docs.unity3d.com/Packages/com.unity.xr.core-utils@2.4/manual/index.html) * Built-in modules * [Audio](https://docs.unity3d.com/Manual/com.unity.modules.audio.html) * [IMGUI](https://docs.unity3d.com/Manual/com.unity.modules.imgui.html) diff --git a/Documentation~/interaction-attach-controller.md b/Documentation~/interaction-attach-controller.md index 6a81664b..cfdecdf7 100644 --- a/Documentation~/interaction-attach-controller.md +++ b/Documentation~/interaction-attach-controller.md @@ -20,8 +20,17 @@ Importantly the stabilization and smoothing options are configured by default to | **Smooth Offset** | If true offset will be smoothed over time in XR Origin space. May present some instability if smoothing is toggled during an interaction. | | **Smoothing Speed** | Smoothing amount for the anchor's position and rotation. Higher values mean more smoothing occurs faster. | | **Use Distance Based Velocity Scaling**| Whether to use distance-based velocity scaling for anchor movement. | +| **Use Manipulation Input** | Whether to use manipulation input to move the anchor. | +| **Manipulation Input** | The input used to manipulate the anchor. | +| **X-axis Mode** | What the x-axis (left/right) of the manipulation input does when controlling the anchor. | +| **Y-axis Mode** | What the y-axis (up/down) of the manipulation input does when controlling the anchor. | +| **Combine Manipulation Axes** | Whether to allow simultaneous manipulation of both axes. Disable to allow only one axis of manipulation input at a time based on which axis is most actuated. | +| **Translate Speed** | Speed at which the anchor is translated when using manipulation input. | +| **Rotate Speed** | Speed at which the anchor is rotated when using manipulation input. | +| **Rotate Reference Frame** | The optional reference frame to define the rotation axes when the anchor is rotated when using manipulation input. | | **Use Momentum** | Whether momentum is used when distance scaling is in effect. | -| **Momentum Decay Scale** | Decay scalar for momentum. Higher values will cause momentum to decay faster. | +| **Decay: Physical Movement** | Decay scalar for momentum when triggered with push/pull gesture. Higher values will cause momentum to decay faster. | +| **Decay: Input** | Decay scalar for momentum when triggered with manipulation input. Higher values will cause momentum to decay faster. | | **Z Velocity Ramp Threshold** | Scales anchor velocity from 0 to 1 based on z-velocity's deviation below a threshold. 0 means no scaling. | | **Pull Velocity Bias** | Adjusts the object's velocity calculation when moving towards the user. It modifies the distance-based calculation that determines the velocity scalar. | | **Push Velocity Bias** | Adjusts the object's velocity calculation when moving away from the user. It modifies the distance-based calculation that determines the velocity scalar. | diff --git a/Documentation~/samples-starter-assets.md b/Documentation~/samples-starter-assets.md index ec670090..78962e78 100644 --- a/Documentation~/samples-starter-assets.md +++ b/Documentation~/samples-starter-assets.md @@ -194,7 +194,7 @@ The `XR Origin (XR Rig)` prefab has the following hierarchy. XR Origin (XR Rig) - XR Origin
+ XR Origin
Character Controller
Input Action Manager
XR Input Modality Manager
diff --git a/Documentation~/whats-new-2.2.md b/Documentation~/whats-new-2.2.md index 117b9d8b..63ec42ad 100644 --- a/Documentation~/whats-new-2.2.md +++ b/Documentation~/whats-new-2.2.md @@ -20,7 +20,7 @@ Within the [Starter Assets](samples-starter-assets.md) sample that ships with XR Added support for teleportation directionality so that users can specify the direction they will face when teleportation finishes by rotating the thumbstick on a controller. This includes the addition of a `Teleport Direction` input action for each hand in the `XRI Default Input Actions` asset in the `Starter Assets` sample. If you already have a teleport controller setup in your scene, you will need to find the XR Ray Interactor component associated with one or both hands where the teleport controller lives and enable the checkbox for `Anchor Control`, then set the `Rotation Mode` to `Match Direction`. To enable teleport interactables in the scene to use directional input from the controllers, you will need to check the box for `Match Directional Input` on the **Teleportation Anchor** or **Teleportation Area**. Note that this option will only appear in the Inspector when the `Teleportation Configuration` option for `Match Orientation` is set to either `World Space Up` or `Target Up`. > [!NOTE] -> As of version 3.0.0, Anchor Control has been renamed to Manipulate Attach Transform. +> As of version 3.0.0, Anchor Control has been renamed to Manipulate Attach Transform. As of version 3.1.0, Teleport Direction input action has been renamed to Manipulation. We have also added a new **Grab Move Provider**. This method of locomotion can best be described as grabbing the world itself and pulling yourself through it. Each hand provides the means to translate yourself through the world space, but also included is a **Two-Handed Grab Move Provider**, which combines the **Grab Move Provider** on each hand and allows you to rotate and scale yourself in the world. The `XRI Default Input Actions` in the `Starter Assets` have been updated to include the appropriate actions to support this new mode of locomotion. For more information, read the documentation on [Locomotion](xref:xri-grab-movement), the [Grab Move Provider](grab-move-provider.md) and the [Two-Handed Grab Move Provider](two-handed-grab-move-provider.md). diff --git a/Documentation~/whats-new-3.1.md b/Documentation~/whats-new-3.1.md new file mode 100644 index 00000000..317dfe55 --- /dev/null +++ b/Documentation~/whats-new-3.1.md @@ -0,0 +1,41 @@ +--- +uid: xri-whats-new-3-1 +--- +# What's new in version 3.1 + +For a full list of changes and updates in this version, refer to the [XR Interaction Toolkit package changelog](xref:xri-changelog). + +Summary of changes in XR Interaction Toolkit package version 3.1: + +## Added + +### Near-Far Interactor controller manipulation + +The [Near-Far Interactor](near-far-interactor.md) added in 3.0 combined the interactivity of the XR Direct Interactor and the XR Ray Interactor, however it did not have all the functionality previously available with the XR Ray Interactor for manipulating objects at a distance. With version 3.1, the [Interaction Attach Controller](interaction-attach-controller.md) component that sits alongside the Near-Far Interactor allows you to configure anchor movement for both physical push and pull gestures (suitable for a hand tracking experience) in addition to a `Vector2` input control (such as a thumbstick) for fine precision when **Use Manipulation Input** is enabled. It allows you to configure for horizontal rotation, vertical rotation, and translation. + +### Gravity and Jump + +Two new ways to move and manipulate the XR Origin have been added. A Jump Provider enables an easy way to add basic jumping when pressing a button. It is configurable for different use cases, such as varying heights based on duration held or whether to allow jumping while in the air. A new Gravity Provider component consolidates gravity logic, which was previously handled separately by each individual locomotion provider. It also exposes events for when the player rig becomes grounded. A new `IGravityController` interface can be implemented by locomotion providers to influence the Gravity Provider. + +The `ClimbProvider` and `ContinuousMoveProvider` locomotion provider classes have been updated to take full advantage of the new gravity locomotion architecture, allowing gravity to be configured in a common way across different ways of locomotion. It also allows for better handling and coordination with other locomotion providers when pausing gravity, such as preventing the move provider while climbing up a wall. In addition, the [Continuous Move Provider](continuous-movement.md#continuous-move-provider) has a new **In Air Control Modifier** property which determines how much control the player has while in the air. Read more about these new locomotion changes in the [Locomotion](locomotion.md) documentation. + +### XR Interaction Simulator + +The usability of the XR Device Simulator has been improved with a new replacement component and prefab, the XR Interaction Simulator. Update or import the [XR Device Simulator](samples-xr-device-simulator.md) sample in the **Window** > **Package Manager** window to add this new functionality to your project. For those developers already making use of the XR Device Simulator, see the note below in [Simulator project settings](#simulator-project-settings). + +The goal was to simplify spatial interaction and to make the controls more intuitive, along with a cohesive UI to better represent the state of the simulator. Further improvements are planned for future versions of the package to make the simulator even easier to use. + +## Changed + +### Simulator project settings + +The default simulator prefab has been changed from the older `XR Device Simulator` to the new `XR Interaction Simulator`. To revert back to the classic control scheme and functionality of the XR Device Simulator, you can enable **Use Classic** in **Edit** > **Project Settings** > **XR Plug-in Management** > **XR Interaction Toolkit**. + +> [!NOTE] +> Existing projects that already were configured in Project Settings to use the simulator will need to disable and re-enable **Use XR Interaction Simulator in scenes** in order to use the new simulator. + +## Deprecations + +### Gravity in locomotion + +With the new locomotion changes outlined above, the gravity properties in move and grab move locomotion providers are now obsolete and have been deprecated to reflect this. The recommended way of configuring gravity is with the added Gravity Provider component instead, which has been added to the `XR Origin (XR Rig)` prefab from the [Starter Assets](samples-starter-assets.md) sample on the `Gravity` GameObject. The functionality of gravity in `ContinuousMoveProvider` and `ConstrainedMoveProvider` has been retained for backwards compatibility, however the gravity is now calculated with the `GravityProvider` component when that is added to the scene. diff --git a/Documentation~/xri-settings.md b/Documentation~/xri-settings.md index 9825ad4b..c85f7489 100644 --- a/Documentation~/xri-settings.md +++ b/Documentation~/xri-settings.md @@ -21,19 +21,19 @@ To find these settings in the Unity Editor: The XR Interaction Toolkit provides a few settings that modify Editor and runtime behavior. -### XR Device Simulator Settings +### Interaction Simulator Settings -These settings control the [XR Simulator](xref:xri-xr-device-simulator-overview), which you can install from the Package Manager window. +These settings control the [Simulator](xref:xri-xr-device-simulator-overview), which you can install from the Package Manager window with the [XR Device Simulator](xref:xri-samples-xr-device-simulator) sample. -* **Use XR Device Simulator in scenes** +* **Use XR Interaction Simulator in scenes** - The XR device simulator prefab is instantiated automatically by Unity when you enter Play mode. + The simulator prefab is instantiated automatically by Unity when you enter Play mode. * **Instantiate in Editor Only** When enabled, the simulator prefab is only added in the Editor. Disable to add the prefab to Standalone (desktop) builds, too. (The simulator prefab is never added to XR platform builds automatically.) -* **XR Device Simulator prefab** +* **XR Interaction Simulator prefab** The simulator prefab. You can change this reference if you have a customized prefab you would rather use. diff --git a/Editor/Inputs/Simulation/SimulatedDeviceLifecycleManagerEditor.cs b/Editor/Inputs/Simulation/SimulatedDeviceLifecycleManagerEditor.cs new file mode 100644 index 00000000..12b09eea --- /dev/null +++ b/Editor/Inputs/Simulation/SimulatedDeviceLifecycleManagerEditor.cs @@ -0,0 +1,79 @@ +using UnityEngine; +using UnityEngine.XR.Interaction.Toolkit.Inputs.Simulation; + +namespace UnityEditor.XR.Interaction.Toolkit.Inputs.Simulation +{ + /// + /// Custom editor for . + /// + [CustomEditor(typeof(SimulatedDeviceLifecycleManager), true), CanEditMultipleObjects] + class SimulatedDeviceLifecycleManagerEditor : BaseInteractionEditor + { + protected SerializedProperty m_RemoveOtherHMDDevices; + protected SerializedProperty m_HandTrackingCapability; + + /// + /// Contents of GUI elements used by this editor. + /// + protected static class Contents + { + public static readonly GUIContent removeOtherHMDDevices = EditorGUIUtility.TrTextContent("Remove Other HMD Devices", "Whether to remove other XR HMD devices in this session so that they don't conflict with the simulated devices."); + public static readonly GUIContent handTrackingCapability = EditorGUIUtility.TrTextContent("Hand Tracking Capability", "Whether to create a simulated Hand Tracking Subsystem and provider on startup. Requires the XR Hands package."); + + public static readonly GUIContent handPropertiesHeader = EditorGUIUtility.TrTextContent("Hand Properties"); + } + + /// + /// See . + /// + protected virtual void OnEnable() + { + m_RemoveOtherHMDDevices = serializedObject.FindProperty("m_RemoveOtherHMDDevices"); + m_HandTrackingCapability = serializedObject.FindProperty("m_HandTrackingCapability"); + } + + /// + protected override void DrawInspector() + { + DrawBeforeProperties(); + DrawProperties(); + DrawDerivedProperties(); + } + + /// + /// This method is automatically called by to + /// draw the section of the custom inspector before . + /// By default, this draws the read-only Script property. + /// + protected virtual void DrawBeforeProperties() + { + DrawScript(); + } + + /// + /// This method is automatically called by to + /// draw the property fields. Override this method to customize the + /// properties shown in the Inspector. This is typically the method overridden + /// when a derived behavior adds additional serialized properties + /// that should be displayed in the Inspector. + /// + protected virtual void DrawProperties() + { + EditorGUILayout.PropertyField(m_RemoveOtherHMDDevices, Contents.removeOtherHMDDevices); + EditorGUILayout.Space(); + DrawHandProperties(); + } + + /// + /// Draw the property fields related to hands. + /// + protected virtual void DrawHandProperties() + { + EditorGUILayout.LabelField(Contents.handPropertiesHeader, EditorStyles.boldLabel); + using (new EditorGUI.IndentLevelScope()) + { + EditorGUILayout.PropertyField(m_HandTrackingCapability, Contents.handTrackingCapability); + } + } + } +} diff --git a/Samples~/XR Device Simulator/Scripts/XRDeviceSimulatorControllerUI.cs.meta b/Editor/Inputs/Simulation/SimulatedDeviceLifecycleManagerEditor.cs.meta similarity index 83% rename from Samples~/XR Device Simulator/Scripts/XRDeviceSimulatorControllerUI.cs.meta rename to Editor/Inputs/Simulation/SimulatedDeviceLifecycleManagerEditor.cs.meta index 84889f48..e72d3cbe 100644 --- a/Samples~/XR Device Simulator/Scripts/XRDeviceSimulatorControllerUI.cs.meta +++ b/Editor/Inputs/Simulation/SimulatedDeviceLifecycleManagerEditor.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: a907ece591e731e49b5d7be45f089972 +guid: b3f1eeafb07a04a10a23db7c26598389 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Editor/Inputs/Simulation/XRDeviceSimulatorEditor.cs b/Editor/Inputs/Simulation/XRDeviceSimulatorEditor.cs index 4a54bcf3..e1aa881c 100644 --- a/Editor/Inputs/Simulation/XRDeviceSimulatorEditor.cs +++ b/Editor/Inputs/Simulation/XRDeviceSimulatorEditor.cs @@ -75,8 +75,6 @@ class XRDeviceSimulatorEditor : BaseInteractionEditor SerializedProperty m_KeyboardTranslateSpace; SerializedProperty m_MouseTranslateSpace; SerializedProperty m_DesiredCursorLockMode; - SerializedProperty m_RemoveOtherHMDDevices; - SerializedProperty m_HandTrackingCapability; SerializedProperty m_DeviceSimulatorUI; // Sensitivity @@ -176,8 +174,6 @@ protected virtual void OnEnable() m_KeyboardTranslateSpace = serializedObject.FindProperty("m_KeyboardTranslateSpace"); m_MouseTranslateSpace = serializedObject.FindProperty("m_MouseTranslateSpace"); m_DesiredCursorLockMode = serializedObject.FindProperty("m_DesiredCursorLockMode"); - m_RemoveOtherHMDDevices = serializedObject.FindProperty("m_RemoveOtherHMDDevices"); - m_HandTrackingCapability = serializedObject.FindProperty("m_HandTrackingCapability"); m_DeviceSimulatorUI = serializedObject.FindProperty("m_DeviceSimulatorUI"); m_KeyboardXTranslateSpeed = serializedObject.FindProperty("m_KeyboardXTranslateSpeed"); @@ -216,6 +212,7 @@ protected virtual void OnEnable() /// protected override void DrawInspector() { + DrawScript(); DrawGlobalActions(); EditorGUILayout.Space(); DrawControllerActions(); @@ -331,9 +328,16 @@ protected virtual void DrawHandActions() using (new EditorGUI.IndentLevelScope()) { EditorGUILayout.PropertyField(m_HandActionAsset); + + // Skip showing the deprecated properties if they have already been cleared. + // This allows users who have not yet upgraded the package sample to see and configure the deprecated properties + // on the old version of the prefab. + if (m_RestingHandExpressionCapture.objectReferenceValue == null && m_SimulatedHandExpressions.arraySize == 0) + return; + using (var check = new EditorGUI.ChangeCheckScope()) { - m_HandActionsExpanded = EditorGUILayout.Foldout(m_HandActionsExpanded, "Hand Actions", true); + m_HandActionsExpanded = EditorGUILayout.Foldout(m_HandActionsExpanded, "Hand Actions (Deprecated)", true); if (check.changed) SessionState.SetBool(k_HandActionsExpandedKey, m_HandActionsExpanded); } @@ -343,6 +347,7 @@ protected virtual void DrawHandActions() using (new EditorGUI.IndentLevelScope()) { + EditorGUILayout.HelpBox("(Deprecated) Use the Simulated Hand Expression Manager component instead of these properties. Update the XR Device Simulator sample in Package Manager or clear these values to remove warning.", MessageType.Warning); EditorGUILayout.PropertyField(m_RestingHandExpressionCapture); EditorGUILayout.PropertyField(m_SimulatedHandExpressions); } @@ -371,8 +376,6 @@ protected virtual void DrawGeneralSimulatorSettings() EditorGUILayout.PropertyField(m_KeyboardTranslateSpace); EditorGUILayout.PropertyField(m_MouseTranslateSpace); EditorGUILayout.PropertyField(m_DesiredCursorLockMode); - EditorGUILayout.PropertyField(m_RemoveOtherHMDDevices); - EditorGUILayout.PropertyField(m_HandTrackingCapability); EditorGUILayout.PropertyField(m_DeviceSimulatorUI); } } diff --git a/Editor/Inputs/Simulation/XRDeviceSimulatorSettingsEditor.cs b/Editor/Inputs/Simulation/XRDeviceSimulatorSettingsEditor.cs index 8d691558..104a1066 100644 --- a/Editor/Inputs/Simulation/XRDeviceSimulatorSettingsEditor.cs +++ b/Editor/Inputs/Simulation/XRDeviceSimulatorSettingsEditor.cs @@ -12,9 +12,12 @@ class XRDeviceSimulatorSettingsEditor : Editor { const string k_PackageName = "com.unity.xr.interaction.toolkit"; const string k_PackageDisplayName = "XR Interaction Toolkit"; - const string k_XRDeviceSimulatorName = "XR Device Simulator"; - const string k_ImportSampleTitle = "Importing " + k_XRDeviceSimulatorName + " sample."; - const string k_ImportSampleMessage = "The " + k_XRDeviceSimulatorName + " sample is going to be imported from the " + k_PackageDisplayName + " package, press \"Ok\" to continue."; + const string k_SampleDisplayName = "XR Device Simulator"; + const string k_ImportSampleTitle = "Importing " + k_SampleDisplayName + " sample."; + const string k_ImportSampleMessage = "The " + k_SampleDisplayName + " sample is going to be imported from the " + k_PackageDisplayName + " package, press \"Ok\" to continue."; + + const string k_XRInteractionSimulatorPrefabName = "XR Interaction Simulator"; + const string k_XRDeviceSimulatorPrefabName = "XR Device Simulator"; const float k_LabelsWidth = 270f; @@ -22,6 +25,8 @@ class XRDeviceSimulatorSettingsEditor : Editor SerializedProperty m_AutomaticallyInstantiateSimulatorPrefab; /// of the backing . SerializedProperty m_AutomaticallyInstantiateInEditorOnly; + /// of the backing . + SerializedProperty m_UseClassic; /// of the backing . SerializedProperty m_SimulatorPrefab; @@ -32,8 +37,8 @@ static class Contents { /// for . public static readonly GUIContent automaticallyInstantiateSimulatorPrefab = - EditorGUIUtility.TrTextContent("Use XR Device Simulator in scenes", - "When enabled, the XR Device Simulator will be automatically created on play mode in your scenes."); + EditorGUIUtility.TrTextContent("Use XR Interaction Simulator in scenes", + "When enabled, the XR Interaction Simulator will be automatically created on play mode in your scenes."); /// for . public static readonly GUIContent automaticallyInstantiateInEditorOnly = @@ -41,16 +46,21 @@ static class Contents "Enable to only automatically create the simulator prefab when running inside the Unity Editor." + " Disable to allow the simulator prefab to also be created in standalone builds."); + /// for . + public static readonly GUIContent useClassic = + EditorGUIUtility.TrTextContent("Use Classic XR Device Simulator", "Enable to automatically use the legacy XR Device Simulator prefab instead."); + /// for . public static readonly GUIContent simulatorPrefab = - EditorGUIUtility.TrTextContent("XR Device Simulator prefab", - "Reference to the XR Device Simulator prefab that will be instantiated at runtime."); + EditorGUIUtility.TrTextContent("XR Interaction Simulator prefab", + "Reference to the XR Interaction Simulator prefab that will be instantiated at runtime."); } void OnEnable() { m_AutomaticallyInstantiateSimulatorPrefab = serializedObject.FindProperty("m_AutomaticallyInstantiateSimulatorPrefab"); m_AutomaticallyInstantiateInEditorOnly = serializedObject.FindProperty("m_AutomaticallyInstantiateInEditorOnly"); + m_UseClassic = serializedObject.FindProperty("m_UseClassic"); m_SimulatorPrefab = serializedObject.FindProperty("m_SimulatorPrefab"); } @@ -68,6 +78,7 @@ public override void OnInspectorGUI() using (new EditorGUI.DisabledScope(!m_AutomaticallyInstantiateSimulatorPrefab.boolValue)) { EditorGUILayout.PropertyField(m_AutomaticallyInstantiateInEditorOnly, Contents.automaticallyInstantiateInEditorOnly); + EditorGUILayout.PropertyField(m_UseClassic, Contents.useClassic); EditorGUILayout.PropertyField(m_SimulatorPrefab, Contents.simulatorPrefab); } @@ -76,7 +87,12 @@ public override void OnInspectorGUI() if (check.changed) { if (m_AutomaticallyInstantiateSimulatorPrefab.boolValue) - LoadXRDeviceSimulatorSampleAsset(); + { + if (m_UseClassic.boolValue) + LoadXRDeviceSimulatorSampleAsset(k_XRDeviceSimulatorPrefabName); + else + LoadXRDeviceSimulatorSampleAsset(k_XRInteractionSimulatorPrefabName); + } else m_SimulatorPrefab.objectReferenceValue = null; @@ -86,12 +102,12 @@ public override void OnInspectorGUI() } } - void LoadXRDeviceSimulatorSampleAsset() + void LoadXRDeviceSimulatorSampleAsset(string simulatorPrefabName) { var packageSamples = Sample.FindByPackage(k_PackageName, string.Empty); if (packageSamples == null) { - Debug.LogError($"Couldn't find samples of the {k_PackageName} package for importing the {k_XRDeviceSimulatorName} sample; aborting.", this); + Debug.LogError($"Couldn't find samples of the {k_PackageName} package for importing the {k_SampleDisplayName} sample; aborting.", this); return; } @@ -99,7 +115,7 @@ void LoadXRDeviceSimulatorSampleAsset() foreach (var packageSample in packageSamples) { - if (packageSample.displayName != k_XRDeviceSimulatorName) + if (packageSample.displayName != k_SampleDisplayName) continue; if (!packageSample.isImported) @@ -121,17 +137,17 @@ void LoadXRDeviceSimulatorSampleAsset() if (!foundXRDeviceSimulatorSample) { - Debug.LogError($"Couldn't find {k_XRDeviceSimulatorName} sample in the {k_PackageDisplayName} package; aborting.", this); + Debug.LogError($"Couldn't find {k_SampleDisplayName} sample in the {k_PackageDisplayName} package; aborting.", this); return; } - const string searchFilter = "\"" + k_XRDeviceSimulatorName + "\""; + var searchFilter = "\"" + simulatorPrefabName + "\""; var foundXRDeviceSimulatorAsset = false; foreach (var guid in AssetDatabase.FindAssets(searchFilter)) { var assetPath = AssetDatabase.GUIDToAssetPath(guid); var simulatorPrefab = AssetDatabase.LoadAssetAtPath(assetPath); - if (simulatorPrefab != null && simulatorPrefab.TryGetComponent(out _)) + if (simulatorPrefab != null && simulatorPrefab.TryGetComponent(out _)) { m_SimulatorPrefab.objectReferenceValue = simulatorPrefab; foundXRDeviceSimulatorAsset = true; @@ -140,7 +156,7 @@ void LoadXRDeviceSimulatorSampleAsset() if (!foundXRDeviceSimulatorAsset) { - Debug.LogError($"Couldn't find the {k_XRDeviceSimulatorName} prefab; has the asset been renamed?", this); + Debug.LogError($"Couldn't find the {simulatorPrefabName} prefab; has the asset been renamed?", this); } } } diff --git a/Editor/Inputs/Simulation/XRInteractionSimulatorEditor.cs b/Editor/Inputs/Simulation/XRInteractionSimulatorEditor.cs new file mode 100644 index 00000000..9e4515d6 --- /dev/null +++ b/Editor/Inputs/Simulation/XRInteractionSimulatorEditor.cs @@ -0,0 +1,386 @@ +using UnityEngine; +using UnityEngine.XR.Interaction.Toolkit.Inputs.Simulation; + +namespace UnityEditor.XR.Interaction.Toolkit.Inputs.Simulation +{ + /// + /// Custom editor for . + /// + [CustomEditor(typeof(XRInteractionSimulator), true), CanEditMultipleObjects] + class XRInteractionSimulatorEditor : BaseInteractionEditor + { + const string k_SimulatorInputsExpandedKey = "XRI." + nameof(XRInteractionSimulatorEditor) + ".SimulatorInputsExpanded"; + const string k_ControllerInputsExpandedKey = "XRI." + nameof(XRInteractionSimulatorEditor) + ".ControllerInputsExpanded"; + const string k_SimulatorSettingsExpandedKey = "XRI." + nameof(XRInteractionSimulatorEditor) + ".SimulatorSettingsExpanded"; + const string k_SensitivityExpandedKey = "XRI." + nameof(XRInteractionSimulatorEditor) + ".SensitivityExpanded"; + const string k_AnalogConfigurationExpandedKey = "XRI." + nameof(XRInteractionSimulatorEditor) + ".AnalogConfigurationExpanded"; + const string k_TrackingStateExpandedKey = "XRI." + nameof(XRInteractionSimulatorEditor) + ".TrackingStateExpanded"; + + // Simulator Inputs + bool m_SimulatorInputsExpanded; + SerializedProperty m_TranslateXInput; + SerializedProperty m_TranslateYInput; + SerializedProperty m_TranslateZInput; + SerializedProperty m_ToggleManipulateLeftInput; + SerializedProperty m_ToggleManipulateRightInput; + SerializedProperty m_ToggleManipulateHeadInput; + SerializedProperty m_CycleDevicesInput; + SerializedProperty m_KeyboardRotationDeltaInput; + SerializedProperty m_ToggleMouseInput; + SerializedProperty m_MouseRotationDeltaInput; + SerializedProperty m_MouseScrollInput; + SerializedProperty m_XConstraintInput; + SerializedProperty m_YConstraintInput; + SerializedProperty m_ZConstraintInput; + SerializedProperty m_ResetInput; + SerializedProperty m_CycleQuickActionInput; + SerializedProperty m_TogglePerformQuickActionInput; + SerializedProperty m_LeftDeviceActionsInput; + SerializedProperty m_TogglePrimary2DAxisTargetInput; + SerializedProperty m_ToggleSecondary2DAxisTargetInput; + + // Controller Inputs + bool m_ControllerInputsExpanded; + SerializedProperty m_Axis2DInput; + SerializedProperty m_GripInput; + SerializedProperty m_TriggerInput; + SerializedProperty m_PrimaryButtonInput; + SerializedProperty m_SecondaryButtonInput; + SerializedProperty m_MenuInput; + SerializedProperty m_Primary2DAxisClickInput; + SerializedProperty m_Secondary2DAxisClickInput; + SerializedProperty m_Primary2DAxisTouchInput; + SerializedProperty m_Secondary2DAxisTouchInput; + SerializedProperty m_PrimaryTouchInput; + SerializedProperty m_SecondaryTouchInput; + SerializedProperty m_QuickActionControllerInputModes; + + // Simulator Settings + bool m_SimulatorSettingsExpanded; + SerializedProperty m_CameraTransform; + SerializedProperty m_DeviceLifecycleManager; + SerializedProperty m_HandExpressionManager; + SerializedProperty m_TranslateSpace; + SerializedProperty m_InteractionSimulatorUI; + + // Sensitivity + bool m_SensitivityExpanded; + SerializedProperty m_TranslateXSpeed; + SerializedProperty m_TranslateYSpeed; + SerializedProperty m_TranslateZSpeed; + SerializedProperty m_BodyTranslateMultiplier; + SerializedProperty m_RotateXSensitivity; + SerializedProperty m_RotateYSensitivity; + SerializedProperty m_MouseScrollRotateSensitivity; + SerializedProperty m_RotateYInvert; + + // Analog Configuration + bool m_AnalogConfigurationExpanded; + SerializedProperty m_GripAmount; + SerializedProperty m_TriggerAmount; + + // Tracking State + bool m_TrackingStateExpanded; + SerializedProperty m_HMDIsTracked; + SerializedProperty m_HMDTrackingState; + SerializedProperty m_LeftControllerIsTracked; + SerializedProperty m_LeftControllerTrackingState; + SerializedProperty m_RightControllerIsTracked; + SerializedProperty m_RightControllerTrackingState; + SerializedProperty m_LeftHandIsTracked; + SerializedProperty m_RightHandIsTracked; + + /// + /// Contents of GUI elements used by this editor. + /// + protected static class Contents + { + public static readonly GUIStyle foldoutTitleStyle = new GUIStyle(EditorStyles.foldout) + { + fontStyle = FontStyle.Bold, + }; + } + + /// + /// This function is called when the object becomes enabled and active. + /// + /// + protected virtual void OnEnable() + { + m_TranslateXInput = serializedObject.FindProperty("m_TranslateXInput"); + m_TranslateYInput = serializedObject.FindProperty("m_TranslateYInput"); + m_TranslateZInput = serializedObject.FindProperty("m_TranslateZInput"); + m_ToggleManipulateLeftInput = serializedObject.FindProperty("m_ToggleManipulateLeftInput"); + m_ToggleManipulateRightInput = serializedObject.FindProperty("m_ToggleManipulateRightInput"); + m_ToggleManipulateHeadInput = serializedObject.FindProperty("m_ToggleManipulateHeadInput"); + m_CycleDevicesInput = serializedObject.FindProperty("m_CycleDevicesInput"); + m_KeyboardRotationDeltaInput = serializedObject.FindProperty("m_KeyboardRotationDeltaInput"); + m_ToggleMouseInput = serializedObject.FindProperty("m_ToggleMouseInput"); + m_MouseRotationDeltaInput = serializedObject.FindProperty("m_MouseRotationDeltaInput"); + m_MouseScrollInput = serializedObject.FindProperty("m_MouseScrollInput"); + m_XConstraintInput = serializedObject.FindProperty("m_XConstraintInput"); + m_YConstraintInput = serializedObject.FindProperty("m_YConstraintInput"); + m_ZConstraintInput = serializedObject.FindProperty("m_ZConstraintInput"); + m_ResetInput = serializedObject.FindProperty("m_ResetInput"); + m_CycleQuickActionInput = serializedObject.FindProperty("m_CycleQuickActionInput"); + m_TogglePerformQuickActionInput = serializedObject.FindProperty("m_TogglePerformQuickActionInput"); + m_LeftDeviceActionsInput = serializedObject.FindProperty("m_LeftDeviceActionsInput"); + m_TogglePrimary2DAxisTargetInput = serializedObject.FindProperty("m_TogglePrimary2DAxisTargetInput"); + m_ToggleSecondary2DAxisTargetInput = serializedObject.FindProperty("m_ToggleSecondary2DAxisTargetInput"); + + m_Axis2DInput = serializedObject.FindProperty("m_Axis2DInput"); + m_GripInput = serializedObject.FindProperty("m_GripInput"); + m_TriggerInput = serializedObject.FindProperty("m_TriggerInput"); + m_PrimaryButtonInput = serializedObject.FindProperty("m_PrimaryButtonInput"); + m_SecondaryButtonInput = serializedObject.FindProperty("m_SecondaryButtonInput"); + m_MenuInput = serializedObject.FindProperty("m_MenuInput"); + m_Primary2DAxisClickInput = serializedObject.FindProperty("m_Primary2DAxisClickInput"); + m_Secondary2DAxisClickInput = serializedObject.FindProperty("m_Secondary2DAxisClickInput"); + m_Primary2DAxisTouchInput = serializedObject.FindProperty("m_Primary2DAxisTouchInput"); + m_Secondary2DAxisTouchInput = serializedObject.FindProperty("m_Secondary2DAxisTouchInput"); + m_PrimaryTouchInput = serializedObject.FindProperty("m_PrimaryTouchInput"); + m_SecondaryTouchInput = serializedObject.FindProperty("m_SecondaryTouchInput"); + m_QuickActionControllerInputModes = serializedObject.FindProperty("m_QuickActionControllerInputModes"); + + m_CameraTransform = serializedObject.FindProperty("m_CameraTransform"); + m_DeviceLifecycleManager = serializedObject.FindProperty("m_DeviceLifecycleManager"); + m_HandExpressionManager = serializedObject.FindProperty("m_HandExpressionManager"); + m_TranslateSpace = serializedObject.FindProperty("m_TranslateSpace"); + m_InteractionSimulatorUI = serializedObject.FindProperty("m_InteractionSimulatorUI"); + + m_TranslateXSpeed = serializedObject.FindProperty("m_TranslateXSpeed"); + m_TranslateYSpeed = serializedObject.FindProperty("m_TranslateYSpeed"); + m_TranslateZSpeed = serializedObject.FindProperty("m_TranslateZSpeed"); + m_BodyTranslateMultiplier = serializedObject.FindProperty("m_BodyTranslateMultiplier"); + m_RotateXSensitivity = serializedObject.FindProperty("m_RotateXSensitivity"); + m_RotateYSensitivity = serializedObject.FindProperty("m_RotateYSensitivity"); + m_MouseScrollRotateSensitivity = serializedObject.FindProperty("m_MouseScrollRotateSensitivity"); + m_RotateYInvert = serializedObject.FindProperty("m_RotateYInvert"); + + m_GripAmount = serializedObject.FindProperty("m_GripAmount"); + m_TriggerAmount = serializedObject.FindProperty("m_TriggerAmount"); + + m_HMDIsTracked = serializedObject.FindProperty("m_HMDIsTracked"); + m_HMDTrackingState = serializedObject.FindProperty("m_HMDTrackingState"); + m_LeftControllerIsTracked = serializedObject.FindProperty("m_LeftControllerIsTracked"); + m_LeftControllerTrackingState = serializedObject.FindProperty("m_LeftControllerTrackingState"); + m_RightControllerIsTracked = serializedObject.FindProperty("m_RightControllerIsTracked"); + m_RightControllerTrackingState = serializedObject.FindProperty("m_RightControllerTrackingState"); + m_LeftHandIsTracked = serializedObject.FindProperty("m_LeftHandIsTracked"); + m_RightHandIsTracked = serializedObject.FindProperty("m_RightHandIsTracked"); + + m_SimulatorInputsExpanded = SessionState.GetBool(k_SimulatorInputsExpandedKey, false); + m_ControllerInputsExpanded = SessionState.GetBool(k_ControllerInputsExpandedKey, false); + m_SimulatorSettingsExpanded = SessionState.GetBool(k_SimulatorSettingsExpandedKey, false); + m_SensitivityExpanded = SessionState.GetBool(k_SensitivityExpandedKey, false); + m_AnalogConfigurationExpanded = SessionState.GetBool(k_AnalogConfigurationExpandedKey, false); + m_TrackingStateExpanded = SessionState.GetBool(k_TrackingStateExpandedKey, false); + } + + /// + protected override void DrawInspector() + { + DrawScript(); + DrawInputs(); + EditorGUILayout.Space(); + DrawGeneralSimulatorSettings(); + EditorGUILayout.Space(); + DrawSensitivitySettings(); + EditorGUILayout.Space(); + DrawAnalogConfigurationSettings(); + EditorGUILayout.Space(); + DrawTrackingStateSettings(); + EditorGUILayout.Space(); + DrawDerivedProperties(); + } + + /// + /// Draw the property fields related to input readers. + /// + protected virtual void DrawInputs() + { + EditorGUILayout.LabelField("Inputs", EditorStyles.boldLabel); + using (new EditorGUI.IndentLevelScope()) + { + DrawSimulatorInputs(); + DrawControllerInputs(); + EditorGUILayout.PropertyField(m_QuickActionControllerInputModes); + } + } + + /// + /// Draw the property fields related to simulator input readers. + /// + protected virtual void DrawSimulatorInputs() + { + using (var check = new EditorGUI.ChangeCheckScope()) + { + m_SimulatorInputsExpanded = EditorGUILayout.Foldout(m_SimulatorInputsExpanded, EditorGUIUtility.TrTempContent("Simulator Inputs"), true); + if (check.changed) + SessionState.SetBool(k_SimulatorInputsExpandedKey, m_SimulatorInputsExpanded); + } + + if (!m_SimulatorInputsExpanded) + return; + + using (new EditorGUI.IndentLevelScope()) + { + EditorGUILayout.PropertyField(m_TranslateXInput); + EditorGUILayout.PropertyField(m_TranslateYInput); + EditorGUILayout.PropertyField(m_TranslateZInput); + EditorGUILayout.PropertyField(m_ToggleManipulateLeftInput); + EditorGUILayout.PropertyField(m_ToggleManipulateRightInput); + EditorGUILayout.PropertyField(m_ToggleManipulateHeadInput); + EditorGUILayout.PropertyField(m_CycleDevicesInput); + EditorGUILayout.PropertyField(m_KeyboardRotationDeltaInput); + EditorGUILayout.PropertyField(m_ToggleMouseInput); + EditorGUILayout.PropertyField(m_MouseRotationDeltaInput); + EditorGUILayout.PropertyField(m_MouseScrollInput); + EditorGUILayout.PropertyField(m_XConstraintInput); + EditorGUILayout.PropertyField(m_YConstraintInput); + EditorGUILayout.PropertyField(m_ZConstraintInput); + EditorGUILayout.PropertyField(m_ResetInput); + EditorGUILayout.PropertyField(m_CycleQuickActionInput); + EditorGUILayout.PropertyField(m_TogglePerformQuickActionInput); + EditorGUILayout.PropertyField(m_LeftDeviceActionsInput); + EditorGUILayout.PropertyField(m_TogglePrimary2DAxisTargetInput); + EditorGUILayout.PropertyField(m_ToggleSecondary2DAxisTargetInput); + } + } + + /// + /// Draw the property fields related to controller input readers. + /// + protected virtual void DrawControllerInputs() + { + using (var check = new EditorGUI.ChangeCheckScope()) + { + m_ControllerInputsExpanded = EditorGUILayout.Foldout(m_ControllerInputsExpanded, EditorGUIUtility.TrTempContent("Controller Inputs"), true); + if (check.changed) + SessionState.SetBool(k_ControllerInputsExpandedKey, m_ControllerInputsExpanded); + } + + if (!m_ControllerInputsExpanded) + return; + + using (new EditorGUI.IndentLevelScope()) + { + EditorGUILayout.PropertyField(m_Axis2DInput); + EditorGUILayout.PropertyField(m_GripInput); + EditorGUILayout.PropertyField(m_TriggerInput); + EditorGUILayout.PropertyField(m_PrimaryButtonInput); + EditorGUILayout.PropertyField(m_SecondaryButtonInput); + EditorGUILayout.PropertyField(m_MenuInput); + EditorGUILayout.PropertyField(m_Primary2DAxisClickInput); + EditorGUILayout.PropertyField(m_Secondary2DAxisClickInput); + EditorGUILayout.PropertyField(m_Primary2DAxisTouchInput); + EditorGUILayout.PropertyField(m_Secondary2DAxisTouchInput); + EditorGUILayout.PropertyField(m_PrimaryTouchInput); + EditorGUILayout.PropertyField(m_SecondaryTouchInput); + } + } + + /// + /// Draw the property fields related to general simulator settings. + /// + protected virtual void DrawGeneralSimulatorSettings() + { + using (var check = new EditorGUI.ChangeCheckScope()) + { + m_SimulatorSettingsExpanded = EditorGUILayout.Foldout(m_SimulatorSettingsExpanded, EditorGUIUtility.TrTempContent("Simulator Settings"), true, Contents.foldoutTitleStyle); + if (check.changed) + SessionState.SetBool(k_SimulatorSettingsExpandedKey, m_SimulatorSettingsExpanded); + } + + if (!m_SimulatorSettingsExpanded) + return; + + using (new EditorGUI.IndentLevelScope()) + { + EditorGUILayout.PropertyField(m_CameraTransform); + EditorGUILayout.PropertyField(m_DeviceLifecycleManager); + EditorGUILayout.PropertyField(m_HandExpressionManager); + EditorGUILayout.PropertyField(m_TranslateSpace); + EditorGUILayout.PropertyField(m_InteractionSimulatorUI); + } + } + + /// + /// Draw the property fields related to sensitivity settings. + /// + protected virtual void DrawSensitivitySettings() + { + using (var check = new EditorGUI.ChangeCheckScope()) + { + m_SensitivityExpanded = EditorGUILayout.Foldout(m_SensitivityExpanded, EditorGUIUtility.TrTempContent("Sensitivity"), true, Contents.foldoutTitleStyle); + if (check.changed) + SessionState.SetBool(k_SensitivityExpandedKey, m_SensitivityExpanded); + } + + if (!m_SensitivityExpanded) + return; + + using (new EditorGUI.IndentLevelScope()) + { + EditorGUILayout.PropertyField(m_TranslateXSpeed); + EditorGUILayout.PropertyField(m_TranslateYSpeed); + EditorGUILayout.PropertyField(m_TranslateZSpeed); + EditorGUILayout.PropertyField(m_BodyTranslateMultiplier); + EditorGUILayout.PropertyField(m_RotateXSensitivity); + EditorGUILayout.PropertyField(m_RotateYSensitivity); + EditorGUILayout.PropertyField(m_MouseScrollRotateSensitivity); + EditorGUILayout.PropertyField(m_RotateYInvert); + } + } + + /// + /// Draw the property fields related to analog configuration. + /// + protected virtual void DrawAnalogConfigurationSettings() + { + using (var check = new EditorGUI.ChangeCheckScope()) + { + m_AnalogConfigurationExpanded = EditorGUILayout.Foldout(m_AnalogConfigurationExpanded, EditorGUIUtility.TrTempContent("Analog Configuration"), true, Contents.foldoutTitleStyle); + if (check.changed) + SessionState.SetBool(k_AnalogConfigurationExpandedKey, m_AnalogConfigurationExpanded); + } + + if (!m_AnalogConfigurationExpanded) + return; + + using (new EditorGUI.IndentLevelScope()) + { + EditorGUILayout.PropertyField(m_GripAmount); + EditorGUILayout.PropertyField(m_TriggerAmount); + } + } + + /// + /// Draw the property fields related to tracking state. + /// + protected virtual void DrawTrackingStateSettings() + { + using (var check = new EditorGUI.ChangeCheckScope()) + { + m_TrackingStateExpanded = EditorGUILayout.Foldout(m_TrackingStateExpanded, EditorGUIUtility.TrTempContent("Tracking State"), true, Contents.foldoutTitleStyle); + if (check.changed) + SessionState.SetBool(k_TrackingStateExpandedKey, m_TrackingStateExpanded); + } + + if (!m_TrackingStateExpanded) + return; + + using (new EditorGUI.IndentLevelScope()) + { + EditorGUILayout.PropertyField(m_HMDIsTracked); + EditorGUILayout.PropertyField(m_HMDTrackingState); + EditorGUILayout.PropertyField(m_LeftControllerIsTracked); + EditorGUILayout.PropertyField(m_LeftControllerTrackingState); + EditorGUILayout.PropertyField(m_RightControllerIsTracked); + EditorGUILayout.PropertyField(m_RightControllerTrackingState); + EditorGUILayout.PropertyField(m_LeftHandIsTracked); + EditorGUILayout.PropertyField(m_RightHandIsTracked); + } + } + } +} diff --git a/Editor/Inputs/Simulation/XRInteractionSimulatorEditor.cs.meta b/Editor/Inputs/Simulation/XRInteractionSimulatorEditor.cs.meta new file mode 100644 index 00000000..41cbf684 --- /dev/null +++ b/Editor/Inputs/Simulation/XRInteractionSimulatorEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 172eab825436d48a4bb2b3c4a954fff8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Interaction/Attachment.meta b/Editor/Interaction/Attachment.meta new file mode 100644 index 00000000..7cd68e53 --- /dev/null +++ b/Editor/Interaction/Attachment.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4c3af9f409979da4b90d1fd213b8415d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Interaction/Attachment/InteractionAttachControllerEditor.cs b/Editor/Interaction/Attachment/InteractionAttachControllerEditor.cs new file mode 100644 index 00000000..c9dfbf6b --- /dev/null +++ b/Editor/Interaction/Attachment/InteractionAttachControllerEditor.cs @@ -0,0 +1,281 @@ +using UnityEngine; +using UnityEngine.XR.Interaction.Toolkit.Attachment; + +namespace UnityEditor.XR.Interaction.Toolkit.Attachment +{ + /// + /// Custom editor for an . + /// + [CustomEditor(typeof(InteractionAttachController), true), CanEditMultipleObjects] + public class InteractionAttachControllerEditor : BaseInteractionEditor + { + /// of the backing . + protected SerializedProperty m_TransformToFollow; + /// of the backing . + protected SerializedProperty m_MotionStabilizationMode; + /// of the backing . + protected SerializedProperty m_PositionStabilization; + /// of the backing . + protected SerializedProperty m_AngleStabilization; + /// of the backing . + protected SerializedProperty m_SmoothOffset; + /// of the backing . + protected SerializedProperty m_SmoothingSpeed; + /// of the backing . + protected SerializedProperty m_UseDistanceBasedVelocityScaling; + /// of the backing . + protected SerializedProperty m_UseMomentum; + /// of the backing . + protected SerializedProperty m_MomentumDecayScale; + /// of the backing . + protected SerializedProperty m_MomentumDecayScaleFromInput; + /// of the backing . + protected SerializedProperty m_ZVelocityRampThreshold; + /// of the backing . + protected SerializedProperty m_PullVelocityBias; + /// of the backing . + protected SerializedProperty m_PushVelocityBias; + /// of the backing . + protected SerializedProperty m_MinAdditionalVelocityScalar; + /// of the backing . + protected SerializedProperty m_MaxAdditionalVelocityScalar; + /// of the backing . + protected SerializedProperty m_UseManipulationInput; + /// of the backing . + protected SerializedProperty m_ManipulationInput; + /// of the backing . + protected SerializedProperty m_ManipulationXAxisMode; + /// of the backing . + protected SerializedProperty m_ManipulationYAxisMode; + /// of the backing . + protected SerializedProperty m_CombineManipulationAxes; + /// of the backing . + protected SerializedProperty m_ManipulationTranslateSpeed; + /// of the backing . + protected SerializedProperty m_ManipulationRotateSpeed; + /// of the backing . + protected SerializedProperty m_ManipulationRotateReferenceFrame; + /// of the backing . + protected SerializedProperty m_EnableDebugLines; + + /// + /// Contents of GUI elements used by this editor. + /// + protected static class Contents + { + /// for . + public static readonly GUIContent transformToFollow = EditorGUIUtility.TrTextContent("Transform To Follow", "The transform that this anchor should follow."); + /// for . + public static readonly GUIContent motionStabilizationMode = EditorGUIUtility.TrTextContent("Motion Stabilization Mode", "The stabilization mode for the motion of the anchor. Determines how the anchor's position and rotation are stabilized relative to the followed transform."); + /// for . + public static readonly GUIContent positionStabilization = EditorGUIUtility.TrTextContent("Position Stabilization", "Factor for stabilizing position. Larger values increase the range of stabilization, making the effect more pronounced over a greater distance."); + /// for . + public static readonly GUIContent angleStabilization = EditorGUIUtility.TrTextContent("Angle Stabilization", "Factor for stabilizing angle. Larger values increase the range of stabilization, making the effect more pronounced over a greater angle."); + /// for . + public static readonly GUIContent smoothOffset = EditorGUIUtility.TrTextContent("Smooth Offset", "If true offset will be smoothed over time in XR Origin space."); + /// for . + public static readonly GUIContent smoothingSpeed = EditorGUIUtility.TrTextContent("Smoothing Speed", "Smoothing speed for the offset anchor child."); + /// for . + public static readonly GUIContent useDistanceBasedVelocityScaling = EditorGUIUtility.TrTextContent("Use Distance Based Velocity Scaling", "Whether to use distance-based velocity scaling for anchor movement."); + /// for . + public static readonly GUIContent useMomentum = EditorGUIUtility.TrTextContent("Use Momentum", "Whether momentum is used when distance scaling is in effect."); + /// for . + public static readonly GUIContent momentumDecayScale = EditorGUIUtility.TrTextContent("Decay: Physical Movement", "Decay scalar for momentum when triggered with push/pull gesture. Higher values will cause momentum to decay faster."); + /// for . + public static readonly GUIContent momentumDecayScaleFromInput = EditorGUIUtility.TrTextContent("Decay: Input", "Decay scalar for momentum when triggered with manipulation input. Higher values will cause momentum to decay faster."); + /// for . + public static readonly GUIContent zVelocityRampThreshold = EditorGUIUtility.TrTextContent("Z Velocity Ramp Threshold", "Scales anchor velocity from 0 to 1 based on z-velocity's deviation below a threshold. 0 means no scaling."); + /// for . + public static readonly GUIContent pullVelocityBias = EditorGUIUtility.TrTextContent("Pull Velocity Bias", "Adjusts the object's velocity calculation when moving towards the user. It modifies the distance-based calculation that determines the velocity scalar."); + /// for . + public static readonly GUIContent pushVelocityBias = EditorGUIUtility.TrTextContent("Push Velocity Bias", "Adjusts the object's velocity calculation when moving away from the user. It modifies the distance-based calculation that determines the velocity scalar."); + /// for . + public static readonly GUIContent minAdditionalVelocityScalar = EditorGUIUtility.TrTextContent("Min Additional Velocity Scalar", "Minimum additional velocity scaling factor for movement, interpolated by a quad bezier curve."); + /// for . + public static readonly GUIContent maxAdditionalVelocityScalar = EditorGUIUtility.TrTextContent("Max Additional Velocity Scalar", "Maximum additional velocity scaling factor for movement, interpolated by a quad bezier curve."); + /// for . + public static readonly GUIContent useManipulationInput = EditorGUIUtility.TrTextContent("Use Manipulation Input", "Whether to use manipulation input to move the anchor."); + /// for . + public static readonly GUIContent manipulationInput = EditorGUIUtility.TrTextContent("Manipulation Input", "The input used to manipulate the anchor."); + /// for . + public static readonly GUIContent manipulationXAxisMode = EditorGUIUtility.TrTextContent("X-axis Mode", "What the x-axis (left/right) of the manipulation input does when controlling the anchor."); + /// for . + public static readonly GUIContent manipulationYAxisMode = EditorGUIUtility.TrTextContent("Y-axis Mode", "What the y-axis (up/down) of the manipulation input does when controlling the anchor."); + /// for . + public static readonly GUIContent combineManipulationAxes = EditorGUIUtility.TrTextContent("Combine Manipulation Axes", "Whether to allow simultaneous manipulation of both axes. Disable to allow only one axis of manipulation input at a time based on which axis is most actuated."); + /// for . + public static readonly GUIContent manipulationTranslateSpeed = EditorGUIUtility.TrTextContent("Translate Speed", "Speed at which the anchor is translated when using manipulation input."); + /// for . + public static readonly GUIContent manipulationRotateSpeed = EditorGUIUtility.TrTextContent("Rotate Speed", "Speed at which the anchor is rotated when using manipulation input."); + /// for . + public static readonly GUIContent manipulationRotateReferenceFrame = EditorGUIUtility.TrTextContent("Rotate Reference Frame", "The optional reference frame to define the rotation axes when the anchor is rotated when using manipulation input."); + /// for . + public static readonly GUIContent enableDebugLines = EditorGUIUtility.TrTextContent("Enable Debug Lines", "Enable debug lines for the attach transform offset and velocity vector."); + + /// for the header of the stabilization parameters section. + public static readonly GUIContent stabilizationParametersHeader = EditorGUIUtility.TrTextContent("Stabilization Parameters"); + /// for the header of the smoothing settings section. + public static readonly GUIContent smoothingSettingsHeader = EditorGUIUtility.TrTextContent("Smoothing Settings"); + /// for the header of the anchor movement section. + public static readonly GUIContent anchorMovementHeader = EditorGUIUtility.TrTextContent("Anchor Movement"); + /// for the header of the anchor movement parameters section. + public static readonly GUIContent anchorMovementParametersHeader = EditorGUIUtility.TrTextContent("Anchor Movement Parameters"); + /// for the header of the debug section. + public static readonly GUIContent debugConfigurationHeader = EditorGUIUtility.TrTextContent("Debug Configuration"); + } + + /// + /// See . + /// + protected void OnEnable() + { + m_TransformToFollow = serializedObject.FindProperty("m_TransformToFollow"); + m_MotionStabilizationMode = serializedObject.FindProperty("m_MotionStabilizationMode"); + m_PositionStabilization = serializedObject.FindProperty("m_PositionStabilization"); + m_AngleStabilization = serializedObject.FindProperty("m_AngleStabilization"); + m_SmoothOffset = serializedObject.FindProperty("m_SmoothOffset"); + m_SmoothingSpeed = serializedObject.FindProperty("m_SmoothingSpeed"); + m_UseDistanceBasedVelocityScaling = serializedObject.FindProperty("m_UseDistanceBasedVelocityScaling"); + m_UseMomentum = serializedObject.FindProperty("m_UseMomentum"); + m_MomentumDecayScale = serializedObject.FindProperty("m_MomentumDecayScale"); + m_MomentumDecayScaleFromInput = serializedObject.FindProperty("m_MomentumDecayScaleFromInput"); + m_ZVelocityRampThreshold = serializedObject.FindProperty("m_ZVelocityRampThreshold"); + m_PullVelocityBias = serializedObject.FindProperty("m_PullVelocityBias"); + m_PushVelocityBias = serializedObject.FindProperty("m_PushVelocityBias"); + m_MinAdditionalVelocityScalar = serializedObject.FindProperty("m_MinAdditionalVelocityScalar"); + m_MaxAdditionalVelocityScalar = serializedObject.FindProperty("m_MaxAdditionalVelocityScalar"); + m_UseManipulationInput = serializedObject.FindProperty("m_UseManipulationInput"); + m_ManipulationInput = serializedObject.FindProperty("m_ManipulationInput"); + m_ManipulationXAxisMode = serializedObject.FindProperty("m_ManipulationXAxisMode"); + m_ManipulationYAxisMode = serializedObject.FindProperty("m_ManipulationYAxisMode"); + m_CombineManipulationAxes = serializedObject.FindProperty("m_CombineManipulationAxes"); + m_ManipulationTranslateSpeed = serializedObject.FindProperty("m_ManipulationTranslateSpeed"); + m_ManipulationRotateSpeed = serializedObject.FindProperty("m_ManipulationRotateSpeed"); + m_ManipulationRotateReferenceFrame = serializedObject.FindProperty("m_ManipulationRotateReferenceFrame"); + m_EnableDebugLines = serializedObject.FindProperty("m_EnableDebugLines"); + } + + /// + /// + /// + /// + protected override void DrawInspector() + { + DrawBeforeProperties(); + DrawProperties(); + DrawDerivedProperties(); + } + + /// + /// This method is automatically called by to + /// draw the section of the custom inspector before . + /// By default, this draws the read-only Script property. + /// + protected virtual void DrawBeforeProperties() + { + DrawScript(); + } + + /// + /// This method is automatically called by to + /// draw the property fields. Override this method to customize the + /// properties shown in the Inspector. This is typically the method overridden + /// when a derived behavior adds additional serialized properties + /// that should be displayed in the Inspector. + /// + protected virtual void DrawProperties() + { + EditorGUILayout.PropertyField(m_TransformToFollow, Contents.transformToFollow); + + // Stabilization Parameters + EditorGUILayout.Space(); + EditorGUILayout.LabelField(Contents.stabilizationParametersHeader, EditorStyles.boldLabel); + EditorGUILayout.PropertyField(m_MotionStabilizationMode, Contents.motionStabilizationMode); + if (m_MotionStabilizationMode.intValue != (int)MotionStabilizationMode.Never) + { + using (new EditorGUI.IndentLevelScope()) + { + EditorGUILayout.PropertyField(m_PositionStabilization, Contents.positionStabilization); + EditorGUILayout.PropertyField(m_AngleStabilization, Contents.angleStabilization); + } + } + + // Smoothing Settings + EditorGUILayout.Space(); + EditorGUILayout.LabelField(Contents.smoothingSettingsHeader, EditorStyles.boldLabel); + EditorGUILayout.PropertyField(m_SmoothOffset, Contents.smoothOffset); + if (m_SmoothOffset.boolValue) + { + using (new EditorGUI.IndentLevelScope()) + { + EditorGUILayout.PropertyField(m_SmoothingSpeed, Contents.smoothingSpeed); + } + } + + // Anchor Movement + EditorGUILayout.Space(); + EditorGUILayout.LabelField(Contents.anchorMovementHeader, EditorStyles.boldLabel); + using (new EditorGUI.IndentLevelScope()) + { + EditorGUILayout.PropertyField(m_UseDistanceBasedVelocityScaling, Contents.useDistanceBasedVelocityScaling); + EditorGUILayout.PropertyField(m_UseManipulationInput, Contents.useManipulationInput); + if (m_UseManipulationInput.boolValue) + { + using (new EditorGUI.IndentLevelScope()) + { + EditorGUILayout.PropertyField(m_ManipulationInput, Contents.manipulationInput); + EditorGUILayout.PropertyField(m_ManipulationXAxisMode, Contents.manipulationXAxisMode); + EditorGUILayout.PropertyField(m_ManipulationYAxisMode, Contents.manipulationYAxisMode); + EditorGUILayout.PropertyField(m_CombineManipulationAxes, Contents.combineManipulationAxes); + + if ((InteractionAttachController.ManipulationYAxisMode)m_ManipulationYAxisMode.intValue == InteractionAttachController.ManipulationYAxisMode.Translate) + { + EditorGUILayout.PropertyField(m_ManipulationTranslateSpeed, Contents.manipulationTranslateSpeed); + } + + if ((InteractionAttachController.ManipulationXAxisMode)m_ManipulationXAxisMode.intValue == InteractionAttachController.ManipulationXAxisMode.HorizontalRotation || + (InteractionAttachController.ManipulationYAxisMode)m_ManipulationYAxisMode.intValue == InteractionAttachController.ManipulationYAxisMode.VerticalRotation) + { + EditorGUILayout.PropertyField(m_ManipulationRotateSpeed, Contents.manipulationRotateSpeed); + EditorGUILayout.PropertyField(m_ManipulationRotateReferenceFrame, Contents.manipulationRotateReferenceFrame); + } + } + } + + // Anchor Movement Parameters + if (m_UseDistanceBasedVelocityScaling.boolValue || m_UseManipulationInput.boolValue) + { + EditorGUILayout.Space(); + EditorGUILayout.LabelField(Contents.anchorMovementParametersHeader, EditorStyles.boldLabel); + EditorGUILayout.PropertyField(m_UseMomentum, Contents.useMomentum); + if (m_UseMomentum.boolValue) + { + using (new EditorGUI.IndentLevelScope()) + { + using (new EditorGUI.DisabledScope(!m_UseDistanceBasedVelocityScaling.boolValue)) + { + EditorGUILayout.PropertyField(m_MomentumDecayScale, Contents.momentumDecayScale); + } + + using (new EditorGUI.DisabledScope(!m_UseManipulationInput.boolValue)) + { + EditorGUILayout.PropertyField(m_MomentumDecayScaleFromInput, Contents.momentumDecayScaleFromInput); + } + } + } + + EditorGUILayout.PropertyField(m_ZVelocityRampThreshold, Contents.zVelocityRampThreshold); + EditorGUILayout.PropertyField(m_PullVelocityBias, Contents.pullVelocityBias); + EditorGUILayout.PropertyField(m_PushVelocityBias, Contents.pushVelocityBias); + EditorGUILayout.PropertyField(m_MinAdditionalVelocityScalar, Contents.minAdditionalVelocityScalar); + EditorGUILayout.PropertyField(m_MaxAdditionalVelocityScalar, Contents.maxAdditionalVelocityScalar); + } + } + + // Debug Configuration + EditorGUILayout.Space(); + EditorGUILayout.LabelField(Contents.debugConfigurationHeader, EditorStyles.boldLabel); + EditorGUILayout.PropertyField(m_EnableDebugLines, Contents.enableDebugLines); + } + } +} diff --git a/Editor/Interaction/Attachment/InteractionAttachControllerEditor.cs.meta b/Editor/Interaction/Attachment/InteractionAttachControllerEditor.cs.meta new file mode 100644 index 00000000..725ff7d2 --- /dev/null +++ b/Editor/Interaction/Attachment/InteractionAttachControllerEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c73731779ec797244be8804e7f499355 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Interaction/Controllers/XRControllerRecordingEditor.cs b/Editor/Interaction/Controllers/XRControllerRecordingEditor.cs index bc11afdf..cfa2afb4 100644 --- a/Editor/Interaction/Controllers/XRControllerRecordingEditor.cs +++ b/Editor/Interaction/Controllers/XRControllerRecordingEditor.cs @@ -13,13 +13,13 @@ public class XRControllerRecordingEditor : BaseInteractionEditor protected const string k_ValueFormat = "0.#"; /// of the .m_SelectActivatedInFirstFrame. - SerializedProperty m_SelectActivatedInFirstFrame; + protected SerializedProperty m_SelectActivatedInFirstFrame; /// of the .m_ActivateActivatedInFirstFrame. - SerializedProperty m_ActivateActivatedInFirstFrame; + protected SerializedProperty m_ActivateActivatedInFirstFrame; /// of the .m_FirstUIPressActivatedInFirstFrame. - SerializedProperty m_FirstUIPressActivatedInFirstFrame; + protected SerializedProperty m_FirstUIPressActivatedInFirstFrame; /// of the backing . - SerializedProperty m_Frames; + protected SerializedProperty m_Frames; XRControllerRecording m_ControllerRecording; diff --git a/Editor/Interaction/Interactors/Visuals/XRInteractorLineVisualEditor.cs b/Editor/Interaction/Interactors/Visuals/XRInteractorLineVisualEditor.cs index bb181b0d..f11d7aa9 100644 --- a/Editor/Interaction/Interactors/Visuals/XRInteractorLineVisualEditor.cs +++ b/Editor/Interaction/Interactors/Visuals/XRInteractorLineVisualEditor.cs @@ -50,7 +50,7 @@ public class XRInteractorLineVisualEditor : BaseInteractionEditor /// of the backing . protected SerializedProperty m_LineBendRatio; /// of the backing . - SerializedProperty m_BendingEnabledInteractionLayers; + protected SerializedProperty m_BendingEnabledInteractionLayers; /// of the backing . protected SerializedProperty m_OverrideInteractorLineOrigin; /// of the backing . @@ -117,7 +117,7 @@ protected static class Contents /// for . public static readonly GUIContent lineBendRatio = EditorGUIUtility.TrTextContent("Line Bend Ratio", "When line is bent because target end point is out of line with the ray or snap volume is in use, this ratio determines what the bend point is. A value of 1 means the line will not bend."); /// for . - internal static readonly GUIContent bendingEnabledInteractionLayers = EditorGUIUtility.TrTextContent("Bending Enabled Interaction Layers", "Interaction layers on which the line visuals are allowed to bend towards the attach transform. Snap volumes will still always bend visuals."); + public static readonly GUIContent bendingEnabledInteractionLayers = EditorGUIUtility.TrTextContent("Bending Enabled Interaction Layers", "Interaction layers on which the line visuals are allowed to bend towards the attach transform. Snap volumes will still always bend visuals."); /// for . public static readonly GUIContent overrideInteractorLineOrigin = EditorGUIUtility.TrTextContent("Override Line Origin", "Controls whether to use a different Transform as the starting position and direction of the line."); /// for . diff --git a/Editor/Interaction/Interactors/XRRayInteractorEditor.cs b/Editor/Interaction/Interactors/XRRayInteractorEditor.cs index 3022be50..98bd0df6 100644 --- a/Editor/Interaction/Interactors/XRRayInteractorEditor.cs +++ b/Editor/Interaction/Interactors/XRRayInteractorEditor.cs @@ -21,7 +21,7 @@ public partial class XRRayInteractorEditor : XRBaseInputInteractorEditor /// of the backing . protected SerializedProperty m_ConeCastAngle; /// of the backing . - SerializedProperty m_LiveConeCastDebugVisuals; + protected SerializedProperty m_LiveConeCastDebugVisuals; /// of the backing . protected SerializedProperty m_RaycastMask; /// of the backing . @@ -41,7 +41,7 @@ public partial class XRRayInteractorEditor : XRBaseInputInteractorEditor /// of the backing . protected SerializedProperty m_EnableUIInteraction; /// of the backing . - SerializedProperty m_BlockInteractionsWithScreenSpaceUI; + protected SerializedProperty m_BlockInteractionsWithScreenSpaceUI; /// of the backing . protected SerializedProperty m_BlockUIOnInteractableSelection; /// of the backing . @@ -130,7 +130,7 @@ protected static partial class Contents /// for . public static readonly GUIContent coneCastAngle = EditorGUIUtility.TrTextContent("Cone Cast Angle", "Angle in degrees of the interactor's selection cone, used for cone casting."); /// for . - internal static readonly GUIContent liveConeCastDebugVisuals = EditorGUIUtility.TrTextContent("Live Conecast Debug Visuals", "If enabled, more detailed cone cast gizmos will be displayed in the editor. Only displayed in Play mode when GameObject is selected."); + public static readonly GUIContent liveConeCastDebugVisuals = EditorGUIUtility.TrTextContent("Live Conecast Debug Visuals", "If enabled, more detailed cone cast gizmos will be displayed in the editor. Only displayed in Play mode when GameObject is selected."); /// for . public static readonly GUIContent raycastMask = EditorGUIUtility.TrTextContent("Raycast Mask", "Layer mask used for limiting ray cast targets."); /// for . @@ -149,8 +149,8 @@ protected static partial class Contents public static readonly GUIContent timeToAutoDeselect = EditorGUIUtility.TrTextContent("Time To Auto Deselect", "Number of seconds for which this Interactor will select an Interactable before the Interactable is automatically deselected."); /// for . public static readonly GUIContent enableUIInteraction = EditorGUIUtility.TrTextContent("UI Interaction", "Enable to affect Unity UI GameObjects in a way that is similar to a mouse pointer. Requires the XR UI Input Module on the Event System."); - /// Enable this to make the XR Ray Interactor ignore interactions when occluded by a screen space canvas. - internal static readonly GUIContent blockInteractionsWithScreenSpaceUI = EditorGUIUtility.TrTextContent("Block Interactions With Screen Space UI", "Enable this to make the XR Ray Interactor ignore interactions when occluded by a screen space canvas."); + /// for . + public static readonly GUIContent blockInteractionsWithScreenSpaceUI = EditorGUIUtility.TrTextContent("Block Interactions With Screen Space UI", "Enable this to make the XR Ray Interactor ignore interactions when occluded by a screen space canvas."); /// for . public static readonly GUIContent blockUIOnInteractableSelection = EditorGUIUtility.TrTextContent("Block UI on Interactable Selection", "Enabling this option will block UI interaction when selecting interactables."); /// for . diff --git a/Editor/Locomotion/Gravity.meta b/Editor/Locomotion/Gravity.meta new file mode 100644 index 00000000..a5bbaa43 --- /dev/null +++ b/Editor/Locomotion/Gravity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 99e51b528c2aa6d42baa164f7ed094e1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Locomotion/Gravity/GravityProviderEditor.cs b/Editor/Locomotion/Gravity/GravityProviderEditor.cs new file mode 100644 index 00000000..6bacd65c --- /dev/null +++ b/Editor/Locomotion/Gravity/GravityProviderEditor.cs @@ -0,0 +1,265 @@ +using UnityEngine; +using UnityEngine.XR.Interaction.Toolkit.Locomotion.Gravity; +using UnityEngine.XR.Interaction.Toolkit.Locomotion; + +namespace UnityEditor.XR.Interaction.Toolkit.Locomotion.Gravity +{ + /// + /// Custom editor for a . + /// + [CustomEditor(typeof(GravityProvider), true), CanEditMultipleObjects] + public class GravityProviderEditor : BaseInteractionEditor + { + const string k_GravityExpandedKey = "XRI." + nameof(GravityProviderEditor) + ".GravityExpanded"; + const string k_SphereCastExpandedKey = "XRI." + nameof(GravityProviderEditor) + ".SphereCastExpanded"; + const string k_EventsExpandedKey = "XRI." + nameof(GravityProviderEditor) + ".EventsExpanded"; + + /// of the backing . + protected SerializedProperty m_Mediator; + + /// of the backing . + protected SerializedProperty m_TransformationPriority; + + /// of the backing . + protected SerializedProperty m_UseGravity; + + /// of the backing . + protected SerializedProperty m_UseLocalSpaceGravity; + + /// of the backing . + protected SerializedProperty m_TerminalVelocity; + + /// of the backing . + protected SerializedProperty m_GravityAccelerationModifier; + + /// of the backing . + protected SerializedProperty m_UpdateCharacterControllerCenterEachFrame; + + /// of the backing . + protected SerializedProperty m_SphereCastRadius; + + /// of the backing . + protected SerializedProperty m_SphereCastDistanceBuffer; + + /// of the backing . + protected SerializedProperty m_SphereCastLayerMask; + + /// of the backing . + protected SerializedProperty m_SphereCastTriggerInteraction; + + /// of the backing . + protected SerializedProperty m_OnGravityLockChanged; + + /// of the backing . + protected SerializedProperty m_OnGroundedChanged; + + /// Whether the Gravity settings are expanded. + bool m_GravityExpanded; + + /// Whether the Sphere Cast settings are expanded. + bool m_SphereCastExpanded; + + /// Whether the Events settings are expanded. + bool m_EventsExpanded; + + /// + /// Contents of GUI elements used by this editor. + /// + protected static class Contents + { + /// for . + public static readonly GUIContent mediator = EditorGUIUtility.TrTextContent("Mediator", "The locomotion mediator that the grab move provider will interface with."); + + /// for . + public static readonly GUIContent transformationPriority = EditorGUIUtility.TrTextContent("Transformation Priority", "The queue order of this provider's transformations of the XR Origin. The lower the value, the earlier the transformations are applied."); + + /// for . + public static readonly GUIContent useGravity = EditorGUIUtility.TrTextContent("Use Gravity", "Apply gravity to the XR Origin."); + + /// for . + public static readonly GUIContent useLocalSpaceGravity = EditorGUIUtility.TrTextContent("Use Local Space Gravity", "Apply gravity based on the current Up vector of the XR Origin."); + + /// for . + public static readonly GUIContent terminalVelocity = EditorGUIUtility.TrTextContent("Terminal Velocity Modifier", "Determines the maximum fall speed based on units per second."); + + /// for . + public static readonly GUIContent gravityAccelerationModifier = EditorGUIUtility.TrTextContent("Gravity Acceleration Modifier", "Determines the speed at which a player reaches max gravity velocity."); + + /// for . + public static readonly GUIContent updateCharacterControllerCenterEachFrame = EditorGUIUtility.TrTextContent("Update Character Controller Center Each Frame", "Sets the center of the character controller to match the local x and z positions of the player camera."); + + /// for . + public static readonly GUIContent sphereCastRadius = EditorGUIUtility.TrTextContent("Sphere Cast Radius", "Buffer for the radius of the sphere cast used to check if the player is grounded."); + + /// for . + public static readonly GUIContent sphereCastDistanceBuffer = EditorGUIUtility.TrTextContent("Sphere Cast Distance Buffer", "Buffer for the distance of the sphere cast used to check if the player is grounded."); + + /// for . + public static readonly GUIContent sphereCastLayerMask = EditorGUIUtility.TrTextContent("Sphere Cast Layer Mask", "The layer mask used for the sphere cast to check if the player is grounded."); + + /// for . + public static readonly GUIContent sphereCastTriggerInteraction = EditorGUIUtility.TrTextContent("Sphere Cast Trigger Interaction", "Whether trigger colliders are considered when using a sphere cast to determine if grounded."); + + /// for . + public static readonly GUIContent onGravityLockChanged = EditorGUIUtility.TrTextContent("On Gravity Lock Changed", "Event triggered when gravity lock changes."); + + /// for . + public static readonly GUIContent onGroundedChanged = EditorGUIUtility.TrTextContent("On Grounded Changed", "Event triggered when grounded state changes."); + + /// for Gravity Settings header. + public static readonly GUIContent gravitySettingsHeader = EditorGUIUtility.TrTextContent("Gravity Settings"); + /// for Sphere Cast Settings header. + public static readonly GUIContent sphereCastSettingsHeader = EditorGUIUtility.TrTextContent("Sphere Cast Settings"); + /// for Events header. + public static readonly GUIContent eventsHeader = EditorGUIUtility.TrTextContent("Events"); + } + + /// + /// See . + /// + protected void OnEnable() + { + m_Mediator = serializedObject.FindProperty(nameof(m_Mediator)); + m_TransformationPriority = serializedObject.FindProperty(nameof(m_TransformationPriority)); + m_UseGravity = serializedObject.FindProperty(nameof(m_UseGravity)); + m_UseLocalSpaceGravity = serializedObject.FindProperty(nameof(m_UseLocalSpaceGravity)); + m_TerminalVelocity = serializedObject.FindProperty(nameof(m_TerminalVelocity)); + m_GravityAccelerationModifier = serializedObject.FindProperty(nameof(m_GravityAccelerationModifier)); + m_UpdateCharacterControllerCenterEachFrame = serializedObject.FindProperty(nameof(m_UpdateCharacterControllerCenterEachFrame)); + m_SphereCastRadius = serializedObject.FindProperty(nameof(m_SphereCastRadius)); + m_SphereCastDistanceBuffer = serializedObject.FindProperty(nameof(m_SphereCastDistanceBuffer)); + m_SphereCastLayerMask = serializedObject.FindProperty(nameof(m_SphereCastLayerMask)); + m_SphereCastTriggerInteraction = serializedObject.FindProperty(nameof(m_SphereCastTriggerInteraction)); + m_OnGravityLockChanged = serializedObject.FindProperty(nameof(m_OnGravityLockChanged)); + m_OnGroundedChanged = serializedObject.FindProperty(nameof(m_OnGroundedChanged)); + + m_GravityExpanded = SessionState.GetBool(k_GravityExpandedKey, true); + m_SphereCastExpanded = SessionState.GetBool(k_SphereCastExpandedKey, true); + m_EventsExpanded = SessionState.GetBool(k_EventsExpandedKey, true); + } + + /// + /// + /// + /// + protected override void DrawInspector() + { + DrawBeforeProperties(); + DrawProperties(); + DrawDerivedProperties(); + } + + /// + /// This method is automatically called by to + /// draw the section of the custom inspector before . + /// By default, this draws the read-only Script property. + /// + protected virtual void DrawBeforeProperties() + { + DrawScript(); + } + + /// + /// This method is automatically called by to + /// draw the property fields. Override this method to customize the + /// properties shown in the Inspector. This is typically the method overridden + /// when a derived behavior adds additional serialized properties + /// that should be displayed in the Inspector. + /// + protected virtual void DrawProperties() + { + EditorGUILayout.PropertyField(m_Mediator, Contents.mediator); + EditorGUILayout.PropertyField(m_TransformationPriority, Contents.transformationPriority); + EditorGUILayout.PropertyField(m_UpdateCharacterControllerCenterEachFrame, Contents.updateCharacterControllerCenterEachFrame); + DrawDerivedProperties(); + + EditorGUILayout.Space(); + + DrawGravityProperties(); + + EditorGUILayout.Space(); + + DrawSphereCastProperties(); + + EditorGUILayout.Space(); + + DrawEvents(); + } + + /// + /// Draw the property fields related to Gravity. + /// + protected virtual void DrawGravityProperties() + { + using (var check = new EditorGUI.ChangeCheckScope()) + { + m_GravityExpanded = EditorGUILayout.Foldout(m_GravityExpanded, Contents.gravitySettingsHeader, true, EditorStyles.foldoutHeader); + if (check.changed) + SessionState.SetBool(k_GravityExpandedKey, m_GravityExpanded); + } + + if (!m_GravityExpanded) + return; + + using (new EditorGUI.IndentLevelScope()) + { + EditorGUILayout.PropertyField(m_UseGravity, Contents.useGravity); + if (m_UseGravity.boolValue) + { + using (new EditorGUI.IndentLevelScope()) + { + EditorGUILayout.PropertyField(m_UseLocalSpaceGravity, Contents.useLocalSpaceGravity); + EditorGUILayout.PropertyField(m_TerminalVelocity, Contents.terminalVelocity); + EditorGUILayout.PropertyField(m_GravityAccelerationModifier, Contents.gravityAccelerationModifier); + } + } + } + } + + /// + /// Draw the property fields related to Sphere Cast. + /// + protected virtual void DrawSphereCastProperties() + { + using (var check = new EditorGUI.ChangeCheckScope()) + { + m_SphereCastExpanded = EditorGUILayout.Foldout(m_SphereCastExpanded, Contents.sphereCastSettingsHeader, true, EditorStyles.foldoutHeader); + if (check.changed) + SessionState.SetBool(k_SphereCastExpandedKey, m_SphereCastExpanded); + } + + if (!m_SphereCastExpanded) + return; + + using (new EditorGUI.IndentLevelScope()) + { + EditorGUILayout.PropertyField(m_SphereCastRadius, Contents.sphereCastRadius); + EditorGUILayout.PropertyField(m_SphereCastDistanceBuffer, Contents.sphereCastDistanceBuffer); + EditorGUILayout.PropertyField(m_SphereCastLayerMask, Contents.sphereCastLayerMask); + EditorGUILayout.PropertyField(m_SphereCastTriggerInteraction, Contents.sphereCastTriggerInteraction); + } + } + + /// + /// Draw the property fields related to Events. + /// + protected virtual void DrawEvents() + { + using (var check = new EditorGUI.ChangeCheckScope()) + { + m_EventsExpanded = EditorGUILayout.Foldout(m_EventsExpanded, Contents.eventsHeader, true, EditorStyles.foldoutHeader); + if (check.changed) + SessionState.SetBool(k_EventsExpandedKey, m_EventsExpanded); + } + + if (!m_EventsExpanded) + return; + + using (new EditorGUI.IndentLevelScope()) + { + EditorGUILayout.PropertyField(m_OnGroundedChanged, Contents.onGroundedChanged); + EditorGUILayout.PropertyField(m_OnGravityLockChanged, Contents.onGravityLockChanged); + } + } + } +} diff --git a/Editor/Locomotion/Gravity/GravityProviderEditor.cs.meta b/Editor/Locomotion/Gravity/GravityProviderEditor.cs.meta new file mode 100644 index 00000000..df985107 --- /dev/null +++ b/Editor/Locomotion/Gravity/GravityProviderEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 76b008344019a7d4ab37f548bbadb5fa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Locomotion/Jump.meta b/Editor/Locomotion/Jump.meta new file mode 100644 index 00000000..d821a97c --- /dev/null +++ b/Editor/Locomotion/Jump.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1a9c85352887be54f8fd0ec06d2a59d5 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Locomotion/Jump/JumpProviderEditor.cs b/Editor/Locomotion/Jump/JumpProviderEditor.cs new file mode 100644 index 00000000..0ccb2329 --- /dev/null +++ b/Editor/Locomotion/Jump/JumpProviderEditor.cs @@ -0,0 +1,187 @@ +using UnityEngine; +using UnityEngine.XR.Interaction.Toolkit.Locomotion; +using UnityEngine.XR.Interaction.Toolkit.Locomotion.Jump; + +namespace UnityEditor.XR.Interaction.Toolkit.Locomotion.Jump +{ + /// + /// Custom editor for a . + /// + [CustomEditor(typeof(JumpProvider), true), CanEditMultipleObjects] + public class JumpProviderEditor : BaseInteractionEditor + { + /// of the backing . + protected SerializedProperty m_Mediator; + + /// of the backing . + protected SerializedProperty m_TransformationPriority; + + /// of the backing . + protected SerializedProperty m_DisableGravityDuringJump; + + /// of the backing . + protected SerializedProperty m_UnlimitedInAirJumps; + + /// of the backing . + protected SerializedProperty m_InAirJumpCount; + + /// of the backing . + protected SerializedProperty m_JumpForgivenessWindow; + + /// of the backing . + protected SerializedProperty m_JumpHeight; + + /// of the backing . + protected SerializedProperty m_VariableHeightJump; + + /// of the backing . + protected SerializedProperty m_MinJumpHoldTime; + + /// of the backing . + protected SerializedProperty m_MaxJumpHoldTime; + + /// of the backing . + protected SerializedProperty m_EarlyOutDecelerationSpeed; + + /// of the backing . + protected SerializedProperty m_JumpInput; + + /// + /// Contents of GUI elements used by this editor. + /// + protected static class Contents + { + /// for . + public static readonly GUIContent mediator = EditorGUIUtility.TrTextContent("Mediator", "The locomotion mediator that the grab move provider will interface with."); + /// for . + public static readonly GUIContent transformationPriority = EditorGUIUtility.TrTextContent("Transformation Priority", "The queue order of this provider's transformations of the XR Origin. The lower the value, the earlier the transformations are applied."); + + /// for . + public static readonly GUIContent disableGravityDuringJump = EditorGUIUtility.TrTextContent("Disable Gravity During Jump", "Disable gravity during the jump. This will result in a more floaty jump."); + + /// for . + public static readonly GUIContent unlimitedInAirJumps = EditorGUIUtility.TrTextContent("Unlimited In Air Jumps", "Allow player to jump without being grounded."); + + /// for . + public static readonly GUIContent inAirJumpCount = EditorGUIUtility.TrTextContent("In Air Jump Count", "The number of times a player can jump before landing."); + + /// for . + public static readonly GUIContent jumpForgivenessWindow = EditorGUIUtility.TrTextContent("Jump Forgiveness Window", "The time window after leaving the ground that a jump can still be performed. Sometimes known as coyote time."); + + /// for . + public static readonly GUIContent jumpHeight = EditorGUIUtility.TrTextContent("Jump Height", "The height (approximately in meters) the player will be when reaching the apex of the jump."); + + /// for . + public static readonly GUIContent variableHeightJump = EditorGUIUtility.TrTextContent("Variable Height Jump", "Allow the player to stop their jump early when input is released before reaching the maximum jump height."); + + /// for . + public static readonly GUIContent minJumpHoldTime = EditorGUIUtility.TrTextContent("Min Jump Hold Time", "The minimum amount of time the jump will execute for."); + + /// for . + public static readonly GUIContent maxJumpHoldTime = EditorGUIUtility.TrTextContent("Max Jump Hold Time", "The maximum time the jump button can be held to reach the maximum jump height."); + + /// for . + public static readonly GUIContent earlyOutDecelerationSpeed = EditorGUIUtility.TrTextContent("Early Out Deceleration Speed", "The speed at which the player will decelerate when the jump button is released early."); + + /// for . + public static readonly GUIContent jumpInput = EditorGUIUtility.TrTextContent("Jump Input", "The input used to trigger a jump."); + + /// for Jump Settings header. + public static readonly GUIContent jumpSettingsHeader = EditorGUIUtility.TrTextContent("Jump Settings"); + /// for Air Jump Settings header. + public static readonly GUIContent airJumpSettingsHeader = EditorGUIUtility.TrTextContent("Air Jump Settings"); + /// for Variable Height Jump Settings header. + public static readonly GUIContent variableHeightJumpSettingsHeader = EditorGUIUtility.TrTextContent("Variable Height Jump Settings"); + } + + /// + /// See . + /// + protected void OnEnable() + { + m_Mediator = serializedObject.FindProperty(nameof(m_Mediator)); + m_TransformationPriority = serializedObject.FindProperty(nameof(m_TransformationPriority)); + m_DisableGravityDuringJump = serializedObject.FindProperty(nameof(m_DisableGravityDuringJump)); + m_UnlimitedInAirJumps = serializedObject.FindProperty(nameof(m_UnlimitedInAirJumps)); + m_InAirJumpCount = serializedObject.FindProperty(nameof(m_InAirJumpCount)); + m_JumpForgivenessWindow = serializedObject.FindProperty(nameof(m_JumpForgivenessWindow)); + m_JumpHeight = serializedObject.FindProperty(nameof(m_JumpHeight)); + m_VariableHeightJump = serializedObject.FindProperty(nameof(m_VariableHeightJump)); + m_MinJumpHoldTime = serializedObject.FindProperty(nameof(m_MinJumpHoldTime)); + m_MaxJumpHoldTime = serializedObject.FindProperty(nameof(m_MaxJumpHoldTime)); + m_EarlyOutDecelerationSpeed = serializedObject.FindProperty(nameof(m_EarlyOutDecelerationSpeed)); + m_JumpInput = serializedObject.FindProperty(nameof(m_JumpInput)); + } + + /// + /// + /// + /// + protected override void DrawInspector() + { + DrawBeforeProperties(); + DrawProperties(); + DrawDerivedProperties(); + } + + /// + /// This method is automatically called by to + /// draw the section of the custom inspector before . + /// By default, this draws the read-only Script property. + /// + protected virtual void DrawBeforeProperties() + { + DrawScript(); + } + + /// + /// This method is automatically called by to + /// draw the property fields. Override this method to customize the + /// properties shown in the Inspector. This is typically the method overridden + /// when a derived behavior adds additional serialized properties + /// that should be displayed in the Inspector. + /// + protected virtual void DrawProperties() + { + EditorGUILayout.PropertyField(m_Mediator, Contents.mediator); + EditorGUILayout.PropertyField(m_TransformationPriority, Contents.transformationPriority); + + EditorGUILayout.Space(); + + EditorGUILayout.LabelField(Contents.jumpSettingsHeader, EditorStyles.boldLabel); + EditorGUILayout.PropertyField(m_JumpHeight, Contents.jumpHeight); + EditorGUILayout.PropertyField(m_JumpForgivenessWindow, Contents.jumpForgivenessWindow); + EditorGUILayout.PropertyField(m_DisableGravityDuringJump, Contents.disableGravityDuringJump); + + EditorGUILayout.Space(); + + EditorGUILayout.LabelField(Contents.airJumpSettingsHeader, EditorStyles.boldLabel); + EditorGUILayout.PropertyField(m_UnlimitedInAirJumps, Contents.unlimitedInAirJumps); + if (!m_UnlimitedInAirJumps.boolValue) + { + using (new EditorGUI.IndentLevelScope()) + { + EditorGUILayout.PropertyField(m_InAirJumpCount, Contents.inAirJumpCount); + } + } + + EditorGUILayout.Space(); + + EditorGUILayout.LabelField(Contents.variableHeightJumpSettingsHeader, EditorStyles.boldLabel); + EditorGUILayout.PropertyField(m_VariableHeightJump, Contents.variableHeightJump); + if (m_VariableHeightJump.boolValue) + { + using (new EditorGUI.IndentLevelScope()) + { + EditorGUILayout.PropertyField(m_MinJumpHoldTime, Contents.minJumpHoldTime); + EditorGUILayout.PropertyField(m_MaxJumpHoldTime, Contents.maxJumpHoldTime); + EditorGUILayout.PropertyField(m_EarlyOutDecelerationSpeed, Contents.earlyOutDecelerationSpeed); + } + } + + EditorGUILayout.Space(); + + EditorGUILayout.PropertyField(m_JumpInput, Contents.jumpInput); + } + } +} diff --git a/Editor/Locomotion/Jump/JumpProviderEditor.cs.meta b/Editor/Locomotion/Jump/JumpProviderEditor.cs.meta new file mode 100644 index 00000000..291e0e20 --- /dev/null +++ b/Editor/Locomotion/Jump/JumpProviderEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 60ea765514a790c4fb3256dfd0f8f885 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Editor/Locomotion/Movement/GrabMoveProviderEditor.cs b/Editor/Locomotion/Movement/GrabMoveProviderEditor.cs index 280e58a9..7f979b34 100644 --- a/Editor/Locomotion/Movement/GrabMoveProviderEditor.cs +++ b/Editor/Locomotion/Movement/GrabMoveProviderEditor.cs @@ -58,7 +58,7 @@ protected static partial class Contents /// for . public static readonly GUIContent enableFreeZMovement = EditorGUIUtility.TrTextContent("Enable Free Z Movement", "Controls whether to enable unconstrained movement along the z-axis."); /// for . - public static readonly GUIContent useGravity = EditorGUIUtility.TrTextContent("Use Gravity", "Controls whether gravity applies to constrained axes when a Character Controller is used."); + public static readonly GUIContent useGravity = EditorGUIUtility.TrTextContent("Use Gravity", "Controls whether gravity applies to constrained axes when a Character Controller is used. Ignored when a Gravity Provider component is found in the scene."); /// for . public static readonly GUIContent controllerTransform = EditorGUIUtility.TrTextContent("Controller Transform", "The controller Transform that will drive grab movement with its local position. Will use this GameObject's Transform if not set."); diff --git a/Editor/SettingsProvider/XRInteractionToolkitSettingsProvider.cs b/Editor/SettingsProvider/XRInteractionToolkitSettingsProvider.cs index 04217fe2..9bb53d93 100644 --- a/Editor/SettingsProvider/XRInteractionToolkitSettingsProvider.cs +++ b/Editor/SettingsProvider/XRInteractionToolkitSettingsProvider.cs @@ -40,7 +40,7 @@ protected override void CloseScope() /// internal static class Contents { - public static readonly GUIContent deviceSimulatorSettingsTitle = new GUIContent("XR Device Simulator Settings"); + public static readonly GUIContent interactionSimulatorSettingsTitle = new GUIContent("Interaction Simulator Settings"); public static readonly GUIContent interactionLayerSettingsTitle = new GUIContent("Interaction Layer Settings"); public static readonly GUIContent editorSettingsTitle = new GUIContent("Editor Settings"); @@ -110,7 +110,7 @@ void DrawXRDeviceSimulatorSettingsEditor() { if (m_InteractionLayerSettingsEditor != null) { - GUILayout.Label(Contents.deviceSimulatorSettingsTitle, Contents.sectionTitleStyle); + GUILayout.Label(Contents.interactionSimulatorSettingsTitle, Contents.sectionTitleStyle); m_XRDeviceSimulatorSettingsEditor.OnInspectorGUI(); } } diff --git a/Runtime/AR/Gestures/DragGestureRecognizer.cs b/Runtime/AR/Gestures/DragGestureRecognizer.cs index 5ccf8ded..6b0840a6 100644 --- a/Runtime/AR/Gestures/DragGestureRecognizer.cs +++ b/Runtime/AR/Gestures/DragGestureRecognizer.cs @@ -61,7 +61,7 @@ public DragGestureRecognizer() /// /// The touch that started this gesture. /// Returns the created Drag gesture. - internal DragGesture CreateGesture(Touch touch) + DragGesture CreateGesture(Touch touch) { return new DragGesture(this, touch); } @@ -76,7 +76,7 @@ static void ReinitializeGesture(DragGesture gesture, Touch touch) /// /// The touch that started this gesture. /// Returns the created Drag gesture. - internal DragGesture CreateEnhancedGesture(InputSystem.EnhancedTouch.Touch touch) + DragGesture CreateEnhancedGesture(InputSystem.EnhancedTouch.Touch touch) { return new DragGesture(this, touch); } diff --git a/Runtime/AR/Gestures/PinchGestureRecognizer.cs b/Runtime/AR/Gestures/PinchGestureRecognizer.cs index 64f17f19..63814045 100644 --- a/Runtime/AR/Gestures/PinchGestureRecognizer.cs +++ b/Runtime/AR/Gestures/PinchGestureRecognizer.cs @@ -68,7 +68,7 @@ public PinchGestureRecognizer() /// The first touch that started this gesture. /// The second touch that started this gesture. /// The created Pinch gesture. - internal PinchGesture CreateGesture(Touch touch1, Touch touch2) + PinchGesture CreateGesture(Touch touch1, Touch touch2) { return new PinchGesture(this, touch1, touch2); } @@ -84,7 +84,7 @@ static void ReinitializeGesture(PinchGesture gesture, Touch touch1, Touch touch2 /// The first touch that started this gesture. /// The second touch that started this gesture. /// The created Pinch gesture. - internal PinchGesture CreateEnhancedGesture(InputSystem.EnhancedTouch.Touch touch1, InputSystem.EnhancedTouch.Touch touch2) + PinchGesture CreateEnhancedGesture(InputSystem.EnhancedTouch.Touch touch1, InputSystem.EnhancedTouch.Touch touch2) { return new PinchGesture(this, touch1, touch2); } diff --git a/Runtime/AR/Gestures/TapGestureRecognizer.cs b/Runtime/AR/Gestures/TapGestureRecognizer.cs index 3dd209d7..49b191bc 100644 --- a/Runtime/AR/Gestures/TapGestureRecognizer.cs +++ b/Runtime/AR/Gestures/TapGestureRecognizer.cs @@ -67,7 +67,7 @@ public TapGestureRecognizer() /// /// The touch that started this gesture. /// The created Tap gesture. - internal TapGesture CreateGesture(Touch touch) + TapGesture CreateGesture(Touch touch) { return new TapGesture(this, touch); } @@ -82,7 +82,7 @@ static void ReinitializeGesture(TapGesture gesture, Touch touch) /// /// The touch that started this gesture. /// The created Tap gesture. - internal TapGesture CreateEnhancedGesture(InputSystem.EnhancedTouch.Touch touch) + TapGesture CreateEnhancedGesture(InputSystem.EnhancedTouch.Touch touch) { return new TapGesture(this, touch); } diff --git a/Runtime/AR/Gestures/TwistGestureRecognizer.cs b/Runtime/AR/Gestures/TwistGestureRecognizer.cs index 4f23fd2e..98218896 100644 --- a/Runtime/AR/Gestures/TwistGestureRecognizer.cs +++ b/Runtime/AR/Gestures/TwistGestureRecognizer.cs @@ -62,7 +62,7 @@ public TwistGestureRecognizer() /// The first touch that started this gesture. /// The second touch that started this gesture. /// The created Twist gesture. - internal TwistGesture CreateGesture(Touch touch1, Touch touch2) + TwistGesture CreateGesture(Touch touch1, Touch touch2) { return new TwistGesture(this, touch1, touch2); } @@ -78,7 +78,7 @@ static void ReinitializeGesture(TwistGesture gesture, Touch touch1, Touch touch2 /// The first touch that started this gesture. /// The second touch that started this gesture. /// The created Twist gesture. - internal TwistGesture CreateEnhancedGesture(InputSystem.EnhancedTouch.Touch touch1, InputSystem.EnhancedTouch.Touch touch2) + TwistGesture CreateEnhancedGesture(InputSystem.EnhancedTouch.Touch touch1, InputSystem.EnhancedTouch.Touch touch2) { return new TwistGesture(this, touch1, touch2); } diff --git a/Runtime/AR/Gestures/TwoFingerDragGestureRecognizer.cs b/Runtime/AR/Gestures/TwoFingerDragGestureRecognizer.cs index 795b8937..78234a8c 100644 --- a/Runtime/AR/Gestures/TwoFingerDragGestureRecognizer.cs +++ b/Runtime/AR/Gestures/TwoFingerDragGestureRecognizer.cs @@ -68,7 +68,7 @@ public TwoFingerDragGestureRecognizer() /// The first touch that started this gesture. /// The second touch that started this gesture. /// The created Two Finger Drag gesture. - internal TwoFingerDragGesture CreateGesture(Touch touch1, Touch touch2) + TwoFingerDragGesture CreateGesture(Touch touch1, Touch touch2) { return new TwoFingerDragGesture(this, touch1, touch2); } @@ -84,7 +84,7 @@ static void ReinitializeGesture(TwoFingerDragGesture gesture, Touch touch1, Touc /// The first touch that started this gesture. /// The second touch that started this gesture. /// The created Two Finger Drag gesture. - internal TwoFingerDragGesture CreateEnhancedGesture(InputSystem.EnhancedTouch.Touch touch1, InputSystem.EnhancedTouch.Touch touch2) + TwoFingerDragGesture CreateEnhancedGesture(InputSystem.EnhancedTouch.Touch touch1, InputSystem.EnhancedTouch.Touch touch2) { return new TwoFingerDragGesture(this, touch1, touch2); } diff --git a/Runtime/AffordanceSystem/State/Provider/BaseAffordanceStateProvider.cs b/Runtime/AffordanceSystem/State/Provider/BaseAffordanceStateProvider.cs index 009159fa..e5f93ccd 100644 --- a/Runtime/AffordanceSystem/State/Provider/BaseAffordanceStateProvider.cs +++ b/Runtime/AffordanceSystem/State/Provider/BaseAffordanceStateProvider.cs @@ -46,6 +46,9 @@ public float transitionDuration /// public IReadOnlyBindableVariable currentAffordanceStateData => m_AffordanceStateData; + AffordanceStateData m_AffordanceStateDataBeforeSet; + AffordanceStateData m_PreviousAffordanceStateData; + readonly HashSetList m_AsyncAffordanceReceivers = new HashSetList(); readonly HashSetList m_SynchronousAffordanceReceivers = new HashSetList(); readonly List m_ScheduledJobs = new List(); @@ -142,19 +145,22 @@ protected void AddBinding(IEventBinding binding) /// New affordance state target. public void UpdateAffordanceState(AffordanceStateData newAffordanceStateData) { + m_AffordanceStateDataBeforeSet = m_AffordanceStateData.Value; m_AffordanceStateData.Value = newAffordanceStateData; } void OnAffordanceStateUpdated(AffordanceStateData newAffordanceStateData) { + m_PreviousAffordanceStateData = m_AffordanceStateDataBeforeSet; + for (var i = 0; i < m_AsyncAffordanceReceivers.Count; ++i) { - m_AsyncAffordanceReceivers[i].OnAffordanceStateUpdated(m_AffordanceStateData.Value, newAffordanceStateData); + m_AsyncAffordanceReceivers[i].OnAffordanceStateUpdated(m_PreviousAffordanceStateData, newAffordanceStateData); } for (var i = 0; i < m_SynchronousAffordanceReceivers.Count; ++i) { - m_SynchronousAffordanceReceivers[i].OnAffordanceStateUpdated(m_AffordanceStateData.Value, newAffordanceStateData); + m_SynchronousAffordanceReceivers[i].OnAffordanceStateUpdated(m_PreviousAffordanceStateData, newAffordanceStateData); } m_TimeSinceLastStateUpdate = 0f; diff --git a/Runtime/Inputs/Simulation/Hands/XRSimulatedHandState.cs b/Runtime/Inputs/Simulation/Hands/XRSimulatedHandState.cs index 82dbadcc..59590cdc 100644 --- a/Runtime/Inputs/Simulation/Hands/XRSimulatedHandState.cs +++ b/Runtime/Inputs/Simulation/Hands/XRSimulatedHandState.cs @@ -5,6 +5,7 @@ struct XRSimulatedHandState public Vector3 position { get; set; } public Quaternion rotation { get; set; } public Vector3 euler { get; set; } + public bool isTracked { get; set; } public HandExpressionName expressionName { get; set; } /// @@ -15,6 +16,7 @@ public void Reset() position = default; rotation = Quaternion.identity; euler = default; + isTracked = false; expressionName = HandExpressionName.Default; } } diff --git a/Runtime/Inputs/Simulation/SimulatedDeviceLifecycleManager.cs b/Runtime/Inputs/Simulation/SimulatedDeviceLifecycleManager.cs new file mode 100644 index 00000000..3d68068c --- /dev/null +++ b/Runtime/Inputs/Simulation/SimulatedDeviceLifecycleManager.cs @@ -0,0 +1,472 @@ +using System.Collections.Generic; +using UnityEngine.Assertions; +using UnityEngine.InputSystem; +using UnityEngine.InputSystem.Layouts; +using UnityEngine.InputSystem.LowLevel; +using UnityEngine.InputSystem.XR; +using UnityEngine.XR.Interaction.Toolkit.Inputs.Simulation.Hands; + +#if XR_HANDS_1_1_OR_NEWER +using UnityEngine.XR.Hands; +using UnityEngine.XR.Hands.ProviderImplementation; +#endif + +namespace UnityEngine.XR.Interaction.Toolkit.Inputs.Simulation +{ + /// + /// A component which handles the lifecycle of simulated HMDs, controllers, and hands. It deals with the adding and removing of devices, + /// keeping track of the current device mode, and initializing subsystems for simulation. + /// + /// + /// + /// + [AddComponentMenu("XR/Debug/Simulated Device Lifecycle Manager", 11)] + [DefaultExecutionOrder(XRInteractionUpdateOrder.k_SimulatedDeviceLifecycleManager)] + [HelpURL(XRHelpURLConstants.k_SimulatedDeviceLifecycleManager)] + public class SimulatedDeviceLifecycleManager : MonoBehaviour + { + [SerializeField] + bool m_RemoveOtherHMDDevices = true; + /// + /// This boolean value indicates whether we remove other devices in this session so that they don't conflict with the simulated devices. + /// A value (default) means we remove all other devices except the generated by the simulator. + /// A value means we do not remove any other devices. + /// + public bool removeOtherHMDDevices + { + get => m_RemoveOtherHMDDevices; + set => m_RemoveOtherHMDDevices = value; + } + + [SerializeField] + bool m_HandTrackingCapability = true; + /// + /// Whether to create a simulated Hand Tracking Subsystem and provider on startup. Requires the XR Hands package. + /// + public bool handTrackingCapability + { + get => m_HandTrackingCapability; + set => m_HandTrackingCapability = value; + } + + /// + /// The device mode of the left and right device. + /// + /// + public enum DeviceMode + { + /// + /// Motion controller mode. + /// + Controller, + + /// + /// Tracked hand mode. + /// + Hand, + + /// + /// No device mode. + /// + None, + } + + DeviceMode m_DeviceMode = DeviceMode.Controller; + + /// + /// Whether the simulator is in controller mode or tracked hand mode. + /// + /// + public DeviceMode deviceMode => m_DeviceMode; + + /// + /// The runtime instance of the Simulated Device Lifecycle Manager. + /// + public static SimulatedDeviceLifecycleManager instance { get; private set; } + +#if ENABLE_VR || UNITY_GAMECORE + XRSimulatedHMD m_HMDDevice; + XRSimulatedController m_LeftControllerDevice; + XRSimulatedController m_RightControllerDevice; + + bool m_OnInputDeviceChangeSubscribed; +#endif + +#if XR_HANDS_1_1_OR_NEWER + XRDeviceSimulatorHandsSubsystem m_SimHandSubsystem; + + /// + /// The instance of the simulated hand subsystem. + /// + internal XRDeviceSimulatorHandsSubsystem simHandSubsystem => m_SimHandSubsystem; + + XRHandProviderUtility.SubsystemUpdater m_SubsystemUpdater; +#endif + + bool m_DeviceModeDirty; + bool m_StartedDeviceModeChange; + + /// + /// See . + /// + protected virtual void Awake() + { + if (instance == null) + { + instance = this; + } + else if (instance != this) + { + Debug.LogWarning($"Another instance of Simulated Device Lifecycle Manager already exists ({instance}), destroying {gameObject}.", this); + Destroy(gameObject); + return; + } + + InitializeHandSubsystem(); + } + + /// + /// See . + /// + protected virtual void OnEnable() + { +#if ENABLE_VR || UNITY_GAMECORE + +#if XR_HANDS_1_1_OR_NEWER + m_SimHandSubsystem?.Start(); + m_SubsystemUpdater?.Start(); +#endif + + if (m_RemoveOtherHMDDevices) + { + // Operate on a copy of the devices array since we are removing from it + foreach (var device in InputSystem.InputSystem.devices.ToArray()) + { + if (device is XRHMD && !(device is XRSimulatedHMD)) + { + InputSystem.InputSystem.RemoveDevice(device); + } + } + + InputSystem.InputSystem.onDeviceChange += OnInputDeviceChange; + m_OnInputDeviceChangeSubscribed = true; + } +#endif + AddDevices(); + } + + /// + /// See . + /// + protected virtual void OnDisable() + { +#if ENABLE_VR || UNITY_GAMECORE + if (m_OnInputDeviceChangeSubscribed) + { + InputSystem.InputSystem.onDeviceChange -= OnInputDeviceChange; + m_OnInputDeviceChangeSubscribed = false; + } +#endif + RemoveDevices(); + +#if XR_HANDS_1_1_OR_NEWER + m_SubsystemUpdater?.Stop(); + m_SimHandSubsystem?.Stop(); +#endif + } + + /// + /// See . + /// + protected virtual void OnDestroy() + { +#if XR_HANDS_1_1_OR_NEWER + m_SimHandSubsystem?.Destroy(); + m_SubsystemUpdater?.Destroy(); + m_SimHandSubsystem = null; + m_SubsystemUpdater = null; +#endif + } + + /// + /// See . + /// + protected virtual void Update() + { +#if XR_HANDS_1_1_OR_NEWER + if (m_DeviceModeDirty) + { + switch (m_DeviceMode) + { + // Changing from hands to controllers over multiple frames. + // Step 1: Simulate hand tracking lost + // Step 2: Add controller input devices. + case DeviceMode.Controller when !m_StartedDeviceModeChange: + // Step 1 + m_SimHandSubsystem?.SetUpdateHandsAllowed(false); + m_StartedDeviceModeChange = true; + break; + case DeviceMode.Controller: + // Step 2 + AddControllerDevices(); + m_DeviceModeDirty = false; + m_StartedDeviceModeChange = false; + break; + // Changing from controllers to hands over multiple frames. + // Step 1: Remove controller devices. + // Step 2: Simulate hand tracking reacquired. + case DeviceMode.Hand when !m_StartedDeviceModeChange: + // Step 1 + RemoveControllerDevices(); + m_StartedDeviceModeChange = true; + break; + case DeviceMode.Hand: + // Step 2 + m_SimHandSubsystem?.SetUpdateHandsAllowed(true); + m_DeviceModeDirty = false; + m_StartedDeviceModeChange = false; + break; + } + } +#endif + } + +#if ENABLE_VR || UNITY_GAMECORE + internal void ApplyHMDState(XRSimulatedHMDState state) + { + if (m_HMDDevice != null && m_HMDDevice.added) + { + InputState.Change(m_HMDDevice, state); + } + } + + internal void ApplyControllerState(XRSimulatedControllerState leftControllerState, XRSimulatedControllerState rightControllerState) + { + if (m_LeftControllerDevice != null && m_LeftControllerDevice.added) + { + InputState.Change(m_LeftControllerDevice, leftControllerState); + } + + if (m_RightControllerDevice != null && m_RightControllerDevice.added) + { + InputState.Change(m_RightControllerDevice, rightControllerState); + } + } +#endif + + internal void ApplyHandState(XRSimulatedHandState leftHandState, XRSimulatedHandState rightHandState) + { +#if XR_HANDS_1_1_OR_NEWER + if (m_DeviceMode != DeviceMode.Hand) + return; + + if (m_SimHandSubsystem == null) + return; + + m_SimHandSubsystem.SetIsTracked(Handedness.Left, leftHandState.isTracked); + m_SimHandSubsystem.SetIsTracked(Handedness.Right, rightHandState.isTracked); + + m_SimHandSubsystem.SetHandExpression(Handedness.Left, leftHandState.expressionName); + m_SimHandSubsystem.SetRootHandPose(Handedness.Left, new Pose(leftHandState.position, leftHandState.rotation)); + + m_SimHandSubsystem.SetHandExpression(Handedness.Right, rightHandState.expressionName); + m_SimHandSubsystem.SetRootHandPose(Handedness.Right, new Pose(rightHandState.position, rightHandState.rotation)); +#endif + } + + internal void SwitchDeviceMode() + { +#if XR_HANDS_1_1_OR_NEWER + // Fully changing between controller and hand mode takes multiple frames. + // Don't allow changing the mode again before it has finished. + if (m_DeviceModeDirty) + return; + + m_DeviceMode = Negate(m_DeviceMode); + m_DeviceModeDirty = true; +#endif + } + + /// + /// Add simulated XR devices to the Input System. + /// + internal virtual void AddDevices() + { +#if ENABLE_VR || UNITY_GAMECORE + // Simulated HMD + if (m_HMDDevice == null) + { + var descHMD = new InputDeviceDescription + { + product = nameof(XRSimulatedHMD), + capabilities = new XRDeviceDescriptor + { + characteristics = XRInputTrackingAggregator.Characteristics.hmd, + }.ToJson(), + }; + + m_HMDDevice = InputSystem.InputSystem.AddDevice(descHMD) as XRSimulatedHMD; + if (m_HMDDevice == null) + Debug.LogError($"Failed to create {nameof(XRSimulatedHMD)}.", this); + } + else + { + InputSystem.InputSystem.AddDevice(m_HMDDevice); + } + + if (m_DeviceMode == DeviceMode.Controller) + AddControllerDevices(); +#endif + } + + /// + /// Remove simulated XR devices from the Input System. + /// + internal virtual void RemoveDevices() + { +#if ENABLE_VR || UNITY_GAMECORE + if (m_HMDDevice != null && m_HMDDevice.added) + InputSystem.InputSystem.RemoveDevice(m_HMDDevice); + + RemoveControllerDevices(); +#endif + } + + void AddControllerDevices() + { +#if ENABLE_VR || UNITY_GAMECORE + if (m_LeftControllerDevice == null) + { + var descLeftHand = new InputDeviceDescription + { + product = nameof(XRSimulatedController), + capabilities = new XRDeviceDescriptor + { + deviceName = $"{nameof(XRSimulatedController)} - {InputSystem.CommonUsages.LeftHand}", + characteristics = XRInputTrackingAggregator.Characteristics.leftController, + }.ToJson(), + }; + + m_LeftControllerDevice = InputSystem.InputSystem.AddDevice(descLeftHand) as XRSimulatedController; + if (m_LeftControllerDevice != null) + InputSystem.InputSystem.SetDeviceUsage(m_LeftControllerDevice, InputSystem.CommonUsages.LeftHand); + else + Debug.LogError($"Failed to create {nameof(XRSimulatedController)} for {InputSystem.CommonUsages.LeftHand}.", this); + } + else + { + InputSystem.InputSystem.AddDevice(m_LeftControllerDevice); + } + + if (m_RightControllerDevice == null) + { + var descRightHand = new InputDeviceDescription + { + product = nameof(XRSimulatedController), + capabilities = new XRDeviceDescriptor + { + deviceName = $"{nameof(XRSimulatedController)} - {InputSystem.CommonUsages.RightHand}", + characteristics = XRInputTrackingAggregator.Characteristics.rightController, + }.ToJson(), + }; + + m_RightControllerDevice = InputSystem.InputSystem.AddDevice(descRightHand) as XRSimulatedController; + if (m_RightControllerDevice != null) + InputSystem.InputSystem.SetDeviceUsage(m_RightControllerDevice, InputSystem.CommonUsages.RightHand); + else + Debug.LogError($"Failed to create {nameof(XRSimulatedController)} for {InputSystem.CommonUsages.RightHand}.", this); + } + else + { + InputSystem.InputSystem.AddDevice(m_RightControllerDevice); + } +#endif + } + + void RemoveControllerDevices() + { +#if ENABLE_VR || UNITY_GAMECORE + if (m_LeftControllerDevice != null && m_LeftControllerDevice.added) + { + InputSystem.InputSystem.RemoveDevice(m_LeftControllerDevice); + } + + if (m_RightControllerDevice != null && m_RightControllerDevice.added) + { + InputSystem.InputSystem.RemoveDevice(m_RightControllerDevice); + } +#endif + } + + void OnInputDeviceChange(InputSystem.InputDevice device, InputDeviceChange change) + { +#if ENABLE_VR || UNITY_GAMECORE + if (!m_RemoveOtherHMDDevices) + return; + + switch (change) + { + case InputDeviceChange.Added: + if (device is XRHMD && !(device is XRSimulatedHMD)) + InputSystem.InputSystem.RemoveDevice(device); + break; + } +#endif + } + + void InitializeHandSubsystem() + { +#if XR_HANDS_1_1_OR_NEWER + if (!m_HandTrackingCapability) + return; + + if (m_RemoveOtherHMDDevices) + { + var currentHandSubsystems = new List(); + SubsystemManager.GetSubsystems(currentHandSubsystems); + foreach (var handSubsystem in currentHandSubsystems) + { + if (handSubsystem.running) + handSubsystem.Stop(); + } + } + + var descriptors = new List(); + SubsystemManager.GetSubsystemDescriptors(descriptors); + for (var i = 0; i < descriptors.Count; ++i) + { + var descriptor = descriptors[i]; + if (descriptor.id == XRDeviceSimulatorHandsProvider.id) + { + m_SimHandSubsystem = descriptor.Create() as XRDeviceSimulatorHandsSubsystem; + break; + } + } + + if (m_SimHandSubsystem == null) + { + Debug.LogError("Couldn't find simulated hands subsystem.", this); + return; + } + + m_SimHandSubsystem.SetUpdateHandsAllowed(false); + + m_SubsystemUpdater = new XRHandProviderUtility.SubsystemUpdater(m_SimHandSubsystem); +#endif + } + + static DeviceMode Negate(DeviceMode mode) + { + switch (mode) + { + case DeviceMode.Controller: + return DeviceMode.Hand; + case DeviceMode.Hand: + return DeviceMode.Controller; + default: + Assert.IsTrue(false, $"Unhandled {nameof(mode)}={mode}."); + return DeviceMode.Controller; + } + } + } +} diff --git a/Runtime/Inputs/Simulation/SimulatedDeviceLifecycleManager.cs.meta b/Runtime/Inputs/Simulation/SimulatedDeviceLifecycleManager.cs.meta new file mode 100644 index 00000000..a3adb1d8 --- /dev/null +++ b/Runtime/Inputs/Simulation/SimulatedDeviceLifecycleManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2a798ede3f9ef495cb5b62f2a9896b2e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Inputs/Simulation/SimulatedHandExpression.cs b/Runtime/Inputs/Simulation/SimulatedHandExpression.cs new file mode 100644 index 00000000..2536a5b6 --- /dev/null +++ b/Runtime/Inputs/Simulation/SimulatedHandExpression.cs @@ -0,0 +1,91 @@ +using System; +using UnityEngine.XR.Interaction.Toolkit.Inputs.Readers; +using UnityEngine.XR.Interaction.Toolkit.Inputs.Simulation.Hands; + +namespace UnityEngine.XR.Interaction.Toolkit.Inputs.Simulation +{ + /// + /// A hand expression that can be simulated by performing an input action. + /// + [Serializable] + public class SimulatedHandExpression : ISerializationCallbackReceiver + { + [SerializeField] + [Tooltip("The unique name for the hand expression.")] + [Delayed] + string m_Name; + + /// + /// The name of the hand expression to simulate when the input action is performed. + /// + public string name => m_ExpressionName.ToString(); + + [SerializeField] + [Tooltip("The input to trigger the simulated hand expression.")] + XRInputButtonReader m_ToggleInput; + + /// + /// The input to trigger the simulated hand expression. + /// + public XRInputButtonReader toggleInput + { + get => m_ToggleInput; + set => m_ToggleInput = value; + } + + [SerializeField] + [Tooltip("The captured hand expression to simulate when the input action is performed.")] + HandExpressionCapture m_Capture; + + /// + /// The captured expression to simulate when the input action is performed. + /// + internal HandExpressionCapture capture + { + get => m_Capture; + set => m_Capture = value; + } + + [SerializeField] + [Tooltip("Whether or not this expression appears in the quick action list in the simulator.")] + bool m_IsQuickAction; + + /// + /// Whether or not this expression appears in the quick action list in the simulator. + /// + public bool isQuickAction + { + get => m_IsQuickAction; + set => m_IsQuickAction = value; + } + + HandExpressionName m_ExpressionName; + + /// + /// The name of the hand expression to simulate when the input action is performed. + /// Use this for a faster name identifier than comparing by name. + /// + internal HandExpressionName expressionName + { + get => m_ExpressionName; + set => m_ExpressionName = value; + } + + /// + /// Sprite icon for the simulated hand expression. + /// + public Sprite icon => m_Capture.icon; + + /// + void ISerializationCallbackReceiver.OnBeforeSerialize() + { + m_Name = m_ExpressionName.ToString(); + } + + /// + void ISerializationCallbackReceiver.OnAfterDeserialize() + { + m_ExpressionName = new HandExpressionName(m_Name); + } + } +} diff --git a/Runtime/Inputs/Simulation/SimulatedHandExpression.cs.meta b/Runtime/Inputs/Simulation/SimulatedHandExpression.cs.meta new file mode 100644 index 00000000..6e50aab4 --- /dev/null +++ b/Runtime/Inputs/Simulation/SimulatedHandExpression.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2970a411cd744e642bbace91b73501b8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Inputs/Simulation/SimulatedHandExpressionManager.cs b/Runtime/Inputs/Simulation/SimulatedHandExpressionManager.cs new file mode 100644 index 00000000..6e6ef6d6 --- /dev/null +++ b/Runtime/Inputs/Simulation/SimulatedHandExpressionManager.cs @@ -0,0 +1,70 @@ +using System.Collections.Generic; +using UnityEngine.XR.Interaction.Toolkit.Inputs.Simulation.Hands; + +namespace UnityEngine.XR.Interaction.Toolkit.Inputs.Simulation +{ + /// + /// A component which handles setting up and keeping track of simulated hand expressions. + /// + /// + /// + /// + [AddComponentMenu("XR/Debug/Simulated Hand Expression Manager", 11)] + [DefaultExecutionOrder(XRInteractionUpdateOrder.k_SimulatedHandExpressionManager)] + [HelpURL(XRHelpURLConstants.k_SimulatedHandExpressionManager)] + public class SimulatedHandExpressionManager : MonoBehaviour + { + [SerializeField] + [Tooltip("The list of hand expressions to simulate.")] + List m_SimulatedHandExpressions = new List(); + + /// + /// The list of simulated hand expressions. + /// + public List simulatedHandExpressions => m_SimulatedHandExpressions; + + [SerializeField] + [Tooltip("The resting hand expression to use when no other hand expression is active.")] + HandExpressionCapture m_RestingHandExpressionCapture; + + /// + /// The resting hand expression to use when no other hand expression is active. + /// + internal HandExpressionCapture restingHandExpressionCapture + { + get => m_RestingHandExpressionCapture; + set => m_RestingHandExpressionCapture = value; + } + + SimulatedDeviceLifecycleManager m_DeviceLifecycleManager; + + /// + /// See . + /// + protected virtual void Start() + { + m_DeviceLifecycleManager = XRSimulatorUtility.FindCreateSimulatedDeviceLifecycleManager(gameObject); + InitializeHandExpressions(); + } + + void InitializeHandExpressions() + { +#if XR_HANDS_1_1_OR_NEWER + if (m_DeviceLifecycleManager == null || m_DeviceLifecycleManager.simHandSubsystem == null || m_RestingHandExpressionCapture == null) + return; + + // Pass the hand expression captures to the simulated hand subsystem + m_DeviceLifecycleManager.simHandSubsystem.SetCapturedExpression(HandExpressionName.Default, m_RestingHandExpressionCapture); + for (var index = 0; index < m_SimulatedHandExpressions.Count; ++index) + { + var simulatedExpression = m_SimulatedHandExpressions[index]; + + if (simulatedExpression.capture != null) + m_DeviceLifecycleManager.simHandSubsystem.SetCapturedExpression(simulatedExpression.expressionName, simulatedExpression.capture); + else + Debug.LogError($"Missing Capture reference for Simulated Hand Expression: {simulatedExpression.expressionName}", this); + } +#endif + } + } +} diff --git a/Runtime/Inputs/Simulation/SimulatedHandExpressionManager.cs.meta b/Runtime/Inputs/Simulation/SimulatedHandExpressionManager.cs.meta new file mode 100644 index 00000000..0df30378 --- /dev/null +++ b/Runtime/Inputs/Simulation/SimulatedHandExpressionManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 18d5c629281874bc18cb5ead1d245f6a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Inputs/Simulation/XRDeviceSimulator.cs b/Runtime/Inputs/Simulation/XRDeviceSimulator.cs index beb7c087..38395419 100644 --- a/Runtime/Inputs/Simulation/XRDeviceSimulator.cs +++ b/Runtime/Inputs/Simulation/XRDeviceSimulator.cs @@ -3,27 +3,19 @@ #endif using System; -using System.Collections.Generic; -using Unity.XR.CoreUtils; using UnityEngine.Assertions; using UnityEngine.InputSystem; using UnityEngine.InputSystem.Controls; -using UnityEngine.InputSystem.Layouts; -using UnityEngine.InputSystem.LowLevel; using UnityEngine.InputSystem.XR; using UnityEngine.XR.Interaction.Toolkit.Inputs.Simulation.Hands; -using UnityEngine.XR.Interaction.Toolkit.Utilities; #if XR_HANDS_1_1_OR_NEWER using UnityEngine.XR.Hands; -using UnityEngine.XR.Hands.ProviderImplementation; -#endif - -#if XR_MANAGEMENT_4_0_OR_NEWER -using UnityEngine.XR.Management; #endif #if XR_SIMULATION_AVAILABLE +using Unity.XR.CoreUtils; +using UnityEngine.XR.Interaction.Toolkit.Utilities; using UnityEngine.XR.Simulation; #endif @@ -63,16 +55,8 @@ namespace UnityEngine.XR.Interaction.Toolkit.Inputs.Simulation [AddComponentMenu("XR/Debug/XR Device Simulator", 11)] [DefaultExecutionOrder(XRInteractionUpdateOrder.k_DeviceSimulator)] [HelpURL(XRHelpURLConstants.k_XRDeviceSimulator)] - public class XRDeviceSimulator : MonoBehaviour + public partial class XRDeviceSimulator : MonoBehaviour { - /// - /// The maximum angle the XR Camera can have around the X axis. - /// - const float k_CameraMaxXAngle = 80f; - - static readonly Vector3 s_LeftDeviceDefaultInitialPosition = new Vector3(-0.1f, -0.05f, 0.3f); - static readonly Vector3 s_RightDeviceDefaultInitialPosition = new Vector3(0.1f, -0.05f, 0.3f); - /// /// The coordinate space in which to operate. /// @@ -153,23 +137,6 @@ internal enum TargetedDevices HMD = 1 << 3, } - /// - /// The device mode of the left and right device. - /// - /// - public enum DeviceMode - { - /// - /// Motion controller mode. - /// - Controller, - - /// - /// Tracked hand mode. - /// - Hand, - } - /// /// The target device control(s) to update from input. /// @@ -202,112 +169,6 @@ public enum Axis2DTargets Secondary2DAxis = 1 << 2, } - /// - /// A hand expression that can be simulated by performing an input action. - /// - [Serializable] - public class SimulatedHandExpression : ISerializationCallbackReceiver - { - [SerializeField] - [Tooltip("The unique name for the hand expression.")] - [Delayed] - string m_Name; - - /// - /// The name of the hand expression to simulate when the input action is performed. - /// - public string name => m_ExpressionName.ToString(); - - [SerializeField] - [Tooltip("The input action to trigger the hand expression.")] - InputActionReference m_ToggleAction; - - /// - /// The input action reference to trigger this simulated hand expression. - /// - public InputActionReference toggleAction => m_ToggleAction; - - [SerializeField] - [Tooltip("The captured hand expression to simulate when the input action is performed.")] - HandExpressionCapture m_Capture; - - /// - /// The captured expression to simulate when the input action is performed. - /// - internal HandExpressionCapture capture - { - get => m_Capture; - set => m_Capture = value; - } - - HandExpressionName m_ExpressionName; - - /// - /// The name of the hand expression to simulate when the input action is performed. - /// Use this for a faster name identifier than comparing by name. - /// - internal HandExpressionName expressionName - { - get => m_ExpressionName; - set => m_ExpressionName = value; - } - - /// - /// Sprite icon for the simulated hand expression. - /// - public Sprite icon => m_Capture.icon; - - Action m_Performed; - - /// - /// Event that is called when the input action for the simulated hand expression is performed. - /// - /// - /// Wraps the performed action of the in order to add a reference - /// to this class in the callback method signature. - /// - public event Action performed - { - add - { - m_Performed += value; - if (!m_Subscribed) - { - m_Subscribed = true; - m_ToggleAction.action.performed += OnActionPerformed; - } - } - remove - { - m_Performed -= value; - if (m_Performed == null) - { - m_Subscribed = false; - m_ToggleAction.action.performed -= OnActionPerformed; - } - } - } - - bool m_Subscribed; - - /// - void ISerializationCallbackReceiver.OnBeforeSerialize() - { - m_Name = m_ExpressionName.ToString(); - } - - /// - void ISerializationCallbackReceiver.OnAfterDeserialize() - { - m_ExpressionName = new HandExpressionName(m_Name); - } - - void OnActionPerformed(InputAction.CallbackContext context) - { - m_Performed?.Invoke(this, context); - } - } - [SerializeField] [Tooltip("Input Action asset containing controls for the simulator itself. Unity will automatically enable and disable it with this component.")] InputActionAsset m_DeviceSimulatorActionAsset; @@ -332,6 +193,8 @@ public InputActionAsset controllerActionAsset set => m_ControllerActionAsset = value; } + #region Device Simulator Actions + [SerializeField] [Tooltip("The Input System Action used to translate in the x-axis (left/right) while held. Must be a Value Axis Control.")] InputActionReference m_KeyboardXTranslateAction; @@ -846,6 +709,10 @@ public InputActionReference toggleSecondary2DAxisTargetAction } } + #endregion + + #region Controller Actions + [SerializeField] [Tooltip("The Input System Action used to control the value of one or more 2D Axis controls on the manipulated controller device(s). Must be a Value Vector2 Control.")] InputActionReference m_Axis2DAction; @@ -1096,6 +963,8 @@ public InputActionReference secondaryTouchAction } } + #endregion + [SerializeField] [Tooltip("Input Action asset containing controls for the simulated hands. Unity will automatically enable and disable it as needed.")] InputActionAsset m_HandActionAsset; @@ -1108,19 +977,6 @@ public InputActionAsset handActionAsset set => m_HandActionAsset = value; } - [SerializeField] - [Tooltip("The resting hand expression to use when no other hand expression is active.")] - HandExpressionCapture m_RestingHandExpressionCapture; - - [SerializeField] - [Tooltip("The list of hand expressions to simulate.")] - List m_SimulatedHandExpressions = new List(); - - /// - /// The list of simulated hand expressions for the device simulator. - /// - public List simulatedHandExpressions => m_SimulatedHandExpressions; - [SerializeField] [Tooltip("The Transform that contains the Camera. This is usually the \"Head\" of XR Origins. Automatically set to the first enabled camera tagged MainCamera if unset.")] Transform m_CameraTransform; @@ -1165,6 +1021,8 @@ public Space mouseTranslateSpace set => m_MouseTranslateSpace = value; } + #region Sensitivity + [SerializeField] [Tooltip("Speed of translation in the x-axis (left/right) when triggered by keyboard input.")] float m_KeyboardXTranslateSpeed = 0.2f; @@ -1331,6 +1189,8 @@ public bool mouseYRotateInvert set => m_MouseYRotateInvert = value; } + #endregion + [SerializeField] [Tooltip("The desired cursor lock mode to toggle to from None (either Locked or Confined).")] CursorLockMode m_DesiredCursorLockMode = CursorLockMode.Locked; @@ -1345,32 +1205,6 @@ public CursorLockMode desiredCursorLockMode set => m_DesiredCursorLockMode = value; } - [SerializeField] - [Tooltip("Whether or not to remove other XR HMD devices in this session so that they don't conflict with the XR Device Simulator.")] - bool m_RemoveOtherHMDDevices = true; - /// - /// This boolean value indicates whether or not we remove other devices in this session so that they don't conflict with the . - /// A value (default) means we remove all other devices except the generated by the . - /// A value means we do not remove any other devices. - /// - public bool removeOtherHMDDevices - { - get => m_RemoveOtherHMDDevices; - set => m_RemoveOtherHMDDevices = value; - } - - [SerializeField] - [Tooltip("Whether to create a simulated Hand Tracking Subsystem and provider on startup. Requires the XR Hands package.")] - bool m_HandTrackingCapability = true; - /// - /// Whether to create a simulated Hand Tracking Subsystem and provider on startup. Requires the XR Hands package. - /// - public bool handTrackingCapability - { - get => m_HandTrackingCapability; - set => m_HandTrackingCapability = value; - } - [SerializeField] [Tooltip("The optional Device Simulator UI prefab to use along with the XR Device Simulator.")] GameObject m_DeviceSimulatorUI; @@ -1383,6 +1217,8 @@ public GameObject deviceSimulatorUI set => m_DeviceSimulatorUI = value; } + #region Analog Configuration + [SerializeField, Range(0f, 1f)] [Tooltip("The amount of the simulated grip on the controller when the Grip control is pressed.")] float m_GripAmount = 1f; @@ -1409,6 +1245,10 @@ public float triggerAmount set => m_TriggerAmount = value; } + #endregion + + #region Tracking State + [SerializeField] [Tooltip("Whether the HMD should report the pose as fully tracked or unavailable/inferred.")] bool m_HMDIsTracked = true; @@ -1505,6 +1345,8 @@ public bool rightHandIsTracked set => m_RightHandIsTracked = value; } + #endregion + /// /// The transformation mode in which the mouse should operate. /// @@ -1545,22 +1387,22 @@ public bool rightHandIsTracked /// /// Whether the simulator is manipulating the Left Controller. /// - public bool manipulatingLeftController => m_DeviceMode == DeviceMode.Controller && manipulatingLeftDevice; + public bool manipulatingLeftController => m_DeviceLifecycleManager.deviceMode == SimulatedDeviceLifecycleManager.DeviceMode.Controller && manipulatingLeftDevice; /// /// Whether the simulator is manipulating the Right Controller. /// - public bool manipulatingRightController => m_DeviceMode == DeviceMode.Controller && manipulatingRightDevice; + public bool manipulatingRightController => m_DeviceLifecycleManager.deviceMode == SimulatedDeviceLifecycleManager.DeviceMode.Controller && manipulatingRightDevice; /// /// Whether the simulator is manipulating the Left Hand. /// - public bool manipulatingLeftHand => m_DeviceMode == DeviceMode.Hand && manipulatingLeftDevice; + public bool manipulatingLeftHand => m_DeviceLifecycleManager.deviceMode == SimulatedDeviceLifecycleManager.DeviceMode.Hand && manipulatingLeftDevice; /// /// Whether the simulator is manipulating the Right Hand. /// - public bool manipulatingRightHand => m_DeviceMode == DeviceMode.Hand && manipulatingRightDevice; + public bool manipulatingRightHand => m_DeviceLifecycleManager.deviceMode == SimulatedDeviceLifecycleManager.DeviceMode.Hand && manipulatingRightDevice; /// /// Whether the simulator is manipulating the HMD, Left Controller, and Right Controller as if the whole player was turning their torso, @@ -1581,17 +1423,6 @@ TargetedDevices targetedDeviceInput set => m_TargetedDeviceInput = value; } - DeviceMode m_DeviceMode = DeviceMode.Controller; - - /// - /// Whether the simulator is in controller mode or tracked hand mode. - /// - /// - public DeviceMode deviceMode => m_DeviceMode; - - bool m_DeviceModeDirty; - bool m_StartedDeviceModeChange; - (Transform transform, Camera camera) m_CachedCamera; /// @@ -1645,17 +1476,6 @@ TargetedDevices targetedDeviceInput XRSimulatedHMDState m_HMDState; XRSimulatedControllerState m_LeftControllerState; XRSimulatedControllerState m_RightControllerState; - - XRSimulatedHMD m_HMDDevice; - XRSimulatedController m_LeftControllerDevice; - XRSimulatedController m_RightControllerDevice; - - bool m_OnInputDeviceChangeSubscribed; -#endif - -#if XR_HANDS_1_1_OR_NEWER - XRHandProviderUtility.SubsystemUpdater m_SubsystemUpdater; - XRDeviceSimulatorHandsSubsystem m_SimHandSubsystem; #endif XRSimulatedHandState m_LeftHandState; @@ -1667,6 +1487,8 @@ TargetedDevices targetedDeviceInput Vector3 m_OriginalCameraOffsetObjectPosition; float m_OriginalCameraYOffset; #endif + SimulatedDeviceLifecycleManager m_DeviceLifecycleManager; + SimulatedHandExpressionManager m_HandExpressionManager; /// /// See . @@ -1684,6 +1506,9 @@ protected virtual void Awake() return; } + m_DeviceLifecycleManager = XRSimulatorUtility.FindCreateSimulatedDeviceLifecycleManager(gameObject); + m_HandExpressionManager = XRSimulatorUtility.FindCreateSimulatedHandExpressionManager(gameObject); + if (m_DeviceSimulatorActionAsset == null) { if (m_ManipulateLeftAction != null) @@ -1709,10 +1534,20 @@ protected virtual void Awake() Debug.LogWarning($"No Controller Action Asset has been defined for the XR Device Simulator, using a default one: {m_ControllerActionAsset.name}", m_ControllerActionAsset); } - if (m_HandActionAsset == null && m_SimulatedHandExpressions.Count > 0) + if (m_HandActionAsset == null) { - if (m_SimulatedHandExpressions[0].toggleAction != null) - m_HandActionAsset = m_SimulatedHandExpressions[0].toggleAction.asset; +#pragma warning disable CS0618 // Type or member is obsolete -- Old prefab configurations should continue to work + if (m_SimulatedHandExpressions.Count > 0) + { + if (m_SimulatedHandExpressions[0].toggleAction != null) + m_HandActionAsset = m_SimulatedHandExpressions[0].toggleAction.asset; + } +#pragma warning restore CS0618 + else if (m_HandExpressionManager.simulatedHandExpressions.Count > 0) + { + if (m_HandExpressionManager.simulatedHandExpressions[0].toggleInput.inputActionReferencePerformed != null) + m_HandActionAsset = m_HandExpressionManager.simulatedHandExpressions[0].toggleInput.inputActionReferencePerformed.asset; + } if (m_HandActionAsset == null) Debug.LogError("No Hand Action Asset has been defined, please assign one for the XR Device Simulator to work.", this); @@ -1720,8 +1555,6 @@ protected virtual void Awake() Debug.LogWarning($"No Hand Action Asset has been defined for the XR Device Simulator, using a default one: {m_HandActionAsset.name}", m_HandActionAsset); } - InitializeHandSubsystem(); - #if ENABLE_VR || UNITY_GAMECORE m_HMDState.Reset(); m_LeftControllerState.Reset(); @@ -1730,10 +1563,10 @@ protected virtual void Awake() m_RightHandState.Reset(); // Adding offset to the controller/hand when starting simulation to move them away from the Camera position - m_LeftControllerState.devicePosition = s_LeftDeviceDefaultInitialPosition; - m_RightControllerState.devicePosition = s_RightDeviceDefaultInitialPosition; - m_LeftHandState.position = s_LeftDeviceDefaultInitialPosition; - m_RightHandState.position = s_RightDeviceDefaultInitialPosition; + m_LeftControllerState.devicePosition = XRSimulatorUtility.leftDeviceDefaultInitialPosition; + m_RightControllerState.devicePosition = XRSimulatorUtility.rightDeviceDefaultInitialPosition; + m_LeftHandState.position = XRSimulatorUtility.leftDeviceDefaultInitialPosition; + m_RightHandState.position = XRSimulatorUtility.rightDeviceDefaultInitialPosition; if (m_DeviceSimulatorUI != null) Instantiate(m_DeviceSimulatorUI, transform); @@ -1747,36 +1580,11 @@ protected virtual void Awake() /// protected virtual void OnEnable() { -#if ENABLE_VR || UNITY_GAMECORE - -#if XR_HANDS_1_1_OR_NEWER - m_SimHandSubsystem?.Start(); - m_SubsystemUpdater?.Start(); -#endif - - if (m_RemoveOtherHMDDevices) - { - // Operate on a copy of the devices array since we are removing from it - foreach (var device in InputSystem.InputSystem.devices.ToArray()) - { - if (device is XRHMD && !(device is XRSimulatedHMD)) - { - InputSystem.InputSystem.RemoveDevice(device); - } - } - - InputSystem.InputSystem.onDeviceChange += OnInputDeviceChange; - m_OnInputDeviceChangeSubscribed = true; - } -#endif - - FindCameraTransform(); - - AddDevices(); + XRSimulatorUtility.FindCameraTransform(ref m_CachedCamera, ref m_CameraTransform); #if ENABLE_VR || UNITY_GAMECORE #if XR_SIMULATION_AVAILABLE && XR_MANAGEMENT_4_0_OR_NEWER - if (XRSimulationLoaderEnabledForEditorPlayMode()) + if (XRSimulatorUtility.XRSimulationLoaderEnabledForEditorPlayMode()) { if (m_XROrigin != null || ComponentLocatorUtility.TryFindComponent(out m_XROrigin)) { @@ -1850,7 +1658,9 @@ protected virtual void OnEnable() SubscribeSecondaryTouchAction(); #if XR_HANDS_1_1_OR_NEWER - SubscribeHandExpressionActions(); +#pragma warning disable CS0618 // Type or member is obsolete + SubscribeHandExpressionActionsDeprecated(); +#pragma warning restore CS0618 if (m_HandActionAsset != null) m_HandActionAsset.Enable(); @@ -1868,16 +1678,6 @@ protected virtual void OnEnable() /// protected virtual void OnDisable() { -#if ENABLE_VR || UNITY_GAMECORE - if (m_OnInputDeviceChangeSubscribed) - { - InputSystem.InputSystem.onDeviceChange -= OnInputDeviceChange; - m_OnInputDeviceChangeSubscribed = false; - } -#endif - - RemoveDevices(); - #if ENABLE_VR || UNITY_GAMECORE UnsubscribeKeyboardXTranslateAction(); UnsubscribeKeyboardYTranslateAction(); @@ -1919,10 +1719,9 @@ protected virtual void OnDisable() UnsubscribeSecondaryTouchAction(); #if XR_HANDS_1_1_OR_NEWER - UnsubscribeHandExpressionActions(); - - m_SubsystemUpdater?.Stop(); - m_SimHandSubsystem?.Stop(); +#pragma warning disable CS0618 // Type or member is obsolete + UnsubscribeHandExpressionActionsDeprecated(); +#pragma warning restore CS0618 if (m_HandActionAsset != null) m_HandActionAsset.Disable(); @@ -1960,14 +1759,14 @@ protected virtual void OnDisable() #endif } - void OnDestroy() + /// + /// See . + /// + protected virtual void Start() { -#if XR_HANDS_1_1_OR_NEWER - m_SimHandSubsystem?.Destroy(); - m_SubsystemUpdater?.Destroy(); - m_SimHandSubsystem = null; - m_SubsystemUpdater = null; -#endif +#pragma warning disable CS0618 // Type or member is obsolete -- Old prefab configurations should continue to work + InitializeHandExpressions(); +#pragma warning restore CS0618 } /// @@ -1977,156 +1776,21 @@ protected virtual void Update() { ProcessPoseInput(); ProcessControlInput(); + ProcessHandExpressionInput(); -#if XR_HANDS_1_1_OR_NEWER - if (m_DeviceModeDirty) - { - switch (m_DeviceMode) - { - // Changing from hands to controllers over multiple frames. - // Step 1: Simulate hand tracking lost - // Step 2: Add controller input devices. - case DeviceMode.Controller when !m_StartedDeviceModeChange: - // Step 1 - m_SimHandSubsystem?.SetUpdateHandsAllowed(false); - m_StartedDeviceModeChange = true; - break; - case DeviceMode.Controller: - // Step 2 - AddControllerDevices(); - m_DeviceModeDirty = false; - m_StartedDeviceModeChange = false; - break; - // Changing from controllers to hands over multiple frames. - // Step 1: Remove controller devices. - // Step 2: Simulate hand tracking reacquired. - case DeviceMode.Hand when !m_StartedDeviceModeChange: - // Step 1 - RemoveControllerDevices(); - m_StartedDeviceModeChange = true; - break; - case DeviceMode.Hand: - { - // Step 2 - m_SimHandSubsystem?.SetUpdateHandsAllowed(true); - m_DeviceModeDirty = false; - m_StartedDeviceModeChange = false; - break; - } - } - } -#endif - - ApplyHandState(); + m_DeviceLifecycleManager.ApplyHandState(m_LeftHandState, m_RightHandState); #if ENABLE_VR || UNITY_GAMECORE - if (m_HMDDevice != null && m_HMDDevice.added) - { - InputState.Change(m_HMDDevice, m_HMDState); - } - - if (m_LeftControllerDevice != null && m_LeftControllerDevice.added) - { - InputState.Change(m_LeftControllerDevice, m_LeftControllerState); - } - - if (m_RightControllerDevice != null && m_RightControllerDevice.added) - { - InputState.Change(m_RightControllerDevice, m_RightControllerState); - } + m_DeviceLifecycleManager.ApplyHMDState(m_HMDState); + m_DeviceLifecycleManager.ApplyControllerState(m_LeftControllerState, m_RightControllerState); #endif #if XR_SIMULATION_AVAILABLE if (m_SimulationCameraPoseProvider != null) - { m_SimulationCameraPoseProvider.transform.SetWorldPose(m_CameraTransform.GetWorldPose()); - } #endif } - void InitializeHandSubsystem() - { -#if XR_HANDS_1_1_OR_NEWER - if (!m_HandTrackingCapability) - return; - - if (m_RestingHandExpressionCapture == null) - return; - - if (m_RemoveOtherHMDDevices) - { - var currentHandSubsystems = new List(); - SubsystemManager.GetSubsystems(currentHandSubsystems); - foreach (var handSubsystem in currentHandSubsystems) - { - if (handSubsystem.running) - handSubsystem.Stop(); - } - } - - var descriptors = new List(); - SubsystemManager.GetSubsystemDescriptors(descriptors); - for (var i = 0; i < descriptors.Count; ++i) - { - var descriptor = descriptors[i]; - if (descriptor.id == XRDeviceSimulatorHandsProvider.id) - { - m_SimHandSubsystem = descriptor.Create() as XRDeviceSimulatorHandsSubsystem; - break; - } - } - - if (m_SimHandSubsystem == null) - { - Debug.LogError("Couldn't find Device Simulator hands subsystem.", this); - return; - } - - // Pass the hand expression captures to the simulated hand subsystem - m_SimHandSubsystem.SetCapturedExpression(HandExpressionName.Default, m_RestingHandExpressionCapture); - for (var index = 0; index < m_SimulatedHandExpressions.Count; ++index) - { - var simulatedExpression = m_SimulatedHandExpressions[index]; - - if (simulatedExpression.capture != null) - m_SimHandSubsystem.SetCapturedExpression(simulatedExpression.expressionName, simulatedExpression.capture); - else - Debug.LogError($"Missing Capture reference for Simulated Hand Expression: {simulatedExpression.expressionName}", this); - } - - m_SimHandSubsystem.SetUpdateHandsAllowed(false); - - m_SubsystemUpdater = new XRHandProviderUtility.SubsystemUpdater(m_SimHandSubsystem); -#endif - } - - /// - /// Finds and sets if necessary. - /// - /// Returns if the camera reference is valid. Otherwise, returns . - bool FindCameraTransform() - { - // Sync the cache tuple if necessary - if (m_CachedCamera.transform != m_CameraTransform) - m_CachedCamera = (m_CameraTransform, m_CameraTransform != null ? m_CameraTransform.GetComponent() : null); - - // Camera.main returns the first active and enabled main camera, so if the cached one - // is no longer enabled, find the new main camera. This is to support, for example, - // toggling between different XROrigin rigs each with their own main camera. - if (m_CachedCamera.transform == null || - (m_CachedCamera.camera != null && !m_CachedCamera.camera.isActiveAndEnabled)) - { - var mainCamera = Camera.main; - if (mainCamera == null) - return false; - - m_CameraTransform = mainCamera.transform; - m_CachedCamera = (m_CameraTransform, m_CameraTransform.GetComponent()); - } - - return true; - } - /// /// Process input from the user and update the state of manipulated device(s) /// related to position and rotation. @@ -2137,6 +1801,8 @@ protected virtual void ProcessPoseInput() // Set tracked states m_LeftControllerState.isTracked = m_LeftControllerIsTracked; m_RightControllerState.isTracked = m_RightControllerIsTracked; + m_LeftHandState.isTracked = m_LeftHandIsTracked; + m_RightHandState.isTracked = m_RightHandIsTracked; m_HMDState.isTracked = m_HMDIsTracked; m_LeftControllerState.trackingState = (int)m_LeftControllerTrackingState; m_RightControllerState.trackingState = (int)m_RightControllerTrackingState; @@ -2145,7 +1811,7 @@ protected virtual void ProcessPoseInput() if (m_TargetedDeviceInput == TargetedDevices.None) return; - if (!FindCameraTransform()) + if (!XRSimulatorUtility.FindCameraTransform(ref m_CachedCamera, ref m_CameraTransform)) return; var cameraParent = m_CameraTransform.parent; @@ -2158,23 +1824,11 @@ protected virtual void ProcessPoseInput() // Time delay as a workaround to avoid large mouse deltas on the first frame. if (m_TargetedDeviceInput == TargetedDevices.FPS && Time.time > 1f) { - // Keyboard translation - var scaledKeyboardTranslateInput = new Vector3( - m_KeyboardXTranslateInput * m_KeyboardXTranslateSpeed * m_KeyboardBodyTranslateMultiplier * Time.deltaTime, - m_KeyboardYTranslateInput * m_KeyboardYTranslateSpeed * m_KeyboardBodyTranslateMultiplier * Time.deltaTime, - m_KeyboardZTranslateInput * m_KeyboardZTranslateSpeed * m_KeyboardBodyTranslateMultiplier * Time.deltaTime); - - var forward = m_CameraTransform.forward; - var cameraParentUp = cameraParentRotation * Vector3.up; - if (Mathf.Approximately(Mathf.Abs(Vector3.Dot(forward, cameraParentUp)), 1f)) - { - forward = -cameraTransform.up; - } - - var forwardProjected = Vector3.ProjectOnPlane(forward, cameraParentUp); - var forwardRotation = Quaternion.LookRotation(forwardProjected, cameraParentUp); - var translationInWorldSpace = forwardRotation * scaledKeyboardTranslateInput; - var translationInDeviceSpace = inverseCameraParentRotation * translationInWorldSpace; + var xTranslateInput = m_KeyboardXTranslateInput * m_KeyboardXTranslateSpeed * m_KeyboardBodyTranslateMultiplier * Time.deltaTime; + var yTranslateInput = m_KeyboardYTranslateInput * m_KeyboardYTranslateSpeed * m_KeyboardBodyTranslateMultiplier * Time.deltaTime; + var zTranslateInput = m_KeyboardZTranslateInput * m_KeyboardZTranslateSpeed * m_KeyboardBodyTranslateMultiplier * Time.deltaTime; + var translationInDeviceSpace = XRSimulatorUtility.GetTranslationInDeviceSpace(xTranslateInput, yTranslateInput, zTranslateInput, + m_CameraTransform, cameraParentRotation, inverseCameraParentRotation); // Modify both controllers and hands in FPS mode no matter the device mode of the simulator // because we want to keep the devices in front. If we only updated one set, switching the mode @@ -2204,7 +1858,7 @@ protected virtual void ProcessPoseInput() m_CenterEyeEuler += anglesDelta; // Avoid awkward pitch angles - m_CenterEyeEuler.x = Mathf.Clamp(m_CenterEyeEuler.x, -k_CameraMaxXAngle, k_CameraMaxXAngle); + m_CenterEyeEuler.x = Mathf.Clamp(m_CenterEyeEuler.x, -XRSimulatorUtility.cameraMaxXAngle, XRSimulatorUtility.cameraMaxXAngle); m_HMDState.centerEyeRotation = Quaternion.Euler(m_CenterEyeEuler); m_HMDState.deviceRotation = m_HMDState.centerEyeRotation; @@ -2236,8 +1890,8 @@ protected virtual void ProcessPoseInput() { // Controllers // We reset both position and rotation in this FPS mode, so axis constraint is ignored - m_LeftControllerState.devicePosition = s_LeftDeviceDefaultInitialPosition; - m_RightControllerState.devicePosition = s_RightDeviceDefaultInitialPosition; + m_LeftControllerState.devicePosition = XRSimulatorUtility.leftDeviceDefaultInitialPosition; + m_RightControllerState.devicePosition = XRSimulatorUtility.rightDeviceDefaultInitialPosition; m_LeftControllerEuler = Vector3.zero; m_LeftControllerState.deviceRotation = Quaternion.Euler(m_LeftControllerEuler); @@ -2246,8 +1900,8 @@ protected virtual void ProcessPoseInput() m_RightControllerState.deviceRotation = Quaternion.Euler(m_RightControllerEuler); // Hands - m_LeftHandState.position = s_LeftDeviceDefaultInitialPosition; - m_RightHandState.position = s_RightDeviceDefaultInitialPosition; + m_LeftHandState.position = XRSimulatorUtility.leftDeviceDefaultInitialPosition; + m_RightHandState.position = XRSimulatorUtility.rightDeviceDefaultInitialPosition; m_LeftHandState.euler = Vector3.zero; m_LeftHandState.rotation = Quaternion.Euler(m_LeftHandState.euler); @@ -2268,7 +1922,7 @@ protected virtual void ProcessPoseInput() if ((axis2DTargets & Axis2DTargets.Position) != 0) { // Determine frame of reference - GetAxes(m_KeyboardTranslateSpace, m_CameraTransform, out var right, out var up, out var forward); + XRSimulatorUtility.GetAxes((Simulation.Space) m_KeyboardTranslateSpace, m_CameraTransform, out var right, out var up, out var forward); // Keyboard translation var deltaPosition = @@ -2278,31 +1932,31 @@ protected virtual void ProcessPoseInput() if (manipulatingLeftController) { - var deltaRotation = GetDeltaRotation(m_KeyboardTranslateSpace, m_LeftControllerState, inverseCameraParentRotation); + var deltaRotation = XRSimulatorUtility.GetDeltaRotation((Simulation.Space) m_KeyboardTranslateSpace, m_LeftControllerState, inverseCameraParentRotation); m_LeftControllerState.devicePosition += deltaRotation * deltaPosition; } if (manipulatingRightController) { - var deltaRotation = GetDeltaRotation(m_KeyboardTranslateSpace, m_RightControllerState, inverseCameraParentRotation); + var deltaRotation = XRSimulatorUtility.GetDeltaRotation((Simulation.Space) m_KeyboardTranslateSpace, m_RightControllerState, inverseCameraParentRotation); m_RightControllerState.devicePosition += deltaRotation * deltaPosition; } if (manipulatingLeftHand) { - var deltaRotation = GetDeltaRotation(m_KeyboardTranslateSpace, m_LeftHandState, inverseCameraParentRotation); + var deltaRotation = XRSimulatorUtility.GetDeltaRotation((Simulation.Space) m_KeyboardTranslateSpace, m_LeftHandState, inverseCameraParentRotation); m_LeftHandState.position += deltaRotation * deltaPosition; } if (manipulatingRightHand) { - var deltaRotation = GetDeltaRotation(m_KeyboardTranslateSpace, m_RightHandState, inverseCameraParentRotation); + var deltaRotation = XRSimulatorUtility.GetDeltaRotation((Simulation.Space) m_KeyboardTranslateSpace, m_RightHandState, inverseCameraParentRotation); m_RightHandState.position += deltaRotation * deltaPosition; } if (m_TargetedDeviceInput.HasDevice(TargetedDevices.HMD)) { - var deltaRotation = GetDeltaRotation(m_KeyboardTranslateSpace, m_HMDState, inverseCameraParentRotation); + var deltaRotation = XRSimulatorUtility.GetDeltaRotation((Simulation.Space) m_KeyboardTranslateSpace, m_HMDState, inverseCameraParentRotation); m_HMDState.centerEyePosition += deltaRotation * deltaPosition; m_HMDState.devicePosition = m_HMDState.centerEyePosition; } @@ -2312,7 +1966,7 @@ protected virtual void ProcessPoseInput() (mouseTransformationMode == TransformationMode.Rotate || m_RotateModeOverrideInput) && negateMode) { // Determine frame of reference - GetAxes(m_MouseTranslateSpace, m_CameraTransform, out var right, out var up, out var forward); + XRSimulatorUtility.GetAxes((Simulation.Space) m_MouseTranslateSpace, m_CameraTransform, out var right, out var up, out var forward); // Mouse translation var scaledMouseDeltaInput = @@ -2339,31 +1993,31 @@ protected virtual void ProcessPoseInput() if (manipulatingLeftController) { - var deltaRotation = GetDeltaRotation(m_MouseTranslateSpace, m_LeftControllerState, inverseCameraParentRotation); + var deltaRotation = XRSimulatorUtility.GetDeltaRotation((Simulation.Space) m_MouseTranslateSpace, m_LeftControllerState, inverseCameraParentRotation); m_LeftControllerState.devicePosition += deltaRotation * deltaPosition; } if (manipulatingRightController) { - var deltaRotation = GetDeltaRotation(m_MouseTranslateSpace, m_RightControllerState, inverseCameraParentRotation); + var deltaRotation = XRSimulatorUtility.GetDeltaRotation((Simulation.Space) m_MouseTranslateSpace, m_RightControllerState, inverseCameraParentRotation); m_RightControllerState.devicePosition += deltaRotation * deltaPosition; } if (manipulatingLeftHand) { - var deltaRotation = GetDeltaRotation(m_MouseTranslateSpace, m_LeftHandState, inverseCameraParentRotation); + var deltaRotation = XRSimulatorUtility.GetDeltaRotation((Simulation.Space) m_MouseTranslateSpace, m_LeftHandState, inverseCameraParentRotation); m_LeftHandState.position += deltaRotation * deltaPosition; } if (manipulatingRightHand) { - var deltaRotation = GetDeltaRotation(mouseTranslateSpace, m_RightHandState, inverseCameraParentRotation); + var deltaRotation = XRSimulatorUtility.GetDeltaRotation((Simulation.Space) mouseTranslateSpace, m_RightHandState, inverseCameraParentRotation); m_RightHandState.position += deltaRotation * deltaPosition; } if (m_TargetedDeviceInput.HasDevice(TargetedDevices.HMD)) { - var deltaRotation = GetDeltaRotation(m_MouseTranslateSpace, m_HMDState, inverseCameraParentRotation); + var deltaRotation = XRSimulatorUtility.GetDeltaRotation((Simulation.Space) m_MouseTranslateSpace, m_HMDState, inverseCameraParentRotation); m_HMDState.centerEyePosition += deltaRotation * deltaPosition; m_HMDState.devicePosition = m_HMDState.centerEyePosition; } @@ -2535,7 +2189,7 @@ protected virtual void ProcessPoseInput() protected virtual void ProcessControlInput() { #if ENABLE_VR || UNITY_GAMECORE - if (m_DeviceMode != DeviceMode.Controller) + if (m_DeviceLifecycleManager.deviceMode != SimulatedDeviceLifecycleManager.DeviceMode.Controller) return; ProcessAxis2DControlInput(); @@ -2552,39 +2206,34 @@ protected virtual void ProcessControlInput() #endif } - void ApplyHandState() + void ProcessHandExpressionInput() { #if XR_HANDS_1_1_OR_NEWER - if (m_DeviceMode != DeviceMode.Hand) + if (m_DeviceLifecycleManager.deviceMode != SimulatedDeviceLifecycleManager.DeviceMode.Hand) return; - if (m_SimHandSubsystem == null) - return; - - m_SimHandSubsystem.SetIsTracked(Handedness.Left, m_LeftHandIsTracked); - m_SimHandSubsystem.SetIsTracked(Handedness.Right, m_RightHandIsTracked); - - m_SimHandSubsystem.SetHandExpression(Handedness.Left, m_LeftHandState.expressionName); - m_SimHandSubsystem.SetRootHandPose(Handedness.Left, new Pose(m_LeftHandState.position, m_LeftHandState.rotation)); - - m_SimHandSubsystem.SetHandExpression(Handedness.Right, m_RightHandState.expressionName); - m_SimHandSubsystem.SetRootHandPose(Handedness.Right, new Pose(m_RightHandState.position, m_RightHandState.rotation)); + for (var index = 0; index < m_HandExpressionManager.simulatedHandExpressions.Count; ++index) + { + var simulatedExpression = m_HandExpressionManager.simulatedHandExpressions[index]; + if (simulatedExpression.toggleInput.ReadWasPerformedThisFrame()) + ToggleHandExpression(simulatedExpression); + } #endif } - void ToggleHandExpression(SimulatedHandExpression simulatedExpression) + void ToggleHandExpression(Simulation.SimulatedHandExpression simulatedExpression) { #if XR_HANDS_1_1_OR_NEWER - if (m_SimHandSubsystem == null) + if (m_DeviceLifecycleManager == null || m_DeviceLifecycleManager.simHandSubsystem == null) return; - // When toggling off, change back to the default resting hand. Otherwise, change to the expression pressed. if (manipulatingLeftHand) { + // When toggling off, change back to the default resting hand. Otherwise, change to the expression pressed. m_LeftHandState.expressionName = m_LeftHandState.expressionName == simulatedExpression.expressionName ? HandExpressionName.Default : simulatedExpression.expressionName; - m_SimHandSubsystem.SetHandExpression(Handedness.Left, m_LeftHandState.expressionName); + m_DeviceLifecycleManager.simHandSubsystem.SetHandExpression(Handedness.Left, m_LeftHandState.expressionName); } if (manipulatingRightHand) @@ -2592,7 +2241,7 @@ void ToggleHandExpression(SimulatedHandExpression simulatedExpression) m_RightHandState.expressionName = m_RightHandState.expressionName == simulatedExpression.expressionName ? HandExpressionName.Default : simulatedExpression.expressionName; - m_SimHandSubsystem.SetHandExpression(Handedness.Right, m_RightHandState.expressionName); + m_DeviceLifecycleManager.simHandSubsystem.SetHandExpression(Handedness.Right, m_RightHandState.expressionName); } #endif } @@ -2703,143 +2352,6 @@ protected virtual void ProcessAnalogButtonControlInput(ref XRSimulatedController } #endif - /// - /// Add simulated XR devices to the Input System. - /// - protected virtual void AddDevices() - { -#if ENABLE_VR || UNITY_GAMECORE - // Simulated HMD - if (m_HMDDevice == null) - { - var descHMD = new InputDeviceDescription - { - product = nameof(XRSimulatedHMD), - capabilities = new XRDeviceDescriptor - { - characteristics = XRInputTrackingAggregator.Characteristics.hmd, - }.ToJson(), - }; - - m_HMDDevice = InputSystem.InputSystem.AddDevice(descHMD) as XRSimulatedHMD; - if (m_HMDDevice == null) - Debug.LogError($"Failed to create {nameof(XRSimulatedHMD)}.", this); - } - else - { - InputSystem.InputSystem.AddDevice(m_HMDDevice); - } - - if (m_DeviceMode == DeviceMode.Controller) - AddControllerDevices(); -#endif - } - - void AddControllerDevices() - { -#if ENABLE_VR || UNITY_GAMECORE - if (m_LeftControllerDevice == null) - { - var descLeftHand = new InputDeviceDescription - { - product = nameof(XRSimulatedController), - capabilities = new XRDeviceDescriptor - { - deviceName = $"{nameof(XRSimulatedController)} - {InputSystem.CommonUsages.LeftHand}", - characteristics = XRInputTrackingAggregator.Characteristics.leftController, - }.ToJson(), - }; - - m_LeftControllerDevice = InputSystem.InputSystem.AddDevice(descLeftHand) as XRSimulatedController; - if (m_LeftControllerDevice != null) - InputSystem.InputSystem.SetDeviceUsage(m_LeftControllerDevice, InputSystem.CommonUsages.LeftHand); - else - Debug.LogError($"Failed to create {nameof(XRSimulatedController)} for {InputSystem.CommonUsages.LeftHand}.", this); - } - else - { - InputSystem.InputSystem.AddDevice(m_LeftControllerDevice); - } - - if (m_RightControllerDevice == null) - { - var descRightHand = new InputDeviceDescription - { - product = nameof(XRSimulatedController), - capabilities = new XRDeviceDescriptor - { - deviceName = $"{nameof(XRSimulatedController)} - {InputSystem.CommonUsages.RightHand}", - characteristics = XRInputTrackingAggregator.Characteristics.rightController, - }.ToJson(), - }; - - m_RightControllerDevice = InputSystem.InputSystem.AddDevice(descRightHand) as XRSimulatedController; - if (m_RightControllerDevice != null) - InputSystem.InputSystem.SetDeviceUsage(m_RightControllerDevice, InputSystem.CommonUsages.RightHand); - else - Debug.LogError($"Failed to create {nameof(XRSimulatedController)} for {InputSystem.CommonUsages.RightHand}.", this); - } - else - { - InputSystem.InputSystem.AddDevice(m_RightControllerDevice); - } -#endif - } - - /// - /// Remove simulated XR devices from the Input System. - /// - protected virtual void RemoveDevices() - { -#if ENABLE_VR || UNITY_GAMECORE - if (m_HMDDevice != null && m_HMDDevice.added) - InputSystem.InputSystem.RemoveDevice(m_HMDDevice); - - RemoveControllerDevices(); -#endif - } - - void RemoveControllerDevices() - { -#if ENABLE_VR || UNITY_GAMECORE - if (m_LeftControllerDevice != null && m_LeftControllerDevice.added) - { - InputSystem.InputSystem.RemoveDevice(m_LeftControllerDevice); - } - - if (m_RightControllerDevice != null && m_RightControllerDevice.added) - { - InputSystem.InputSystem.RemoveDevice(m_RightControllerDevice); - } -#endif - } - - void OnInputDeviceChange(InputSystem.InputDevice device, InputDeviceChange change) - { -#if ENABLE_VR || UNITY_GAMECORE - if (!m_RemoveOtherHMDDevices) - return; - - switch (change) - { - case InputDeviceChange.Added: - if (device is XRHMD && !(device is XRSimulatedHMD)) - InputSystem.InputSystem.RemoveDevice(device); - break; - } -#endif - } - -#if XR_SIMULATION_AVAILABLE && XR_MANAGEMENT_4_0_OR_NEWER - static bool XRSimulationLoaderEnabledForEditorPlayMode() - { - if (XRGeneralSettings.Instance != null && XRGeneralSettings.Instance.Manager != null) - return XRGeneralSettings.Instance.Manager.activeLoader is SimulationLoader simulationLoader && simulationLoader != null; - - return false; - } -#endif - /// /// Gets a that can be multiplied component-wise with another /// to reset components of the , based on axis constraint inputs. @@ -2856,101 +2368,6 @@ protected Vector3 GetResetScale() : Vector3.zero; } -#if ENABLE_VR || UNITY_GAMECORE - static void GetAxes(Space translateSpace, Transform cameraTransform, out Vector3 right, out Vector3 up, out Vector3 forward) - { - if (cameraTransform == null) - throw new ArgumentNullException(nameof(cameraTransform)); - - switch (translateSpace) - { - case Space.Local: - // Makes the assumption that the Camera and the Controllers are siblings - // (meaning they share a parent GameObject). - var cameraParent = cameraTransform.parent; - if (cameraParent != null) - { - right = cameraParent.TransformDirection(Vector3.right); - up = cameraParent.TransformDirection(Vector3.up); - forward = cameraParent.TransformDirection(Vector3.forward); - } - else - { - right = Vector3.right; - up = Vector3.up; - forward = Vector3.forward; - } - - break; - case Space.Parent: - right = Vector3.right; - up = Vector3.up; - forward = Vector3.forward; - break; - case Space.Screen: - right = cameraTransform.TransformDirection(Vector3.right); - up = cameraTransform.TransformDirection(Vector3.up); - forward = cameraTransform.TransformDirection(Vector3.forward); - break; - default: - right = Vector3.right; - up = Vector3.up; - forward = Vector3.forward; - Assert.IsTrue(false, $"Unhandled {nameof(translateSpace)}={translateSpace}."); - return; - } - } - - static Quaternion GetDeltaRotation(Space translateSpace, in XRSimulatedControllerState state, in Quaternion inverseCameraParentRotation) - => GetDeltaRotation(translateSpace, state.deviceRotation, inverseCameraParentRotation); - - static Quaternion GetDeltaRotation(Space translateSpace, in XRSimulatedHandState state, in Quaternion inverseCameraParentRotation) - => GetDeltaRotation(translateSpace, state.rotation, inverseCameraParentRotation); - - static Quaternion GetDeltaRotation(Space translateSpace, in XRSimulatedHMDState state, in Quaternion inverseCameraParentRotation) - => GetDeltaRotation(translateSpace, state.centerEyeRotation, inverseCameraParentRotation); - - static Quaternion GetDeltaRotation(Space translateSpace, Quaternion rotation, in Quaternion inverseCameraParentRotation) - { - switch (translateSpace) - { - case Space.Local: - return rotation * inverseCameraParentRotation; - case Space.Parent: - return Quaternion.identity; - case Space.Screen: - return inverseCameraParentRotation; - default: - Assert.IsTrue(false, $"Unhandled {nameof(translateSpace)}={translateSpace}."); - return Quaternion.identity; - } - } -#endif - - static void Subscribe(InputActionReference reference, Action performed = null, Action canceled = null) - { - var action = GetInputAction(reference); - if (action != null) - { - if (performed != null) - action.performed += performed; - if (canceled != null) - action.canceled += canceled; - } - } - - static void Unsubscribe(InputActionReference reference, Action performed = null, Action canceled = null) - { - var action = GetInputAction(reference); - if (action != null) - { - if (performed != null) - action.performed -= performed; - if (canceled != null) - action.canceled -= canceled; - } - } - /// /// Returns the negated of the given . /// @@ -2985,156 +2402,123 @@ CursorLockMode Negate(CursorLockMode mode) } } - static DeviceMode Negate(DeviceMode mode) - { - switch (mode) - { - case DeviceMode.Controller: - return DeviceMode.Hand; - case DeviceMode.Hand: - return DeviceMode.Controller; - default: - Assert.IsTrue(false, $"Unhandled {nameof(mode)}={mode}."); - return DeviceMode.Controller; - } - } - - void SubscribeKeyboardXTranslateAction() => Subscribe(m_KeyboardXTranslateAction, OnKeyboardXTranslatePerformed, OnKeyboardXTranslateCanceled); - void UnsubscribeKeyboardXTranslateAction() => Unsubscribe(m_KeyboardXTranslateAction, OnKeyboardXTranslatePerformed, OnKeyboardXTranslateCanceled); + #region Subscribe/Unsubscribe Callback Setup - void SubscribeKeyboardYTranslateAction() => Subscribe(m_KeyboardYTranslateAction, OnKeyboardYTranslatePerformed, OnKeyboardYTranslateCanceled); - void UnsubscribeKeyboardYTranslateAction() => Unsubscribe(m_KeyboardYTranslateAction, OnKeyboardYTranslatePerformed, OnKeyboardYTranslateCanceled); + void SubscribeKeyboardXTranslateAction() => XRSimulatorUtility.Subscribe(m_KeyboardXTranslateAction, OnKeyboardXTranslatePerformed, OnKeyboardXTranslateCanceled); + void UnsubscribeKeyboardXTranslateAction() => XRSimulatorUtility.Unsubscribe(m_KeyboardXTranslateAction, OnKeyboardXTranslatePerformed, OnKeyboardXTranslateCanceled); - void SubscribeKeyboardZTranslateAction() => Subscribe(m_KeyboardZTranslateAction, OnKeyboardZTranslatePerformed, OnKeyboardZTranslateCanceled); - void UnsubscribeKeyboardZTranslateAction() => Unsubscribe(m_KeyboardZTranslateAction, OnKeyboardZTranslatePerformed, OnKeyboardZTranslateCanceled); + void SubscribeKeyboardYTranslateAction() => XRSimulatorUtility.Subscribe(m_KeyboardYTranslateAction, OnKeyboardYTranslatePerformed, OnKeyboardYTranslateCanceled); + void UnsubscribeKeyboardYTranslateAction() => XRSimulatorUtility.Unsubscribe(m_KeyboardYTranslateAction, OnKeyboardYTranslatePerformed, OnKeyboardYTranslateCanceled); - void SubscribeManipulateLeftAction() => Subscribe(m_ManipulateLeftAction, OnManipulateLeftPerformed, OnManipulateLeftCanceled); - void UnsubscribeManipulateLeftAction() => Unsubscribe(m_ManipulateLeftAction, OnManipulateLeftPerformed, OnManipulateLeftCanceled); + void SubscribeKeyboardZTranslateAction() => XRSimulatorUtility.Subscribe(m_KeyboardZTranslateAction, OnKeyboardZTranslatePerformed, OnKeyboardZTranslateCanceled); + void UnsubscribeKeyboardZTranslateAction() => XRSimulatorUtility.Unsubscribe(m_KeyboardZTranslateAction, OnKeyboardZTranslatePerformed, OnKeyboardZTranslateCanceled); - void SubscribeManipulateRightAction() => Subscribe(m_ManipulateRightAction, OnManipulateRightPerformed, OnManipulateRightCanceled); - void UnsubscribeManipulateRightAction() => Unsubscribe(m_ManipulateRightAction, OnManipulateRightPerformed, OnManipulateRightCanceled); + void SubscribeManipulateLeftAction() => XRSimulatorUtility.Subscribe(m_ManipulateLeftAction, OnManipulateLeftPerformed, OnManipulateLeftCanceled); + void UnsubscribeManipulateLeftAction() => XRSimulatorUtility.Unsubscribe(m_ManipulateLeftAction, OnManipulateLeftPerformed, OnManipulateLeftCanceled); - void SubscribeToggleManipulateLeftAction() => Subscribe(m_ToggleManipulateLeftAction, OnToggleManipulateLeftPerformed); - void UnsubscribeToggleManipulateLeftAction() => Unsubscribe(m_ToggleManipulateLeftAction, OnToggleManipulateLeftPerformed); + void SubscribeManipulateRightAction() => XRSimulatorUtility.Subscribe(m_ManipulateRightAction, OnManipulateRightPerformed, OnManipulateRightCanceled); + void UnsubscribeManipulateRightAction() => XRSimulatorUtility.Unsubscribe(m_ManipulateRightAction, OnManipulateRightPerformed, OnManipulateRightCanceled); - void SubscribeToggleManipulateRightAction() => Subscribe(m_ToggleManipulateRightAction, OnToggleManipulateRightPerformed); - void UnsubscribeToggleManipulateRightAction() => Unsubscribe(m_ToggleManipulateRightAction, OnToggleManipulateRightPerformed); + void SubscribeToggleManipulateLeftAction() => XRSimulatorUtility.Subscribe(m_ToggleManipulateLeftAction, OnToggleManipulateLeftPerformed); + void UnsubscribeToggleManipulateLeftAction() => XRSimulatorUtility.Unsubscribe(m_ToggleManipulateLeftAction, OnToggleManipulateLeftPerformed); - void SubscribeToggleManipulateBodyAction() => Subscribe(m_ToggleManipulateBodyAction, OnToggleManipulateBodyPerformed); - void UnsubscribeToggleManipulateBodyAction() => Unsubscribe(m_ToggleManipulateBodyAction, OnToggleManipulateBodyPerformed); + void SubscribeToggleManipulateRightAction() => XRSimulatorUtility.Subscribe(m_ToggleManipulateRightAction, OnToggleManipulateRightPerformed); + void UnsubscribeToggleManipulateRightAction() => XRSimulatorUtility.Unsubscribe(m_ToggleManipulateRightAction, OnToggleManipulateRightPerformed); - void SubscribeManipulateHeadAction() => Subscribe(m_ManipulateHeadAction, OnManipulateHeadPerformed, OnManipulateHeadCanceled); - void UnsubscribeManipulateHeadAction() => Unsubscribe(m_ManipulateHeadAction, OnManipulateHeadPerformed, OnManipulateHeadCanceled); + void SubscribeToggleManipulateBodyAction() => XRSimulatorUtility.Subscribe(m_ToggleManipulateBodyAction, OnToggleManipulateBodyPerformed); + void UnsubscribeToggleManipulateBodyAction() => XRSimulatorUtility.Unsubscribe(m_ToggleManipulateBodyAction, OnToggleManipulateBodyPerformed); - void SubscribeHandControllerModeAction() => Subscribe(m_HandControllerModeAction, OnHandControllerModePerformed); - void UnsubscribeHandControllerModeAction() => Unsubscribe(m_HandControllerModeAction, OnHandControllerModePerformed); + void SubscribeManipulateHeadAction() => XRSimulatorUtility.Subscribe(m_ManipulateHeadAction, OnManipulateHeadPerformed, OnManipulateHeadCanceled); + void UnsubscribeManipulateHeadAction() => XRSimulatorUtility.Unsubscribe(m_ManipulateHeadAction, OnManipulateHeadPerformed, OnManipulateHeadCanceled); - void SubscribeCycleDevicesAction() => Subscribe(m_CycleDevicesAction, OnCycleDevicesPerformed); - void UnsubscribeCycleDevicesAction() => Unsubscribe(m_CycleDevicesAction, OnCycleDevicesPerformed); + void SubscribeHandControllerModeAction() => XRSimulatorUtility.Subscribe(m_HandControllerModeAction, OnHandControllerModePerformed); + void UnsubscribeHandControllerModeAction() => XRSimulatorUtility.Unsubscribe(m_HandControllerModeAction, OnHandControllerModePerformed); - void SubscribeStopManipulationAction() => Subscribe(m_StopManipulationAction, OnStopManipulationPerformed); - void UnsubscribeStopManipulationAction() => Unsubscribe(m_StopManipulationAction, OnStopManipulationPerformed); + void SubscribeCycleDevicesAction() => XRSimulatorUtility.Subscribe(m_CycleDevicesAction, OnCycleDevicesPerformed); + void UnsubscribeCycleDevicesAction() => XRSimulatorUtility.Unsubscribe(m_CycleDevicesAction, OnCycleDevicesPerformed); - void SubscribeMouseDeltaAction() => Subscribe(m_MouseDeltaAction, OnMouseDeltaPerformed, OnMouseDeltaCanceled); - void UnsubscribeMouseDeltaAction() => Unsubscribe(m_MouseDeltaAction, OnMouseDeltaPerformed, OnMouseDeltaCanceled); + void SubscribeStopManipulationAction() => XRSimulatorUtility.Subscribe(m_StopManipulationAction, OnStopManipulationPerformed); + void UnsubscribeStopManipulationAction() => XRSimulatorUtility.Unsubscribe(m_StopManipulationAction, OnStopManipulationPerformed); - void SubscribeMouseScrollAction() => Subscribe(m_MouseScrollAction, OnMouseScrollPerformed, OnMouseScrollCanceled); - void UnsubscribeMouseScrollAction() => Unsubscribe(m_MouseScrollAction, OnMouseScrollPerformed, OnMouseScrollCanceled); + void SubscribeMouseDeltaAction() => XRSimulatorUtility.Subscribe(m_MouseDeltaAction, OnMouseDeltaPerformed, OnMouseDeltaCanceled); + void UnsubscribeMouseDeltaAction() => XRSimulatorUtility.Unsubscribe(m_MouseDeltaAction, OnMouseDeltaPerformed, OnMouseDeltaCanceled); - void SubscribeRotateModeOverrideAction() => Subscribe(m_RotateModeOverrideAction, OnRotateModeOverridePerformed, OnRotateModeOverrideCanceled); - void UnsubscribeRotateModeOverrideAction() => Unsubscribe(m_RotateModeOverrideAction, OnRotateModeOverridePerformed, OnRotateModeOverrideCanceled); + void SubscribeMouseScrollAction() => XRSimulatorUtility.Subscribe(m_MouseScrollAction, OnMouseScrollPerformed, OnMouseScrollCanceled); + void UnsubscribeMouseScrollAction() => XRSimulatorUtility.Unsubscribe(m_MouseScrollAction, OnMouseScrollPerformed, OnMouseScrollCanceled); - void SubscribeToggleMouseTransformationModeAction() => Subscribe(m_ToggleMouseTransformationModeAction, OnToggleMouseTransformationModePerformed); - void UnsubscribeToggleMouseTransformationModeAction() => Unsubscribe(m_ToggleMouseTransformationModeAction, OnToggleMouseTransformationModePerformed); + void SubscribeRotateModeOverrideAction() => XRSimulatorUtility.Subscribe(m_RotateModeOverrideAction, OnRotateModeOverridePerformed, OnRotateModeOverrideCanceled); + void UnsubscribeRotateModeOverrideAction() => XRSimulatorUtility.Unsubscribe(m_RotateModeOverrideAction, OnRotateModeOverridePerformed, OnRotateModeOverrideCanceled); - void SubscribeNegateModeAction() => Subscribe(m_NegateModeAction, OnNegateModePerformed, OnNegateModeCanceled); - void UnsubscribeNegateModeAction() => Unsubscribe(m_NegateModeAction, OnNegateModePerformed, OnNegateModeCanceled); + void SubscribeToggleMouseTransformationModeAction() => XRSimulatorUtility.Subscribe(m_ToggleMouseTransformationModeAction, OnToggleMouseTransformationModePerformed); + void UnsubscribeToggleMouseTransformationModeAction() => XRSimulatorUtility.Unsubscribe(m_ToggleMouseTransformationModeAction, OnToggleMouseTransformationModePerformed); - void SubscribeXConstraintAction() => Subscribe(m_XConstraintAction, OnXConstraintPerformed, OnXConstraintCanceled); - void UnsubscribeXConstraintAction() => Unsubscribe(m_XConstraintAction, OnXConstraintPerformed, OnXConstraintCanceled); + void SubscribeNegateModeAction() => XRSimulatorUtility.Subscribe(m_NegateModeAction, OnNegateModePerformed, OnNegateModeCanceled); + void UnsubscribeNegateModeAction() => XRSimulatorUtility.Unsubscribe(m_NegateModeAction, OnNegateModePerformed, OnNegateModeCanceled); - void SubscribeYConstraintAction() => Subscribe(m_YConstraintAction, OnYConstraintPerformed, OnYConstraintCanceled); - void UnsubscribeYConstraintAction() => Unsubscribe(m_YConstraintAction, OnYConstraintPerformed, OnYConstraintCanceled); + void SubscribeXConstraintAction() => XRSimulatorUtility.Subscribe(m_XConstraintAction, OnXConstraintPerformed, OnXConstraintCanceled); + void UnsubscribeXConstraintAction() => XRSimulatorUtility.Unsubscribe(m_XConstraintAction, OnXConstraintPerformed, OnXConstraintCanceled); - void SubscribeZConstraintAction() => Subscribe(m_ZConstraintAction, OnZConstraintPerformed, OnZConstraintCanceled); - void UnsubscribeZConstraintAction() => Unsubscribe(m_ZConstraintAction, OnZConstraintPerformed, OnZConstraintCanceled); + void SubscribeYConstraintAction() => XRSimulatorUtility.Subscribe(m_YConstraintAction, OnYConstraintPerformed, OnYConstraintCanceled); + void UnsubscribeYConstraintAction() => XRSimulatorUtility.Unsubscribe(m_YConstraintAction, OnYConstraintPerformed, OnYConstraintCanceled); - void SubscribeResetAction() => Subscribe(m_ResetAction, OnResetPerformed, OnResetCanceled); - void UnsubscribeResetAction() => Unsubscribe(m_ResetAction, OnResetPerformed, OnResetCanceled); + void SubscribeZConstraintAction() => XRSimulatorUtility.Subscribe(m_ZConstraintAction, OnZConstraintPerformed, OnZConstraintCanceled); + void UnsubscribeZConstraintAction() => XRSimulatorUtility.Unsubscribe(m_ZConstraintAction, OnZConstraintPerformed, OnZConstraintCanceled); - void SubscribeToggleCursorLockAction() => Subscribe(m_ToggleCursorLockAction, OnToggleCursorLockPerformed); - void UnsubscribeToggleCursorLockAction() => Unsubscribe(m_ToggleCursorLockAction, OnToggleCursorLockPerformed); + void SubscribeResetAction() => XRSimulatorUtility.Subscribe(m_ResetAction, OnResetPerformed, OnResetCanceled); + void UnsubscribeResetAction() => XRSimulatorUtility.Unsubscribe(m_ResetAction, OnResetPerformed, OnResetCanceled); - void SubscribeToggleDevicePositionTargetAction() => Subscribe(m_ToggleDevicePositionTargetAction, OnToggleDevicePositionTargetPerformed); - void UnsubscribeToggleDevicePositionTargetAction() => Unsubscribe(m_ToggleDevicePositionTargetAction, OnToggleDevicePositionTargetPerformed); + void SubscribeToggleCursorLockAction() => XRSimulatorUtility.Subscribe(m_ToggleCursorLockAction, OnToggleCursorLockPerformed); + void UnsubscribeToggleCursorLockAction() => XRSimulatorUtility.Unsubscribe(m_ToggleCursorLockAction, OnToggleCursorLockPerformed); - void SubscribeTogglePrimary2DAxisTargetAction() => Subscribe(m_TogglePrimary2DAxisTargetAction, OnTogglePrimary2DAxisTargetPerformed); - void UnsubscribeTogglePrimary2DAxisTargetAction() => Unsubscribe(m_TogglePrimary2DAxisTargetAction, OnTogglePrimary2DAxisTargetPerformed); + void SubscribeToggleDevicePositionTargetAction() => XRSimulatorUtility.Subscribe(m_ToggleDevicePositionTargetAction, OnToggleDevicePositionTargetPerformed); + void UnsubscribeToggleDevicePositionTargetAction() => XRSimulatorUtility.Unsubscribe(m_ToggleDevicePositionTargetAction, OnToggleDevicePositionTargetPerformed); - void SubscribeToggleSecondary2DAxisTargetAction() => Subscribe(m_ToggleSecondary2DAxisTargetAction, OnToggleSecondary2DAxisTargetPerformed); - void UnsubscribeToggleSecondary2DAxisTargetAction() => Unsubscribe(m_ToggleSecondary2DAxisTargetAction, OnToggleSecondary2DAxisTargetPerformed); + void SubscribeTogglePrimary2DAxisTargetAction() => XRSimulatorUtility.Subscribe(m_TogglePrimary2DAxisTargetAction, OnTogglePrimary2DAxisTargetPerformed); + void UnsubscribeTogglePrimary2DAxisTargetAction() => XRSimulatorUtility.Unsubscribe(m_TogglePrimary2DAxisTargetAction, OnTogglePrimary2DAxisTargetPerformed); - void SubscribeAxis2DAction() => Subscribe(m_Axis2DAction, OnAxis2DPerformed, OnAxis2DCanceled); - void UnsubscribeAxis2DAction() => Unsubscribe(m_Axis2DAction, OnAxis2DPerformed, OnAxis2DCanceled); + void SubscribeToggleSecondary2DAxisTargetAction() => XRSimulatorUtility.Subscribe(m_ToggleSecondary2DAxisTargetAction, OnToggleSecondary2DAxisTargetPerformed); + void UnsubscribeToggleSecondary2DAxisTargetAction() => XRSimulatorUtility.Unsubscribe(m_ToggleSecondary2DAxisTargetAction, OnToggleSecondary2DAxisTargetPerformed); - void SubscribeRestingHandAxis2DAction() => Subscribe(m_RestingHandAxis2DAction, OnRestingHandAxis2DPerformed, OnRestingHandAxis2DCanceled); - void UnsubscribeRestingHandAxis2DAction() => Unsubscribe(m_RestingHandAxis2DAction, OnRestingHandAxis2DPerformed, OnRestingHandAxis2DCanceled); + void SubscribeAxis2DAction() => XRSimulatorUtility.Subscribe(m_Axis2DAction, OnAxis2DPerformed, OnAxis2DCanceled); + void UnsubscribeAxis2DAction() => XRSimulatorUtility.Unsubscribe(m_Axis2DAction, OnAxis2DPerformed, OnAxis2DCanceled); - void SubscribeGripAction() => Subscribe(m_GripAction, OnGripPerformed, OnGripCanceled); - void UnsubscribeGripAction() => Unsubscribe(m_GripAction, OnGripPerformed, OnGripCanceled); + void SubscribeRestingHandAxis2DAction() => XRSimulatorUtility.Subscribe(m_RestingHandAxis2DAction, OnRestingHandAxis2DPerformed, OnRestingHandAxis2DCanceled); + void UnsubscribeRestingHandAxis2DAction() => XRSimulatorUtility.Unsubscribe(m_RestingHandAxis2DAction, OnRestingHandAxis2DPerformed, OnRestingHandAxis2DCanceled); - void SubscribeTriggerAction() => Subscribe(m_TriggerAction, OnTriggerPerformed, OnTriggerCanceled); - void UnsubscribeTriggerAction() => Unsubscribe(m_TriggerAction, OnTriggerPerformed, OnTriggerCanceled); + void SubscribeGripAction() => XRSimulatorUtility.Subscribe(m_GripAction, OnGripPerformed, OnGripCanceled); + void UnsubscribeGripAction() => XRSimulatorUtility.Unsubscribe(m_GripAction, OnGripPerformed, OnGripCanceled); - void SubscribePrimaryButtonAction() => Subscribe(m_PrimaryButtonAction, OnPrimaryButtonPerformed, OnPrimaryButtonCanceled); - void UnsubscribePrimaryButtonAction() => Unsubscribe(m_PrimaryButtonAction, OnPrimaryButtonPerformed, OnPrimaryButtonCanceled); + void SubscribeTriggerAction() => XRSimulatorUtility.Subscribe(m_TriggerAction, OnTriggerPerformed, OnTriggerCanceled); + void UnsubscribeTriggerAction() => XRSimulatorUtility.Unsubscribe(m_TriggerAction, OnTriggerPerformed, OnTriggerCanceled); - void SubscribeSecondaryButtonAction() => Subscribe(m_SecondaryButtonAction, OnSecondaryButtonPerformed, OnSecondaryButtonCanceled); - void UnsubscribeSecondaryButtonAction() => Unsubscribe(m_SecondaryButtonAction, OnSecondaryButtonPerformed, OnSecondaryButtonCanceled); + void SubscribePrimaryButtonAction() => XRSimulatorUtility.Subscribe(m_PrimaryButtonAction, OnPrimaryButtonPerformed, OnPrimaryButtonCanceled); + void UnsubscribePrimaryButtonAction() => XRSimulatorUtility.Unsubscribe(m_PrimaryButtonAction, OnPrimaryButtonPerformed, OnPrimaryButtonCanceled); - void SubscribeMenuAction() => Subscribe(m_MenuAction, OnMenuPerformed, OnMenuCanceled); - void UnsubscribeMenuAction() => Unsubscribe(m_MenuAction, OnMenuPerformed, OnMenuCanceled); + void SubscribeSecondaryButtonAction() => XRSimulatorUtility.Subscribe(m_SecondaryButtonAction, OnSecondaryButtonPerformed, OnSecondaryButtonCanceled); + void UnsubscribeSecondaryButtonAction() => XRSimulatorUtility.Unsubscribe(m_SecondaryButtonAction, OnSecondaryButtonPerformed, OnSecondaryButtonCanceled); - void SubscribePrimary2DAxisClickAction() => Subscribe(m_Primary2DAxisClickAction, OnPrimary2DAxisClickPerformed, OnPrimary2DAxisClickCanceled); - void UnsubscribePrimary2DAxisClickAction() => Unsubscribe(m_Primary2DAxisClickAction, OnPrimary2DAxisClickPerformed, OnPrimary2DAxisClickCanceled); + void SubscribeMenuAction() => XRSimulatorUtility.Subscribe(m_MenuAction, OnMenuPerformed, OnMenuCanceled); + void UnsubscribeMenuAction() => XRSimulatorUtility.Unsubscribe(m_MenuAction, OnMenuPerformed, OnMenuCanceled); - void SubscribeSecondary2DAxisClickAction() => Subscribe(m_Secondary2DAxisClickAction, OnSecondary2DAxisClickPerformed, OnSecondary2DAxisClickCanceled); - void UnsubscribeSecondary2DAxisClickAction() => Unsubscribe(m_Secondary2DAxisClickAction, OnSecondary2DAxisClickPerformed, OnSecondary2DAxisClickCanceled); + void SubscribePrimary2DAxisClickAction() => XRSimulatorUtility.Subscribe(m_Primary2DAxisClickAction, OnPrimary2DAxisClickPerformed, OnPrimary2DAxisClickCanceled); + void UnsubscribePrimary2DAxisClickAction() => XRSimulatorUtility.Unsubscribe(m_Primary2DAxisClickAction, OnPrimary2DAxisClickPerformed, OnPrimary2DAxisClickCanceled); - void SubscribePrimary2DAxisTouchAction() => Subscribe(m_Primary2DAxisTouchAction, OnPrimary2DAxisTouchPerformed, OnPrimary2DAxisTouchCanceled); - void UnsubscribePrimary2DAxisTouchAction() => Unsubscribe(m_Primary2DAxisTouchAction, OnPrimary2DAxisTouchPerformed, OnPrimary2DAxisTouchCanceled); + void SubscribeSecondary2DAxisClickAction() => XRSimulatorUtility.Subscribe(m_Secondary2DAxisClickAction, OnSecondary2DAxisClickPerformed, OnSecondary2DAxisClickCanceled); + void UnsubscribeSecondary2DAxisClickAction() => XRSimulatorUtility.Unsubscribe(m_Secondary2DAxisClickAction, OnSecondary2DAxisClickPerformed, OnSecondary2DAxisClickCanceled); - void SubscribeSecondary2DAxisTouchAction() => Subscribe(m_Secondary2DAxisTouchAction, OnSecondary2DAxisTouchPerformed, OnSecondary2DAxisTouchCanceled); - void UnsubscribeSecondary2DAxisTouchAction() => Unsubscribe(m_Secondary2DAxisTouchAction, OnSecondary2DAxisTouchPerformed, OnSecondary2DAxisTouchCanceled); + void SubscribePrimary2DAxisTouchAction() => XRSimulatorUtility.Subscribe(m_Primary2DAxisTouchAction, OnPrimary2DAxisTouchPerformed, OnPrimary2DAxisTouchCanceled); + void UnsubscribePrimary2DAxisTouchAction() => XRSimulatorUtility.Unsubscribe(m_Primary2DAxisTouchAction, OnPrimary2DAxisTouchPerformed, OnPrimary2DAxisTouchCanceled); - void SubscribePrimaryTouchAction() => Subscribe(m_PrimaryTouchAction, OnPrimaryTouchPerformed, OnPrimaryTouchCanceled); - void UnsubscribePrimaryTouchAction() => Unsubscribe(m_PrimaryTouchAction, OnPrimaryTouchPerformed, OnPrimaryTouchCanceled); + void SubscribeSecondary2DAxisTouchAction() => XRSimulatorUtility.Subscribe(m_Secondary2DAxisTouchAction, OnSecondary2DAxisTouchPerformed, OnSecondary2DAxisTouchCanceled); + void UnsubscribeSecondary2DAxisTouchAction() => XRSimulatorUtility.Unsubscribe(m_Secondary2DAxisTouchAction, OnSecondary2DAxisTouchPerformed, OnSecondary2DAxisTouchCanceled); - void SubscribeSecondaryTouchAction() => Subscribe(m_SecondaryTouchAction, OnSecondaryTouchPerformed, OnSecondaryTouchCanceled); - void UnsubscribeSecondaryTouchAction() => Unsubscribe(m_SecondaryTouchAction, OnSecondaryTouchPerformed, OnSecondaryTouchCanceled); + void SubscribePrimaryTouchAction() => XRSimulatorUtility.Subscribe(m_PrimaryTouchAction, OnPrimaryTouchPerformed, OnPrimaryTouchCanceled); + void UnsubscribePrimaryTouchAction() => XRSimulatorUtility.Unsubscribe(m_PrimaryTouchAction, OnPrimaryTouchPerformed, OnPrimaryTouchCanceled); -#if XR_HANDS_1_1_OR_NEWER - void SubscribeHandExpressionActions() - { - foreach (var simulatedExpression in m_SimulatedHandExpressions) - { - simulatedExpression.performed += OnHandExpressionPerformed; - } - } - - void UnsubscribeHandExpressionActions() - { - foreach (var simulatedExpression in m_SimulatedHandExpressions) - { - simulatedExpression.performed -= OnHandExpressionPerformed; - } - } + void SubscribeSecondaryTouchAction() => XRSimulatorUtility.Subscribe(m_SecondaryTouchAction, OnSecondaryTouchPerformed, OnSecondaryTouchCanceled); + void UnsubscribeSecondaryTouchAction() => XRSimulatorUtility.Unsubscribe(m_SecondaryTouchAction, OnSecondaryTouchPerformed, OnSecondaryTouchCanceled); - void OnHandExpressionPerformed(SimulatedHandExpression simulatedExpression, InputAction.CallbackContext context) - { - ToggleHandExpression(simulatedExpression); - } -#endif + #endregion void OnKeyboardXTranslatePerformed(InputAction.CallbackContext context) => m_KeyboardXTranslateInput = context.ReadValue(); void OnKeyboardXTranslateCanceled(InputAction.CallbackContext context) => m_KeyboardXTranslateInput = 0f; @@ -3172,15 +2556,8 @@ void OnToggleManipulateRightPerformed(InputAction.CallbackContext context) void OnHandControllerModePerformed(InputAction.CallbackContext context) { -#if XR_HANDS_1_1_OR_NEWER - // Fully changing between controller and hand mode takes multiple frames. - // Don't allow changing the mode again before it has finished. - if (m_DeviceModeDirty) - return; - - m_DeviceMode = Negate(m_DeviceMode); - m_DeviceModeDirty = true; -#endif + if (m_DeviceLifecycleManager != null) + m_DeviceLifecycleManager.SwitchDeviceMode(); } void OnCycleDevicesPerformed(InputAction.CallbackContext context) @@ -3270,39 +2647,6 @@ void OnCycleDevicesPerformed(InputAction.CallbackContext context) void OnSecondaryTouchPerformed(InputAction.CallbackContext context) => m_SecondaryTouchInput = true; void OnSecondaryTouchCanceled(InputAction.CallbackContext context) => m_SecondaryTouchInput = false; - - static InputAction GetInputAction(InputActionReference actionReference) - { -#pragma warning disable IDE0031 // Use null propagation -- Do not use for UnityEngine.Object types - return actionReference != null ? actionReference.action : null; -#pragma warning restore IDE0031 - } - - internal static unsafe bool TryExecuteCommand(InputDeviceCommand* commandPtr, out long result) - { - // This is a utility method called by XRSimulatedHMD and XRSimulatedController - // since both devices share the same command handling. - // This replicates the logic in XRToISXDevice::IOCTL (XRInputToISX.cpp). - var type = commandPtr->type; - if (type == RequestSyncCommand.Type) - { - // The state is maintained by XRDeviceSimulator, so no need for any change - // when focus is regained. Returning success instructs Input System to not - // reset the device. - result = InputDeviceCommand.GenericSuccess; - return true; - } - - if (type == QueryCanRunInBackground.Type) - { - ((QueryCanRunInBackground*)commandPtr)->canRunInBackground = true; - result = InputDeviceCommand.GenericSuccess; - return true; - } - - result = default; - return false; - } } /// diff --git a/Runtime/Inputs/Simulation/XRDeviceSimulator.deprecated.cs b/Runtime/Inputs/Simulation/XRDeviceSimulator.deprecated.cs new file mode 100644 index 00000000..7c7da353 --- /dev/null +++ b/Runtime/Inputs/Simulation/XRDeviceSimulator.deprecated.cs @@ -0,0 +1,293 @@ +using System; +using System.Collections.Generic; +using UnityEngine.InputSystem; +using UnityEngine.InputSystem.XR; +using UnityEngine.XR.Interaction.Toolkit.Inputs.Simulation.Hands; + +#if XR_HANDS_1_1_OR_NEWER +using UnityEngine.XR.Hands; +#endif + +namespace UnityEngine.XR.Interaction.Toolkit.Inputs.Simulation +{ + public partial class XRDeviceSimulator + { + /// + /// A hand expression that can be simulated by performing an input action. + /// + [Serializable] + [Obsolete("XRDeviceSimulator.SimulatedHandExpression has been deprecated in XRI 3.1.0. Update the XR Device Simulator sample in Package Manager or use the unnested version of SimulatedHandExpression instead.")] + public class SimulatedHandExpression : ISerializationCallbackReceiver + { + [SerializeField] + [Tooltip("The unique name for the hand expression.")] + [Delayed] + string m_Name; + + /// + /// The name of the hand expression to simulate when the input action is performed. + /// + public string name => m_ExpressionName.ToString(); + + [SerializeField] + [Tooltip("The input action to trigger the hand expression.")] + InputActionReference m_ToggleAction; + + /// + /// The input action reference to trigger this simulated hand expression. + /// + public InputActionReference toggleAction => m_ToggleAction; + + [SerializeField] + [Tooltip("The captured hand expression to simulate when the input action is performed.")] + HandExpressionCapture m_Capture; + + /// + /// The captured expression to simulate when the input action is performed. + /// + internal HandExpressionCapture capture + { + get => m_Capture; + set => m_Capture = value; + } + + HandExpressionName m_ExpressionName; + + /// + /// The name of the hand expression to simulate when the input action is performed. + /// Use this for a faster name identifier than comparing by name. + /// + internal HandExpressionName expressionName + { + get => m_ExpressionName; + set => m_ExpressionName = value; + } + + /// + /// Sprite icon for the simulated hand expression. + /// + public Sprite icon => m_Capture.icon; + + Action m_Performed; + + /// + /// Event that is called when the input action for the simulated hand expression is performed. + /// + /// + /// Wraps the performed action of the in order to add a reference + /// to this class in the callback method signature. + /// + public event Action performed + { + add + { + m_Performed += value; + if (!m_Subscribed) + { + m_Subscribed = true; + m_ToggleAction.action.performed += OnActionPerformed; + } + } + remove + { + m_Performed -= value; + if (m_Performed == null) + { + m_Subscribed = false; + m_ToggleAction.action.performed -= OnActionPerformed; + } + } + } + + bool m_Subscribed; + + /// + void ISerializationCallbackReceiver.OnBeforeSerialize() + { + m_Name = m_ExpressionName.ToString(); + } + + /// + void ISerializationCallbackReceiver.OnAfterDeserialize() + { + m_ExpressionName = new HandExpressionName(m_Name); + } + + void OnActionPerformed(InputAction.CallbackContext context) + { + m_Performed?.Invoke(this, context); + } + } + + /// + /// The device mode of the left and right device. + /// + /// + [Obsolete("DeviceMode has been deprecated in XRI 3.1.0 due to being moved out XR Device Simulator. Use DeviceMode in the SimulatedDeviceLifecycleManager instead.")] + public enum DeviceMode + { + /// + /// Motion controller mode. + /// + Controller, + + /// + /// Tracked hand mode. + /// + Hand, + } + + [SerializeField] + [Obsolete("m_RestingHandExpressionCapture has been deprecated in XRI 3.1.0 and moved to SimulatedHandExpressionManager.")] + HandExpressionCapture m_RestingHandExpressionCapture; + + [SerializeField] + [Tooltip("The list of hand expressions to simulate.")] + [Obsolete("m_SimulatedHandExpressions has been deprecated in XRI 3.1.0 and moved to SimulatedHandExpressionManager.")] + List m_SimulatedHandExpressions = new List(); + + /// + /// The list of simulated hand expressions for the device simulator. + /// + [Obsolete("simulatedHandExpressions has been deprecated in XRI 3.1.0. Update the XR Device Simulator sample in Package Manager or use simulatedHandExpressions in the SimulatedHandExpressionManager instead.")] + public List simulatedHandExpressions => m_SimulatedHandExpressions; + + /// + /// This boolean value indicates whether we remove other devices in this session so that they don't conflict with the . + /// A value (default) means we remove all other devices except the generated by the . + /// A value means we do not remove any other devices. + /// + [Obsolete("removeOtherHMDDevices has been deprecated in XRI 3.1.0. Use removeOtherHMDDevices in the SimulatedDeviceLifecycleManager instead.")] + public bool removeOtherHMDDevices + { + get => m_DeviceLifecycleManager != null ? m_DeviceLifecycleManager.removeOtherHMDDevices : default; + set + { + if (m_DeviceLifecycleManager != null) + m_DeviceLifecycleManager.removeOtherHMDDevices = value; + else + _ = value; + } + } + + /// + /// Whether to create a simulated Hand Tracking Subsystem and provider on startup. Requires the XR Hands package. + /// + [Obsolete("handTrackingCapability has been deprecated in XRI 3.1.0. Use handTrackingCapability in the SimulatedDeviceLifecycleManager instead.")] + public bool handTrackingCapability + { + get => m_DeviceLifecycleManager != null ? m_DeviceLifecycleManager.handTrackingCapability : default; + set + { + if (m_DeviceLifecycleManager != null) + m_DeviceLifecycleManager.handTrackingCapability = value; + else + _ = value; + } + } + + /// + /// Whether the simulator is in controller mode or tracked hand mode. + /// + /// + [Obsolete("deviceMode has been deprecated in XRI 3.1.0 due to being moved out XR Device Simulator. Use deviceMode in the SimulatedDeviceLifecycleManager instead.")] + public DeviceMode deviceMode => m_DeviceLifecycleManager != null ? (DeviceMode)m_DeviceLifecycleManager.deviceMode : default; + + /// + /// Add simulated XR devices to the Input System. + /// + [Obsolete("AddDevices has been deprecated in XRI 3.1.0 and will be removed in a future release. It has instead been moved to the SimulatedDeviceLifecycleManager.", false)] + protected virtual void AddDevices() + { + if (m_DeviceLifecycleManager != null) + m_DeviceLifecycleManager.AddDevices(); + else + Debug.LogError("No Simulated Device Lifecycle Manager has been found so AddDevices() will not be called.", this); + } + + /// + /// Remove simulated XR devices from the Input System. + /// + [Obsolete("RemoveDevices has been deprecated in XRI 3.1.0 and will be removed in a future release. It has instead been moved to the SimulatedDeviceLifecycleManager.", false)] + protected virtual void RemoveDevices() + { + if (m_DeviceLifecycleManager != null) + m_DeviceLifecycleManager.RemoveDevices(); + else + Debug.LogError("No Simulated Device Lifecycle Manager has been found so RemoveDevices() will not be called.", this); + } + + [Obsolete("InitializeHandExpressions has been deprecated in XRI 3.1.0 and moved to SimulatedHandExpressionManager.")] + void InitializeHandExpressions() + { +#if XR_HANDS_1_1_OR_NEWER + if (m_DeviceLifecycleManager == null || m_DeviceLifecycleManager.simHandSubsystem == null || m_RestingHandExpressionCapture == null) + return; + + // Pass the hand expression captures to the simulated hand subsystem + m_DeviceLifecycleManager.simHandSubsystem.SetCapturedExpression(HandExpressionName.Default, m_RestingHandExpressionCapture); + for (var index = 0; index < m_SimulatedHandExpressions.Count; ++index) + { + var simulatedExpression = m_SimulatedHandExpressions[index]; + + if (simulatedExpression.capture != null) + m_DeviceLifecycleManager.simHandSubsystem.SetCapturedExpression(simulatedExpression.expressionName, simulatedExpression.capture); + else + Debug.LogError($"Missing Capture reference for Simulated Hand Expression: {simulatedExpression.expressionName}", this); + } +#endif + } + +#if XR_HANDS_1_1_OR_NEWER + [Obsolete("SubscribeHandExpressionActionsDeprecated has been deprecated in XRI 3.1.0 and replaced with SubscribeHandExpressionActions.")] + void SubscribeHandExpressionActionsDeprecated() + { + foreach (var simulatedExpression in m_SimulatedHandExpressions) + { + simulatedExpression.performed += OnHandExpressionPerformedDeprecated; + } + } + + [Obsolete("UnsubscribeHandExpressionActionsDeprecated has been deprecated in XRI 3.1.0 and replaced with UnsubscribeHandExpressionActions.")] + void UnsubscribeHandExpressionActionsDeprecated() + { + foreach (var simulatedExpression in m_SimulatedHandExpressions) + { + simulatedExpression.performed -= OnHandExpressionPerformedDeprecated; + } + } + + [Obsolete("OnHandExpressionPerformedDeprecated has been deprecated in XRI 3.1.0 and replaced with OnHandExpressionPerformed.")] + void OnHandExpressionPerformedDeprecated(SimulatedHandExpression simulatedExpression, InputAction.CallbackContext context) + { + ToggleHandExpressionDeprecated(simulatedExpression); + } +#endif + + [Obsolete("ToggleHandExpressionDeprecated has been deprecated in XRI 3.1.0 and replaced with ToggleHandExpression.")] + void ToggleHandExpressionDeprecated(SimulatedHandExpression simulatedExpression) + { +#if XR_HANDS_1_1_OR_NEWER + if (m_DeviceLifecycleManager == null || m_DeviceLifecycleManager.simHandSubsystem == null) + return; + + // When toggling off, change back to the default resting hand. Otherwise, change to the expression pressed. + if (manipulatingLeftHand) + { + m_LeftHandState.expressionName = m_LeftHandState.expressionName == simulatedExpression.expressionName + ? HandExpressionName.Default + : simulatedExpression.expressionName; + m_DeviceLifecycleManager.simHandSubsystem.SetHandExpression(Handedness.Left, m_LeftHandState.expressionName); + } + + if (manipulatingRightHand) + { + m_RightHandState.expressionName = m_RightHandState.expressionName == simulatedExpression.expressionName + ? HandExpressionName.Default + : simulatedExpression.expressionName; + m_DeviceLifecycleManager.simHandSubsystem.SetHandExpression(Handedness.Right, m_RightHandState.expressionName); + } +#endif + } + } +} diff --git a/Runtime/Inputs/Simulation/XRDeviceSimulator.deprecated.cs.meta b/Runtime/Inputs/Simulation/XRDeviceSimulator.deprecated.cs.meta new file mode 100644 index 00000000..e7b3a629 --- /dev/null +++ b/Runtime/Inputs/Simulation/XRDeviceSimulator.deprecated.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 879af13d794e2964796afd250fd43388 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Inputs/Simulation/XRDeviceSimulatorLoader.deprecated.cs b/Runtime/Inputs/Simulation/XRDeviceSimulatorLoader.deprecated.cs new file mode 100644 index 00000000..a7cec4d1 --- /dev/null +++ b/Runtime/Inputs/Simulation/XRDeviceSimulatorLoader.deprecated.cs @@ -0,0 +1,21 @@ +#if ENABLE_VR || UNITY_GAMECORE || PACKAGE_DOCS_GENERATION +using System; + +namespace UnityEngine.XR.Interaction.Toolkit.Inputs.Simulation +{ + /// + /// (Deprecated) This class instantiates the in the scene depending on + /// project settings. + /// + [Obsolete("XRDeviceSimulatorLoader has been replaced by the XRInteractionSimulatorLoader. ", false)] + public static class XRDeviceSimulatorLoader + { + /// + /// (Deprecated) This method has been replaced with . + /// + public static void Initialize() + { + } + } +} +#endif diff --git a/Runtime/Inputs/Simulation/XRDeviceSimulatorLoader.cs.meta b/Runtime/Inputs/Simulation/XRDeviceSimulatorLoader.deprecated.cs.meta similarity index 100% rename from Runtime/Inputs/Simulation/XRDeviceSimulatorLoader.cs.meta rename to Runtime/Inputs/Simulation/XRDeviceSimulatorLoader.deprecated.cs.meta diff --git a/Runtime/Inputs/Simulation/XRDeviceSimulatorSettings.cs b/Runtime/Inputs/Simulation/XRDeviceSimulatorSettings.cs index e773710c..4e5d84f7 100644 --- a/Runtime/Inputs/Simulation/XRDeviceSimulatorSettings.cs +++ b/Runtime/Inputs/Simulation/XRDeviceSimulatorSettings.cs @@ -4,7 +4,7 @@ namespace UnityEngine.XR.Interaction.Toolkit.Inputs.Simulation { /// - /// Configuration class for XR Device Simulator which + /// Configuration class for Interaction Simulator which /// stores settings related to automatic instantiation. /// [ScriptableSettingsPath(ProjectPath.k_XRInteractionSettingsFolder)] @@ -14,7 +14,7 @@ class XRDeviceSimulatorSettings : ScriptableSettings bool m_AutomaticallyInstantiateSimulatorPrefab; /// - /// Setting this value to will tell the to look for and automatically + /// Setting this value to will tell the to look for and automatically /// add the to the current scene if it does not already exist. /// internal bool automaticallyInstantiateSimulatorPrefab @@ -31,7 +31,7 @@ internal bool automaticallyInstantiateSimulatorPrefab /// preventing it from automatically appearing in standalone builds. Disable to allow the simulator to be created in standalone builds. /// /// - /// Setting this value to will limit the to + /// Setting this value to will limit the to /// only automatically instantiate the if the application is running inside the Unity Editor. /// This property is only used if is enabled. /// @@ -41,6 +41,18 @@ internal bool automaticallyInstantiateInEditorOnly set => m_AutomaticallyInstantiateInEditorOnly = value; } + [SerializeField] + bool m_UseClassic; + + /// + /// Enable this to automatically use the legacy prefab. Disable to return to the default behavior of automatically using of the prefab instead. + /// + internal bool useClassic + { + get => m_UseClassic; + set => m_UseClassic = value; + } + [SerializeField] GameObject m_SimulatorPrefab; diff --git a/Runtime/Inputs/Simulation/XRInteractionSimulator.cs b/Runtime/Inputs/Simulation/XRInteractionSimulator.cs new file mode 100644 index 00000000..07f78985 --- /dev/null +++ b/Runtime/Inputs/Simulation/XRInteractionSimulator.cs @@ -0,0 +1,1801 @@ +#if AR_FOUNDATION_6_0_OR_NEWER && (UNITY_EDITOR || UNITY_STANDALONE_OSX || UNITY_STANDALONE_WIN || UNITY_STANDALONE_LINUX) +#define XR_SIMULATION_AVAILABLE +#endif + +using System.Collections.Generic; +using UnityEngine.Assertions; +using UnityEngine.InputSystem.XR; +using UnityEngine.XR.Interaction.Toolkit.Inputs.Simulation.Hands; +using UnityEngine.XR.Interaction.Toolkit.Inputs.Readers; + +#if XR_HANDS_1_1_OR_NEWER +using UnityEngine.XR.Hands; +#endif + +#if XR_SIMULATION_AVAILABLE +using Unity.XR.CoreUtils; +using UnityEngine.XR.Interaction.Toolkit.Utilities; +using UnityEngine.XR.Simulation; +#endif + +namespace UnityEngine.XR.Interaction.Toolkit.Inputs.Simulation +{ + /// + /// A component which handles mouse and keyboard input from the user and uses it to + /// simulate on-device interaction in XR Interaction Toolkit. + /// + /// + /// This class does not directly manipulate the camera or controllers which are part of + /// the XR Origin, but rather drives them indirectly through simulated input devices. + ///

+ /// Use the Package Manager window to install the XR Interaction Simulator sample into + /// your project to get sample mouse and keyboard bindings for Input System actions that + /// this component expects. The sample also includes a prefab of a + /// with this component attached that has references to those sample actions already set. + /// To make use of this simulator, add the prefab to your scene (the prefab makes use + /// of to ensure the Input System actions are enabled). + ///

+ /// Note that the XR Origin must read the position and rotation of the HMD and controllers + /// by using Input System actions (such as by using + /// and ) for this simulator to work as expected. + /// Attempting to use XR input subsystem device methods (such as by using + /// and ) will not work as expected + /// since this simulator depends on the Input System to drive the simulated devices. + ///
+ [AddComponentMenu("XR/Debug/XR Interaction Simulator", 11)] + [DefaultExecutionOrder(XRInteractionUpdateOrder.k_InteractionSimulator)] + [HelpURL(XRHelpURLConstants.k_XRInteractionSimulator)] + public class XRInteractionSimulator : MonoBehaviour + { + const float k_DeviceLeftRightOffsetAmount = 0.1f; + const float k_DeviceForwardOffsetAmount = 0.3f; + const float k_DeviceDownOffsetAmount = 0.045f; + + [SerializeField] + [Tooltip("The Transform that contains the Camera. This is usually the \"Head\" of XR Origins. Automatically set to the first enabled camera tagged MainCamera if unset.")] + Transform m_CameraTransform; + + /// + /// The that contains the . This is usually the "Head" of XR Origins. + /// Automatically set to if unset. + /// + public Transform cameraTransform + { + get => m_CameraTransform; + set => m_CameraTransform = value; + } + + [SerializeField] + [Tooltip("The corresponding manager for this simulator that handles the lifecycle of the simulated devices.")] + SimulatedDeviceLifecycleManager m_DeviceLifecycleManager; + + /// + /// The corresponding manager for this simulator that handles the lifecycle of the simulated devices. + /// + /// + /// If this value is not set, the simulator will either find a lifecycle manager in the scene or create one. + /// + public SimulatedDeviceLifecycleManager deviceLifecycleManager + { + get => m_DeviceLifecycleManager; + set => m_DeviceLifecycleManager = value; + } + + [SerializeField] + [Tooltip("The corresponding manager for this simulator that handles the hand expressions.")] + SimulatedHandExpressionManager m_HandExpressionManager; + + /// + /// The corresponding manager for this simulator that handles the hand expressions. + /// + /// + /// If this value is not set, the simulator will either find a hand expression manager in the scene or create one. + /// + public SimulatedHandExpressionManager handExpressionManager + { + get => m_HandExpressionManager; + set => m_HandExpressionManager = value; + } + + [SerializeField] + [Tooltip("The optional Interaction Simulator UI prefab to use along with the XR Interaction Simulator.")] + GameObject m_InteractionSimulatorUI; + + /// + /// The optional Interaction Simulator UI prefab to use along with the XR Interaction Simulator. + /// + public GameObject interactionSimulatorUI + { + get => m_InteractionSimulatorUI; + set => m_InteractionSimulatorUI = value; + } + + [SerializeField] + [Tooltip("Whether the HMD should report the pose as fully tracked or unavailable/inferred.")] + bool m_HMDIsTracked = true; + + /// + /// Whether the HMD should report the pose as fully tracked or unavailable/inferred. + /// + public bool hmdIsTracked + { + get => m_HMDIsTracked; + set => m_HMDIsTracked = value; + } + + [SerializeField] + [Tooltip("Which tracking values the HMD should report as being valid or meaningful to use, which could mean either tracked or inferred.")] + InputTrackingState m_HMDTrackingState = InputTrackingState.Position | InputTrackingState.Rotation; + + /// + /// Which tracking values the HMD should report as being valid or meaningful to use, which could mean either tracked or inferred. + /// + public InputTrackingState hmdTrackingState + { + get => m_HMDTrackingState; + set => m_HMDTrackingState = value; + } + + [SerializeField] + [Tooltip("Whether the left-hand controller should report the pose as fully tracked or unavailable/inferred.")] + bool m_LeftControllerIsTracked = true; + + /// + /// Whether the left-hand controller should report the pose as fully tracked or unavailable/inferred. + /// + public bool leftControllerIsTracked + { + get => m_LeftControllerIsTracked; + set => m_LeftControllerIsTracked = value; + } + + [SerializeField] + [Tooltip("Which tracking values the left-hand controller should report as being valid or meaningful to use, which could mean either tracked or inferred.")] + InputTrackingState m_LeftControllerTrackingState = InputTrackingState.Position | InputTrackingState.Rotation; + + /// + /// Which tracking values the left-hand controller should report as being valid or meaningful to use, which could mean either tracked or inferred. + /// + public InputTrackingState leftControllerTrackingState + { + get => m_LeftControllerTrackingState; + set => m_LeftControllerTrackingState = value; + } + + [SerializeField] + [Tooltip("Whether the right-hand controller should report the pose as fully tracked or unavailable/inferred.")] + bool m_RightControllerIsTracked = true; + + /// + /// Whether the right-hand controller should report the pose as fully tracked or unavailable/inferred. + /// + public bool rightControllerIsTracked + { + get => m_RightControllerIsTracked; + set => m_RightControllerIsTracked = value; + } + + [SerializeField] + [Tooltip("Which tracking values the right-hand controller should report as being valid or meaningful to use, which could mean either tracked or inferred.")] + InputTrackingState m_RightControllerTrackingState = InputTrackingState.Position | InputTrackingState.Rotation; + + /// + /// Which tracking values the right-hand controller should report as being valid or meaningful to use, which could mean either tracked or inferred. + /// + public InputTrackingState rightControllerTrackingState + { + get => m_RightControllerTrackingState; + set => m_RightControllerTrackingState = value; + } + + [SerializeField] + [Tooltip("Whether the left hand should report the pose as fully tracked or unavailable/inferred.")] + bool m_LeftHandIsTracked = true; + + /// + /// Whether the left hand should report the pose as fully tracked or unavailable/inferred. + /// + public bool leftHandIsTracked + { + get => m_LeftHandIsTracked; + set => m_LeftHandIsTracked = value; + } + + [SerializeField] + [Tooltip("Whether the right hand should report the pose as fully tracked or unavailable/inferred.")] + bool m_RightHandIsTracked = true; + + /// + /// Whether the right hand should report the pose as fully tracked or unavailable/inferred. + /// + public bool rightHandIsTracked + { + get => m_RightHandIsTracked; + set => m_RightHandIsTracked = value; + } + + [SerializeField] + [Tooltip("The input used to translate in the x-axis (left/right) while held.")] + XRInputValueReader m_TranslateXInput = new XRInputValueReader("Translate X Input"); + + /// + /// The input used to translate in the x-axis (left/right) while held. + /// + public XRInputValueReader translateXInput + { + get => m_TranslateXInput; + set => XRInputReaderUtility.SetInputProperty(ref m_TranslateXInput, value, this); + } + + [SerializeField] + [Tooltip("The input used to translate in the y-axis (up/down) while held.")] + XRInputValueReader m_TranslateYInput = new XRInputValueReader("Translate Y Input"); + + /// + /// The input used to translate in the y-axis (up/down) while held. + /// + public XRInputValueReader translateYInput + { + get => m_TranslateYInput; + set => XRInputReaderUtility.SetInputProperty(ref m_TranslateYInput, value, this); + } + + [SerializeField] + [Tooltip("The input used to translate in the z-axis (forward/back) while held.")] + XRInputValueReader m_TranslateZInput = new XRInputValueReader("Translate Z Input"); + + /// + /// The input used to translate in the z-axis (forward/back) while held. + /// + public XRInputValueReader translateZInput + { + get => m_TranslateZInput; + set => XRInputReaderUtility.SetInputProperty(ref m_TranslateZInput, value, this); + } + + [SerializeField] + [Tooltip("The input used to toggle enable manipulation of the left-hand controller when pressed.")] + XRInputButtonReader m_ToggleManipulateLeftInput; + + /// + /// The input used to toggle enable manipulation of the left-hand controller when pressed. + /// + /// + public XRInputButtonReader toggleManipulateLeftInput + { + get => m_ToggleManipulateLeftInput; + set => XRInputReaderUtility.SetInputProperty(ref m_ToggleManipulateLeftInput, value, this); + } + + [SerializeField] + [Tooltip("The input used to toggle enable manipulation of the right-hand controller when pressed")] + XRInputButtonReader m_ToggleManipulateRightInput; + + /// + /// The input used to toggle enable manipulation of the right-hand controller when pressed. + /// + /// + public XRInputButtonReader toggleManipulateRightInput + { + get => m_ToggleManipulateRightInput; + set => XRInputReaderUtility.SetInputProperty(ref m_ToggleManipulateRightInput, value, this); + } + + [SerializeField] + [Tooltip("The input used for controlling the left-hand device's actions for buttons or hand expressions.")] + XRInputButtonReader m_LeftDeviceActionsInput; + + /// + /// The input used for controlling the left-hand device's actions for buttons or hand expressions. + /// + public XRInputButtonReader leftDeviceActionsInput + { + get => m_LeftDeviceActionsInput; + set => XRInputReaderUtility.SetInputProperty(ref m_LeftDeviceActionsInput, value, this); + } + + [SerializeField] + [Tooltip("The input used to cycle between the different available devices.")] + XRInputButtonReader m_CycleDevicesInput; + + /// + /// The input used to cycle between the different available devices. + /// + public XRInputButtonReader cycleDevicesInput + { + get => m_CycleDevicesInput; + set => XRInputReaderUtility.SetInputProperty(ref m_CycleDevicesInput, value, this); + } + + [SerializeField] + [Tooltip("The keyboard input used to rotate by a scaled amount along or about the x- and y-axes.")] + XRInputValueReader m_KeyboardRotationDeltaInput = new XRInputValueReader("Keyboard Rotation Delta Input"); + + /// + /// The keyboard input used to rotate by a scaled amount along or about the x- and y-axes. + /// + public XRInputValueReader keyboardRotationDeltaInput + { + get => m_KeyboardRotationDeltaInput; + set => XRInputReaderUtility.SetInputProperty(ref m_KeyboardRotationDeltaInput, value, this); + } + + [SerializeField] + [Tooltip("The input used to toggle associated inputs from a mouse device.")] + XRInputButtonReader m_ToggleMouseInput; + + /// + /// The input used to toggle associated inputs from a mouse device. + /// + /// + /// + public XRInputButtonReader toggleMouseInput + { + get => m_ToggleMouseInput; + set => XRInputReaderUtility.SetInputProperty(ref m_ToggleMouseInput, value, this); + } + + [SerializeField] + [Tooltip("The mouse input used to rotate by a scaled amount along or about the x- and y-axes.")] + XRInputValueReader m_MouseRotationDeltaInput = new XRInputValueReader("Mouse Rotation Delta Input"); + + /// + /// The mouse input used to rotate by a scaled amount along or about the x- and y-axes. + /// + /// + /// Typically bound to the screen-space motion delta of the mouse in pixels. + /// + /// + public XRInputValueReader mouseRotationDeltaInput + { + get => m_MouseRotationDeltaInput; + set => XRInputReaderUtility.SetInputProperty(ref m_MouseRotationDeltaInput, value, this); + } + + [SerializeField] + [Tooltip("The input used to translate or rotate by a scaled amount along or about the z-axis.")] + XRInputValueReader m_MouseScrollInput; + + /// + /// The input used to translate or rotate by a scaled amount along or about the z-axis. + /// + /// + /// Typically bound to the horizontal and vertical scroll wheels, though only the vertical is used. + /// + public XRInputValueReader mouseScrollInput + { + get => m_MouseScrollInput; + set => XRInputReaderUtility.SetInputProperty(ref m_MouseScrollInput, value, this); + } + + [SerializeField] + [Tooltip("The input used to control the Grip control of the manipulated controller device(s).")] + XRInputButtonReader m_GripInput; + + /// + /// The input used to control the Grip control of the manipulated controller device(s). + /// + public XRInputButtonReader gripInput + { + get => m_GripInput; + set => XRInputReaderUtility.SetInputProperty(ref m_GripInput, value, this); + } + + [SerializeField] + [Tooltip("The input used to control the Trigger control of the manipulated controller device(s).")] + XRInputButtonReader m_TriggerInput; + + /// + /// The input used to control the Trigger control of the manipulated controller device(s). + /// + public XRInputButtonReader triggerInput + { + get => m_TriggerInput; + set => XRInputReaderUtility.SetInputProperty(ref m_TriggerInput, value, this); + } + + [SerializeField] + [Tooltip("The input used to control the PrimaryButton control of the manipulated controller device(s).")] + XRInputButtonReader m_PrimaryButtonInput; + + /// + /// The input used to control the PrimaryButton control of the manipulated controller device(s). + /// + public XRInputButtonReader primaryButtonInput + { + get => m_PrimaryButtonInput; + set => XRInputReaderUtility.SetInputProperty(ref m_PrimaryButtonInput, value, this); + } + + [SerializeField] + [Tooltip("The input used to control the SecondaryButton control of the manipulated controller device(s).")] + XRInputButtonReader m_SecondaryButtonInput; + + /// + /// The input used to control the SecondaryButton control of the manipulated controller device(s). + /// + public XRInputButtonReader secondaryButtonInput + { + get => m_SecondaryButtonInput; + set => XRInputReaderUtility.SetInputProperty(ref m_SecondaryButtonInput, value, this); + } + + [SerializeField] + [Tooltip("The input used to control the Menu control of the manipulated controller device(s).")] + XRInputButtonReader m_MenuInput; + + /// + /// The input used to control the Menu control of the manipulated controller device(s). + /// + public XRInputButtonReader menuInput + { + get => m_MenuInput; + set => XRInputReaderUtility.SetInputProperty(ref m_MenuInput, value, this); + } + + [SerializeField] + [Tooltip("The input used to control the Primary2DAxisClick control of the manipulated controller device(s).")] + XRInputButtonReader m_Primary2DAxisClickInput; + + /// + /// The input used to control the Primary2DAxisClick control of the manipulated controller device(s). + /// + public XRInputButtonReader primary2DAxisClickInput + { + get => m_Primary2DAxisClickInput; + set => XRInputReaderUtility.SetInputProperty(ref m_Primary2DAxisClickInput, value, this); + } + + [SerializeField] + [Tooltip("The input used to control the Secondary2DAxisClick control of the manipulated controller device(s).")] + XRInputButtonReader m_Secondary2DAxisClickInput; + + /// + /// The input used to control the Secondary2DAxisClick control of the manipulated controller device(s). + /// + public XRInputButtonReader secondary2DAxisClickInput + { + get => m_Secondary2DAxisClickInput; + set => XRInputReaderUtility.SetInputProperty(ref m_Secondary2DAxisClickInput, value, this); + } + + [SerializeField] + [Tooltip("The input used to control the Primary2DAxisTouch control of the manipulated controller device(s).")] + XRInputButtonReader m_Primary2DAxisTouchInput; + + /// + /// The input used to control the Primary2DAxisTouch control of the manipulated controller device(s). + /// + public XRInputButtonReader primary2DAxisTouchInput + { + get => m_Primary2DAxisTouchInput; + set => XRInputReaderUtility.SetInputProperty(ref m_Primary2DAxisTouchInput, value, this); + } + + [SerializeField] + [Tooltip("The input used to control the Secondary2DAxisTouch control of the manipulated controller device(s).")] + XRInputButtonReader m_Secondary2DAxisTouchInput; + + /// + /// The input used to control the Secondary2DAxisTouch control of the manipulated controller device(s). + /// + public XRInputButtonReader secondary2DAxisTouchInput + { + get => m_Secondary2DAxisTouchInput; + set => XRInputReaderUtility.SetInputProperty(ref m_Secondary2DAxisTouchInput, value, this); + } + + [SerializeField] + [Tooltip("The input used to control the PrimaryTouch control of the manipulated controller device(s).")] + XRInputButtonReader m_PrimaryTouchInput; + + /// + /// The input used to control the PrimaryTouch control of the manipulated controller device(s). + /// + public XRInputButtonReader primaryTouchInput + { + get => m_PrimaryTouchInput; + set => XRInputReaderUtility.SetInputProperty(ref m_PrimaryTouchInput, value, this); + } + + [SerializeField] + [Tooltip("The input used to control the SecondaryTouch control of the manipulated controller device(s).")] + XRInputButtonReader m_SecondaryTouchInput; + + /// + /// The input used to control the SecondaryTouch control of the manipulated controller device(s). + /// + public XRInputButtonReader secondaryTouchInput + { + get => m_SecondaryTouchInput; + set => XRInputReaderUtility.SetInputProperty(ref m_SecondaryTouchInput, value, this); + } + + [SerializeField] + [Tooltip("The input used to constrain the translation or rotation to the x-axis when moving the mouse or resetting. May be combined with another axis constraint to constrain to a plane.")] + XRInputButtonReader m_XConstraintInput; + + /// + /// The input used to constrain the translation or rotation to the x-axis when moving the mouse or resetting. + /// May be combined with another axis constraint to constrain to a plane. + /// + /// + /// + public XRInputButtonReader xConstraintInput + { + get => m_XConstraintInput; + set => XRInputReaderUtility.SetInputProperty(ref m_XConstraintInput, value, this); + } + + [SerializeField] + [Tooltip("The input used to constrain the translation or rotation to the y-axis when moving the mouse or resetting. May be combined with another axis constraint to constrain to a plane.")] + XRInputButtonReader m_YConstraintInput; + + /// + /// The input used to constrain the translation or rotation to the y-axis when moving the mouse or resetting. + /// May be combined with another axis constraint to constrain to a plane. + /// + /// + /// + public XRInputButtonReader yConstraintInput + { + get => m_YConstraintInput; + set => XRInputReaderUtility.SetInputProperty(ref m_YConstraintInput, value, this); + } + + [SerializeField] + [Tooltip("The input used to constrain the translation or rotation to the z-axis when moving the mouse or resetting. May be combined with another axis constraint to constrain to a plane.")] + XRInputButtonReader m_ZConstraintInput; + + /// + /// The input used to constrain the translation or rotation to the z-axis when moving the mouse or resetting. + /// May be combined with another axis constraint to constrain to a plane. + /// + /// + /// + public XRInputButtonReader zConstraintInput + { + get => m_ZConstraintInput; + set => XRInputReaderUtility.SetInputProperty(ref m_ZConstraintInput, value, this); + } + + [SerializeField] + [Tooltip("The input used to cause the manipulated device(s) to reset position or rotation (depending on the effective manipulation mode).")] + XRInputButtonReader m_ResetInput; + + /// + /// The input used to cause the manipulated device(s) to reset position or rotation + /// + /// + /// Resets position to and rotation to . + /// May be combined with axis constraints (, , and ). + /// + public XRInputButtonReader resetInput + { + get => m_ResetInput; + set => XRInputReaderUtility.SetInputProperty(ref m_ResetInput, value, this); + } + + [SerializeField] + [Tooltip("The input used to control the value of one or more 2D Axis controls on the manipulated controller device(s).")] + XRInputValueReader m_Axis2DInput; + + /// + /// The input used to control the value of one or more 2D Axis controls on the manipulated controller device(s). + /// + /// + /// Typically bound to IJKL on a keyboard, and controls the primary and/or secondary 2D Axis controls on them. + /// + public XRInputValueReader axis2DInput + { + get => m_Axis2DInput; + set => XRInputReaderUtility.SetInputProperty(ref m_Axis2DInput, value, this); + } + + [SerializeField] + [Tooltip("The input used to toggle enable manipulation of the Primary2DAxis of the controllers when pressed.")] + XRInputButtonReader m_TogglePrimary2DAxisTargetInput; + + /// + /// The input used to toggle enable manipulation of the of the controllers when pressed. + /// + /// + /// + public XRInputButtonReader togglePrimary2DAxisTargetInput + { + get => m_TogglePrimary2DAxisTargetInput; + set => XRInputReaderUtility.SetInputProperty(ref m_TogglePrimary2DAxisTargetInput, value, this); + } + + [SerializeField] + [Tooltip("The input used to toggle enable manipulation of the Secondary2DAxis of the controllers when pressed.")] + XRInputButtonReader m_ToggleSecondary2DAxisTargetInput; + + /// + /// The input used to toggle enable manipulation of the of the controllers when pressed. + /// + /// + public XRInputButtonReader toggleSecondary2DAxisTargetInput + { + get => m_ToggleSecondary2DAxisTargetInput; + set => XRInputReaderUtility.SetInputProperty(ref m_ToggleSecondary2DAxisTargetInput, value, this); + } + + [SerializeField] + [Tooltip("The input used to cycle the quick-action for controller inputs or hand expressions.")] + XRInputButtonReader m_CycleQuickActionInput; + + /// + /// The input used to cycle the quick-action for controller inputs or hand expressions. + /// + /// + public XRInputButtonReader cycleQuickActionInput + { + get => m_CycleQuickActionInput; + set => XRInputReaderUtility.SetInputProperty(ref m_CycleQuickActionInput, value, this); + } + + [SerializeField] + [Tooltip("The input used to perform the currently active quick-action controller input or hand expression.")] + XRInputButtonReader m_TogglePerformQuickActionInput; + + /// + /// The input used to perform the currently active quick-action controller input or hand expression. + /// + /// + public XRInputButtonReader togglePerformQuickActionInput + { + get => m_TogglePerformQuickActionInput; + set => XRInputReaderUtility.SetInputProperty(ref m_TogglePerformQuickActionInput, value, this); + } + + [SerializeField] + [Tooltip("The input used to toggle manipulation of only the head pose.")] + XRInputButtonReader m_ToggleManipulateHeadInput; + + /// + /// The input used to toggle manipulation of only the head pose. + /// + public XRInputButtonReader toggleManipulateHeadInput + { + get => m_ToggleManipulateHeadInput; + set => XRInputReaderUtility.SetInputProperty(ref m_ToggleManipulateHeadInput, value, this); + } + + [SerializeField, Range(0f, 1f)] + [Tooltip("The amount of the simulated grip on the controller when the Grip control is pressed.")] + float m_GripAmount = 1f; + + /// + /// The amount of the simulated grip on the controller when the Grip control is pressed. + /// + /// + public float gripAmount + { + get => m_GripAmount; + set => m_GripAmount = value; + } + + [SerializeField, Range(0f, 1f)] + [Tooltip("The amount of the simulated trigger pull on the controller when the Trigger control is pressed.")] + float m_TriggerAmount = 1f; + + /// + /// The amount of the simulated trigger pull on the controller when the Trigger control is pressed. + /// + /// + public float triggerAmount + { + get => m_TriggerAmount; + set => m_TriggerAmount = value; + } + + [SerializeField] + [Tooltip("Speed of translation in the x-axis (left/right) when triggered by input.")] + float m_TranslateXSpeed = 0.2f; + + /// + /// Speed of translation in the x-axis (left/right) when triggered by input. + /// + /// + /// + /// + public float translateXSpeed + { + get => m_TranslateXSpeed; + set => m_TranslateXSpeed = value; + } + + [SerializeField] + [Tooltip("Speed of translation in the y-axis (up/down) when triggered by input.")] + float m_TranslateYSpeed = 0.2f; + + /// + /// Speed of translation in the y-axis (up/down) when triggered by input. + /// + /// + /// + /// + public float translateYSpeed + { + get => m_TranslateYSpeed; + set => m_TranslateYSpeed = value; + } + + [SerializeField] + [Tooltip("Speed of translation in the z-axis (forward/back) when triggered by input.")] + float m_TranslateZSpeed = 0.2f; + + /// + /// Speed of translation in the z-axis (forward/back) when triggered by input. + /// + /// + /// + /// + public float translateZSpeed + { + get => m_TranslateZSpeed; + set => m_TranslateZSpeed = value; + } + + [SerializeField] + [Tooltip("Speed multiplier applied for body translation when triggered by input.")] + float m_BodyTranslateMultiplier = 5f; + + /// + /// Speed multiplier applied for body translation when triggered by input. + /// + /// + /// + /// + public float bodyTranslateMultiplier + { + get => m_BodyTranslateMultiplier; + set => m_BodyTranslateMultiplier = value; + } + + [SerializeField] + [Tooltip("Sensitivity of rotation along the x-axis (pitch) when triggered by input.")] + float m_RotateXSensitivity = 0.2f; + + /// + /// Sensitivity of rotation along the x-axis (pitch) when triggered by input. + /// + /// + /// + /// + public float rotateXSensitivity + { + get => m_RotateXSensitivity; + set => m_RotateXSensitivity = value; + } + + [SerializeField] + [Tooltip("Sensitivity of rotation along the y-axis (yaw) when triggered by input.")] + float m_RotateYSensitivity = 0.2f; + + /// + /// Sensitivity of rotation along the y-axis (yaw) when triggered by input. + /// + /// + /// + /// + public float rotateYSensitivity + { + get => m_RotateYSensitivity; + set => m_RotateYSensitivity = value; + } + + [SerializeField] + [Tooltip("Sensitivity of rotation along the z-axis (roll) when triggered by mouse scroll input.")] + float m_MouseScrollRotateSensitivity = 0.05f; + + /// + /// Sensitivity of rotation along the z-axis (roll) when triggered by mouse scroll input. + /// + /// + /// + /// + public float mouseScrollRotateSensitivity + { + get => m_MouseScrollRotateSensitivity; + set => m_MouseScrollRotateSensitivity = value; + } + + [SerializeField] + [Tooltip("A boolean value of whether to invert the y-axis when rotating." + + "\nA false value (default) means typical FPS style where moving up/down pitches up/down." + + "\nA true value means flight control style where moving up/down pitches down/up.")] + bool m_RotateYInvert; + + /// + /// A boolean value of whether to invert the y-axis of mouse input when rotating. + /// A value (default) means typical FPS style where moving up/down pitches up/down. + /// A value means flight control style where moving up/down pitches down/up. + /// + public bool rotateYInvert + { + get => m_RotateYInvert; + set => m_RotateYInvert = value; + } + + [SerializeField] + [Tooltip("The coordinate space in which translation should operate.")] + Space m_TranslateSpace = Space.Screen; + + /// + /// The coordinate space in which translation should operate. + /// + public Space translateSpace + { + get => m_TranslateSpace; + set => m_TranslateSpace = value; + } + + [SerializeField] + [Tooltip("The subset of quick-action controller buttons/inputs that a user can shift through in the simulator.")] + List m_QuickActionControllerInputModes = new List(); + + /// + /// The subset of quick-action controller buttons/inputs that a user can shift through in the simulator. + /// + /// + /// + public List quickActionControllerInputModes + { + get => m_QuickActionControllerInputModes; + set => m_QuickActionControllerInputModes = value; + } + + TargetedDevices m_TargetedDeviceInput = TargetedDevices.FPS; + + /// + /// The currently active/targeted devices in the interaction simulator. + /// + public TargetedDevices targetedDeviceInput + { + get => m_TargetedDeviceInput; + set => m_TargetedDeviceInput = value; + } + + ControllerInputMode m_ControllerInputMode = ControllerInputMode.Trigger; + + /// + /// The controller input mode which the controller should currently simulate. + /// + public ControllerInputMode controllerInputMode => m_ControllerInputMode; + + SimulatedHandExpression m_CurrentHandExpression = new SimulatedHandExpression(); + + /// + /// The hand expression which the simulated hands should currently simulate. + /// + public SimulatedHandExpression currentHandExpression => m_CurrentHandExpression; + + /// + /// One or more 2D Axis controls that keyboard input should apply to (or none). + /// + /// + /// Used to control a combination of the position (), + /// primary 2D axis (), or + /// secondary 2D axis () of manipulated device(s). + /// + /// + /// + /// + /// + public Axis2DTargets axis2DTargets { get; set; } = Axis2DTargets.Primary2DAxis; + + /// + /// Whether the simulator is manipulating the Left device (controller or hand). + /// + public bool manipulatingLeftDevice => m_TargetedDeviceInput.HasDevice(TargetedDevices.LeftDevice); + + /// + /// Whether the simulator is manipulating the Right device (controller or hand). + /// + public bool manipulatingRightDevice => m_TargetedDeviceInput.HasDevice(TargetedDevices.RightDevice); + + /// + /// Whether the simulator is manipulating the Left Controller. + /// + public bool manipulatingLeftController => m_DeviceLifecycleManager.deviceMode == SimulatedDeviceLifecycleManager.DeviceMode.Controller && manipulatingLeftDevice; + + /// + /// Whether the simulator is manipulating the Right Controller. + /// + public bool manipulatingRightController => m_DeviceLifecycleManager.deviceMode == SimulatedDeviceLifecycleManager.DeviceMode.Controller && manipulatingRightDevice; + + /// + /// Whether the simulator is manipulating the Left Hand. + /// + public bool manipulatingLeftHand => m_DeviceLifecycleManager.deviceMode == SimulatedDeviceLifecycleManager.DeviceMode.Hand && manipulatingLeftDevice; + + /// + /// Whether the simulator is manipulating the Right Hand. + /// + public bool manipulatingRightHand => m_DeviceLifecycleManager.deviceMode == SimulatedDeviceLifecycleManager.DeviceMode.Hand && manipulatingRightDevice; + + /// + /// Whether the simulator is manipulating the HMD. + /// + public bool manipulatingHMD => m_TargetedDeviceInput == TargetedDevices.HMD; + + /// + /// Whether the simulator is manipulating the HMD, Left Controller, and Right Controller as if the whole player was turning their torso, + /// similar to a typical FPS style. + /// + public bool manipulatingFPS => m_TargetedDeviceInput.HasDevice(TargetedDevices.FPS); + + /// + /// The runtime instance of the XR Interaction Simulator. + /// + public static XRInteractionSimulator instance { get; private set; } + + (Transform transform, Camera camera) m_CachedCamera; + + /// + /// Current value of the x-axis when using translate. + /// + float m_TranslateXValue; + + /// + /// Current value of the y-axis when using translate. + /// + float m_TranslateYValue; + + /// + /// Current value of the z-axis when using translate. + /// + float m_TranslateZValue; + + Vector2 m_RotationDeltaValue; + Vector2 m_MouseScrollValue; + + bool m_XConstraintValue; + bool m_YConstraintValue; + bool m_ZConstraintValue; + bool m_ResetValue; + + Vector2 m_Axis2DValue; + + int m_ControllerInputModeIndex; + int m_HandExpressionIndex = -1; + + bool m_ToggleManipulateWaitingForReleaseBoth; + + Vector3 m_LeftControllerEuler; + Vector3 m_RightControllerEuler; + Vector3 m_CenterEyeEuler; + +#if ENABLE_VR || UNITY_GAMECORE + XRSimulatedHMDState m_HMDState; + XRSimulatedControllerState m_LeftControllerState; + XRSimulatedControllerState m_RightControllerState; +#endif + + XRSimulatedHandState m_LeftHandState; + XRSimulatedHandState m_RightHandState; + + TargetedDevices m_PreviousTargetedDevices; + +#if XR_SIMULATION_AVAILABLE + XROrigin m_XROrigin; + SimulationCameraPoseProvider m_SimulationCameraPoseProvider; + Vector3 m_OriginalCameraOffsetObjectPosition; + float m_OriginalCameraYOffset; +#endif + + /// + /// See . + /// + protected virtual void Awake() + { + if (instance == null) + { + instance = this; + } + else if (instance != this) + { + Debug.LogWarning($"Another instance of XR Interaction Simulator already exists ({instance}), destroying {gameObject}.", this); + Destroy(gameObject); + return; + } + + if (m_DeviceLifecycleManager == null) + m_DeviceLifecycleManager = XRSimulatorUtility.FindCreateSimulatedDeviceLifecycleManager(gameObject); + + if (m_HandExpressionManager == null) + m_HandExpressionManager = XRSimulatorUtility.FindCreateSimulatedHandExpressionManager(gameObject); + +#if ENABLE_VR || UNITY_GAMECORE + m_HMDState.Reset(); + m_LeftControllerState.Reset(); + m_RightControllerState.Reset(); + m_LeftHandState.Reset(); + m_RightHandState.Reset(); + + // Adding offset to the controller/hand when starting simulation to move them away from the Camera position + m_LeftControllerState.devicePosition = XRSimulatorUtility.leftDeviceDefaultInitialPosition; + m_RightControllerState.devicePosition = XRSimulatorUtility.rightDeviceDefaultInitialPosition; + m_LeftHandState.position = XRSimulatorUtility.leftDeviceDefaultInitialPosition; + m_RightHandState.position = XRSimulatorUtility.rightDeviceDefaultInitialPosition; + + if (m_InteractionSimulatorUI != null) + Instantiate(m_InteractionSimulatorUI, transform); +#else + Debug.LogWarning("XR Interaction Simulator is not functional on platforms where ENABLE_VR is not defined.", this); +#endif + } + + /// + /// See . + /// + protected virtual void OnEnable() + { + XRSimulatorUtility.FindCameraTransform(ref m_CachedCamera, ref m_CameraTransform); + +#if ENABLE_VR || UNITY_GAMECORE +#if XR_SIMULATION_AVAILABLE && XR_MANAGEMENT_4_0_OR_NEWER + if (XRSimulatorUtility.XRSimulationLoaderEnabledForEditorPlayMode()) + { + if (m_XROrigin != null || ComponentLocatorUtility.TryFindComponent(out m_XROrigin)) + { + if (m_XROrigin.CameraYOffset != 0) + { + var offset = new Vector3(0f, m_XROrigin.CameraYOffset, 0f); + m_HMDState.centerEyePosition += offset; + m_LeftControllerState.devicePosition += offset; + m_RightControllerState.devicePosition += offset; + + m_LeftHandState.position += offset; + m_RightHandState.position += offset; + + m_OriginalCameraYOffset = m_XROrigin.CameraYOffset; + m_XROrigin.CameraYOffset = 0f; + } + + if (m_XROrigin.CameraFloorOffsetObject != null && m_XROrigin.CameraFloorOffsetObject.transform.position != Vector3.zero) + { + m_OriginalCameraOffsetObjectPosition = m_XROrigin.CameraFloorOffsetObject.transform.position; + m_XROrigin.CameraFloorOffsetObject.transform.position = Vector3.zero; + } + + Debug.LogWarning("Override XR Simulation Input is enabled and either the XR Origin's Camera Y Offset or the XR Origin's" + + " Camera Floor Offset Object's position is set to a non-zero value. Due to the way XR Simulation applies its transformations," + + " the offsets will be set to zero and the Camera Y Offset will be applied directly to the simulated camera and devices during Play mode.", this); + } + + if (m_SimulationCameraPoseProvider != null || ComponentLocatorUtility.TryFindComponent(out m_SimulationCameraPoseProvider)) + m_SimulationCameraPoseProvider.enabled = false; + } +#endif +#endif + if (m_QuickActionControllerInputModes.Count > 0) + m_ControllerInputMode = m_QuickActionControllerInputModes[0]; + + if (m_HandExpressionManager.simulatedHandExpressions.Count > 0) + CycleQuickActionHandExpression(); + } + + /// + /// See . + /// + protected virtual void OnDisable() + { +#if ENABLE_VR || UNITY_GAMECORE +#if XR_SIMULATION_AVAILABLE + if (m_SimulationCameraPoseProvider != null) + m_SimulationCameraPoseProvider.enabled = true; + + if (m_XROrigin != null) + { + if (m_OriginalCameraYOffset != 0f) + { + var offset = new Vector3(0f, m_OriginalCameraYOffset, 0f); + m_HMDState.centerEyePosition -= offset; + m_LeftControllerState.devicePosition -= offset; + m_RightControllerState.devicePosition -= offset; + + m_LeftHandState.position -= offset; + m_RightHandState.position -= offset; + } + + if (m_XROrigin.CameraFloorOffsetObject != null) + m_XROrigin.CameraFloorOffsetObject.transform.position = m_OriginalCameraOffsetObjectPosition; + + m_XROrigin.CameraYOffset = m_OriginalCameraYOffset; + } +#endif +#endif + } + + /// + /// See . + /// + protected virtual void Update() + { + ReadInputValues(); + + HandleLeftOrRightDeviceToggle(); + + if (m_CycleDevicesInput.ReadWasPerformedThisFrame()) + CycleTargetDevices(); + + if (m_CycleQuickActionInput.ReadWasPerformedThisFrame() && !manipulatingFPS && !manipulatingHMD) + CycleQuickAction(); + + if (m_ToggleManipulateHeadInput.ReadWasPerformedThisFrame()) + HandleHMDToggle(); + + if (m_TogglePerformQuickActionInput.ReadWasPerformedThisFrame()) + PerformQuickAction(); + + ProcessPoseInput(); + ProcessControlInput(); + ProcessHandExpressionInput(); + +#if ENABLE_VR || UNITY_GAMECORE + m_DeviceLifecycleManager.ApplyHandState(m_LeftHandState, m_RightHandState); + m_DeviceLifecycleManager.ApplyHMDState(m_HMDState); + m_DeviceLifecycleManager.ApplyControllerState(m_LeftControllerState, m_RightControllerState); +#endif + +#if XR_SIMULATION_AVAILABLE + if (m_SimulationCameraPoseProvider != null) + m_SimulationCameraPoseProvider.transform.SetWorldPose(m_CameraTransform.GetWorldPose()); +#endif + } + + /// + /// Process input from the user and update the state of manipulated device(s) + /// related to position and rotation. + /// + protected virtual void ProcessPoseInput() + { +#if ENABLE_VR || UNITY_GAMECORE + SetTrackedStates(); + + if (m_TargetedDeviceInput == TargetedDevices.None) + return; + + if (!XRSimulatorUtility.FindCameraTransform(ref m_CachedCamera, ref m_CameraTransform)) + return; + + var cameraParent = m_CameraTransform.parent; + var cameraParentRotation = cameraParent != null ? cameraParent.rotation : Quaternion.identity; + var inverseCameraParentRotation = Quaternion.Inverse(cameraParentRotation); + + // If we are not manipulating any input, manipulate the devices as an FPS controller. + // It allows the player to translate along the ground and rotate while keeping the controllers in front, + // essentially rotating the HMD and both controllers around a common pivot rather than local to each. + // Time delay as a workaround to avoid large mouse deltas on the first frame. + if (manipulatingFPS && Time.time > 1f) + { + // Translation + var xTranslateInput = m_TranslateXValue * m_TranslateXSpeed * m_BodyTranslateMultiplier * Time.deltaTime; + var yTranslateInput = m_TranslateYValue * m_TranslateYSpeed * m_BodyTranslateMultiplier * Time.deltaTime; + var zTranslateInput = m_TranslateZValue * m_TranslateZSpeed * m_BodyTranslateMultiplier * Time.deltaTime; + var translationInDeviceSpace = XRSimulatorUtility.GetTranslationInDeviceSpace(xTranslateInput, yTranslateInput, zTranslateInput, + m_CameraTransform, cameraParentRotation, inverseCameraParentRotation); + + // Modify both controllers and hands in FPS mode no matter the device mode of the simulator + // because we want to keep the devices in front. If we only updated one set, switching the mode + // to the other would have the other devices no longer in front in the same relative position, + // which is probably not what the user wants. + m_LeftControllerState.devicePosition += translationInDeviceSpace; + m_RightControllerState.devicePosition += translationInDeviceSpace; + m_LeftHandState.position += translationInDeviceSpace; + m_RightHandState.position += translationInDeviceSpace; + + m_HMDState.centerEyePosition += translationInDeviceSpace; + m_HMDState.devicePosition = m_HMDState.centerEyePosition; + + // Rotation + var scaledRotationDeltaInput = + new Vector3(m_RotationDeltaValue.x * m_RotateXSensitivity, + m_RotationDeltaValue.y * m_RotateYSensitivity * (m_RotateYInvert ? 1f : -1f), + m_MouseScrollValue.y * m_MouseScrollRotateSensitivity); + + Vector3 anglesDelta; + if (m_XConstraintValue && !m_YConstraintValue && !m_ZConstraintValue) // X + anglesDelta = new Vector3(-scaledRotationDeltaInput.x + scaledRotationDeltaInput.y, 0f, 0f); + else if (!m_XConstraintValue && m_YConstraintValue && !m_ZConstraintValue) // Y + anglesDelta = new Vector3(0f, scaledRotationDeltaInput.x + -scaledRotationDeltaInput.y, 0f); + else + anglesDelta = new Vector3(scaledRotationDeltaInput.y, scaledRotationDeltaInput.x, 0f); + + m_CenterEyeEuler += anglesDelta; + // Avoid awkward pitch angles + m_CenterEyeEuler.x = Mathf.Clamp(m_CenterEyeEuler.x, -XRSimulatorUtility.cameraMaxXAngle, XRSimulatorUtility.cameraMaxXAngle); + m_HMDState.centerEyeRotation = Quaternion.Euler(m_CenterEyeEuler); + m_HMDState.deviceRotation = m_HMDState.centerEyeRotation; + + var controllerRotationDelta = Quaternion.AngleAxis(anglesDelta.y, Quaternion.Euler(0f, m_CenterEyeEuler.y, 0f) * Vector3.up); + var pivotPoint = m_HMDState.centerEyePosition; + + // Controllers + m_LeftControllerState.devicePosition = controllerRotationDelta * (m_LeftControllerState.devicePosition - pivotPoint) + pivotPoint; + m_LeftControllerState.deviceRotation = controllerRotationDelta * m_LeftControllerState.deviceRotation; + m_RightControllerState.devicePosition = controllerRotationDelta * (m_RightControllerState.devicePosition - pivotPoint) + pivotPoint; + m_RightControllerState.deviceRotation = controllerRotationDelta * m_RightControllerState.deviceRotation; + + // Replace euler angle representation with the updated value to make sure + // the rotation of the controller doesn't jump when manipulating them not in FPS mode. + m_LeftControllerEuler = m_LeftControllerState.deviceRotation.eulerAngles; + m_RightControllerEuler = m_RightControllerState.deviceRotation.eulerAngles; + + // Hands + m_LeftHandState.position = controllerRotationDelta * (m_LeftHandState.position - pivotPoint) + pivotPoint; + m_LeftHandState.rotation = controllerRotationDelta * m_LeftHandState.rotation; + m_RightHandState.position = controllerRotationDelta * (m_RightHandState.position - pivotPoint) + pivotPoint; + m_RightHandState.rotation = controllerRotationDelta * m_RightHandState.rotation; + + m_LeftHandState.euler = m_LeftHandState.rotation.eulerAngles; + m_RightHandState.euler = m_RightHandState.rotation.eulerAngles; + } + else if (!manipulatingFPS) + { + var xTranslateInput = m_TranslateXValue * m_TranslateXSpeed * m_BodyTranslateMultiplier * Time.deltaTime; + var yTranslateInput = m_TranslateYValue * m_TranslateYSpeed * m_BodyTranslateMultiplier * Time.deltaTime; + var zTranslateInput = m_TranslateZValue * m_TranslateZSpeed * m_BodyTranslateMultiplier * Time.deltaTime; + var deltaPosition = XRSimulatorUtility.GetTranslationInDeviceSpace(xTranslateInput, yTranslateInput, zTranslateInput, m_CameraTransform, cameraParentRotation, inverseCameraParentRotation); + + var scaledRotationDeltaInput = + new Vector3(m_RotationDeltaValue.x * m_RotateXSensitivity, + m_RotationDeltaValue.y * m_RotateYSensitivity * (m_RotateYInvert ? 1f : -1f), + m_MouseScrollValue.y * m_MouseScrollRotateSensitivity); + + Vector3 anglesDelta; + if (m_XConstraintValue && !m_YConstraintValue && m_ZConstraintValue) // XZ + anglesDelta = new Vector3(scaledRotationDeltaInput.y, 0f, -scaledRotationDeltaInput.x); + else if (!m_XConstraintValue && m_YConstraintValue && m_ZConstraintValue) // YZ + anglesDelta = new Vector3(0f, scaledRotationDeltaInput.x, -scaledRotationDeltaInput.y); + else if (m_XConstraintValue && !m_YConstraintValue && !m_ZConstraintValue) // X + anglesDelta = new Vector3(-scaledRotationDeltaInput.x + scaledRotationDeltaInput.y, 0f, 0f); + else if (!m_XConstraintValue && m_YConstraintValue && !m_ZConstraintValue) // Y + anglesDelta = new Vector3(0f, scaledRotationDeltaInput.x + -scaledRotationDeltaInput.y, 0f); + else if (!m_XConstraintValue && !m_YConstraintValue && m_ZConstraintValue) // Z + anglesDelta = new Vector3(0f, 0f, -scaledRotationDeltaInput.x + -scaledRotationDeltaInput.y); + else + anglesDelta = new Vector3(scaledRotationDeltaInput.y, scaledRotationDeltaInput.x, 0f); + + // Scroll contribution + anglesDelta += new Vector3(0f, 0f, scaledRotationDeltaInput.z); + + if (manipulatingLeftController) + { + var deltaRotation = XRSimulatorUtility.GetDeltaRotation(m_TranslateSpace, m_LeftControllerState, inverseCameraParentRotation); + m_LeftControllerState.devicePosition += deltaRotation * deltaPosition; + + m_LeftControllerEuler += anglesDelta; + m_LeftControllerState.deviceRotation = Quaternion.Euler(m_LeftControllerEuler); + } + + if (manipulatingRightController) + { + var deltaRotation = XRSimulatorUtility.GetDeltaRotation(m_TranslateSpace, m_RightControllerState, inverseCameraParentRotation); + m_RightControllerState.devicePosition += deltaRotation * deltaPosition; + + m_RightControllerEuler += anglesDelta; + m_RightControllerState.deviceRotation = Quaternion.Euler(m_RightControllerEuler); + } + + if (manipulatingLeftHand) + { + var deltaRotation = XRSimulatorUtility.GetDeltaRotation(m_TranslateSpace, m_LeftHandState, inverseCameraParentRotation); + m_LeftHandState.position += deltaRotation * deltaPosition; + + m_LeftHandState.euler += anglesDelta; + m_LeftHandState.rotation = Quaternion.Euler(m_LeftHandState.euler); + } + + if (manipulatingRightHand) + { + var deltaRotation = XRSimulatorUtility.GetDeltaRotation(m_TranslateSpace, m_RightHandState, inverseCameraParentRotation); + m_RightHandState.position += deltaRotation * deltaPosition; + + m_RightHandState.euler += anglesDelta; + m_RightHandState.rotation = Quaternion.Euler(m_RightHandState.euler); + } + + if (m_TargetedDeviceInput.HasDevice(TargetedDevices.HMD)) + { + var deltaRotation = XRSimulatorUtility.GetDeltaRotation(m_TranslateSpace, m_HMDState, inverseCameraParentRotation); + m_HMDState.centerEyePosition += deltaRotation * deltaPosition; + m_HMDState.devicePosition = m_HMDState.centerEyePosition; + + m_CenterEyeEuler += anglesDelta; + m_HMDState.centerEyeRotation = Quaternion.Euler(m_CenterEyeEuler); + m_HMDState.deviceRotation = m_HMDState.centerEyeRotation; + } + } + + // Reset + if (m_ResetValue) + { + var headForward = (m_HMDState.deviceRotation * Vector3.forward) * k_DeviceForwardOffsetAmount; + var downOffset = (m_HMDState.deviceRotation * Vector3.down) * k_DeviceDownOffsetAmount; + var leftControllerOffset = (m_HMDState.deviceRotation * Vector3.left) * k_DeviceLeftRightOffsetAmount; + var rightControllerOffset = (m_HMDState.deviceRotation * Vector3.right) * k_DeviceLeftRightOffsetAmount; + + // Controllers + // We reset both position and rotation, so axis constraint is ignored + m_LeftControllerState.devicePosition = m_HMDState.devicePosition + headForward + downOffset + leftControllerOffset; + m_RightControllerState.devicePosition = m_HMDState.devicePosition + headForward + downOffset + rightControllerOffset; + + m_LeftControllerEuler = m_HMDState.deviceRotation.eulerAngles; + m_LeftControllerState.deviceRotation = m_HMDState.deviceRotation; + + m_RightControllerEuler = m_HMDState.deviceRotation.eulerAngles; + m_RightControllerState.deviceRotation = m_HMDState.deviceRotation; + + // Hands + m_LeftHandState.position = m_HMDState.devicePosition + headForward + downOffset + leftControllerOffset; + m_RightHandState.position = m_HMDState.devicePosition + headForward + downOffset + rightControllerOffset; + + m_LeftHandState.euler = m_HMDState.deviceRotation.eulerAngles; + m_LeftHandState.rotation = m_HMDState.deviceRotation; + + m_RightHandState.euler = m_HMDState.deviceRotation.eulerAngles; + m_RightHandState.rotation = m_HMDState.deviceRotation; + } +#endif + } + + /// + /// Process input from the user and update the state of manipulated controller device(s) + /// related to input controls. + /// + protected virtual void ProcessControlInput() + { +#if ENABLE_VR || UNITY_GAMECORE + if (m_DeviceLifecycleManager.deviceMode != SimulatedDeviceLifecycleManager.DeviceMode.Controller) + return; + + if (m_LeftDeviceActionsInput.ReadIsPerformed()) + { + ProcessButtonControlInput(ref m_LeftControllerState); + ProcessAxis2DControlInput(ref m_LeftControllerState); + } + else + { + ProcessButtonControlInput(ref m_RightControllerState); + ProcessAxis2DControlInput(ref m_RightControllerState); + } + + if (!manipulatingLeftController) + ProcessAnalogButtonControlInput(ref m_LeftControllerState); + + if (!manipulatingRightController) + ProcessAnalogButtonControlInput(ref m_RightControllerState); +#endif + } + + void ProcessHandExpressionInput() + { +#if XR_HANDS_1_1_OR_NEWER + if (m_DeviceLifecycleManager == null || m_DeviceLifecycleManager.deviceMode != SimulatedDeviceLifecycleManager.DeviceMode.Hand) + return; + + for (var index = 0; index < m_HandExpressionManager.simulatedHandExpressions.Count; ++index) + { + var simulatedExpression = m_HandExpressionManager.simulatedHandExpressions[index]; + if (simulatedExpression.toggleInput.ReadWasPerformedThisFrame()) + { + if (m_LeftDeviceActionsInput.ReadIsPerformed()) + { + ToggleHandExpression(simulatedExpression, true, false); + } + else + { + m_CurrentHandExpression = simulatedExpression; + m_HandExpressionIndex = index; + ToggleHandExpression(simulatedExpression, false, true); + } + } + } +#endif + } + + void ToggleHandExpression(SimulatedHandExpression simulatedExpression, bool leftHand, bool rightHand) + { +#if XR_HANDS_1_1_OR_NEWER + if (m_DeviceLifecycleManager == null || m_DeviceLifecycleManager.simHandSubsystem == null) + return; + + if (leftHand) + { + // When toggling off, change back to the default resting hand. Otherwise, change to the expression pressed. + m_LeftHandState.expressionName = m_LeftHandState.expressionName == simulatedExpression.expressionName + ? HandExpressionName.Default + : simulatedExpression.expressionName; + m_DeviceLifecycleManager.simHandSubsystem.SetHandExpression(Handedness.Left, m_LeftHandState.expressionName); + } + + if (rightHand) + { + m_RightHandState.expressionName = m_RightHandState.expressionName == simulatedExpression.expressionName + ? HandExpressionName.Default + : simulatedExpression.expressionName; + m_DeviceLifecycleManager.simHandSubsystem.SetHandExpression(Handedness.Right, m_RightHandState.expressionName); + } +#endif + } + +#if ENABLE_VR || UNITY_GAMECORE || PACKAGE_DOCS_GENERATION + /// + /// Process input from the user and update the state of manipulated controller device(s) + /// related to 2D Axis input controls. + /// + protected virtual void ProcessAxis2DControlInput(ref XRSimulatedControllerState controllerState) + { + if ((axis2DTargets & Axis2DTargets.Primary2DAxis) != 0) + { + controllerState.primary2DAxis = m_Axis2DValue; + } + + if ((axis2DTargets & Axis2DTargets.Secondary2DAxis) != 0) + { + controllerState.secondary2DAxis = m_Axis2DValue; + } + } + + /// + /// Process input from the user and update the state of manipulated controller device(s) + /// related to button input controls. + /// + /// The controller state that will be processed. + protected virtual void ProcessButtonControlInput(ref XRSimulatedControllerState controllerState) + { + if (m_GripInput.ReadIsPerformed()) + { + controllerState.grip = m_GripAmount; + controllerState.WithButton(ControllerButton.GripButton); + } + else if (m_GripInput.ReadWasCompletedThisFrame()) + { + controllerState.grip = 0f; + controllerState.WithButton(ControllerButton.GripButton, false); + } + + if (m_TriggerInput.ReadIsPerformed()) + { + controllerState.trigger = m_TriggerAmount; + controllerState.WithButton(ControllerButton.TriggerButton); + } + else if (m_TriggerInput.ReadWasCompletedThisFrame()) + { + controllerState.trigger = 0f; + controllerState.WithButton(ControllerButton.TriggerButton, false); + } + + if (m_PrimaryButtonInput.ReadIsPerformed()) + controllerState.WithButton(ControllerButton.PrimaryButton); + else if (m_PrimaryButtonInput.ReadWasCompletedThisFrame()) + controllerState.WithButton(ControllerButton.PrimaryButton, false); + + if (m_SecondaryButtonInput.ReadIsPerformed()) + controllerState.WithButton(ControllerButton.SecondaryButton); + else if (m_SecondaryButtonInput.ReadWasCompletedThisFrame()) + controllerState.WithButton(ControllerButton.SecondaryButton, false); + + if (m_MenuInput.ReadIsPerformed()) + controllerState.WithButton(ControllerButton.MenuButton); + else if (m_MenuInput.ReadWasCompletedThisFrame()) + controllerState.WithButton(ControllerButton.MenuButton, false); + + if (m_Primary2DAxisClickInput.ReadIsPerformed()) + controllerState.WithButton(ControllerButton.Primary2DAxisClick); + else if (m_Primary2DAxisClickInput.ReadWasCompletedThisFrame()) + controllerState.WithButton(ControllerButton.Primary2DAxisClick, false); + + if (m_Secondary2DAxisClickInput.ReadIsPerformed()) + controllerState.WithButton(ControllerButton.Secondary2DAxisClick); + else if (m_Secondary2DAxisClickInput.ReadWasCompletedThisFrame()) + controllerState.WithButton(ControllerButton.Secondary2DAxisClick, false); + + if (m_Primary2DAxisTouchInput.ReadIsPerformed()) + controllerState.WithButton(ControllerButton.Primary2DAxisTouch); + else if (m_Primary2DAxisTouchInput.ReadWasCompletedThisFrame()) + controllerState.WithButton(ControllerButton.Primary2DAxisTouch, false); + + if (m_Secondary2DAxisTouchInput.ReadIsPerformed()) + controllerState.WithButton(ControllerButton.Secondary2DAxisTouch); + else if (m_Secondary2DAxisTouchInput.ReadWasCompletedThisFrame()) + controllerState.WithButton(ControllerButton.Secondary2DAxisTouch, false); + + if (m_PrimaryTouchInput.ReadIsPerformed()) + controllerState.WithButton(ControllerButton.PrimaryTouch); + else if (m_PrimaryTouchInput.ReadWasCompletedThisFrame()) + controllerState.WithButton(ControllerButton.PrimaryTouch, false); + + if (m_SecondaryTouchInput.ReadIsPerformed()) + controllerState.WithButton(ControllerButton.SecondaryTouch); + else if (m_SecondaryTouchInput.ReadWasCompletedThisFrame()) + controllerState.WithButton(ControllerButton.SecondaryTouch, false); + } + + /// + /// Update the state of manipulated controller device related to analog values only. + /// This is used to adjust the grip and trigger values when the user adjusts the slider + /// when not manipulating the device. + /// + /// The controller state that will be processed. + protected virtual void ProcessAnalogButtonControlInput(ref XRSimulatedControllerState controllerState) + { + if (controllerState.HasButton(ControllerButton.GripButton)) + controllerState.grip = m_GripAmount; + + if (controllerState.HasButton(ControllerButton.TriggerButton)) + controllerState.trigger = m_TriggerAmount; + } +#endif + + /// + /// Gets a that can be multiplied component-wise with another + /// to reset components of the , based on axis constraint inputs. + /// + /// Returns a mask used to reset the components of another . + /// + /// + /// + /// + protected Vector3 GetResetScale() + { + return m_XConstraintValue || m_YConstraintValue || m_ZConstraintValue + ? new Vector3(m_XConstraintValue ? 0f : 1f, m_YConstraintValue ? 0f : 1f, m_ZConstraintValue ? 0f : 1f) + : Vector3.zero; + } + + /// + /// Reads any new values from the input readers and applies it to the corresponding value or state properties + /// for further processing. + /// + protected virtual void ReadInputValues() + { +#if ENABLE_VR || UNITY_GAMECORE + // Translation & Rotation + m_TranslateXValue = m_TranslateXInput.ReadValue(); + m_TranslateYValue = m_TranslateYInput.ReadValue(); + m_TranslateZValue = m_TranslateZInput.ReadValue(); + m_RotationDeltaValue = m_KeyboardRotationDeltaInput.ReadValue(); + + if (m_ToggleMouseInput.ReadIsPerformed()) + { + Vector2 mouseRotationValue = m_MouseRotationDeltaInput.ReadValue(); + + if (mouseRotationValue != Vector2.zero) + m_RotationDeltaValue = mouseRotationValue; + + m_MouseScrollValue = m_MouseScrollInput.ReadValue(); + + if (m_MouseScrollValue.y != 0f) + m_TranslateZValue = m_MouseScrollValue.y; + } + + m_XConstraintValue = m_XConstraintInput.ReadIsPerformed(); + m_YConstraintValue = m_YConstraintInput.ReadIsPerformed(); + m_ZConstraintValue = m_ZConstraintInput.ReadIsPerformed(); + m_ResetValue = m_ResetInput.ReadWasPerformedThisFrame(); + + m_Axis2DValue = Vector2.ClampMagnitude(m_Axis2DInput.ReadValue(), 1f); + + if (m_TogglePrimary2DAxisTargetInput.ReadWasPerformedThisFrame()) + axis2DTargets = Axis2DTargets.Primary2DAxis; + + if (m_ToggleSecondary2DAxisTargetInput.ReadWasPerformedThisFrame()) + axis2DTargets = Axis2DTargets.Secondary2DAxis; +#endif + } + + void CycleQuickAction() + { +#if ENABLE_VR || UNITY_GAMECORE + if (m_DeviceLifecycleManager.deviceMode == SimulatedDeviceLifecycleManager.DeviceMode.Controller) + { + if (m_QuickActionControllerInputModes.Count == 0) + { + Debug.LogWarning("The key to switch between controller inputs has been pressed," + + " but there doesn't seem to be any inputs set in the quick-action controller input modes.", this); + return; + } + + ClearControllerButtonInput(ref m_LeftControllerState); + ClearControllerButtonInput(ref m_RightControllerState); + m_ControllerInputModeIndex = (m_ControllerInputModeIndex < (m_QuickActionControllerInputModes.Count - 1)) ? (m_ControllerInputModeIndex + 1) : 0; + m_ControllerInputMode = m_QuickActionControllerInputModes[m_ControllerInputModeIndex]; + } + else if (m_DeviceLifecycleManager.deviceMode == SimulatedDeviceLifecycleManager.DeviceMode.Hand) + { + CycleQuickActionHandExpression(); + } +#endif + } + + void PerformQuickAction() + { +#if ENABLE_VR || UNITY_GAMECORE + if (m_DeviceLifecycleManager.deviceMode == SimulatedDeviceLifecycleManager.DeviceMode.Controller) + { + if (manipulatingLeftController) + ToggleControllerButtonInput(ref m_LeftControllerState); + else if (manipulatingRightController) + ToggleControllerButtonInput(ref m_RightControllerState); + } + else if (m_DeviceLifecycleManager.deviceMode == SimulatedDeviceLifecycleManager.DeviceMode.Hand) + { + ToggleHandExpression(m_CurrentHandExpression, manipulatingLeftHand, manipulatingRightHand); + } +#endif + } + +#if ENABLE_VR || UNITY_GAMECORE + void ToggleControllerButtonInput(ref XRSimulatedControllerState controllerState) + { + switch (m_ControllerInputMode) + { + case ControllerInputMode.None: + break; + case ControllerInputMode.Trigger: + controllerState.ToggleButton(ControllerButton.TriggerButton); + controllerState.trigger = controllerState.HasButton(ControllerButton.TriggerButton) ? m_TriggerAmount : 0f; + break; + case ControllerInputMode.Grip: + controllerState.ToggleButton(ControllerButton.GripButton); + controllerState.grip = controllerState.HasButton(ControllerButton.GripButton) ? m_GripAmount : 0f; + break; + case ControllerInputMode.PrimaryButton: + controllerState.ToggleButton(ControllerButton.PrimaryButton); + break; + case ControllerInputMode.SecondaryButton: + controllerState.ToggleButton(ControllerButton.SecondaryButton); + break; + case ControllerInputMode.Menu: + controllerState.ToggleButton(ControllerButton.MenuButton); + break; + case ControllerInputMode.Primary2DAxisClick: + controllerState.ToggleButton(ControllerButton.Primary2DAxisClick); + break; + case ControllerInputMode.Secondary2DAxisClick: + controllerState.ToggleButton(ControllerButton.Secondary2DAxisClick); + break; + case ControllerInputMode.Primary2DAxisTouch: + controllerState.ToggleButton(ControllerButton.Primary2DAxisTouch); + break; + case ControllerInputMode.Secondary2DAxisTouch: + controllerState.ToggleButton(ControllerButton.Secondary2DAxisTouch); + break; + case ControllerInputMode.PrimaryTouch: + controllerState.ToggleButton(ControllerButton.PrimaryTouch); + break; + case ControllerInputMode.SecondaryTouch: + controllerState.ToggleButton(ControllerButton.SecondaryTouch); + break; + default: + Assert.IsTrue(false, $"Unhandled {nameof(m_ControllerInputMode)}={m_ControllerInputMode}."); + break; + } + } + + static void ClearControllerButtonInput(ref XRSimulatedControllerState controllerState) + { + controllerState.trigger = 0f; + controllerState.grip = 0f; + controllerState.buttons = 0; + } + + void SetTrackedStates() + { + m_LeftControllerState.isTracked = m_LeftControllerIsTracked; + m_RightControllerState.isTracked = m_RightControllerIsTracked; + m_LeftHandState.isTracked = m_LeftHandIsTracked; + m_RightHandState.isTracked = m_RightHandIsTracked; + m_HMDState.isTracked = m_HMDIsTracked; + m_LeftControllerState.trackingState = (int)m_LeftControllerTrackingState; + m_RightControllerState.trackingState = (int)m_RightControllerTrackingState; + m_HMDState.trackingState = (int)m_HMDTrackingState; + } +#endif + + void CycleTargetDevices() + { + if (targetedDeviceInput.HasDevice(TargetedDevices.HMD)) + targetedDeviceInput = targetedDeviceInput.WithoutDevice(TargetedDevices.HMD); + + if (targetedDeviceInput == TargetedDevices.None) + targetedDeviceInput = TargetedDevices.FPS; + else if (targetedDeviceInput.HasDevice(TargetedDevices.FPS)) + { + targetedDeviceInput = targetedDeviceInput.WithoutDevice(TargetedDevices.FPS); + + if (!targetedDeviceInput.HasDevice(TargetedDevices.LeftDevice) && !targetedDeviceInput.HasDevice(TargetedDevices.RightDevice)) + targetedDeviceInput = TargetedDevices.LeftDevice | TargetedDevices.RightDevice; + } + else if (targetedDeviceInput.HasDevice(TargetedDevices.LeftDevice) || targetedDeviceInput.HasDevice(TargetedDevices.RightDevice)) + targetedDeviceInput = targetedDeviceInput.WithDevice(TargetedDevices.FPS); + } + + void HandleLeftOrRightDeviceToggle() + { + if (m_ToggleManipulateWaitingForReleaseBoth) + { + m_ToggleManipulateWaitingForReleaseBoth = m_ToggleManipulateLeftInput.ReadIsPerformed() || m_ToggleManipulateRightInput.ReadIsPerformed(); + return; + } + + // If both buttons are pressed simultaneously, activate both devices. + // We don't wait until release in that case in order to have immediate feedback that the gesture was accepted. + // Waiting until button release for individual presses makes it easier to avoid unintended changes + // when the user wants to activate the simultaneous gesture. + if (m_ToggleManipulateLeftInput.ReadIsPerformed() && m_ToggleManipulateRightInput.ReadIsPerformed()) + { + if (targetedDeviceInput.HasDevice(TargetedDevices.HMD)) + targetedDeviceInput = targetedDeviceInput.WithoutDevice(TargetedDevices.HMD); + + // Once both are pressed simultaneously, + // prevent further toggling until both buttons are released. + m_ToggleManipulateWaitingForReleaseBoth = true; + + if (targetedDeviceInput == (TargetedDevices.LeftDevice | TargetedDevices.RightDevice)) + m_DeviceLifecycleManager.SwitchDeviceMode(); + else + targetedDeviceInput = targetedDeviceInput.WithDevice(TargetedDevices.LeftDevice).WithDevice(TargetedDevices.RightDevice) + .WithoutDevice(TargetedDevices.FPS); + } + else if (m_ToggleManipulateLeftInput.ReadWasCompletedThisFrame()) + { + if (targetedDeviceInput.HasDevice(TargetedDevices.HMD)) + targetedDeviceInput = targetedDeviceInput.WithoutDevice(TargetedDevices.HMD); + + if (targetedDeviceInput == TargetedDevices.LeftDevice) + m_DeviceLifecycleManager.SwitchDeviceMode(); + else + targetedDeviceInput = targetedDeviceInput.WithDevice(TargetedDevices.LeftDevice) + .WithoutDevice(TargetedDevices.RightDevice).WithoutDevice(TargetedDevices.FPS); + } + else if (m_ToggleManipulateRightInput.ReadWasCompletedThisFrame()) + { + if (targetedDeviceInput.HasDevice(TargetedDevices.HMD)) + targetedDeviceInput = targetedDeviceInput.WithoutDevice(TargetedDevices.HMD); + + if (targetedDeviceInput == TargetedDevices.RightDevice) + m_DeviceLifecycleManager.SwitchDeviceMode(); + else + targetedDeviceInput = targetedDeviceInput.WithDevice(TargetedDevices.RightDevice) + .WithoutDevice(TargetedDevices.LeftDevice).WithoutDevice(TargetedDevices.FPS); + } + } + + void HandleHMDToggle() + { + if (targetedDeviceInput != TargetedDevices.HMD) + { + m_PreviousTargetedDevices = targetedDeviceInput; + targetedDeviceInput = TargetedDevices.HMD; + } + else + { + targetedDeviceInput = m_PreviousTargetedDevices; + } + } + + void CycleQuickActionHandExpression() + { + var handExpressions = m_HandExpressionManager.simulatedHandExpressions; + for (var i = 0; i < handExpressions.Count; ++i) + { + m_HandExpressionIndex = (m_HandExpressionIndex < (handExpressions.Count - 1)) ? (m_HandExpressionIndex + 1) : 0; + if (handExpressions[m_HandExpressionIndex].isQuickAction) + { + m_CurrentHandExpression = handExpressions[m_HandExpressionIndex]; + return; + } + } + + m_HandExpressionIndex = -1; + Debug.LogWarning("The key to switch between hand expressions has been pressed," + + " but there doesn't seem to be any expressions set to quick-access in the Simulated Hand Expression Manager.", this); + } + } +} diff --git a/Runtime/Inputs/Simulation/XRInteractionSimulator.cs.meta b/Runtime/Inputs/Simulation/XRInteractionSimulator.cs.meta new file mode 100644 index 00000000..b25556a7 --- /dev/null +++ b/Runtime/Inputs/Simulation/XRInteractionSimulator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: da1bb8ac6d49b4bbe8d0a43005a26072 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Inputs/Simulation/XRDeviceSimulatorLoader.cs b/Runtime/Inputs/Simulation/XRInteractionSimulatorLoader.cs similarity index 54% rename from Runtime/Inputs/Simulation/XRDeviceSimulatorLoader.cs rename to Runtime/Inputs/Simulation/XRInteractionSimulatorLoader.cs index 1d7fa4bb..f9c75564 100644 --- a/Runtime/Inputs/Simulation/XRDeviceSimulatorLoader.cs +++ b/Runtime/Inputs/Simulation/XRInteractionSimulatorLoader.cs @@ -5,11 +5,12 @@ namespace UnityEngine.XR.Interaction.Toolkit.Inputs.Simulation { /// - /// This class instantiates the in the scene depending on + /// This class instantiates the interaction simulator in the scene depending on /// project settings. /// + /// [Preserve] - public static class XRDeviceSimulatorLoader + public static class XRInteractionSimulatorLoader { /// /// See . @@ -21,7 +22,7 @@ public static void Initialize() } [Preserve] - static XRDeviceSimulatorLoader() + static XRInteractionSimulatorLoader() { if (!XRDeviceSimulatorSettings.Instance.automaticallyInstantiateSimulatorPrefab || (XRDeviceSimulatorSettings.Instance.automaticallyInstantiateInEditorOnly && !Application.isEditor)) @@ -29,39 +30,46 @@ static XRDeviceSimulatorLoader() #if UNITY_INCLUDE_TESTS // For a consistent test environment, do not instantiate the simulator when running tests. - // The XR Device Simulator will need to be explicitly added during a test if it is used for testing. - // Additionally, as of Input System 1.4.4, the InputState.Change call in XRDeviceSimulator.Update causes + // The simulator component will need to be explicitly added during a test if it is used for testing. + // Additionally, as of Input System 1.4.4, the InputState.Change call in the component's Update causes // a NullReferenceException deep in the stack trace if running during tests. // The test runner will create a scene named "InitTestScene{DateTime.Now.Ticks}.unity". var scene = SceneManager.GetActiveScene(); var isUnityTest = scene.IsValid() && scene.name.StartsWith("InitTestScene"); if (isUnityTest) { - Debug.Log("Skipping automatic instantiation of XR Device Simulator prefab since tests are running."); + Debug.Log("Skipping automatic instantiation of XR Interaction Simulator prefab since tests are running."); return; } #endif - if (XRDeviceSimulator.instance == null) + if (XRInteractionSimulator.instance != null) { - var simulatorPrefab = XRDeviceSimulatorSettings.Instance.simulatorPrefab; - if (simulatorPrefab == null) - { - Debug.LogWarning("XR Device Simulator prefab was missing, cannot automatically instantiate." + - " Open Window > Package Manager, select XR Interaction Toolkit, and Reimport the XR Device Simulator sample," + - " and then toggle the setting in Edit > Project Settings > XR Plug-in Management > XR Interaction Toolkit to try to resolve this issue."); - return; - } - - var simulatorInstance = Object.Instantiate(simulatorPrefab); - // Strip off (Clone) from the name - simulatorInstance.name = simulatorPrefab.name; - Object.DontDestroyOnLoad(simulatorInstance); + Object.DontDestroyOnLoad(XRInteractionSimulator.instance); + return; } - else + + if (XRDeviceSimulator.instance != null) { Object.DontDestroyOnLoad(XRDeviceSimulator.instance); + return; } + + var simulatorPrefab = XRDeviceSimulatorSettings.Instance.simulatorPrefab; + if (simulatorPrefab == null) + { + Debug.LogWarning("XR Interaction Simulator prefab was missing, cannot automatically instantiate." + + " Open Window > Package Manager, select XR Interaction Toolkit, and Reimport the XR Device Simulator sample," + + " and then toggle the setting in Edit > Project Settings > XR Plug-in Management > XR Interaction Toolkit to try to resolve this issue."); + return; + } + + var simulatorInstance = Object.Instantiate(simulatorPrefab); + + // Strip off (Clone) from the name + simulatorInstance.name = simulatorPrefab.name; + + Object.DontDestroyOnLoad(simulatorInstance); } } } diff --git a/Runtime/Inputs/Simulation/XRInteractionSimulatorLoader.cs.meta b/Runtime/Inputs/Simulation/XRInteractionSimulatorLoader.cs.meta new file mode 100644 index 00000000..cf1137b0 --- /dev/null +++ b/Runtime/Inputs/Simulation/XRInteractionSimulatorLoader.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 621dd2bf1cc2e45dda6c3ef7a811d6cc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Inputs/Simulation/XRSimulatedController.cs b/Runtime/Inputs/Simulation/XRSimulatedController.cs index cfe10da2..65ce9997 100644 --- a/Runtime/Inputs/Simulation/XRSimulatedController.cs +++ b/Runtime/Inputs/Simulation/XRSimulatedController.cs @@ -127,7 +127,7 @@ protected override void FinishSetup() /// protected override unsafe long ExecuteCommand(InputDeviceCommand* commandPtr) { - return XRDeviceSimulator.TryExecuteCommand(commandPtr, out var result) + return XRSimulatorUtility.TryExecuteCommand(commandPtr, out var result) ? result : base.ExecuteCommand(commandPtr); } diff --git a/Runtime/Inputs/Simulation/XRSimulatedControllerState.cs b/Runtime/Inputs/Simulation/XRSimulatedControllerState.cs index 8ca1d989..67cda657 100644 --- a/Runtime/Inputs/Simulation/XRSimulatedControllerState.cs +++ b/Runtime/Inputs/Simulation/XRSimulatedControllerState.cs @@ -187,6 +187,19 @@ public XRSimulatedControllerState WithButton(ControllerButton button, bool state return this; } + /// + /// Toggles the button mask for the given . + /// + /// Button whose state to toggle. + /// The same with the change applied. + /// + public XRSimulatedControllerState ToggleButton(ControllerButton button) + { + var bit = 1 << (int)button; + buttons ^= (ushort)bit; + return this; + } + /// /// Gets whether the button mask has the given set. /// diff --git a/Runtime/Inputs/Simulation/XRSimulatedHMD.cs b/Runtime/Inputs/Simulation/XRSimulatedHMD.cs index 4aee36e6..4f2a33ec 100644 --- a/Runtime/Inputs/Simulation/XRSimulatedHMD.cs +++ b/Runtime/Inputs/Simulation/XRSimulatedHMD.cs @@ -16,7 +16,7 @@ public class XRSimulatedHMD : XRHMD /// protected override unsafe long ExecuteCommand(InputDeviceCommand* commandPtr) { - return XRDeviceSimulator.TryExecuteCommand(commandPtr, out var result) + return XRSimulatorUtility.TryExecuteCommand(commandPtr, out var result) ? result : base.ExecuteCommand(commandPtr); } diff --git a/Runtime/Inputs/Simulation/XRSimulatorUtility.cs b/Runtime/Inputs/Simulation/XRSimulatorUtility.cs new file mode 100644 index 00000000..ff0c2e60 --- /dev/null +++ b/Runtime/Inputs/Simulation/XRSimulatorUtility.cs @@ -0,0 +1,453 @@ +#if AR_FOUNDATION_6_0_OR_NEWER && (UNITY_EDITOR || UNITY_STANDALONE_OSX || UNITY_STANDALONE_WIN || UNITY_STANDALONE_LINUX) +#define XR_SIMULATION_AVAILABLE +#endif + +using System; +using UnityEngine.Assertions; +using UnityEngine.InputSystem; +using UnityEngine.InputSystem.LowLevel; +using UnityEngine.XR.Interaction.Toolkit.Inputs.Simulation.Hands; +using UnityEngine.XR.Interaction.Toolkit.Utilities; + +#if XR_SIMULATION_AVAILABLE +#if XR_MANAGEMENT_4_0_OR_NEWER +using UnityEngine.XR.Management; +#endif +using UnityEngine.XR.Simulation; +#endif + +namespace UnityEngine.XR.Interaction.Toolkit.Inputs.Simulation +{ + /// + /// The target device or devices to update from input. + /// + /// + /// to support updating multiple controls from one input + /// (e.g. to drive a controller and the head from the same input). + /// + [Flags] + public enum TargetedDevices + { + /// + /// No target device to update. + /// + None = 0, + + /// + /// No target device, behaving as an FPS controller. + /// + FPS = 1 << 0, + + /// + /// Update left controller or hand position and rotation. + /// + LeftDevice = 1 << 1, + + /// + /// Update right controller or hand position and rotation. + /// + RightDevice = 1 << 2, + + /// + /// Update HMD position and rotation. + /// + HMD = 1 << 3, + } + + /// + /// The target device control(s) to update from input. + /// + /// + /// to support updating multiple controls from input + /// (e.g. to drive the primary and secondary 2D axis on a controller from the same input). + /// + /// + [Flags] + public enum Axis2DTargets + { + /// + /// Do not update device state from input. + /// + None = 0, + + /// + /// Update device position from input. + /// + Position = 1 << 0, + + /// + /// Update the primary touchpad or joystick on a controller device from input. + /// + Primary2DAxis = 1 << 1, + + /// + /// Update the secondary touchpad or joystick on a controller device from input. + /// + Secondary2DAxis = 1 << 2, + } + + /// + /// The device input mode of the left and right controller. + /// + public enum ControllerInputMode + { + /// + /// No current active mode. + /// + None, + + /// + /// Mode for simulating controller trigger input. + /// + Trigger, + + /// + /// Mode for simulating controller grip input. + /// + Grip, + + /// + /// Mode for simulating controller primary button input. + /// + PrimaryButton, + + /// + /// Mode for simulating controller secondary button input. + /// + SecondaryButton, + + /// + /// Mode for simulating controller menu button input. + /// + Menu, + + /// + /// Mode for simulating controller primary axis 2D click input. + /// + Primary2DAxisClick, + + /// + /// Mode for simulating controller secondary axis 2D click input. + /// + Secondary2DAxisClick, + + /// + /// Mode for simulating controller primary axis 2D touch input. + /// + Primary2DAxisTouch, + + /// + /// Mode for simulating controller secondary axis 2D touch input. + /// + Secondary2DAxisTouch, + + /// + /// Mode for simulating controller primary touch input. + /// + PrimaryTouch, + + /// + /// Mode for simulating controller secondary touch input. + /// + SecondaryTouch, + } + + /// + /// The coordinate space in which to operate. + /// + public enum Space + { + /// + /// Applies translations of a controller or HMD relative to its own coordinate space, considering its own rotations. + /// Will translate a controller relative to itself, independent of the camera. + /// + Local, + + /// + /// Applies translations of a controller or HMD relative to its parent. If the object does not have a parent, meaning + /// it is a root object, the parent coordinate space is the same as the world coordinate space. This is the same + /// as but without considering its own rotations. + /// + Parent, + + /// + /// Applies translations of a controller or HMD relative to the screen. + /// Will translate a controller relative to the camera, independent of the controller's orientation. + /// + Screen, + } + + /// + /// Utility functions for simulation classes. + /// + static class XRSimulatorUtility + { + /// + /// The maximum angle the XR Camera can have around the x-axis. + /// + internal static readonly float cameraMaxXAngle = 80f; + + internal static readonly Vector3 leftDeviceDefaultInitialPosition = new Vector3(-0.1f, -0.05f, 0.3f); + internal static readonly Vector3 rightDeviceDefaultInitialPosition = new Vector3(0.1f, -0.05f, 0.3f); + + internal static SimulatedDeviceLifecycleManager FindCreateSimulatedDeviceLifecycleManager(GameObject simulator) + { + if (ComponentLocatorUtility.TryFindComponent(out var simulatedDeviceLifecycleManager)) + { + return simulatedDeviceLifecycleManager; + } + else + { + simulatedDeviceLifecycleManager = simulator.AddComponent(); + return simulatedDeviceLifecycleManager; + } + } + + internal static SimulatedHandExpressionManager FindCreateSimulatedHandExpressionManager(GameObject simulator) + { + if (ComponentLocatorUtility.TryFindComponent(out var simulatedHandExpressionManager)) + { + return simulatedHandExpressionManager; + } + else + { + simulatedHandExpressionManager = simulator.AddComponent(); + return simulatedHandExpressionManager; + } + } + + internal static void Subscribe(InputActionReference reference, Action performed = null, Action canceled = null) + { + var action = GetInputAction(reference); + if (action != null) + { + if (performed != null) + action.performed += performed; + if (canceled != null) + action.canceled += canceled; + } + } + + internal static void Unsubscribe(InputActionReference reference, Action performed = null, Action canceled = null) + { + var action = GetInputAction(reference); + if (action != null) + { + if (performed != null) + action.performed -= performed; + if (canceled != null) + action.canceled -= canceled; + } + } + + static InputAction GetInputAction(InputActionReference actionReference) + { +#pragma warning disable IDE0031 // Use null propagation -- Do not use for UnityEngine.Object types + return actionReference != null ? actionReference.action : null; +#pragma warning restore IDE0031 + } + +#if ENABLE_VR || UNITY_GAMECORE + internal static Quaternion GetDeltaRotation(Space translateSpace, in XRSimulatedControllerState state, in Quaternion inverseCameraParentRotation) + => GetDeltaRotation(translateSpace, state.deviceRotation, inverseCameraParentRotation); + + internal static Quaternion GetDeltaRotation(Space translateSpace, in XRSimulatedHandState state, in Quaternion inverseCameraParentRotation) + => GetDeltaRotation(translateSpace, state.rotation, inverseCameraParentRotation); + + internal static Quaternion GetDeltaRotation(Space translateSpace, in XRSimulatedHMDState state, in Quaternion inverseCameraParentRotation) + => GetDeltaRotation(translateSpace, state.centerEyeRotation, inverseCameraParentRotation); + + internal static void GetAxes(Space translateSpace, Transform cameraTransform, out Vector3 right, out Vector3 up, out Vector3 forward) + { + if (cameraTransform == null) + throw new ArgumentNullException(nameof(cameraTransform)); + + switch (translateSpace) + { + case Space.Local: + // Makes the assumption that the Camera and the Controllers are siblings + // (meaning they share a parent GameObject). + var cameraParent = cameraTransform.parent; + if (cameraParent != null) + { + right = cameraParent.TransformDirection(Vector3.right); + up = cameraParent.TransformDirection(Vector3.up); + forward = cameraParent.TransformDirection(Vector3.forward); + } + else + { + right = Vector3.right; + up = Vector3.up; + forward = Vector3.forward; + } + + break; + case Space.Parent: + right = Vector3.right; + up = Vector3.up; + forward = Vector3.forward; + break; + case Space.Screen: + right = cameraTransform.TransformDirection(Vector3.right); + up = cameraTransform.TransformDirection(Vector3.up); + forward = cameraTransform.TransformDirection(Vector3.forward); + break; + default: + right = Vector3.right; + up = Vector3.up; + forward = Vector3.forward; + Assert.IsTrue(false, $"Unhandled {nameof(translateSpace)}={translateSpace}."); + return; + } + } + + internal static Quaternion GetDeltaRotation(Space translateSpace, Quaternion rotation, in Quaternion inverseCameraParentRotation) + { + switch (translateSpace) + { + case Space.Local: + return rotation * inverseCameraParentRotation; + case Space.Parent: + return Quaternion.identity; + case Space.Screen: + return inverseCameraParentRotation; + default: + Assert.IsTrue(false, $"Unhandled {nameof(translateSpace)}={translateSpace}."); + return Quaternion.identity; + } + } +#endif + +#if XR_SIMULATION_AVAILABLE && XR_MANAGEMENT_4_0_OR_NEWER + internal static bool XRSimulationLoaderEnabledForEditorPlayMode() + { + if (XRGeneralSettings.Instance != null && XRGeneralSettings.Instance.Manager != null) + return XRGeneralSettings.Instance.Manager.activeLoader is SimulationLoader simulationLoader && simulationLoader != null; + + return false; + } +#endif + + /// + /// Finds and sets camera transform if necessary. + /// + /// Returns if the camera reference is valid. Otherwise, returns . + internal static bool FindCameraTransform(ref (Transform transform, Camera camera) cachedCamera, ref Transform cameraTransform) + { + // Sync the cache tuple if necessary + if (cachedCamera.transform != cameraTransform) + cachedCamera = (cameraTransform, cameraTransform != null ? cameraTransform.GetComponent() : null); + + // Camera.main returns the first active and enabled main camera, so if the cached one + // is no longer enabled, find the new main camera. This is to support, for example, + // toggling between different XROrigin rigs each with their own main camera. + if (cachedCamera.transform == null || + (cachedCamera.camera != null && !cachedCamera.camera.isActiveAndEnabled)) + { + var mainCamera = Camera.main; + if (mainCamera == null) + return false; + + cameraTransform = mainCamera.transform; + cachedCamera = (cameraTransform, cameraTransform.GetComponent()); + } + + return true; + } + + internal static unsafe bool TryExecuteCommand(InputDeviceCommand* commandPtr, out long result) + { + // This is a utility method called by XRSimulatedHMD and XRSimulatedController + // since both devices share the same command handling. + // This replicates the logic in XRToISXDevice::IOCTL (XRInputToISX.cpp). + var type = commandPtr->type; + if (type == RequestSyncCommand.Type) + { + // The state is maintained by XRDeviceSimulator, so no need for any change + // when focus is regained. Returning success instructs Input System to not + // reset the device. + result = InputDeviceCommand.GenericSuccess; + return true; + } + + if (type == QueryCanRunInBackground.Type) + { + ((QueryCanRunInBackground*)commandPtr)->canRunInBackground = true; + result = InputDeviceCommand.GenericSuccess; + return true; + } + + result = default; + return false; + } + + internal static Vector3 GetTranslationInDeviceSpace(float xTranslateInput, float yTranslateInput, float zTranslateInput, Transform cameraTransform, Quaternion cameraParentRotation, Quaternion inverseCameraParentRotation) + { + var translationInWorldSpace = GetTranslationInWorldSpace(xTranslateInput, yTranslateInput, zTranslateInput, cameraTransform, cameraParentRotation); + var translationInDeviceSpace = inverseCameraParentRotation * translationInWorldSpace; + + return translationInDeviceSpace; + } + + internal static Vector3 GetTranslationInWorldSpace(float xTranslateInput, float yTranslateInput, float zTranslateInput, Transform cameraTransform, Quaternion cameraParentRotation) + { + var scaledKeyboardTranslateInput = new Vector3( + xTranslateInput, + yTranslateInput, + zTranslateInput); + + var forward = cameraTransform.forward; + var cameraParentUp = cameraParentRotation * Vector3.up; + if (Mathf.Approximately(Mathf.Abs(Vector3.Dot(forward, cameraParentUp)), 1f)) + { + forward = -cameraTransform.up; + } + + var forwardProjected = Vector3.ProjectOnPlane(forward, cameraParentUp); + var forwardRotation = Quaternion.LookRotation(forwardProjected, cameraParentUp); + var translationInWorldSpace = forwardRotation * scaledKeyboardTranslateInput; + + return translationInWorldSpace; + } + } + + /// + /// Extension methods for . + /// + static class TargetedDeviceExtensions + { + /// + /// Returns the flags enum with the given flag set. + /// + /// The flags enum instance. + /// The flag to also set in the returned instance. + /// Returns the flags enum with the given flag set. + public static TargetedDevices WithDevice(this TargetedDevices devices, TargetedDevices device) + { + return devices | device; + } + + /// + /// Returns the flags enum with the given flag not set. + /// + /// The flags enum instance. + /// The flag to clear in the returned instance. + /// Returns the flags enum with the given flag not set. + public static TargetedDevices WithoutDevice(this TargetedDevices devices, TargetedDevices device) + { + return devices & ~device; + } + + /// + /// Determines whether one or more bit fields are set in the flags + /// Non-boxing version of HasFlag for . + /// + /// The flags enum instance. + /// The flag to check if set. + /// Returns if the bit field or bit fields are set, otherwise returns . + public static bool HasDevice(this TargetedDevices devices, TargetedDevices device) + { + return (devices & device) == device; + } + } +} diff --git a/Runtime/Inputs/Simulation/XRSimulatorUtility.cs.meta b/Runtime/Inputs/Simulation/XRSimulatorUtility.cs.meta new file mode 100644 index 00000000..1e731b4c --- /dev/null +++ b/Runtime/Inputs/Simulation/XRSimulatorUtility.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8f3f083f1ad4542c2aa2866c9b149239 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Interaction/Attachment/AttachPointVelocityTracker.cs b/Runtime/Interaction/Attachment/AttachPointVelocityTracker.cs index 514024c7..94f6b41b 100644 --- a/Runtime/Interaction/Attachment/AttachPointVelocityTracker.cs +++ b/Runtime/Interaction/Attachment/AttachPointVelocityTracker.cs @@ -185,7 +185,7 @@ Vector3 CalculateAngularVelocityWithWeightedRegression() /// /// Resets the velocity tracking data. /// - internal void ResetVelocityTracking() + public void ResetVelocityTracking() { m_PositionTimeBuffer.Clear(); m_RotationTimeBuffer.Clear(); diff --git a/Runtime/Interaction/Attachment/InteractionAttachController.cs b/Runtime/Interaction/Attachment/InteractionAttachController.cs index 1a5ad5e0..74662d40 100644 --- a/Runtime/Interaction/Attachment/InteractionAttachController.cs +++ b/Runtime/Interaction/Attachment/InteractionAttachController.cs @@ -1,10 +1,11 @@ +using System; #if BURST_PRESENT using Unity.Burst; #endif -using System; using Unity.Mathematics; using Unity.XR.CoreUtils; using UnityEngine.XR.Interaction.Toolkit.Inputs; +using UnityEngine.XR.Interaction.Toolkit.Inputs.Readers; using UnityEngine.XR.Interaction.Toolkit.Interactors; using UnityEngine.XR.Interaction.Toolkit.Utilities; @@ -22,8 +23,46 @@ namespace UnityEngine.XR.Interaction.Toolkit.Attachment [HelpURL(XRHelpURLConstants.k_InteractionAttachController)] public class InteractionAttachController : MonoBehaviour, IInteractionAttachController { + /// + /// Mode for what the x-axis (left/right) of the manipulation input does when controlling the anchor. + /// + /// + public enum ManipulationXAxisMode + { + /// + /// Do not manipulate the anchor with x-axis input. + /// + None, + + /// + /// Horizontal rotation (yaw) of the anchor over time. + /// + HorizontalRotation, + } + + /// + /// Mode for what the y-axis (up/down) of the manipulation input does when controlling the anchor. + /// + /// + public enum ManipulationYAxisMode + { + /// + /// Do not manipulate the anchor with y-axis input. + /// + None, + + /// + /// Vertical rotation (pitch) of the anchor over time. + /// + VerticalRotation, + + /// + /// Translate the anchor closer or further away over time. + /// + Translate, + } + [SerializeField] - [Tooltip("The transform that this anchor should follow.")] Transform m_TransformToFollow; /// @@ -35,9 +74,7 @@ public Transform transformToFollow set => m_TransformToFollow = value; } - [Header("Stabilization Parameters")] [SerializeField] - [Tooltip("The stabilization mode for the motion of the anchor. Determines how the anchor's position and rotation are stabilized relative to the followed transform.")] MotionStabilizationMode m_MotionStabilizationMode = MotionStabilizationMode.WithPositionOffset; /// @@ -50,7 +87,6 @@ public MotionStabilizationMode motionStabilizationMode } [SerializeField] - [Tooltip("Factor for stabilizing position. Larger values increase the range of stabilization, making the effect more pronounced over a greater distance.")] float m_PositionStabilization = 0.25f; /// @@ -63,7 +99,6 @@ public float positionStabilization } [SerializeField] - [Tooltip("Factor for stabilizing angle. Larger values increase the range of stabilization, making the effect more pronounced over a greater angle.")] float m_AngleStabilization = 20f; /// @@ -75,9 +110,7 @@ public float angleStabilization set => m_AngleStabilization = value; } - [Header("Smoothing Settings")] [SerializeField] - [Tooltip("If true offset will be smoothed over time in XR Origin space.")] bool m_SmoothOffset; /// @@ -91,7 +124,6 @@ public bool smoothOffset } [SerializeField] - [Tooltip("Smoothing speed for the offset anchor child.")] [Range(1f, 30f)] float m_SmoothingSpeed = 10f; @@ -104,9 +136,7 @@ public float smoothingSpeed set => m_SmoothingSpeed = Mathf.Clamp(value, 1f, 30f); } - [Header("Anchor Movement Parameters")] [SerializeField] - [Tooltip("Whether to use distance-based velocity scaling for anchor movement.")] bool m_UseDistanceBasedVelocityScaling = true; /// @@ -118,9 +148,7 @@ public bool useDistanceBasedVelocityScaling set => m_UseDistanceBasedVelocityScaling = value; } - [Space] [SerializeField] - [Tooltip("Whether momentum is used when distance scaling is in effect.")] bool m_UseMomentum = true; /// @@ -133,12 +161,11 @@ public bool useMomentum } [SerializeField] - [Tooltip("Decay scalar for momentum. Higher values will cause momentum to decay faster.")] [Range(0f, 10f)] float m_MomentumDecayScale = 1.25f; /// - /// Decay scalar for momentum. Higher values will cause momentum to decay faster. + /// Decay scalar for momentum when triggered with push/pull gesture. Higher values will cause momentum to decay faster. /// public float momentumDecayScale { @@ -146,10 +173,21 @@ public float momentumDecayScale set => m_MomentumDecayScale = Mathf.Clamp(value, 0f, 10f); } - [Space] + [SerializeField] + [Range(0f, 10f)] + float m_MomentumDecayScaleFromInput = 5.5f; + + /// + /// Decay scalar for momentum when triggered with manipulation input. Higher values will cause momentum to decay faster. + /// + public float momentumDecayScaleFromInput + { + get => m_MomentumDecayScaleFromInput; + set => m_MomentumDecayScaleFromInput = Mathf.Clamp(value, 0f, 10f); + } + [SerializeField] [Range(0f, 5f)] - [Tooltip("Scales anchor velocity from 0 to 1 based on z-velocity's deviation below a threshold. 0 means no scaling.")] float m_ZVelocityRampThreshold = 0.3f; /// @@ -162,7 +200,6 @@ public float zVelocityRampThreshold } [SerializeField] - [Tooltip("Adjusts the object's velocity calculation when moving towards the user. It modifies the distance-based calculation that determines the velocity scalar.")] [Range(0f, 2f)] float m_PullVelocityBias = 1f; @@ -179,7 +216,6 @@ public float pullVelocityBias } [SerializeField] - [Tooltip("Adjusts the object's velocity calculation when moving away from the user. It modifies the distance-based calculation that determines the velocity scalar.")] [Range(0f, 2f)] float m_PushVelocityBias = 1.25f; @@ -196,13 +232,13 @@ public float pushVelocityBias } [SerializeField] - [Tooltip("Minimum additional velocity scaling factor for movement, interpolated by a quad bezier curve.")] [Range(0f, 2f)] float m_MinAdditionalVelocityScalar = 0.05f; /// /// Minimum additional velocity scaling factor for movement, interpolated by a quad bezier curve. /// + /// public float minAdditionalVelocityScalar { get => m_MinAdditionalVelocityScalar; @@ -210,28 +246,130 @@ public float minAdditionalVelocityScalar } [SerializeField] - [Tooltip("Maximum additional velocity scaling factor for movement, interpolated by a quad bezier curve.")] [Range(0, 5f)] float m_MaxAdditionalVelocityScalar = 1.5f; /// /// Maximum additional velocity scaling factor for movement, interpolated by a quad bezier curve. /// + /// public float maxAdditionalVelocityScalar { get => m_MaxAdditionalVelocityScalar; set => m_MaxAdditionalVelocityScalar = Mathf.Clamp(value, 0f, 5f); } - [Header("Debug Configuration")] + [SerializeField] + bool m_UseManipulationInput; + + /// + /// Whether to use input-based manipulation for anchor movement. + /// + public bool useManipulationInput + { + get => m_UseManipulationInput; + set => m_UseManipulationInput = value; + } + + [SerializeField] + XRInputValueReader m_ManipulationInput = new XRInputValueReader("Manipulation"); + + /// + /// Input to use for rotating or translating the attach point closer or further away. + /// This effectively rotates or moves the selected grab interactable along the ray. + /// + public XRInputValueReader manipulationInput + { + get => m_ManipulationInput; + set => XRInputReaderUtility.SetInputProperty(ref m_ManipulationInput, value, this); + } + + [SerializeField] + ManipulationXAxisMode m_ManipulationXAxisMode = ManipulationXAxisMode.HorizontalRotation; + + /// + /// Mode for what the x-axis (left/right) of the manipulation input does when controlling the anchor. + /// + /// + public ManipulationXAxisMode manipulationXAxisMode + { + get => m_ManipulationXAxisMode; + set => m_ManipulationXAxisMode = value; + } + + [SerializeField] + ManipulationYAxisMode m_ManipulationYAxisMode = ManipulationYAxisMode.Translate; - [SerializeField, Tooltip("Enable debug lines for the attach transform offset and velocity vector.")] + /// + /// Mode for what the y-axis (up/down) of the manipulation input does when controlling the anchor. + /// + /// + public ManipulationYAxisMode manipulationYAxisMode + { + get => m_ManipulationYAxisMode; + set => m_ManipulationYAxisMode = value; + } + + [SerializeField] + bool m_CombineManipulationAxes; + + /// + /// Whether to allow simultaneous vertical and horizontal rotation or simultaneous translation and horizontal rotation. + /// Disable to allow only one axis of manipulation input at a time based on which axis is most actuated. + /// + public bool combineManipulationAxes + { + get => m_CombineManipulationAxes; + set => m_CombineManipulationAxes = value; + } + + [SerializeField] + float m_ManipulationTranslateSpeed = 1f; + + /// + /// Speed at which the anchor is translated when using manipulation input. + /// + /// + public float manipulationTranslateSpeed + { + get => m_ManipulationTranslateSpeed; + set => m_ManipulationTranslateSpeed = value; + } + + [SerializeField] + float m_ManipulationRotateSpeed = 180f; + + /// + /// Speed at which the anchor is rotated when using manipulation input. + /// + /// + public float manipulationRotateSpeed + { + get => m_ManipulationRotateSpeed; + set => m_ManipulationRotateSpeed = value; + } + + [SerializeField] + Transform m_ManipulationRotateReferenceFrame; + + /// + /// The optional reference frame to define the rotation axes when the anchor is rotated when using manipulation input. + /// When not set, vertical rotation (pitch) is around the local x-axis and horizontal rotation (yaw) is around the local y-axis + /// of the anchor. + /// + public Transform manipulationRotateReferenceFrame + { + get => m_ManipulationRotateReferenceFrame; + set => m_ManipulationRotateReferenceFrame = value; + } + + [SerializeField] bool m_EnableDebugLines; /// /// Enable debug lines for the attach transform offset and velocity vector. /// - bool enableDebugLines + public bool enableDebugLines { get => m_EnableDebugLines; set => m_EnableDebugLines = value; @@ -251,13 +389,14 @@ bool enableDebugLines bool m_FirstMovementFrame; bool m_HasOffset; - float m_StartOffsetLength; + float m_StartLocalOffsetLength; Vector3 m_StartLocalOffset; - Vector3 m_NormStartOffset; - Vector3 m_NormTargetLocalOffset; + Vector3 m_StartLocalOffsetNormalized; + Vector3 m_TargetLocalOffsetNormalized; float m_Pivot; float m_Momentum; + bool m_MomentumDecayFromInput; bool m_WasVelocityScalingBlocked; bool m_HasSelectInteractor; @@ -268,8 +407,8 @@ bool enableDebugLines Transform m_AnchorParent; Transform m_AnchorChild; - Vector3 m_LastLocalTargetPosition; - Vector3 m_LastChildOriginSpacePosition; + Vector3 m_LastTargetLocalPosition; + Vector3 m_LastTargetOriginSpacePosition; readonly AttachPointVelocityTracker m_VelocityTracker = new AttachPointVelocityTracker(); @@ -324,6 +463,11 @@ protected virtual void OnEnable() m_HasSelectInteractor = TryGetComponent(out m_SelectInteractor); + if (m_AnchorParent != null) + m_AnchorParent.gameObject.SetActive(true); + + m_ManipulationInput.EnableDirectActionIfModeUsed(); + #if UNITY_EDITOR if (enableDebugLines && m_Visualizer == null) m_Visualizer = gameObject.AddComponent(); @@ -336,9 +480,16 @@ protected virtual void OnEnable() /// protected virtual void OnDisable() { + if (m_AnchorParent != null) + m_AnchorParent.gameObject.SetActive(false); + + m_ManipulationInput.DisableDirectActionIfModeUsed(); } - void SyncAnchor() + /// + /// Update the parent anchor pose to match the transform to follow. + /// + void SyncAnchorParent() { if (m_TransformToFollow == null) m_TransformToFollow = transform; @@ -372,7 +523,7 @@ Transform IInteractionAttachController.GetOrCreateAnchorTransform(bool updateTra } if (updateTransform) - SyncAnchor(); + SyncAnchorParent(); return m_AnchorChild; } @@ -380,16 +531,19 @@ Transform IInteractionAttachController.GetOrCreateAnchorTransform(bool updateTra /// void IInteractionAttachController.MoveTo(Vector3 targetWorldPosition) { - SyncAnchor(); - MoveToPositionWorldPosition(targetWorldPosition); + SyncAnchorParent(); + MoveToPosition(targetWorldPosition); } + /// + /// Reapply the anchor child's position to update dependent offset fields. + /// void SyncOffset() { - MoveToPositionWorldPosition(m_AnchorChild.position); + MoveToPosition(m_AnchorChild.position); } - void MoveToPositionWorldPosition(Vector3 targetWorldPosition) + void MoveToPosition(Vector3 targetWorldPosition) { // Set the anchor child's position to the target world position m_AnchorChild.position = targetWorldPosition; @@ -401,25 +555,25 @@ void MoveToPositionWorldPosition(Vector3 targetWorldPosition) // Convert the world space delta to local space of the parent anchor m_StartLocalOffset = m_AnchorParent.InverseTransformDirection(delta); // Calculate the magnitude of the start offset - m_StartOffsetLength = m_StartLocalOffset.magnitude; + m_StartLocalOffsetLength = m_StartLocalOffset.magnitude; // Normalize the start offset (avoiding a second sqrt operation for efficiency) - m_NormStartOffset = m_StartOffsetLength > Vector3.kEpsilon ? m_StartLocalOffset / m_StartOffsetLength : Vector3.zero; + m_StartLocalOffsetNormalized = m_StartLocalOffsetLength > Vector3.kEpsilon ? m_StartLocalOffset / m_StartLocalOffsetLength : Vector3.zero; // Set the normalized target offset to match the start offset initially - m_NormTargetLocalOffset = m_NormStartOffset; + m_TargetLocalOffsetNormalized = m_StartLocalOffsetNormalized; // Store the current local position of the anchor child - m_LastLocalTargetPosition = m_AnchorChild.localPosition; + m_LastTargetLocalPosition = m_AnchorChild.localPosition; // If XR Origin is available, store the anchor child's position in origin space if (m_HasXROrigin) - m_LastChildOriginSpacePosition = m_XROrigin.Origin.transform.InverseTransformPoint(m_AnchorChild.position); + m_LastTargetOriginSpacePosition = m_XROrigin.Origin.transform.InverseTransformPoint(m_AnchorChild.position); // Set the pivot to the initial offset length - m_Pivot = m_StartOffsetLength; + m_Pivot = m_StartLocalOffsetLength; // Flag that an offset exists if the start offset length is greater than zero - m_HasOffset = m_StartOffsetLength > 0f; + m_HasOffset = m_StartLocalOffsetLength > 0f; m_Momentum = 0f; m_FirstMovementFrame = true; m_WasVelocityScalingBlocked = false; @@ -429,8 +583,8 @@ void MoveToPositionWorldPosition(Vector3 targetWorldPosition) /// void IInteractionAttachController.ApplyLocalPositionOffset(Vector3 offset) { - SyncAnchor(); - MoveToPositionWorldPosition(m_AnchorChild.position + m_AnchorParent.TransformDirection(offset)); + SyncAnchorParent(); + MoveToPosition(m_AnchorChild.position + m_AnchorParent.TransformDirection(offset)); } /// @@ -447,7 +601,7 @@ public void ResetOffset() m_WasVelocityScalingBlocked = false; m_Momentum = 0f; m_AnchorChild.SetLocalPose(Pose.identity); - SyncAnchor(); + SyncAnchorParent(); } /// @@ -460,20 +614,24 @@ void IInteractionAttachController.DoUpdate(float deltaTime) var originUp = originTransform.up; // Check if we skip stabilization - if (motionStabilizationMode == MotionStabilizationMode.Never || (motionStabilizationMode == MotionStabilizationMode.WithPositionOffset && !m_HasOffset)) - SyncAnchor(); + if (m_MotionStabilizationMode == MotionStabilizationMode.Never || + (m_MotionStabilizationMode == MotionStabilizationMode.WithPositionOffset && !m_HasOffset)) + { + SyncAnchorParent(); + } else { - if (!hasOffset) + if (!m_HasOffset) { - XRTransformStabilizer.ApplyStabilization(ref m_AnchorParent, m_TransformToFollow, positionStabilization, angleStabilization, deltaTime); + XRTransformStabilizer.ApplyStabilization(ref m_AnchorParent, m_TransformToFollow, + m_PositionStabilization, m_AngleStabilization, deltaTime); } else { float childAnchorOffsetMagnitude = m_AnchorChild.localPosition.z; - float stabilizationMultiplier = (1f + childAnchorOffsetMagnitude); - float adjustedPositionStabilization = stabilizationMultiplier * positionStabilization; - float adjustedAngleStabilization = stabilizationMultiplier * angleStabilization; + float stabilizationMultiplier = 1f + childAnchorOffsetMagnitude; + float adjustedPositionStabilization = stabilizationMultiplier * m_PositionStabilization; + float adjustedAngleStabilization = stabilizationMultiplier * m_AngleStabilization; var anchorParentWorldPos = m_AnchorParent.position; var worldOffset = m_AnchorChild.position - anchorParentWorldPos; @@ -481,28 +639,49 @@ void IInteractionAttachController.DoUpdate(float deltaTime) var targetWorldOffset = isWorldOffsetOrthogonalToUp ? Vector3.ProjectOnPlane(worldOffset, originUp) : worldOffset; var stabilizationTarget = anchorParentWorldPos + targetWorldOffset; - XRTransformStabilizer.ApplyStabilization(ref m_AnchorParent, m_TransformToFollow, stabilizationTarget, adjustedPositionStabilization, adjustedAngleStabilization, deltaTime); + XRTransformStabilizer.ApplyStabilization(ref m_AnchorParent, m_TransformToFollow, + stabilizationTarget, adjustedPositionStabilization, adjustedAngleStabilization, deltaTime); } } - // Track attach point velocity - if (m_UseDistanceBasedVelocityScaling) - m_VelocityTracker.UpdateAttachPointVelocityData(transformToFollow, originTransform); - - if (!hasOffset) + if (!m_HasOffset) { attachUpdated?.Invoke(); return; } - if (!m_UseDistanceBasedVelocityScaling || UpdateVelocityScalingBlock()) + // Track attach point velocity + if (m_UseDistanceBasedVelocityScaling) + m_VelocityTracker.UpdateAttachPointVelocityData(m_TransformToFollow, originTransform); + + // Position + if ((m_UseDistanceBasedVelocityScaling || m_UseManipulationInput) && !UpdateVelocityScalingBlock()) + DoPositionUpdate(deltaTime); + else + UpdatePosition(m_StartLocalOffset, deltaTime); + + // Rotation + var allowVerticalRotation = m_ManipulationYAxisMode == ManipulationYAxisMode.VerticalRotation; + var allowHorizontalRotation = m_ManipulationXAxisMode == ManipulationXAxisMode.HorizontalRotation; + if (m_UseManipulationInput && (allowVerticalRotation || allowHorizontalRotation) && m_ManipulationInput.TryReadValue(out var input)) { - UpdatePosition(m_LastChildOriginSpacePosition, m_StartLocalOffset, deltaTime); - attachUpdated?.Invoke(); - return; + input = FilterManipulationInput(input); + + var factor = m_ManipulationRotateSpeed * deltaTime; + var xDegrees = allowVerticalRotation ? input.y * factor : 0f; + var yDegrees = allowHorizontalRotation ? input.x * factor : 0f; + var referenceFrameRotation = m_ManipulationRotateReferenceFrame != null + ? m_ManipulationRotateReferenceFrame.rotation + : m_AnchorParent.rotation; + m_AnchorChild.rotation = referenceFrameRotation * Quaternion.Euler(xDegrees, yDegrees, 0f) * Quaternion.Inverse(referenceFrameRotation) * m_AnchorChild.rotation; } - float3 currentLocalOffset = m_SmoothOffset ? m_LastLocalTargetPosition : m_AnchorChild.localPosition; + attachUpdated?.Invoke(); + } + + void DoPositionUpdate(float deltaTime) + { + float3 currentLocalOffset = m_SmoothOffset ? m_LastTargetLocalPosition : m_AnchorChild.localPosition; float3 velocityLocal; Vector3 velocityWorld = Vector3.zero; @@ -511,26 +690,52 @@ void IInteractionAttachController.DoUpdate(float deltaTime) velocityLocal = float3.zero; m_FirstMovementFrame = false; } - else + else if (m_UseDistanceBasedVelocityScaling) { + var originTransform = m_XROrigin.Origin.transform; velocityWorld = m_VelocityTracker.GetAttachPointVelocity(originTransform); velocityLocal = m_AnchorParent.InverseTransformDirection(velocityWorld); } + else + { + velocityLocal = float3.zero; + } + + var applyMomentum = m_UseMomentum; + if (m_UseManipulationInput && m_ManipulationYAxisMode == ManipulationYAxisMode.Translate && m_ManipulationInput.TryReadValue(out var input)) + { + input = FilterManipulationInput(input); + + var amount = input.y * m_ManipulationTranslateSpeed; + velocityLocal += new float3(m_TargetLocalOffsetNormalized.x, m_TargetLocalOffsetNormalized.y, m_TargetLocalOffsetNormalized.z) * amount; + // Don't apply momentum while manipulation input is active, it should wait to apply + // once the input is stopped (assuming momentum is enabled at all). + applyMomentum = false; + + // Decay momentum by different amount when triggered with manipulation input + m_MomentumDecayFromInput = true; + } - ComputeAmplifiedOffset(velocityLocal, m_NormStartOffset, m_StartOffsetLength, m_NormTargetLocalOffset, currentLocalOffset, m_MinAdditionalVelocityScalar, m_MaxAdditionalVelocityScalar, m_PushVelocityBias, m_PullVelocityBias, m_ZVelocityRampThreshold, m_UseMomentum, m_MomentumDecayScale, ref m_Momentum, ref m_Pivot, deltaTime, out var newOffset); + var decayScale = m_MomentumDecayFromInput ? m_MomentumDecayScaleFromInput : m_MomentumDecayScale; + ComputeAmplifiedOffset(velocityLocal, m_StartLocalOffsetNormalized, m_StartLocalOffsetLength, + m_TargetLocalOffsetNormalized, currentLocalOffset, m_MinAdditionalVelocityScalar, m_MaxAdditionalVelocityScalar, + m_PushVelocityBias, m_PullVelocityBias, m_ZVelocityRampThreshold, m_UseMomentum, applyMomentum, decayScale, + ref m_Momentum, ref m_Pivot, deltaTime, out var newOffset); + + // If momentum is below a threshold, we stop decaying it with the alternate factor + if (math.abs(m_Momentum) < 0.001f) + m_MomentumDecayFromInput = false; #if UNITY_EDITOR - UpdateDebugLines(velocityWorld, m_NormStartOffset, m_NormTargetLocalOffset, newOffset); + UpdateDebugLines(velocityWorld, m_StartLocalOffsetNormalized, m_TargetLocalOffsetNormalized, newOffset); #endif // Check if the new offset's z-value is less than zero in local space to reset the offset - var newOffsetDot = math.dot(math.normalize(newOffset), m_NormStartOffset); + var newOffsetDot = math.dot(math.normalize(newOffset), m_StartLocalOffsetNormalized); if (newOffsetDot < 0.05f) ResetOffset(); else - UpdatePosition(m_LastChildOriginSpacePosition, newOffset, deltaTime); - - attachUpdated?.Invoke(); + UpdatePosition(newOffset, deltaTime); } bool UpdateVelocityScalingBlock() @@ -556,39 +761,43 @@ bool UpdateVelocityScalingBlock() return shouldBlock; } - void UpdatePosition(Vector3 lastOriginSpacePosition, Vector3 targetLocalPosition, float deltaTime) + void UpdatePosition(Vector3 targetLocalPosition, float deltaTime) { if (!m_SmoothOffset || !m_HasXROrigin) { m_AnchorChild.localPosition = targetLocalPosition; - m_LastLocalTargetPosition = targetLocalPosition; + m_LastTargetLocalPosition = targetLocalPosition; return; } - var previousWorldPosition = m_XROrigin.Origin.transform.TransformPoint(lastOriginSpacePosition); + var originTransform = m_XROrigin.Origin.transform; + + var previousWorldPosition = originTransform.TransformPoint(m_LastTargetOriginSpacePosition); var newTargetWorldPosition = m_AnchorParent.TransformPoint(targetLocalPosition); var newWorldPosition = BurstLerpUtility.BezierLerp(previousWorldPosition, newTargetWorldPosition, m_SmoothingSpeed * deltaTime); m_AnchorChild.position = newWorldPosition; - m_LastChildOriginSpacePosition = m_XROrigin.Origin.transform.InverseTransformPoint(newWorldPosition); - - m_LastLocalTargetPosition = targetLocalPosition; + m_LastTargetOriginSpacePosition = originTransform.InverseTransformPoint(newWorldPosition); + m_LastTargetLocalPosition = targetLocalPosition; } #if BURST_PRESENT [BurstCompile] #endif - static void ComputeAmplifiedOffset(in float3 velocityLocal, in float3 normStartLocalOffset, float startOffsetLength, in float3 normTargetLocalOffset, in float3 currentLocalOffset, float minAdditionalVelocityScalar, float maxAdditionalVelocityScalar, float pushVelocityBias, float pullVelocityBias, float zVelocityRampThreshold, bool useMomentum, float momentumDecayScale, ref float momentum, ref float pivot, float deltaTime, out float3 newOffset) + static void ComputeAmplifiedOffset(in float3 velocityLocal, in float3 startLocalOffsetNormalized, float startLocalOffsetLength, + in float3 targetLocalOffsetNormalized, in float3 currentLocalOffset, float minAdditionalVelocityScalar, float maxAdditionalVelocityScalar, + float pushVelocityBias, float pullVelocityBias, float zVelocityRampThreshold, bool calculateMomentum, bool applyMomentum, float momentumDecayScale, + ref float momentum, ref float pivot, float deltaTime, out float3 newOffset) { // Calculate the dot product between normalized velocity and target offset - float dotProduct = math.dot(math.normalize(velocityLocal), normTargetLocalOffset); + float dotProduct = math.dot(math.normalize(velocityLocal), targetLocalOffsetNormalized); // Calculate projected velocity float3 projectedVelocityLocal; if (math.abs(dotProduct) > 0.866f) // cos(30°) ≈ 0.866 { - projectedVelocityLocal = math.project(velocityLocal, normTargetLocalOffset); + projectedVelocityLocal = math.project(velocityLocal, targetLocalOffsetNormalized); } else { @@ -603,7 +812,7 @@ static void ComputeAmplifiedOffset(in float3 velocityLocal, in float3 normStartL float offsetMagnitude = math.length(currentLocalOffset); // Determine if the object is moving towards or away from the user - var velocitySign = math.sign(math.dot(math.normalize(projectedVelocityLocal), normStartLocalOffset)); + var velocitySign = math.sign(math.dot(math.normalize(projectedVelocityLocal), startLocalOffsetNormalized)); bool isMovingAway = velocitySign > 0f; // We determine forward and back motion by using the signed magnitude of projected local velocity. @@ -616,17 +825,17 @@ static void ComputeAmplifiedOffset(in float3 velocityLocal, in float3 normStartL // If below ramp threshold, we do not amplify motion float rampAmount = zVelocityRampThreshold > 0f ? math.clamp(math.abs(zMotionLocalSpace) / zVelocityRampThreshold, 0f, 1f) : 1f; - bool isAboveRampThreshold = !(rampAmount < 1f); // Movement magnitude collated from velocity and momentum along the motion axis, scaled by the delta time for the frame float movement = zMotionLocalSpace * rampAmount * (1f + movementScale) * deltaTime; - // If movement changes direction and the change is above a threshold tolerance, reset momentum - if (useMomentum) + if (calculateMomentum) { + // If movement changes direction and the change is above a threshold tolerance, reset momentum const float momentumTolerance = 0.001f; float absMomentum = math.abs(momentum); float absMovement = math.abs(movement); + bool isAboveRampThreshold = rampAmount >= 1f; // Check for significant direction change bool significantDirectionChange = @@ -660,14 +869,31 @@ static void ComputeAmplifiedOffset(in float3 velocityLocal, in float3 normStartL } // Compute new offset by scaling original offset with motion and momentum - float newOffsetMagnitude = offsetMagnitude + movement + momentum; - newOffset = normStartLocalOffset * newOffsetMagnitude; + float newOffsetMagnitude = offsetMagnitude + movement; + if (applyMomentum) + newOffsetMagnitude += momentum; + + newOffset = startLocalOffsetNormalized * newOffsetMagnitude; // Update pivot - if (newOffsetMagnitude > startOffsetLength) + if (newOffsetMagnitude > startLocalOffsetLength) pivot = newOffsetMagnitude; else - pivot = math.lerp(pivot, (startOffsetLength + newOffsetMagnitude) / 2f, deltaTime * movementScale); + pivot = math.lerp(pivot, (startLocalOffsetLength + newOffsetMagnitude) / 2f, deltaTime * movementScale); + } + + Vector2 FilterManipulationInput(in Vector2 input) + { + // When an axis is not configured for translation or rotation, we allow the entire half circle of input + // to drive the axis rather than limiting to a quarter circle to allow the greatest precision of control. + // The callers only use a single axis of input at a time, so we can just return the input as-is. + if (m_CombineManipulationAxes || m_ManipulationXAxisMode == ManipulationXAxisMode.None || m_ManipulationYAxisMode == ManipulationYAxisMode.None) + return input; + + // Bias towards the y-axis when equal to match the same bias as the Sector interaction (see CardinalUtility). + return Mathf.Abs(input.y) >= Mathf.Abs(input.x) + ? new Vector2(0f, input.y) + : new Vector2(input.x, 0f); } #if UNITY_EDITOR diff --git a/Runtime/Interaction/Interactables/XRBaseInteractable.cs b/Runtime/Interaction/Interactables/XRBaseInteractable.cs index 964ddf9e..d5963c1c 100644 --- a/Runtime/Interaction/Interactables/XRBaseInteractable.cs +++ b/Runtime/Interaction/Interactables/XRBaseInteractable.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Diagnostics; using Unity.Profiling; +using Unity.XR.CoreUtils; using Unity.XR.CoreUtils.Bindings.Variables; using Unity.XR.CoreUtils.Collections; using UnityEngine.Scripting.APIUpdating; @@ -476,7 +477,7 @@ public DeactivateEvent deactivated public List interactorsHovering => (List)m_InteractorsHovering.AsList(); /// - public bool isHovered => m_InteractorsHovering.Count > 0; + public bool isHovered { get; private set; } readonly HashSetList m_InteractorsSelecting = new HashSetList(); @@ -487,7 +488,7 @@ public DeactivateEvent deactivated public IXRSelectInteractor firstInteractorSelecting { get; private set; } /// - public bool isSelected => m_InteractorsSelecting.Count > 0; + public bool isSelected { get; private set; } readonly HashSetList m_InteractionGroupsFocusing = new HashSetList(); @@ -498,7 +499,7 @@ public DeactivateEvent deactivated public IXRInteractionGroup firstInteractionGroupFocusing { get; private set; } /// - public bool isFocused => m_InteractionGroupsFocusing.Count > 0; + public bool isFocused { get; private set; } /// public bool canFocus => m_FocusMode != InteractableFocusMode.None; @@ -612,6 +613,8 @@ public List startingInteractionStrengthFilters /// public IReadOnlyBindableVariable largestInteractionStrength => m_LargestInteractionStrength; + bool m_ClearedLargestInteractionStrength; + readonly Dictionary m_AttachPoseOnSelect = new Dictionary(); readonly Dictionary m_LocalAttachPoseOnSelect = new Dictionary(); @@ -633,6 +636,7 @@ public List startingInteractionStrengthFilters XRInteractionManager m_RegisteredInteractionManager; static readonly ProfilerMarker s_ProcessInteractionStrengthMarker = new ProfilerMarker("XRI.ProcessInteractionStrength.Interactables"); + static readonly ProfilerMarker s_ProcessInteractionStrengthEventMarker = new ProfilerMarker("XRI.ProcessInteractionStrength.InteractablesEvent"); /// /// See . @@ -842,7 +846,7 @@ public virtual bool IsSelectableBy(IXRSelectInteractor interactor) /// In other words, returns whether contains . /// /// - public bool IsHovered(IXRHoverInteractor interactor) => m_InteractorsHovering.Contains(interactor); + public bool IsHovered(IXRHoverInteractor interactor) => isHovered && m_InteractorsHovering.Contains(interactor); /// /// Determines whether this Interactable is currently being selected by the Interactor. @@ -854,7 +858,7 @@ public virtual bool IsSelectableBy(IXRSelectInteractor interactor) /// In other words, returns whether contains . /// /// - public bool IsSelected(IXRSelectInteractor interactor) => m_InteractorsSelecting.Contains(interactor); + public bool IsSelected(IXRSelectInteractor interactor) => isSelected && m_InteractorsSelecting.Contains(interactor); /// /// Determines whether this Interactable is currently being hovered by the Interactor. @@ -983,10 +987,8 @@ protected void CaptureAttachPose(IXRSelectInteractor interactor) var thisAttachTransform = GetAttachTransform(interactor); if (thisAttachTransform != null) { - m_AttachPoseOnSelect[interactor] = - new Pose(thisAttachTransform.position, thisAttachTransform.rotation); - m_LocalAttachPoseOnSelect[interactor] = - new Pose(thisAttachTransform.localPosition, thisAttachTransform.localRotation); + m_AttachPoseOnSelect[interactor] = thisAttachTransform.GetWorldPose(); + m_LocalAttachPoseOnSelect[interactor] = thisAttachTransform.GetLocalPose(); } else { @@ -1116,6 +1118,7 @@ protected virtual void OnHoverEntering(HoverEnterEventArgs args) var added = m_InteractorsHovering.Add(args.interactorObject); Debug.Assert(added, "An Interactable received a Hover Enter event for an Interactor that was already hovering over it.", this); + isHovered = true; if (args.interactorObject is XRBaseInputInteractor variableSelectInteractor) m_VariableSelectInteractors.Add(variableSelectInteractor); @@ -1156,12 +1159,16 @@ protected virtual void OnHoverExiting(HoverExitEventArgs args) var removed = m_InteractorsHovering.Remove(args.interactorObject); Debug.Assert(removed, "An Interactable received a Hover Exit event for an Interactor that was not hovering over it.", this); + if (m_InteractorsHovering.Count == 0) + isHovered = false; - if (m_VariableSelectInteractors.Count > 0 && - args.interactorObject is XRBaseInputInteractor variableSelectInteractor && - !IsSelected(variableSelectInteractor)) + if (!IsSelected(args.interactorObject)) { - m_VariableSelectInteractors.Remove(variableSelectInteractor); + if (m_InteractionStrengths.Count > 0) + m_InteractionStrengths.Remove(args.interactorObject); + + if (args.interactorObject is XRBaseInputInteractor variableSelectInteractor) + m_VariableSelectInteractors.Remove(variableSelectInteractor); } } @@ -1177,7 +1184,7 @@ args.interactorObject is XRBaseInputInteractor variableSelectInteractor && /// protected virtual void OnHoverExited(HoverExitEventArgs args) { - if (m_InteractorsHovering.Count == 0) + if (!isHovered) m_LastHoverExited?.Invoke(args); m_HoverExited?.Invoke(args); @@ -1197,6 +1204,7 @@ protected virtual void OnSelectEntering(SelectEnterEventArgs args) { var added = m_InteractorsSelecting.Add(args.interactorObject); Debug.Assert(added, "An Interactable received a Select Enter event for an Interactor that was already selecting it.", this); + isSelected = true; if (args.interactorObject is XRBaseInputInteractor variableSelectInteractor) m_VariableSelectInteractors.Add(variableSelectInteractor); @@ -1239,12 +1247,16 @@ protected virtual void OnSelectExiting(SelectExitEventArgs args) { var removed = m_InteractorsSelecting.Remove(args.interactorObject); Debug.Assert(removed, "An Interactable received a Select Exit event for an Interactor that was not selecting it.", this); + if (m_InteractorsSelecting.Count == 0) + isSelected = false; - if (m_VariableSelectInteractors.Count > 0 && - args.interactorObject is XRBaseInputInteractor variableSelectInteractor && - !IsHovered(variableSelectInteractor)) + if (!IsHovered(args.interactorObject)) { - m_VariableSelectInteractors.Remove(variableSelectInteractor); + if (m_InteractionStrengths.Count > 0) + m_InteractionStrengths.Remove(args.interactorObject); + + if (args.interactorObject is XRBaseInputInteractor variableSelectInteractor) + m_VariableSelectInteractors.Remove(variableSelectInteractor); } } @@ -1260,13 +1272,13 @@ args.interactorObject is XRBaseInputInteractor variableSelectInteractor && /// protected virtual void OnSelectExited(SelectExitEventArgs args) { - if (m_InteractorsSelecting.Count == 0) + if (!isSelected) m_LastSelectExited?.Invoke(args); m_SelectExited?.Invoke(args); // The dictionaries are pruned so that they don't infinitely grow in size as selections are made. - if (m_InteractorsSelecting.Count == 0) + if (!isSelected) { firstInteractorSelecting = null; m_AttachPoseOnSelect.Clear(); @@ -1288,6 +1300,7 @@ protected virtual void OnFocusEntering(FocusEnterEventArgs args) { var added = m_InteractionGroupsFocusing.Add(args.interactionGroup); Debug.Assert(added, "An Interactable received a Focus Enter event for an Interaction group that was already focusing it.", this); + isFocused = true; if (m_InteractionGroupsFocusing.Count == 1) firstInteractionGroupFocusing = args.interactionGroup; @@ -1325,6 +1338,8 @@ protected virtual void OnFocusExiting(FocusExitEventArgs args) { var removed = m_InteractionGroupsFocusing.Remove(args.interactionGroup); Debug.Assert(removed, "An Interactable received a Focus Exit event for an Interaction group that did not have focus of it.", this); + if (m_InteractionGroupsFocusing.Count == 0) + isFocused = false; } /// @@ -1339,12 +1354,12 @@ protected virtual void OnFocusExiting(FocusExitEventArgs args) /// protected virtual void OnFocusExited(FocusExitEventArgs args) { - if (m_InteractionGroupsFocusing.Count == 0) + if (!isFocused) m_LastFocusExited?.Invoke(args); m_FocusExited?.Invoke(args); - if (m_InteractionGroupsFocusing.Count == 0) + if (!isFocused) firstInteractionGroupFocusing = null; } @@ -1388,61 +1403,93 @@ protected virtual void ProcessInteractionStrength(XRInteractionUpdateOrder.Updat using (s_ProcessInteractionStrengthMarker.Auto()) { - m_InteractionStrengths.Clear(); + if (!isSelected && !isHovered) + { + // Optimize to avoid float equality check in Value setter if the value has already been cleared + // due to being not selected or hovered. + if (m_ClearedLargestInteractionStrength) + return; + + m_LargestInteractionStrength.Value = 0f; + m_ClearedLargestInteractionStrength = true; + + return; + } + + m_ClearedLargestInteractionStrength = false; + + var hasFilters = m_InteractionStrengthFilters.registeredSnapshot.Count > 0; // Select is checked before Hover to allow process to only be called once per interactor hovering and selecting // using the largest initial interaction strength. - for (int i = 0, count = m_InteractorsSelecting.Count; i < count; ++i) + if (isSelected) { - var interactor = m_InteractorsSelecting[i]; - if (interactor is XRBaseInputInteractor) - continue; + for (int i = 0, count = m_InteractorsSelecting.Count; i < count; ++i) + { + var interactor = m_InteractorsSelecting[i]; + if (interactor is XRBaseInputInteractor) + continue; - var interactionStrength = ProcessInteractionStrengthFilters(interactor, k_InteractionStrengthSelect); - m_InteractionStrengths[interactor] = interactionStrength; + var interactionStrength = hasFilters + ? ProcessInteractionStrengthFilters(interactor, k_InteractionStrengthSelect) + : k_InteractionStrengthSelect; - maxInteractionStrength = Mathf.Max(maxInteractionStrength, interactionStrength); + m_InteractionStrengths[interactor] = interactionStrength; + maxInteractionStrength = Mathf.Max(maxInteractionStrength, interactionStrength); + } } - for (int i = 0, count = m_InteractorsHovering.Count; i < count; ++i) + if (isHovered) { - var interactor = m_InteractorsHovering[i]; - if (interactor is XRBaseInputInteractor || IsSelected(interactor)) - continue; + for (int i = 0, count = m_InteractorsHovering.Count; i < count; ++i) + { + var interactor = m_InteractorsHovering[i]; + if (interactor is XRBaseInputInteractor || IsSelected(interactor)) + continue; - var interactionStrength = ProcessInteractionStrengthFilters(interactor, k_InteractionStrengthHover); - m_InteractionStrengths[interactor] = interactionStrength; + var interactionStrength = hasFilters + ? ProcessInteractionStrengthFilters(interactor, k_InteractionStrengthHover) + : k_InteractionStrengthHover; - maxInteractionStrength = Mathf.Max(maxInteractionStrength, interactionStrength); + m_InteractionStrengths[interactor] = interactionStrength; + maxInteractionStrength = Mathf.Max(maxInteractionStrength, interactionStrength); + } } for (int i = 0, count = m_VariableSelectInteractors.Count; i < count; ++i) { var interactor = m_VariableSelectInteractors[i]; - // Use the Select input value as the initial interaction strength. - // For interactors that use motion controller input, this is typically the analog trigger or grip press amount. - // Fall back to the default values for selected and hovered interactors in the case when the interactor - // is misconfigured and is missing the input wrapper or component reference. - float interactionStrength; -#pragma warning disable CS0618 // Type or member is obsolete -- Retained for backwards compatibility - if (!interactor.forceDeprecatedInput) - interactionStrength = interactor.selectInput.ReadValue(); - else if (interactor.xrController != null) - interactionStrength = interactor.xrController.selectInteractionState.value; -#pragma warning restore CS0618 - else - interactionStrength = IsSelected(interactor) ? k_InteractionStrengthSelect : k_InteractionStrengthHover; + var interactionStrength = hasFilters + ? ProcessInteractionStrengthFilters(interactor, ReadInteractionStrength(interactor)) + : ReadInteractionStrength(interactor); - interactionStrength = ProcessInteractionStrengthFilters(interactor, interactionStrength); m_InteractionStrengths[interactor] = interactionStrength; - maxInteractionStrength = Mathf.Max(maxInteractionStrength, interactionStrength); } } - // This is done outside of the ProfilerMarker since it could trigger user callbacks - m_LargestInteractionStrength.Value = maxInteractionStrength; + using (s_ProcessInteractionStrengthEventMarker.Auto()) + { + m_LargestInteractionStrength.Value = maxInteractionStrength; + } + } + + float ReadInteractionStrength(XRBaseInputInteractor interactor) + { + // Use the Select input value as the initial interaction strength. + // For interactors that use motion controller input, this is typically the analog trigger or grip press amount. + // Fall back to the default values for selected and hovered interactors in the case when the interactor + // is misconfigured and is missing the input wrapper or component reference. +#pragma warning disable CS0618 // Type or member is obsolete -- Retained for backwards compatibility + if (!interactor.forceDeprecatedInput) + return interactor.selectInput.ReadValue(); + + if (interactor.xrController != null) + return interactor.xrController.selectInteractionState.value; +#pragma warning restore CS0618 + + return IsSelected(interactor) ? k_InteractionStrengthSelect : k_InteractionStrengthHover; } /// diff --git a/Runtime/Interaction/Interactors/Casters/CurveInteractionCaster.cs b/Runtime/Interaction/Interactors/Casters/CurveInteractionCaster.cs index ccf6585c..0de83a15 100644 --- a/Runtime/Interaction/Interactors/Casters/CurveInteractionCaster.cs +++ b/Runtime/Interaction/Interactors/Casters/CurveInteractionCaster.cs @@ -229,7 +229,7 @@ float coneCastAngleRadius /// /// If enabled, more detailed cone cast gizmos will be displayed in the editor. /// - internal bool liveConeCastDebugVisuals + public bool liveConeCastDebugVisuals { get => m_LiveConeCastDebugVisuals; set => m_LiveConeCastDebugVisuals = value; @@ -698,7 +698,7 @@ public int Compare(RaycastHit a, RaycastHit b) /// /// See . /// - internal virtual void OnDrawGizmosSelected() + protected virtual void OnDrawGizmosSelected() { var transformData = castOrigin != null ? castOrigin : transform; var gizmoStart = transformData.position; diff --git a/Runtime/Interaction/Interactors/Visuals/XRInteractorLineVisual.cs b/Runtime/Interaction/Interactors/Visuals/XRInteractorLineVisual.cs index 86c7b2a3..337409b6 100644 --- a/Runtime/Interaction/Interactors/Visuals/XRInteractorLineVisual.cs +++ b/Runtime/Interaction/Interactors/Visuals/XRInteractorLineVisual.cs @@ -444,7 +444,7 @@ public float lineBendRatio /// /// Interaction layers on which the bending of line visuals towards the interactable attach point are enabled. /// - InteractionLayerMask bendingEnabledInteractionLayers + public InteractionLayerMask bendingEnabledInteractionLayers { get => m_BendingEnabledInteractionLayers; set => m_BendingEnabledInteractionLayers = value; @@ -456,7 +456,7 @@ InteractionLayerMask bendingEnabledInteractionLayers /// /// A boolean value that controls whether to use a different as the starting position and direction of the line. /// Set to to use the line origin specified by . - /// Set to to use the the line origin specified by the interactor. + /// Set to to use the line origin specified by the interactor. /// /// /// diff --git a/Runtime/Interaction/Interactors/XRBaseInteractor.cs b/Runtime/Interaction/Interactors/XRBaseInteractor.cs index 305d0501..ab27e990 100644 --- a/Runtime/Interaction/Interactors/XRBaseInteractor.cs +++ b/Runtime/Interaction/Interactors/XRBaseInteractor.cs @@ -264,7 +264,7 @@ public bool allowSelect public List interactablesHovered => (List)m_InteractablesHovered.AsList(); /// - public bool hasHover => m_InteractablesHovered.Count > 0; + public bool hasHover { get; private set; } readonly HashSetList m_InteractablesSelected = new HashSetList(); @@ -275,12 +275,7 @@ public bool allowSelect public IXRSelectInteractable firstInteractableSelected { get; private set; } /// - public bool hasSelection => m_InteractablesSelected.Count > 0; - - /// - /// Determines if interactor is interacting with UGUI canvas. - /// - internal bool isInteractingWithUI { get; set; } + public bool hasSelection { get; private set; } [SerializeField] [RequireInterface(typeof(IXRHoverFilter))] @@ -355,6 +350,8 @@ public List startingSelectFilters /// public IReadOnlyBindableVariable largestInteractionStrength => m_LargestInteractionStrength; + bool m_ClearedLargestInteractionStrength; + readonly Dictionary m_AttachPoseOnSelect = new Dictionary(); readonly Dictionary m_LocalAttachPoseOnSelect = new Dictionary(); @@ -368,6 +365,7 @@ public List startingSelectFilters XRInteractionManager m_RegisteredInteractionManager; static readonly ProfilerMarker s_ProcessInteractionStrengthMarker = new ProfilerMarker("XRI.ProcessInteractionStrength.Interactors"); + static readonly ProfilerMarker s_ProcessInteractionStrengthEventMarker = new ProfilerMarker("XRI.ProcessInteractionStrength.InteractorsEvent"); Transform m_XROriginTransform; bool m_HasXROrigin; @@ -377,7 +375,7 @@ public List startingSelectFilters /// Attempts to locate and return the XR Origin reference frame for the interactor. /// /// - internal bool TryGetXROrigin(out Transform origin) + private protected bool TryGetXROrigin(out Transform origin) { if (m_HasXROrigin) { @@ -555,10 +553,10 @@ void UnregisterWithInteractionManager() public virtual bool CanSelect(IXRSelectInteractable interactable) => true; /// - public bool IsHovering(IXRHoverInteractable interactable) => m_InteractablesHovered.Contains(interactable); + public bool IsHovering(IXRHoverInteractable interactable) => hasHover && m_InteractablesHovered.Contains(interactable); /// - public bool IsSelecting(IXRSelectInteractable interactable) => m_InteractablesSelected.Contains(interactable); + public bool IsSelecting(IXRSelectInteractable interactable) => hasSelection && m_InteractablesSelected.Contains(interactable); /// /// Determines whether this Interactor is currently hovering the Interactable. @@ -617,10 +615,8 @@ protected void CaptureAttachPose(IXRSelectInteractable interactable) var thisAttachTransform = GetAttachTransform(interactable); if (thisAttachTransform != null) { - m_AttachPoseOnSelect[interactable] = - new Pose(thisAttachTransform.position, thisAttachTransform.rotation); - m_LocalAttachPoseOnSelect[interactable] = - new Pose(thisAttachTransform.localPosition, thisAttachTransform.localRotation); + m_AttachPoseOnSelect[interactable] = thisAttachTransform.GetWorldPose(); + m_LocalAttachPoseOnSelect[interactable] = thisAttachTransform.GetLocalPose(); } else { @@ -757,6 +753,7 @@ protected virtual void OnHoverEntering(HoverEnterEventArgs args) { var added = m_InteractablesHovered.Add(args.interactableObject); Debug.Assert(added, "An Interactor received a Hover Enter event for an Interactable that it was already hovering over.", this); + hasHover = true; if (args.interactableObject is IXRInteractionStrengthInteractable interactionStrengthInteractable) m_InteractionStrengthInteractables.Add(interactionStrengthInteractable); @@ -791,12 +788,16 @@ protected virtual void OnHoverExiting(HoverExitEventArgs args) { var removed = m_InteractablesHovered.Remove(args.interactableObject); Debug.Assert(removed, "An Interactor received a Hover Exit event for an Interactable that it was not hovering over.", this); + if (m_InteractablesHovered.Count == 0) + hasHover = false; - if (m_InteractionStrengthInteractables.Count > 0 && - args.interactableObject is IXRInteractionStrengthInteractable interactionStrengthInteractable && - !IsSelecting(interactionStrengthInteractable)) + if (!IsSelecting(args.interactableObject)) { - m_InteractionStrengthInteractables.Remove(interactionStrengthInteractable); + if (m_InteractionStrengths.Count > 0) + m_InteractionStrengths.Remove(args.interactableObject); + + if (args.interactableObject is IXRInteractionStrengthInteractable interactionStrengthInteractable) + m_InteractionStrengthInteractables.Remove(interactionStrengthInteractable); } } @@ -829,6 +830,7 @@ protected virtual void OnSelectEntering(SelectEnterEventArgs args) { var added = m_InteractablesSelected.Add(args.interactableObject); Debug.Assert(added, "An Interactor received a Select Enter event for an Interactable that it was already selecting.", this); + hasSelection = true; if (args.interactableObject is IXRInteractionStrengthInteractable interactionStrengthInteractable) m_InteractionStrengthInteractables.Add(interactionStrengthInteractable); @@ -868,12 +870,16 @@ protected virtual void OnSelectExiting(SelectExitEventArgs args) { var removed = m_InteractablesSelected.Remove(args.interactableObject); Debug.Assert(removed, "An Interactor received a Select Exit event for an Interactable that it was not selecting.", this); + if (m_InteractablesSelected.Count == 0) + hasSelection = false; - if (m_InteractionStrengthInteractables.Count > 0 && - args.interactableObject is IXRInteractionStrengthInteractable interactionStrengthInteractable && - !IsHovering(interactionStrengthInteractable)) + if (!IsHovering(args.interactableObject)) { - m_InteractionStrengthInteractables.Remove(interactionStrengthInteractable); + if (m_InteractionStrengths.Count > 0) + m_InteractionStrengths.Remove(args.interactableObject); + + if (args.interactableObject is IXRInteractionStrengthInteractable interactionStrengthInteractable) + m_InteractionStrengthInteractables.Remove(interactionStrengthInteractable); } } @@ -892,7 +898,7 @@ protected virtual void OnSelectExited(SelectExitEventArgs args) m_SelectExited?.Invoke(args); // The dictionaries are pruned so that they don't infinitely grow in size as selections are made. - if (m_InteractablesSelected.Count == 0) + if (!hasSelection) { firstInteractableSelected = null; m_AttachPoseOnSelect.Clear(); @@ -912,28 +918,47 @@ protected virtual void ProcessInteractionStrength(XRInteractionUpdateOrder.Updat using (s_ProcessInteractionStrengthMarker.Auto()) { - m_InteractionStrengths.Clear(); + if (!hasSelection && !hasHover) + { + // Optimize to avoid float equality check in Value setter if the value has already been cleared + // due to being not selected or hovered. + if (m_ClearedLargestInteractionStrength) + return; + + m_LargestInteractionStrength.Value = 0f; + m_ClearedLargestInteractionStrength = true; + + return; + } + + m_ClearedLargestInteractionStrength = false; // Select is checked before Hover to allow process to only be called once per interactor hovering and selecting // using the largest initial interaction strength. - for (int i = 0, count = m_InteractablesSelected.Count; i < count; ++i) + if (hasSelection) { - var interactable = m_InteractablesSelected[i]; - if (interactable is IXRInteractionStrengthInteractable) - continue; + for (int i = 0, count = m_InteractablesSelected.Count; i < count; ++i) + { + var interactable = m_InteractablesSelected[i]; + if (interactable is IXRInteractionStrengthInteractable) + continue; - m_InteractionStrengths[interactable] = k_InteractionStrengthSelect; + m_InteractionStrengths[interactable] = k_InteractionStrengthSelect; - maxInteractionStrength = k_InteractionStrengthSelect; + maxInteractionStrength = k_InteractionStrengthSelect; + } } - for (int i = 0, count = m_InteractablesHovered.Count; i < count; ++i) + if (hasHover) { - var interactable = m_InteractablesHovered[i]; - if (interactable is IXRInteractionStrengthInteractable || IsSelecting(interactable)) - continue; + for (int i = 0, count = m_InteractablesHovered.Count; i < count; ++i) + { + var interactable = m_InteractablesHovered[i]; + if (interactable is IXRInteractionStrengthInteractable || IsSelecting(interactable)) + continue; - m_InteractionStrengths[interactable] = k_InteractionStrengthHover; + m_InteractionStrengths[interactable] = k_InteractionStrengthHover; + } } for (int i = 0, count = m_InteractionStrengthInteractables.Count; i < count; ++i) @@ -946,8 +971,10 @@ protected virtual void ProcessInteractionStrength(XRInteractionUpdateOrder.Updat } } - // This is done outside of the ProfilerMarker since it could trigger user callbacks - m_LargestInteractionStrength.Value = maxInteractionStrength; + using (s_ProcessInteractionStrengthEventMarker.Auto()) + { + m_LargestInteractionStrength.Value = maxInteractionStrength; + } } /// diff --git a/Runtime/Interaction/Interactors/XRInteractionGroup.cs b/Runtime/Interaction/Interactors/XRInteractionGroup.cs index 4f8919c5..7ff76794 100644 --- a/Runtime/Interaction/Interactors/XRInteractionGroup.cs +++ b/Runtime/Interaction/Interactors/XRInteractionGroup.cs @@ -3,6 +3,7 @@ using System.Diagnostics; using UnityEngine.Scripting.APIUpdating; using UnityEngine.XR.Interaction.Toolkit.Interactables; +using UnityEngine.XR.Interaction.Toolkit.UI; using UnityEngine.XR.Interaction.Toolkit.Utilities; using UnityEngine.XR.Interaction.Toolkit.Utilities.Internal; @@ -1124,9 +1125,8 @@ void UpdateInteractorInteractions(IXRInteractor interactor, bool preventInteract using (XRInteractionManager.s_EvaluateValidSelectionsMarker.Auto()) m_RegisteredInteractionManager.InteractorSelectValidTargets(selectInteractor, m_ValidTargets); - // Alternatively check if the base interactor is interacting with UGUI - // TODO move this api call to IUIInteractor for XRI 3.0 - if (selectInteractor.hasSelection || (interactor is XRBaseInteractor baseInteractor && baseInteractor.isInteractingWithUI)) + // Alternatively check if the interactor is poke interacting with UGUI + if (selectInteractor.hasSelection || (interactor is IUIInteractor uiInteractor && TrackedDeviceGraphicRaycaster.IsPokeInteractingWithUI(uiInteractor))) performedInteraction = true; } diff --git a/Runtime/Interaction/Interactors/XRPokeInteractor.cs b/Runtime/Interaction/Interactors/XRPokeInteractor.cs index fc371a03..37098214 100644 --- a/Runtime/Interaction/Interactors/XRPokeInteractor.cs +++ b/Runtime/Interaction/Interactors/XRPokeInteractor.cs @@ -217,7 +217,7 @@ public UIHoverExitEvent uiHoverExited PhysicsScene m_LocalPhysicsScene; // Used to avoid GC Alloc each frame in UpdateUIModel - Func m_PositionGetter; + Func m_PositionProvider; /// protected override void Awake() @@ -225,7 +225,7 @@ protected override void Awake() base.Awake(); m_LocalPhysicsScene = gameObject.scene.GetPhysicsScene(); m_RegisteredUIInteractorCache = new RegisteredUIInteractorCache(this); - m_PositionGetter = GetPokePosition; + m_PositionProvider = GetPokePosition; } /// @@ -263,7 +263,6 @@ public override void PreprocessInteractor(XRInteractionUpdateOrder.UpdatePhase u else attachPointVelocityTracker.UpdateAttachPointVelocityData(GetAttachTransform(null)); - isInteractingWithUI = TrackedDeviceGraphicRaycaster.IsPokeInteractingWithUI(this); RegisterValidTargets(out m_CurrentPokeTarget, out m_CurrentPokeFilter); ProcessPokeStateData(); } @@ -315,6 +314,7 @@ bool RegisterValidTargets(out IXRSelectInteractable currentTarget, out IXRPokeFi if (m_ValidTargets.Count == 0) hasOverlap = false; } + currentTarget = hasOverlap ? (IXRSelectInteractable)m_ValidTargets[0] : null; pokeFilter = hasOverlap ? s_ValidTargetsScratchMap[currentTarget] : null; return hasOverlap; @@ -322,16 +322,12 @@ bool RegisterValidTargets(out IXRSelectInteractable currentTarget, out IXRPokeFi void ProcessPokeStateData() { - PokeStateData newPokeStateData = default; - if (isInteractingWithUI) - { - TrackedDeviceGraphicRaycaster.TryGetPokeStateDataForInteractor(this, out newPokeStateData); - } - else if (m_CurrentPokeFilter != null && m_CurrentPokeFilter is IPokeStateDataProvider pokeStateDataProvider) - { - newPokeStateData = pokeStateDataProvider.pokeStateData.Value; - } - m_PokeStateData.Value = newPokeStateData; + if (TrackedDeviceGraphicRaycaster.TryGetPokeStateDataForInteractor(this, out var uiData)) + m_PokeStateData.Value = uiData; + else if (m_CurrentPokeFilter is IPokeStateDataProvider pokeStateDataProvider) + m_PokeStateData.Value = pokeStateDataProvider.pokeStateData.Value; + else + m_PokeStateData.Value = default; } /// @@ -495,7 +491,7 @@ public virtual void UpdateUIModel(ref TrackedDeviceModel model) model.position = pokePose.position; model.orientation = pokePose.rotation; - model.positionGetter = m_PositionGetter; + model.positionProvider = m_PositionProvider; model.raycastLayerMask = m_PhysicsLayerMask; model.pokeDepth = m_PokeDepth; model.interactionType = UIInteractionType.Poke; diff --git a/Runtime/Interaction/Interactors/XRRayInteractor.cs b/Runtime/Interaction/Interactors/XRRayInteractor.cs index 1191a572..cfa7b685 100644 --- a/Runtime/Interaction/Interactors/XRRayInteractor.cs +++ b/Runtime/Interaction/Interactors/XRRayInteractor.cs @@ -427,7 +427,7 @@ float coneCastAngleRadius /// /// If enabled, more detailed cone cast gizmos will be displayed in the editor. /// - internal bool liveConeCastDebugVisuals + public bool liveConeCastDebugVisuals { get => m_LiveConeCastDebugVisuals; set => m_LiveConeCastDebugVisuals = value; @@ -578,7 +578,7 @@ public bool enableUIInteraction /// Enable this to make the XR Ray Interactor ignore interactions when occluded by a screen space canvas. /// /// - bool blockInteractionsWithScreenSpaceUI + public bool blockInteractionsWithScreenSpaceUI { get => m_BlockInteractionsWithScreenSpaceUI; set => m_BlockInteractionsWithScreenSpaceUI = value; diff --git a/Runtime/Interaction/XRInteractionUpdateOrder.cs b/Runtime/Interaction/XRInteractionUpdateOrder.cs index 36b5c623..cd63a527 100644 --- a/Runtime/Interaction/XRInteractionUpdateOrder.cs +++ b/Runtime/Interaction/XRInteractionUpdateOrder.cs @@ -7,6 +7,7 @@ using UnityEngine.XR.Interaction.Toolkit.Interactors; using UnityEngine.XR.Interaction.Toolkit.Interactors.Visuals; using UnityEngine.XR.Interaction.Toolkit.Locomotion; +using UnityEngine.XR.Interaction.Toolkit.Locomotion.Gravity; using UnityEngine.XR.Interaction.Toolkit.Locomotion.Movement; using UnityEngine.XR.Interaction.Toolkit.UI; @@ -41,6 +42,21 @@ public static class XRInteractionUpdateOrder /// public const int k_ControllerRecorder = -30000; + /// + /// Order when instances of type are updated. + /// + public const int k_SimulatedDeviceLifecycleManager = -29995; // Before XRDeviceSimulator + + /// + /// Order when instances of type are updated. + /// + public const int k_SimulatedHandExpressionManager = -29994; // Before XRDeviceSimulator + + /// + /// Order when instances of type are updated. + /// + public const int k_InteractionSimulator = -29991; // Before XRBaseController + /// /// Order when instances of type are updated. /// @@ -71,6 +87,11 @@ public static class XRInteractionUpdateOrder /// public const int k_TwoHandedGrabMoveProviders = -209; // After GrabMoveProvider + /// + /// Order when instances of type are updated. + /// + public const int k_GravityProvider = -207; // Between LocomotionProviders and XRBodyTransformer + /// /// Order when instances of type are updated. /// diff --git a/Runtime/Locomotion/Climbing/ClimbProvider.cs b/Runtime/Locomotion/Climbing/ClimbProvider.cs index e3972638..f53d0567 100644 --- a/Runtime/Locomotion/Climbing/ClimbProvider.cs +++ b/Runtime/Locomotion/Climbing/ClimbProvider.cs @@ -3,6 +3,8 @@ using UnityEngine.Assertions; using UnityEngine.Scripting.APIUpdating; using UnityEngine.XR.Interaction.Toolkit.Interactors; +using UnityEngine.XR.Interaction.Toolkit.Locomotion.Gravity; +using UnityEngine.XR.Interaction.Toolkit.Utilities; namespace UnityEngine.XR.Interaction.Toolkit.Locomotion.Climbing { @@ -15,15 +17,33 @@ namespace UnityEngine.XR.Interaction.Toolkit.Locomotion.Climbing [AddComponentMenu("XR/Locomotion/Climb Provider", 11)] [HelpURL(XRHelpURLConstants.k_ClimbProvider)] [MovedFrom("UnityEngine.XR.Interaction.Toolkit")] - public class ClimbProvider : LocomotionProvider + public class ClimbProvider : LocomotionProvider, IGravityController { - // These are parallel lists, where each interactor and its grabbed interactable share the same index in each list. - // The last item in each list represents the most recent selection, which is the only one that actually drives movement. - readonly List m_GrabbingInteractors = new List(); - readonly List m_GrabbedClimbables = new List(); + [SerializeField] + [Tooltip("List of providers to disable while climb locomotion is active. If empty, no providers will be disabled by this component while climbing.")] + List m_ProvidersToDisable = new List(); - Vector3 m_InteractorAnchorWorldPosition; - Vector3 m_InteractorAnchorClimbSpacePosition; + /// + /// List of providers to disable while climb locomotion is active. If empty, no providers will be disabled by this component while climbing. + /// + public List providersToDisable + { + get => m_ProvidersToDisable; + set => m_ProvidersToDisable = value; + } + + [SerializeField] + [Tooltip("Whether to allow falling when climb locomotion ends. Disable to pause gravity when releasing, keeping the user from falling.")] + bool m_EnableGravityOnClimbEnd = true; + + /// + /// Whether to allow falling when climb locomotion ends. Disable to pause gravity when releasing, keeping the user from falling. + /// + public bool enableGravityOnClimbEnd + { + get => m_EnableGravityOnClimbEnd; + set => m_EnableGravityOnClimbEnd = value; + } [SerializeField] [Tooltip("Climb locomotion settings. Can be overridden by the Climb Interactable used for locomotion.")] @@ -69,7 +89,13 @@ public IXRSelectInteractor climbAnchorInteractor /// /// The transformation that is used by this component to apply climb movement. /// - public XROriginMovement transformation { get; set; } = new XROriginMovement { forceUnconstrained = true }; + public XROriginMovement transformation { get; set; } = new XROriginMovement(); + + /// + public bool canProcess => isActiveAndEnabled; + + /// + public bool gravityPaused { get; protected set; } /// /// Calls the methods in its invocation list when the provider updates @@ -78,12 +104,62 @@ public IXRSelectInteractor climbAnchorInteractor /// public event Action climbAnchorUpdated; + /// + /// The gravity provider that this component uses to apply gravity when climb locomotion is not active. + /// + GravityProvider m_GravityProvider; + + // These are parallel lists, where each interactor and its grabbed interactable share the same index in each list. + // The last item in each list represents the most recent selection, which is the only one that actually drives movement. + readonly List m_GrabbingInteractors = new List(); + readonly List m_GrabbedClimbables = new List(); + + Vector3 m_InteractorAnchorWorldPosition; + Vector3 m_InteractorAnchorClimbSpacePosition; + + List m_EnabledProvidersToDisable = new List(); + /// protected override void Awake() { base.Awake(); if (m_ClimbSettings == null || m_ClimbSettings.Value == null) m_ClimbSettings = new ClimbSettingsDatumProperty(new ClimbSettings()); + + ComponentLocatorUtility.TryFindComponent(out m_GravityProvider); + } + + /// + /// See . + /// + protected virtual void Update() + { + if (!isLocomotionActive) + return; + + // Use the most recent interaction to drive movement + if (m_GrabbingInteractors.Count > 0) + { + if (locomotionState == LocomotionState.Preparing) + TryStartLocomotionImmediately(); + + Assert.AreEqual(m_GrabbingInteractors.Count, m_GrabbedClimbables.Count); + + var lastIndex = m_GrabbingInteractors.Count - 1; + var currentInteractor = m_GrabbingInteractors[lastIndex]; + var currentClimbInteractable = m_GrabbedClimbables[lastIndex]; + if (currentInteractor == null || currentClimbInteractable == null) + { + FinishLocomotion(); + return; + } + + StepClimbMovement(currentClimbInteractable, currentInteractor); + } + else + { + FinishLocomotion(); + } } /// @@ -106,8 +182,21 @@ public void StartClimbGrab(ClimbInteractable climbInteractable, IXRSelectInterac m_GrabbingInteractors.Add(interactor); m_GrabbedClimbables.Add(climbInteractable); UpdateClimbAnchor(climbInteractable, interactor); - TryPrepareLocomotion(); + + TryLockGravity(GravityOverride.ForcedOff); + + foreach (var provider in m_ProvidersToDisable) + { + if (provider == null) + continue; + + if (provider.enabled) + { + provider.enabled = false; + m_EnabledProvidersToDisable.Add(provider); + } + } } /// @@ -147,39 +236,6 @@ void UpdateClimbAnchor(ClimbInteractable climbInteractable, IXRInteractor intera climbAnchorUpdated?.Invoke(this); } - /// - /// See . - /// - protected virtual void Update() - { - if (!isLocomotionActive) - return; - - // Use the most recent interaction to drive movement - if (m_GrabbingInteractors.Count > 0) - { - if (locomotionState == LocomotionState.Preparing) - TryStartLocomotionImmediately(); - - Assert.AreEqual(m_GrabbingInteractors.Count, m_GrabbedClimbables.Count); - - var lastIndex = m_GrabbingInteractors.Count - 1; - var currentInteractor = m_GrabbingInteractors[lastIndex]; - var currentClimbInteractable = m_GrabbedClimbables[lastIndex]; - if (currentInteractor == null || currentClimbInteractable == null) - { - FinishLocomotion(); - return; - } - - StepClimbMovement(currentClimbInteractable, currentInteractor); - } - else - { - FinishLocomotion(); - } - } - void StepClimbMovement(ClimbInteractable currentClimbInteractable, IXRSelectInteractor currentInteractor) { // Move rig such that climb interactor position stays constant @@ -222,6 +278,19 @@ void FinishLocomotion() TryEndLocomotion(); m_GrabbingInteractors.Clear(); m_GrabbedClimbables.Clear(); + + RemoveGravityLock(); + + gravityPaused = !m_EnableGravityOnClimbEnd; + + foreach (var provider in m_EnabledProvidersToDisable) + { + if (provider == null) + continue; + + provider.enabled = true; + } + m_EnabledProvidersToDisable.Clear(); } ClimbSettings GetActiveClimbSettings(ClimbInteractable climbInteractable) @@ -231,5 +300,49 @@ ClimbSettings GetActiveClimbSettings(ClimbInteractable climbInteractable) return m_ClimbSettings; } + + /// + public bool TryLockGravity(GravityOverride gravityOverride) + { + if (m_GravityProvider != null) + return m_GravityProvider.TryLockGravity(this, gravityOverride); + + return false; + } + + /// + public void RemoveGravityLock() + { + if (m_GravityProvider != null) + m_GravityProvider.UnlockGravity(this); + } + + /// + void IGravityController.OnGroundedChanged(bool isGrounded) => OnGroundedChanged(isGrounded); + + /// + void IGravityController.OnGravityLockChanged(GravityOverride gravityOverride) => OnGravityLockChanged(gravityOverride); + + /// + /// Called from when the grounded state changes. + /// + /// Whether the player is on the ground. + /// This is used to prevent players teleporting to the ground while climbing resulting in gravity failing to unpause. + /// + protected virtual void OnGroundedChanged(bool isGrounded) + { + gravityPaused = false; + } + + /// + /// Called from when gravity lock is changed. + /// + /// The to apply. + /// + protected virtual void OnGravityLockChanged(GravityOverride gravityOverride) + { + if (gravityOverride == GravityOverride.ForcedOn) + gravityPaused = false; + } } } diff --git a/Runtime/Locomotion/Gravity.meta b/Runtime/Locomotion/Gravity.meta new file mode 100644 index 00000000..89df58e5 --- /dev/null +++ b/Runtime/Locomotion/Gravity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f72bb97d0a46283459aedd3969c4c4da +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Locomotion/Gravity/GravityOverride.cs b/Runtime/Locomotion/Gravity/GravityOverride.cs new file mode 100644 index 00000000..49f4c93f --- /dev/null +++ b/Runtime/Locomotion/Gravity/GravityOverride.cs @@ -0,0 +1,19 @@ +namespace UnityEngine.XR.Interaction.Toolkit.Locomotion.Gravity +{ + /// + /// Locks the gravity for the given provider. + /// + /// + public enum GravityOverride + { + /// + /// Overrides the gravity provider to not use gravity. + /// + ForcedOff, + + /// + /// Overrides the gravity provider to use gravity. + /// + ForcedOn, + } +} diff --git a/Runtime/Locomotion/Gravity/GravityOverride.cs.meta b/Runtime/Locomotion/Gravity/GravityOverride.cs.meta new file mode 100644 index 00000000..0107862c --- /dev/null +++ b/Runtime/Locomotion/Gravity/GravityOverride.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5953f53d9ab167f4587e966d18589ba8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Locomotion/Gravity/GravityProvider.cs b/Runtime/Locomotion/Gravity/GravityProvider.cs new file mode 100644 index 00000000..d22245e4 --- /dev/null +++ b/Runtime/Locomotion/Gravity/GravityProvider.cs @@ -0,0 +1,500 @@ +using System.Collections.Generic; +using UnityEngine.Events; + +namespace UnityEngine.XR.Interaction.Toolkit.Locomotion.Gravity +{ + /// + /// Locomotion provider that provides gravity to the player. + /// This provider will also check if the player is grounded using a sphere cast from the player's head. + /// Gravity will be applied to the player anytime is true and is false. + /// See for external control over gravity. + /// + [AddComponentMenu("XR/Locomotion/Gravity Provider", 11)] + [HelpURL(XRHelpURLConstants.k_GravityProvider)] + [DefaultExecutionOrder(XRInteractionUpdateOrder.k_GravityProvider)] + public class GravityProvider : LocomotionProvider + { + [SerializeField] + [Tooltip("Apply gravity to the XR Origin.")] + bool m_UseGravity = true; + + /// + /// Apply gravity to the XR Origin. + /// + public bool useGravity + { + get => m_UseGravity; + set => m_UseGravity = value; + } + + [SerializeField] + [Tooltip("Apply gravity based on the current Up vector of the XR Origin.")] + bool m_UseLocalSpaceGravity = true; + + /// + /// Apply gravity based on the current Up vector of the XR Origin. + /// + public bool useLocalSpaceGravity + { + get => m_UseLocalSpaceGravity; + set => m_UseLocalSpaceGravity = value; + } + + [SerializeField] + [Tooltip("Determines the maximum fall speed based on units per second.")] + float m_TerminalVelocity = 90f; + + /// + /// Determines the maximum fall speed based on units per second. + /// + public float terminalVelocity + { + get => m_TerminalVelocity; + set => m_TerminalVelocity = value; + } + + [SerializeField] + [Tooltip("Determines the speed at which a player reaches max gravity velocity.")] + float m_GravityAccelerationModifier = 1f; + + /// + /// Determines the speed at which a player reaches max gravity velocity. + /// + public float gravityAccelerationModifier + { + get => m_GravityAccelerationModifier; + set => m_GravityAccelerationModifier = value; + } + + [SerializeField] + [Tooltip("Sets the center of the character controller to match the local x and z positions of the player camera.")] + bool m_UpdateCharacterControllerCenterEachFrame = true; + + /// + /// Sets the center of the character controller to match the local x and z positions of the player camera. + /// + public bool updateCharacterControllerCenterEachFrame + { + get => m_UpdateCharacterControllerCenterEachFrame; + set => m_UpdateCharacterControllerCenterEachFrame = value; + } + + [SerializeField] + [Tooltip("Buffer for the radius of the sphere cast used to check if the player is grounded.")] + float m_SphereCastRadius = 0.09f; + + /// + /// Buffer for the radius of the sphere cast used to check if the player is grounded. + /// + public float sphereCastRadius + { + get => m_SphereCastRadius; + set => m_SphereCastRadius = value; + } + + [SerializeField] + [Tooltip("Buffer for the distance of the sphere cast used to check if the player is grounded.")] + float m_SphereCastDistanceBuffer = -0.05f; + + /// + /// Buffer for the distance of the sphere cast used to check if the player is grounded. + /// + public float sphereCastDistanceBuffer + { + get => m_SphereCastDistanceBuffer; + set => m_SphereCastDistanceBuffer = value; + } + + [SerializeField] + [Tooltip("The layer mask used for the sphere cast to check if the player is grounded.")] + LayerMask m_SphereCastLayerMask = Physics.DefaultRaycastLayers; + + /// + /// The layer mask used for the sphere cast to check if the player is grounded. + /// + public LayerMask sphereCastLayerMask + { + get => m_SphereCastLayerMask; + set => m_SphereCastLayerMask = value; + } + + [SerializeField] + [Tooltip("Whether trigger colliders are considered when using a sphere cast to determine if grounded.")] + QueryTriggerInteraction m_SphereCastTriggerInteraction = QueryTriggerInteraction.Ignore; + + /// + /// Whether trigger colliders are considered when using a sphere cast to determine if grounded. + /// + public QueryTriggerInteraction sphereCastTriggerInteraction + { + get => m_SphereCastTriggerInteraction; + set => m_SphereCastTriggerInteraction = value; + } + + [Tooltip("Event that is called when gravity lock is changed.")] + [SerializeField] + UnityEvent m_OnGravityLockChanged = new UnityEvent(); + + /// + /// Event that is called when gravity lock is changed. + /// + public UnityEvent onGravityLockChanged + { + get => m_OnGravityLockChanged; + set => m_OnGravityLockChanged = value; + } + + [Tooltip("Callback for anytime the grounded state changes.")] + [SerializeField] + UnityEvent m_OnGroundedChanged = new UnityEvent(); + + /// + /// Callback for anytime the grounded state changes. + /// + /// + public UnityEvent onGroundedChanged => m_OnGroundedChanged; + + bool m_IsGrounded; + + /// + /// If the player is on the ground. + /// + /// + public bool isGrounded => m_IsGrounded; + + /// + /// The transformation that is used by this component to apply translation movement. + /// + public XROriginMovement transformation { get; set; } = new XROriginMovement(); + + readonly List m_GravityControllers = new List(); + + /// + /// (Read Only) The gravity controllers that can pause gravity. + /// + /// + /// Automatically populated during with all components under the + /// that implement the interface. + /// + public List gravityControllers => m_GravityControllers; + + /// + /// The head of the local player. + /// + Transform m_HeadTransform; + + /// + /// The allocation for SphereCastNonAlloc. + /// + readonly RaycastHit[] m_GroundedAllocHits = new RaycastHit[1]; + + // Current calculated velocity of the player falling. + Vector3 m_CurrentFallVelocity; + + PhysicsScene m_LocalPhysicsScene; + + CharacterController m_CharacterController; + + bool m_AttemptedGetCharacterController; + + /// + /// Providers that have gravity forced on. + /// + readonly List m_GravityForcedOnProviders = new List(); + + /// + /// Providers that have gravity forced off. + /// + readonly List m_GravityForcedOffProviders = new List(); + + /// + protected override void Awake() + { + base.Awake(); + + m_LocalPhysicsScene = gameObject.scene.GetPhysicsScene(); + if (mediator != null) + mediator.GetComponentsInChildren(true, m_GravityControllers); + } + + /// + /// + /// + protected virtual void Start() + { + // Need to wait until Start to allow the other components to initialize references during Awake/OnEnable. + FindHeadTransform(); + } + + /// + /// + /// + protected virtual void Update() + { + CheckGrounded(); + + if (m_IsGrounded && locomotionState == LocomotionState.Moving) + { + TryEndLocomotion(); + ResetFallForce(); + } + + if (TryProcessGravity(Time.deltaTime)) + { + TryStartLocomotionImmediately(); + if (locomotionState == LocomotionState.Moving) + { + transformation.motion = m_CurrentFallVelocity * Time.deltaTime; + TryQueueTransformation(transformation); + } + } + + if (m_HeadTransform != null && m_CharacterController != null && m_UpdateCharacterControllerCenterEachFrame) + { + m_CharacterController.center = new Vector3(m_HeadTransform.localPosition.x, m_CharacterController.center.y, m_HeadTransform.localPosition.z); + } + } + + /// + /// Updates current fall velocity if gravity is not currently blocked. + /// + /// By default, this uses as it's called from . + /// Returns if is . + protected virtual bool TryProcessGravity(float time) + { + if (IsGravityBlocked()) + { + ResetFallForce(); + return false; + } + + if (!Mathf.Approximately(m_CurrentFallVelocity.sqrMagnitude, m_TerminalVelocity * m_TerminalVelocity)) + m_CurrentFallVelocity = Vector3.ClampMagnitude(m_CurrentFallVelocity + (m_GravityAccelerationModifier * time * GetCurrentGravity()), m_TerminalVelocity); + + return true; + } + + /// + /// Gets the current up direction based on . This value is normalized. + /// + /// Returns -Physics.gravity.normalized or the up of the XR Origin. + public Vector3 GetCurrentUp() + { + return m_UseLocalSpaceGravity ? mediator.xrOrigin.Origin.transform.up : -Physics.gravity.normalized; + } + + Vector3 GetCurrentGravity() + { + return m_UseLocalSpaceGravity ? -mediator.xrOrigin.Origin.transform.up * Physics.gravity.magnitude : Physics.gravity; + } + + /// + /// Checks if gravity is blocked by any of the following conditions:
+ /// 1. If gravity is not being used.
+ /// 2. If the player is grounded.
+ /// 3. If any provider is forcing gravity off.
+ /// 4. If any provider is pausing gravity while no provider is forcing gravity on. + ///
+ /// Returns if gravity is blocked for any reason. + public bool IsGravityBlocked() + { + return !m_UseGravity || m_IsGrounded || !CanProcessGravity(); + } + + /// + /// Resets the fall force to zero. + /// + public void ResetFallForce() + { + m_CurrentFallVelocity = Vector3.zero; + } + + /// + /// Checks if gravity can be processed based on the following priorities:
+ /// 1. If any provider is forcing gravity off. Do not process gravity.
+ /// 2. Else if any provider is forcing gravity on. Do process gravity.
+ /// 3. Last if any provider is pausing gravity. Do not process gravity. + ///
+ /// Returns if gravity can be processed based on the priority. + bool CanProcessGravity() + { + // If any provider is forcing gravity off, gravity is disabled + if (m_GravityForcedOffProviders.Count > 0) + return false; + + // If any provider is forcing gravity on, gravity is enabled + if (m_GravityForcedOnProviders.Count > 0) + return true; + + // If no controllers are being forced, check for pausing + foreach (var controller in m_GravityControllers) + { + // If any controller is set to paused, gravity is disabled + if (controller.canProcess && controller.gravityPaused) + return false; + } + + return true; + } + + /// + /// Locks gravity for the provider based on . + /// + /// + /// This adds the provider to the internal lists keeping track of the locomotion providers that have forced gravity on or off. + /// + /// The requesting the lock. + /// Determines the type of lock used. + /// Returns if the provider is not already being locked. + /// + public bool TryLockGravity(IGravityController provider, GravityOverride gravityOverride) + { + if (m_GravityForcedOffProviders.Contains(provider) || + m_GravityForcedOnProviders.Contains(provider)) + { + Debug.LogWarning($"Gravity Provider is already being locked by {(provider is Object component ? component.name : provider)}. Unlock first before trying to lock again.", provider as Object ?? this); + return false; + } + + if (gravityOverride == GravityOverride.ForcedOff) + m_GravityForcedOffProviders.Add(provider); + else if (gravityOverride == GravityOverride.ForcedOn) + m_GravityForcedOnProviders.Add(provider); + + foreach (var controller in m_GravityControllers) + { + controller.OnGravityLockChanged(gravityOverride); + } + + m_OnGravityLockChanged?.Invoke(gravityOverride); + + return true; + } + + /// + /// Unlock gravity for the provider. + /// + /// The provider to unlock. + /// + /// Removes the provider from the internal lists keeping track of the locomotion providers that have forced gravity on or off. + /// + /// + public void UnlockGravity(IGravityController provider) + { + m_GravityForcedOnProviders.Remove(provider); + m_GravityForcedOffProviders.Remove(provider); + } + + /// + /// Checks if the player is grounded using a sphere cast from the player's head. + /// + void CheckGrounded() + { + var wasGrounded = m_IsGrounded; + + m_IsGrounded = m_LocalPhysicsScene.SphereCast(GetBodyHeadPosition(), m_SphereCastRadius, + -GetCurrentUp(), m_GroundedAllocHits, GetLocalHeadHeight(), m_SphereCastLayerMask, + m_SphereCastTriggerInteraction) > 0; + + // Check if grounded state changed + if (wasGrounded != m_IsGrounded) + { + foreach (var controller in m_GravityControllers) + { + controller.OnGroundedChanged(m_IsGrounded); + } + + m_OnGroundedChanged?.Invoke(m_IsGrounded); + } + } + + /// + /// Gets the local head height of the player. + /// + /// Returns the local head height of the player. + float GetLocalHeadHeight() + { + return mediator.xrOrigin.CameraInOriginSpaceHeight + m_SphereCastDistanceBuffer; + } + + /// + /// Gets the world space position of the player's head projected onto the body. + /// + /// Returns the world space position of the player's head projected onto the body. + Vector3 GetBodyHeadPosition() + { + if (m_CharacterController == null) + FindCharacterController(); + + if (m_HeadTransform == null) + { + FindHeadTransform(); + if (m_HeadTransform == null) + return m_CharacterController != null ? m_CharacterController.bounds.center : transform.position; + } + + if (m_CharacterController == null && m_UpdateCharacterControllerCenterEachFrame) + return m_HeadTransform.position; + + var center = m_CharacterController.bounds.center; + return new Vector3(center.x, m_HeadTransform.position.y, center.z); + } + + void FindCharacterController() + { + var xrOrigin = mediator.xrOrigin?.Origin; + if (xrOrigin == null) + return; + + // Save a reference to the optional CharacterController on the rig GameObject + // that will be used to move instead of modifying the Transform directly. + if (m_CharacterController == null && !m_AttemptedGetCharacterController) + { + // Try on the Origin GameObject first, and then fallback to the XR Origin GameObject (if different) + if (!xrOrigin.TryGetComponent(out m_CharacterController) && xrOrigin != mediator.xrOrigin.gameObject) + mediator.xrOrigin.TryGetComponent(out m_CharacterController); + + m_AttemptedGetCharacterController = true; + } + } + + void FindHeadTransform() + { + // Initialize the Head Transform, getting the Camera from XR Origin. + var xrOrigin = mediator.xrOrigin; + if (xrOrigin != null) + { + var xrCamera = xrOrigin.Camera; + if (xrCamera != null) + m_HeadTransform = xrCamera.transform; + else + { + Debug.LogError("Camera is not set in XR Origin, cannot obtain Transform reference to use as the head position. Disabling Gravity Provider.", this); + enabled = false; + } + } + else + { + Debug.LogError("XR Origin is not available through the Locomotion Mediator, cannot obtain Transform reference to use as the head position. Disabling Gravity Provider.", this); + enabled = false; + } + } + + /// + /// Unity calls this when drawing gizmos while the object is selected. + /// + protected void OnDrawGizmosSelected() + { + if (!Application.isPlaying || m_HeadTransform == null) + return; + + Color color = m_IsGrounded ? Color.green : Color.red; + Gizmos.color = color; + var bodyHeadPosition = GetBodyHeadPosition(); + Vector3 sphereCastStartPosition = bodyHeadPosition + (-GetCurrentUp() * m_GroundedAllocHits[0].distance); + Gizmos.DrawWireSphere(sphereCastStartPosition, m_SphereCastRadius); + Gizmos.DrawSphere(m_GroundedAllocHits[0].point, 0.025f); + Debug.DrawLine(bodyHeadPosition, sphereCastStartPosition, color); + } + } +} diff --git a/Runtime/Locomotion/Gravity/GravityProvider.cs.meta b/Runtime/Locomotion/Gravity/GravityProvider.cs.meta new file mode 100644 index 00000000..f3a264c7 --- /dev/null +++ b/Runtime/Locomotion/Gravity/GravityProvider.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9b46d3c2f9f9a9849840e47b9ddef1b2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Locomotion/Gravity/IGravityController.cs b/Runtime/Locomotion/Gravity/IGravityController.cs new file mode 100644 index 00000000..7f0e46a1 --- /dev/null +++ b/Runtime/Locomotion/Gravity/IGravityController.cs @@ -0,0 +1,51 @@ +namespace UnityEngine.XR.Interaction.Toolkit.Locomotion.Gravity +{ + /// + /// Interface for external control over the . + /// This interface should be implemented from a and be parented or attached to a . + /// + public interface IGravityController + { + /// + /// Whether the gravity can be processed. + /// Gravity controllers that can process receive queries to , controllers that cannot process do not. + /// + /// + /// It's recommended to return when implementing this interface + /// in a . + /// + bool canProcess { get; } + + /// + /// Whether gravity is paused. + /// + /// + bool gravityPaused { get; } + + /// + /// Attempts to lock gravity. + /// + /// The to apply. + /// Whether the gravity was successfully locked. + bool TryLockGravity(GravityOverride gravityOverride); + + /// + /// Removes this provider from the list's of locked providers. + /// + void RemoveGravityLock(); + + /// + /// Called from when gravity lock is changed. + /// + /// The to apply. + /// + void OnGravityLockChanged(GravityOverride gravityOverride); + + /// + /// Called from when the grounded state changes. + /// + /// Whether the player is on the ground. + /// + void OnGroundedChanged(bool isGrounded); + } +} diff --git a/Runtime/Locomotion/Gravity/IGravityController.cs.meta b/Runtime/Locomotion/Gravity/IGravityController.cs.meta new file mode 100644 index 00000000..35b21e9f --- /dev/null +++ b/Runtime/Locomotion/Gravity/IGravityController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9c552be1c5c6ae245a68d9734ec22f62 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Locomotion/Jump.meta b/Runtime/Locomotion/Jump.meta new file mode 100644 index 00000000..235a4315 --- /dev/null +++ b/Runtime/Locomotion/Jump.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: be98b5341e7a58d44a0171ed5c1f93a1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Locomotion/Jump/JumpProvider.cs b/Runtime/Locomotion/Jump/JumpProvider.cs new file mode 100644 index 00000000..71453d70 --- /dev/null +++ b/Runtime/Locomotion/Jump/JumpProvider.cs @@ -0,0 +1,490 @@ +using UnityEngine.InputSystem.Controls; +using UnityEngine.XR.Interaction.Toolkit.Inputs.Readers; +using UnityEngine.XR.Interaction.Toolkit.Locomotion.Gravity; +using UnityEngine.XR.Interaction.Toolkit.Utilities; + +namespace UnityEngine.XR.Interaction.Toolkit.Locomotion.Jump +{ + /// + /// Jump Provider allows the player to jump in the scene. + /// This uses a jump force to drive the value of the over time + /// to allow the player to control how floaty the jump feels. + /// The player can hold down the jump button to increase the altitude of the jump. + /// This provider handles coyote time to allow jumping to feel more consistent. + /// + [AddComponentMenu("XR/Locomotion/Jump Provider", 11)] + [HelpURL(XRHelpURLConstants.k_JumpProvider)] + public class JumpProvider : LocomotionProvider, IGravityController + { + [SerializeField] + [Tooltip("Disable gravity during the jump. This will result in a more floaty jump.")] + bool m_DisableGravityDuringJump; + + /// + /// Disable gravity during the jump. This will result in a more floaty jump. + /// + public bool disableGravityDuringJump + { + get => m_DisableGravityDuringJump; + set => m_DisableGravityDuringJump = value; + } + + [SerializeField] + [Tooltip("Allow player to jump without being grounded.")] + bool m_UnlimitedInAirJumps; + + /// + /// Allow player to jump without being grounded. + /// + public bool unlimitedInAirJumps + { + get => m_UnlimitedInAirJumps; + set => m_UnlimitedInAirJumps = value; + } + + [SerializeField] + [Tooltip("The number of times a player can jump before landing.")] + int m_InAirJumpCount = 1; + + /// + /// The number of times a player can jump before landing. + /// + public int inAirJumpCount + { + get => m_InAirJumpCount; + set + { + m_InAirJumpCount = Mathf.Max(0, value); + m_CurrentInAirJumpCount = m_InAirJumpCount; + } + } + + [SerializeField] + [Tooltip("The time window after leaving the ground that a jump can still be performed. Sometimes known as coyote time.")] + float m_JumpForgivenessWindow = 0.25f; + + /// + /// The time window after leaving the ground that a jump can still be performed. Sometimes known as coyote time. + /// + public float jumpForgivenessWindow + { + get => m_JumpForgivenessWindow; + set + { + m_JumpForgivenessWindow = value; + m_CurrentJumpForgivenessWindowTime = m_JumpForgivenessWindow; + } + } + + [SerializeField] + [Tooltip("The height (approximately in meters) the player will be when reaching the apex of the jump.")] + float m_JumpHeight = 1.25f; + + /// + /// The height (approximately in meters) the player will be when reaching the apex of the jump. + /// + public float jumpHeight + { + get => m_JumpHeight; + set => m_JumpHeight = value; + } + + [SerializeField] + [Tooltip("Allow the player to stop their jump early when input is released before reaching the maximum jump height.")] + bool m_VariableHeightJump = true; + + /// + /// Whether the jump height is based on how long the player continues to hold the jump button. + /// Enable to allow the player to stop their jump early when input is released before reaching the maximum jump height. + /// Disable to jump a fixed height. + /// + public bool variableHeightJump + { + get => m_VariableHeightJump; + set => m_VariableHeightJump = value; + } + + [SerializeField] + [Tooltip("The minimum amount of time the jump will execute for.")] + float m_MinJumpHoldTime = 0.1f; + + /// + /// The minimum amount of time the jump will execute for. + /// + public float minJumpHoldTime + { + get => m_MinJumpHoldTime; + set => m_MinJumpHoldTime = value; + } + + [SerializeField] + [Tooltip("The maximum time a player can hold down the jump button to increase altitude.")] + float m_MaxJumpHoldTime = 0.5f; + + /// + /// The maximum time a player can hold down the jump button to increase altitude. + /// + public float maxJumpHoldTime + { + get => m_MaxJumpHoldTime; + set => m_MaxJumpHoldTime = value; + } + + [SerializeField] + [Tooltip("The speed at which the jump will decelerate when the player releases the jump button early.")] + float m_EarlyOutDecelerationSpeed = .1f; + + /// + /// The speed at which the jump will decelerate when the player releases the jump button early. + /// + public float earlyOutDecelerationSpeed + { + get => m_EarlyOutDecelerationSpeed; + set => m_EarlyOutDecelerationSpeed = value; + } + + [SerializeField] + [Tooltip("Input data that will be used to perform a jump.")] + XRInputButtonReader m_JumpInput = new XRInputButtonReader("Jump"); + + /// + /// Input data that will be used to perform a jump. + /// If the source is an Input Action, it must have a button-like interaction where phase equals performed when pressed. + /// Typically a Control or a Value type action with a Press interaction. + /// + public XRInputButtonReader jumpInput + { + get => m_JumpInput; + set => XRInputReaderUtility.SetInputProperty(ref m_JumpInput, value, this); + } + + /// + /// The transformation that is used by this component to apply translation movement. + /// + public XROriginMovement transformation { get; set; } = new XROriginMovement(); + + bool m_IsJumping; + + /// + /// Returns whether the player is currently jumping. + /// + /// + /// This is only during jump ascent, it is not during the descent. + /// + public bool isJumping => m_IsJumping; + + /// + public bool canProcess => isActiveAndEnabled; + + /// + public bool gravityPaused { get; protected set; } + + /// + /// Flag to make sure the player has released the jump button before allowing another jump. + /// + bool m_HasJumped; + + /// + /// The current jump forgiveness time. + /// + float m_CurrentJumpForgivenessWindowTime; + + /// + /// The time the player will stop at. Usually it's , but can change when using . + /// + float m_StoppingJumpTime; + + /// + /// The current jump force being applied this frame. + /// + float m_CurrentJumpForceThisFrame; + + /// + /// Current jump vector being applied to the player. + /// + Vector3 m_JumpVector; + + /// + /// Reference to the gravity provider. + /// + GravityProvider m_GravityProvider; + + bool m_HasGravityProvider; + + float m_CurrentJumpTimer; + + int m_CurrentInAirJumpCount; + + /// + /// See . + /// + protected virtual void OnValidate() + { + m_InAirJumpCount = Mathf.Max(0, m_InAirJumpCount); + } + + /// + protected override void Awake() + { + base.Awake(); + m_HasGravityProvider = ComponentLocatorUtility.TryFindComponent(out m_GravityProvider); + if (!m_HasGravityProvider) + { + Debug.LogError("Could not find Gravity Provider component which is required by the Jump Provider component. Disabling component.", this); + enabled = false; + return; + } + } + + /// + /// See . + /// + protected virtual void OnEnable() + { + // Enable and disable directly serialized actions with this behavior's enabled lifecycle. + m_JumpInput.EnableDirectActionIfModeUsed(); + + m_CurrentInAirJumpCount = m_InAirJumpCount; + } + + /// + /// See . + /// + protected virtual void OnDisable() + { + m_JumpInput.DisableDirectActionIfModeUsed(); + } + + /// + /// See + /// + protected virtual void Update() + { + CheckJump(); + } + + /// + /// Checks if the player can jump and updates the jump routine. + /// + void CheckJump() + { + if (!m_HasGravityProvider) + return; + + if (m_CurrentJumpForgivenessWindowTime > 0f) + m_CurrentJumpForgivenessWindowTime -= Time.deltaTime; + + // If the player has jumped and the jump input is no longer being pressed, reset the jump flag. + if (m_HasJumped && m_JumpInput.ReadWasCompletedThisFrame()) + m_HasJumped = false; + + if (!m_HasJumped && m_JumpInput.ReadIsPerformed()) + Jump(); + + if (m_IsJumping) + UpdateJump(); + } + + /// + /// Initiates the jump routine. + /// + /// + public void Jump() + { + if (!CanJump()) + return; + + if (!m_GravityProvider.isGrounded) + m_CurrentInAirJumpCount--; + + m_HasJumped = true; + m_IsJumping = true; + m_CurrentJumpTimer = 0f; + m_StoppingJumpTime = m_MaxJumpHoldTime; + m_CurrentJumpForgivenessWindowTime = 0f; + m_CurrentJumpForceThisFrame = m_JumpHeight; + + if (m_DisableGravityDuringJump) + TryLockGravity(GravityOverride.ForcedOff); + + m_GravityProvider.ResetFallForce(); + } + + /// + /// Determines if the player can jump. + /// + /// Returns whether the player can jump. The method will not do anything while this method returns . + /// + /// Returns when any of these conditions are met:
+ /// - The player is grounded or within the jump forgiveness time (coyote time).
+ /// - The player has remaining in-air jumps.
+ ///
+ /// + public bool CanJump() + { + return m_UnlimitedInAirJumps || m_CurrentInAirJumpCount > 0 || m_GravityProvider.isGrounded || m_CurrentJumpForgivenessWindowTime > 0f; + } + + /// + /// Called every frame while is true. + /// + void UpdateJump() + { + var dt = Time.deltaTime; + ProcessJumpForce(dt); + + // Calculate the jump vector based on the current gravity mode. + if (m_GravityProvider.useLocalSpaceGravity) + m_JumpVector = m_CurrentJumpForceThisFrame * dt * m_GravityProvider.GetCurrentUp(); + else + m_JumpVector.y = m_CurrentJumpForceThisFrame * dt; + + TryStartLocomotionImmediately(); + if (locomotionState != LocomotionState.Moving) + return; + + transformation.motion = m_JumpVector; + TryQueueTransformation(transformation); + } + + void ProcessJumpForce(float dt) + { + m_CurrentJumpTimer += dt; + + if (m_StoppingJumpTime == m_MaxJumpHoldTime && + (m_MaxJumpHoldTime <= 0 || + (m_VariableHeightJump && m_CurrentJumpTimer > m_MinJumpHoldTime && !m_JumpInput.ReadIsPerformed()))) + { + m_StoppingJumpTime = Mathf.Min(m_CurrentJumpTimer + m_EarlyOutDecelerationSpeed, m_MaxJumpHoldTime); + } + + // Calculate the jump force based on the normalized time (0 to 1) of the jump. + m_CurrentJumpForceThisFrame = CalculateJumpForceForFrame(Mathf.Clamp01(m_CurrentJumpTimer / m_StoppingJumpTime)); + + // If the player has reached the maximum jump time, stop the jump. + if (m_CurrentJumpTimer >= m_StoppingJumpTime) + StopJump(); + } + + + /// + /// Calculates the jump force for the current frame based on the normalized time of the current jump. + /// This function uses an approximation to convert the jump force to meters for a better UX. + /// + /// Normalized value between and + /// The current force to be applied for a jump to reach an approximate height based + float CalculateJumpForceForFrame(float normalizedJumpTime) + { + // Start and end jump forces for the jump height. This is used to interpolate the jump force based on the current time of the jump. + var startJumpForce = 7f; + var endJumpForce = 5f; + + // Any jump height greater than this clamp will use the endJumpForce value. + var jumpHeightClamp = 4f; + + // Approximate the force to meters conversion based on the jump height. + var approximateForceToMetersConversion = Mathf.Lerp(startJumpForce, endJumpForce, Mathf.Clamp01(m_JumpHeight / jumpHeightClamp)); + + // If gravity is disabled during the jump, reduce the force to meters conversion to keep the approximation within an acceptable threshold. + if (m_DisableGravityDuringJump) + approximateForceToMetersConversion /= 1.5f; + + // Calculate the jump force based on the normalized time of the jump. + return (1 - normalizedJumpTime) * m_JumpHeight * approximateForceToMetersConversion; + } + + /// + /// Stops the jump routine. + /// + void StopJump() + { + m_IsJumping = false; + if (m_DisableGravityDuringJump) + RemoveGravityLock(); + } + + /// + /// Starts the coyote timer. + /// + void StartCoyoteTimer() + { + m_CurrentJumpForgivenessWindowTime = m_JumpForgivenessWindow; + } + + /// + /// Whether this is currently pausing gravity. + /// + /// + /// Returns if and + /// are currently , otherwise returns . + /// + public bool IsPausingGravity() + { + return m_IsJumping && m_DisableGravityDuringJump; + } + + /// + public bool TryLockGravity(GravityOverride gravityOverride) + { + if (m_GravityProvider != null) + return m_GravityProvider.TryLockGravity(this, gravityOverride); + + return false; + } + + /// + public void RemoveGravityLock() + { + if (m_GravityProvider != null) + m_GravityProvider.UnlockGravity(this); + } + + /// + void IGravityController.OnGroundedChanged(bool isGrounded) => OnGroundedChanged(isGrounded); + + /// + void IGravityController.OnGravityLockChanged(GravityOverride gravityOverride) => OnGravityLockChanged(gravityOverride); + + /// + /// Called from when the grounded state changes. + /// + /// Whether the player is on the ground. + /// + protected virtual void OnGroundedChanged(bool isGrounded) + { + gravityPaused = false; + + if (!isActiveAndEnabled) + return; + + if (!isGrounded) + { + // If not jumping, enable coyote time. + if (!m_IsJumping) + StartCoyoteTimer(); + } + else + { + m_CurrentJumpForgivenessWindowTime = 0f; + + // Reset the jump vector when the player is grounded. + m_JumpVector = Vector3.zero; + + m_CurrentInAirJumpCount = m_InAirJumpCount; + if (m_IsJumping) + StopJump(); + } + } + + /// + /// Called from when gravity lock is changed. + /// + /// The to apply. + /// + protected virtual void OnGravityLockChanged(GravityOverride gravityOverride) + { + if (gravityOverride == GravityOverride.ForcedOn) + gravityPaused = false; + } + } +} diff --git a/Runtime/Locomotion/Jump/JumpProvider.cs.meta b/Runtime/Locomotion/Jump/JumpProvider.cs.meta new file mode 100644 index 00000000..67affc5c --- /dev/null +++ b/Runtime/Locomotion/Jump/JumpProvider.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e3cd49dc1a38aff4fa00676ddd64cf4e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Locomotion/Legacy/SnapTurnProviderBase.cs b/Runtime/Locomotion/Legacy/SnapTurnProviderBase.cs index 0f35f535..16ba23e2 100644 --- a/Runtime/Locomotion/Legacy/SnapTurnProviderBase.cs +++ b/Runtime/Locomotion/Legacy/SnapTurnProviderBase.cs @@ -79,6 +79,7 @@ public float delayTime float m_CurrentTurnAmount; float m_TimeStarted; float m_DelayStartTime; + bool m_TurnAroundActivated; /// protected override void Awake() @@ -134,6 +135,9 @@ protected void Update() if (Mathf.Approximately(amount, 0f)) locomotionPhase = LocomotionPhase.Done; } + + if (input == Vector2.zero) + m_TurnAroundActivated = false; } /// @@ -158,7 +162,7 @@ protected virtual float GetTurnAmount(Vector2 input) case Cardinal.North: break; case Cardinal.South: - if (m_EnableTurnAround) + if (m_EnableTurnAround && !m_TurnAroundActivated) return 180f; break; case Cardinal.East: @@ -189,6 +193,9 @@ protected void StartTurn(float amount) if (!CanBeginLocomotion()) return; + if (Mathf.Approximately(amount, 180f)) + m_TurnAroundActivated = true; + if (locomotionPhase == LocomotionPhase.Idle) { locomotionPhase = LocomotionPhase.Started; diff --git a/Runtime/Locomotion/Movement/ConstrainedMoveProvider.cs b/Runtime/Locomotion/Movement/ConstrainedMoveProvider.cs index b551abef..fb904e6a 100644 --- a/Runtime/Locomotion/Movement/ConstrainedMoveProvider.cs +++ b/Runtime/Locomotion/Movement/ConstrainedMoveProvider.cs @@ -1,5 +1,7 @@ using UnityEngine.Assertions; using UnityEngine.Scripting.APIUpdating; +using UnityEngine.XR.Interaction.Toolkit.Locomotion.Gravity; +using UnityEngine.XR.Interaction.Toolkit.Utilities; namespace UnityEngine.XR.Interaction.Toolkit.Locomotion.Movement { @@ -46,18 +48,6 @@ public bool enableFreeZMovement set => m_EnableFreeZMovement = value; } - [SerializeField] - [Tooltip("Controls whether gravity applies to constrained axes when a Character Controller is used.")] - bool m_UseGravity = true; - /// - /// Controls whether gravity applies to constrained axes when a is used. - /// - public bool useGravity - { - get => m_UseGravity; - set => m_UseGravity = value; - } - /// /// The transformation that is used by this component to apply translation movement. /// @@ -66,7 +56,21 @@ public bool useGravity CharacterController m_CharacterController; bool m_AttemptedGetCharacterController; bool m_IsMovingXROrigin; - Vector3 m_GravityDrivenVelocity; + + GravityProvider m_GravityProvider; + + /// + protected override void Awake() + { + base.Awake(); + if (ComponentLocatorUtility.TryFindComponent(out m_GravityProvider)) + { +#pragma warning disable CS0618 // Type or member is obsolete -- Assist with migration when this component wants gravity disabled + if (!m_UseGravity) + MigrateUseGravityToGravityProvider(); +#pragma warning restore CS0618 + } + } /// /// See . @@ -126,10 +130,11 @@ protected virtual void MoveRig(Vector3 translationInWorldSpace) if (!m_EnableFreeZMovement) motion.z = 0f; - if (m_CharacterController != null && m_CharacterController.enabled) + // Step vertical velocity from gravity, but only if gravity is not being controlled by Gravity Provider + if (m_GravityProvider == null && m_CharacterController != null && m_CharacterController.enabled) { - // Step vertical velocity from gravity - if (m_CharacterController.isGrounded || !m_UseGravity) +#pragma warning disable CS0618 // Type or member is obsolete + if (!m_UseGravity || m_CharacterController.isGrounded) { m_GravityDrivenVelocity = Vector3.zero; } @@ -145,10 +150,10 @@ protected virtual void MoveRig(Vector3 translationInWorldSpace) } motion += m_GravityDrivenVelocity * Time.deltaTime; +#pragma warning restore CS0618 // Type or member is obsolete } TryStartLocomotionImmediately(); - if (locomotionState != LocomotionState.Moving) return; diff --git a/Runtime/Locomotion/Movement/ConstrainedMoveProvider.deprecated.cs b/Runtime/Locomotion/Movement/ConstrainedMoveProvider.deprecated.cs index bd993940..c97c3fac 100644 --- a/Runtime/Locomotion/Movement/ConstrainedMoveProvider.deprecated.cs +++ b/Runtime/Locomotion/Movement/ConstrainedMoveProvider.deprecated.cs @@ -1,4 +1,5 @@ using System; +using UnityEngine.XR.Interaction.Toolkit.Locomotion.Gravity; namespace UnityEngine.XR.Interaction.Toolkit.Locomotion.Movement { @@ -45,5 +46,41 @@ public GravityApplicationMode gravityMode get => m_GravityApplicationMode; set => m_GravityApplicationMode = value; } + + [SerializeField] + [Tooltip("Controls whether gravity applies to constrained axes when a Character Controller is used. Ignored when a Gravity Provider component is found in the scene.")] + [Obsolete("Controlling gravity directly in the move provider has been deprecated in XRI 3.1.0, use Gravity Provider instead.")] + bool m_UseGravity = true; + /// + /// Controls whether gravity applies to constrained axes when a is used. + /// Ignored when a component is found in the scene. + /// + [Obsolete("Controlling gravity directly in the move provider has been deprecated in XRI 3.1.0, use Gravity Provider instead.")] + public bool useGravity + { + get => m_UseGravity; + set + { + m_UseGravity = value; + + if (Application.isPlaying && m_GravityProvider != null) + MigrateUseGravityToGravityProvider(); + } + } + + [Obsolete("Controlling gravity directly in the move provider has been deprecated in XRI 3.1.0, use Gravity Provider instead.")] + Vector3 m_GravityDrivenVelocity; + + [Obsolete("Private migration helper.")] + void MigrateUseGravityToGravityProvider() + { + if (m_GravityProvider.useGravity != m_UseGravity) + { + Debug.LogWarning("Use Gravity is deprecated on this locomotion component while Gravity Provider component is in scene." + + $" Automatically setting Use Gravity to {m_UseGravity} on Gravity Provider." + + " Gravity should be controlled on the Gravity Provider instead.", this); + m_GravityProvider.useGravity = m_UseGravity; + } + } } } diff --git a/Runtime/Locomotion/Movement/ContinuousMoveProvider.cs b/Runtime/Locomotion/Movement/ContinuousMoveProvider.cs index 6dd12f04..a4d772b0 100644 --- a/Runtime/Locomotion/Movement/ContinuousMoveProvider.cs +++ b/Runtime/Locomotion/Movement/ContinuousMoveProvider.cs @@ -1,6 +1,7 @@ -using System; using UnityEngine.XR.Interaction.Toolkit.Inputs.Readers; using UnityEngine.XR.Interaction.Toolkit.Locomotion.Turning; +using UnityEngine.XR.Interaction.Toolkit.Locomotion.Gravity; +using UnityEngine.XR.Interaction.Toolkit.Utilities; namespace UnityEngine.XR.Interaction.Toolkit.Locomotion.Movement { @@ -12,7 +13,7 @@ namespace UnityEngine.XR.Interaction.Toolkit.Locomotion.Movement /// [AddComponentMenu("XR/Locomotion/Continuous Move Provider", 11)] [HelpURL(XRHelpURLConstants.k_ContinuousMoveProvider)] - public class ContinuousMoveProvider : LocomotionProvider + public partial class ContinuousMoveProvider : LocomotionProvider, IGravityController { [SerializeField] [Tooltip("The speed, in units per second, to move forward.")] @@ -26,6 +27,18 @@ public float moveSpeed set => m_MoveSpeed = value; } + [SerializeField] + [Tooltip("Determines how much control the player has while in the air (0 = no control, 1 = full control).")] + float m_InAirControlModifier = 0.5f; + /// + /// Determines how much control the player has while in the air (0 = no control, 1 = full control). + /// + public float inAirControlModifier + { + get => m_InAirControlModifier; + set => m_InAirControlModifier = value; + } + [SerializeField] [Tooltip("Controls whether to enable strafing (sideways movement).")] bool m_EnableStrafe = true; @@ -42,7 +55,7 @@ public bool enableStrafe [Tooltip("Controls whether to enable flying (unconstrained movement). This overrides the use of gravity.")] bool m_EnableFly; /// - /// Controls whether to enable flying (unconstrained movement). This overrides . + /// Controls whether to enable flying (unconstrained movement). This overrides the use of gravity. /// public bool enableFly { @@ -50,19 +63,6 @@ public bool enableFly set => m_EnableFly = value; } - [SerializeField] - [Tooltip("Controls whether gravity affects this provider when a Character Controller is used and flying is disabled.")] - bool m_UseGravity = true; - /// - /// Controls whether gravity affects this provider when a is used. - /// This only applies when is . - /// - public bool useGravity - { - get => m_UseGravity; - set => m_UseGravity = value; - } - [SerializeField] [Tooltip("The source Transform to define the forward direction.")] Transform m_ForwardSource; @@ -106,13 +106,35 @@ public XRInputValueReader rightHandMoveInput set => XRInputReaderUtility.SetInputProperty(ref m_RightHandMoveInput, value, this); } + /// + public bool canProcess => isActiveAndEnabled; + + /// + public bool gravityPaused => m_EnableFly; + + GravityProvider m_GravityProvider; + CharacterController m_CharacterController; bool m_AttemptedGetCharacterController; bool m_IsMovingXROrigin; - Vector3 m_VerticalVelocity; + Vector3 m_GravityDrivenVelocity; + Vector3 m_InAirVelocity; + + /// + protected override void Awake() + { + base.Awake(); + if (ComponentLocatorUtility.TryFindComponent(out m_GravityProvider)) + { +#pragma warning disable CS0618 // Type or member is obsolete -- Assist with migration when this component wants gravity disabled + if (!m_UseGravity) + MigrateUseGravityToGravityProvider(); +#pragma warning restore CS0618 + } + } /// /// See . @@ -122,6 +144,9 @@ protected void OnEnable() // Enable and disable directly serialized actions with this behavior's enabled lifecycle. m_LeftHandMoveInput.EnableDirectActionIfModeUsed(); m_RightHandMoveInput.EnableDirectActionIfModeUsed(); + + m_GravityDrivenVelocity = Vector3.zero; + m_InAirVelocity = Vector3.zero; } /// @@ -133,6 +158,22 @@ protected void OnDisable() m_RightHandMoveInput.DisableDirectActionIfModeUsed(); } + /// + protected override void OnLocomotionStarting() + { + base.OnLocomotionStarting(); + + TryLockGravity(m_EnableFly ? GravityOverride.ForcedOff : GravityOverride.ForcedOn); + } + + /// + protected override void OnLocomotionEnding() + { + base.OnLocomotionEnding(); + + RemoveGravityLock(); + } + /// /// See . /// @@ -147,15 +188,13 @@ protected void Update() var input = ReadInput(); var translationInWorldSpace = ComputeDesiredMove(input); - if (input != Vector2.zero || m_VerticalVelocity != Vector3.zero) + if (input != Vector2.zero || m_GravityDrivenVelocity != Vector3.zero || m_InAirVelocity != Vector3.zero) MoveRig(translationInWorldSpace); if (!m_IsMovingXROrigin) TryEndLocomotion(); } - - /// Vector2 ReadInput() { var leftHandValue = m_LeftHandMoveInput.ReadValue(); @@ -171,7 +210,7 @@ Vector2 ReadInput() /// Returns the translation amount in world space to move the rig. protected virtual Vector3 ComputeDesiredMove(Vector2 input) { - if (input == Vector2.zero) + if (input == Vector2.zero && m_InAirVelocity == Vector3.zero) return Vector3.zero; var xrOrigin = mediator.xrOrigin; @@ -183,12 +222,21 @@ protected virtual Vector3 ComputeDesiredMove(Vector2 input) // while still allowing for analog input to move slower (which would be lost if simply normalizing). var inputMove = Vector3.ClampMagnitude(new Vector3(m_EnableStrafe ? input.x : 0f, 0f, input.y), 1f); + var deltaTime = Time.deltaTime; + + // Check if the user is not in the air, and update the input velocity accordingly. + // If the user is in the air, update the input velocity with the inAirControlModifier. + if (m_GravityProvider == null || m_GravityProvider.isGrounded) + m_InAirVelocity = inputMove; + else + m_InAirVelocity += deltaTime * m_InAirControlModifier * 10 * (inputMove - m_InAirVelocity); + // Determine frame of reference for what the input direction is relative to var forwardSourceTransform = m_ForwardSource == null ? xrOrigin.Camera.transform : m_ForwardSource; var inputForwardInWorldSpace = forwardSourceTransform.forward; var originTransform = xrOrigin.Origin.transform; - var speedFactor = m_MoveSpeed * Time.deltaTime * originTransform.localScale.x; // Adjust speed with user scale + var speedFactor = m_MoveSpeed * deltaTime * originTransform.localScale.x; // Adjust speed with user scale // If flying, just compute move directly from input and forward source if (m_EnableFly) @@ -213,7 +261,7 @@ protected virtual Vector3 ComputeDesiredMove(Vector2 input) var inputForwardProjectedInWorldSpace = Vector3.ProjectOnPlane(inputForwardInWorldSpace, originUp); var forwardRotation = Quaternion.FromToRotation(originTransform.forward, inputForwardProjectedInWorldSpace); - var translationInRigSpace = forwardRotation * inputMove * speedFactor; + var translationInRigSpace = forwardRotation * m_InAirVelocity * speedFactor; var translationInWorldSpace = originTransform.TransformDirection(translationInRigSpace); return translationInWorldSpace; @@ -234,23 +282,20 @@ protected virtual void MoveRig(Vector3 translationInWorldSpace) var motion = translationInWorldSpace; - if (m_CharacterController != null && m_CharacterController.enabled) + // Step vertical velocity from gravity, but only if gravity is not being controlled by Gravity Provider + if (m_GravityProvider == null && m_CharacterController != null && m_CharacterController.enabled) { - // Step vertical velocity from gravity +#pragma warning disable CS0618 // Type or member is obsolete if (m_CharacterController.isGrounded || !m_UseGravity || m_EnableFly) - { - m_VerticalVelocity = Vector3.zero; - } + m_GravityDrivenVelocity = Vector3.zero; else - { - m_VerticalVelocity += Physics.gravity * Time.deltaTime; - } + m_GravityDrivenVelocity += Physics.gravity * Time.deltaTime; - motion += m_VerticalVelocity * Time.deltaTime; + motion += m_GravityDrivenVelocity * Time.deltaTime; +#pragma warning restore CS0618 // Type or member is obsolete } TryStartLocomotionImmediately(); - if (locomotionState != LocomotionState.Moving) return; @@ -277,5 +322,46 @@ void FindCharacterController() m_AttemptedGetCharacterController = true; } } + + + /// + public bool TryLockGravity(GravityOverride gravityOverride) + { + if (m_GravityProvider != null) + return m_GravityProvider.TryLockGravity(this, gravityOverride); + + return false; + } + + /// + public void RemoveGravityLock() + { + if (m_GravityProvider != null) + m_GravityProvider.UnlockGravity(this); + } + + /// + void IGravityController.OnGroundedChanged(bool isGrounded) => OnGroundedChanged(isGrounded); + + /// + void IGravityController.OnGravityLockChanged(GravityOverride gravityOverride) => OnGravityLockChanged(gravityOverride); + + /// + /// Called from when the grounded state changes. + /// + /// Whether the player is on the ground. + /// + protected virtual void OnGroundedChanged(bool isGrounded) + { + } + + /// + /// Called from when gravity lock is changed. + /// + /// The to apply. + /// + protected virtual void OnGravityLockChanged(GravityOverride gravityOverride) + { + } } } diff --git a/Runtime/Locomotion/Movement/ContinuousMoveProvider.deprecated.cs b/Runtime/Locomotion/Movement/ContinuousMoveProvider.deprecated.cs new file mode 100644 index 00000000..86bbafd8 --- /dev/null +++ b/Runtime/Locomotion/Movement/ContinuousMoveProvider.deprecated.cs @@ -0,0 +1,42 @@ +using System; +using UnityEngine.XR.Interaction.Toolkit.Locomotion.Gravity; + +namespace UnityEngine.XR.Interaction.Toolkit.Locomotion.Movement +{ + public partial class ContinuousMoveProvider + { + [SerializeField] + [Tooltip("Controls whether gravity affects this provider when a Character Controller is used and flying is disabled. Ignored when a Gravity Provider component is found in the scene. Deprecated in XRI 3.1.0, use Gravity Provider instead.")] + [Obsolete("Controlling gravity directly in the move provider has been deprecated in XRI 3.1.0, use Gravity Provider instead.")] + bool m_UseGravity = true; + /// + /// Controls whether gravity affects this provider when a is used. + /// This only applies when is . + /// Ignored when a component is found in the scene. + /// + [Obsolete("Controlling gravity directly in the move provider has been deprecated in XRI 3.1.0, use Gravity Provider instead.")] + public bool useGravity + { + get => m_UseGravity; + set + { + m_UseGravity = value; + + if (Application.isPlaying && m_GravityProvider != null) + MigrateUseGravityToGravityProvider(); + } + } + + [Obsolete("Private migration helper.")] + void MigrateUseGravityToGravityProvider() + { + if (m_GravityProvider.useGravity != m_UseGravity) + { + Debug.LogWarning("Use Gravity is deprecated on this locomotion component while Gravity Provider component is in scene." + + $" Automatically setting Use Gravity to {m_UseGravity} on Gravity Provider." + + " Gravity should be controlled on the Gravity Provider instead.", this); + m_GravityProvider.useGravity = m_UseGravity; + } + } + } +} diff --git a/Runtime/Locomotion/Movement/ContinuousMoveProvider.deprecated.cs.meta b/Runtime/Locomotion/Movement/ContinuousMoveProvider.deprecated.cs.meta new file mode 100644 index 00000000..8b8afff7 --- /dev/null +++ b/Runtime/Locomotion/Movement/ContinuousMoveProvider.deprecated.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6309e41b62fe9464b87eec99c282f8aa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Runtime/Locomotion/Movement/TwoHandedGrabMoveProvider.cs b/Runtime/Locomotion/Movement/TwoHandedGrabMoveProvider.cs index e56c7e21..e7871c67 100644 --- a/Runtime/Locomotion/Movement/TwoHandedGrabMoveProvider.cs +++ b/Runtime/Locomotion/Movement/TwoHandedGrabMoveProvider.cs @@ -168,14 +168,17 @@ protected void OnEnable() m_LeftGrabMoveProvider.enableFreeXMovement = enableFreeXMovement; m_LeftGrabMoveProvider.enableFreeYMovement = enableFreeYMovement; m_LeftGrabMoveProvider.enableFreeZMovement = enableFreeZMovement; - m_LeftGrabMoveProvider.useGravity = useGravity; m_LeftGrabMoveProvider.moveFactor = m_MoveFactor; m_RightGrabMoveProvider.mediator = mediator; m_RightGrabMoveProvider.enableFreeXMovement = enableFreeXMovement; m_RightGrabMoveProvider.enableFreeYMovement = enableFreeYMovement; m_RightGrabMoveProvider.enableFreeZMovement = enableFreeZMovement; - m_RightGrabMoveProvider.useGravity = useGravity; m_RightGrabMoveProvider.moveFactor = m_MoveFactor; + +#pragma warning disable CS0618 // Type or member is obsolete -- should still be set for backwards compatibility + m_LeftGrabMoveProvider.useGravity = useGravity; + m_RightGrabMoveProvider.useGravity = useGravity; +#pragma warning restore CS0618 // Type or member is obsolete } } diff --git a/Runtime/Locomotion/Teleportation/TeleportationProvider.cs b/Runtime/Locomotion/Teleportation/TeleportationProvider.cs index 4e10db73..6ee52736 100644 --- a/Runtime/Locomotion/Teleportation/TeleportationProvider.cs +++ b/Runtime/Locomotion/Teleportation/TeleportationProvider.cs @@ -1,4 +1,3 @@ -using System; using UnityEngine.Assertions; using UnityEngine.Scripting.APIUpdating; diff --git a/Runtime/Locomotion/Turning/ContinuousTurnProvider.cs b/Runtime/Locomotion/Turning/ContinuousTurnProvider.cs index eca82358..2e9152b2 100644 --- a/Runtime/Locomotion/Turning/ContinuousTurnProvider.cs +++ b/Runtime/Locomotion/Turning/ContinuousTurnProvider.cs @@ -29,6 +29,30 @@ public float turnSpeed set => m_TurnSpeed = value; } + [SerializeField] + [Tooltip("Controls whether to enable left & right continuous turns.")] + bool m_EnableTurnLeftRight = true; + /// + /// Controls whether to enable left and right continuous turns. + /// + public bool enableTurnLeftRight + { + get => m_EnableTurnLeftRight; + set => m_EnableTurnLeftRight = value; + } + + [SerializeField] + [Tooltip("Controls whether to enable 180° snap turns on the South direction.")] + bool m_EnableTurnAround; + /// + /// Controls whether to enable 180° snap turns on the South direction. + /// + public bool enableTurnAround + { + get => m_EnableTurnAround; + set => m_EnableTurnAround = value; + } + [SerializeField] [Tooltip("Reads input data from the left hand controller. Input Action must be a Value action type (Vector 2).")] XRInputValueReader m_LeftHandTurnInput = new XRInputValueReader("Left Hand Turn"); @@ -61,6 +85,7 @@ public XRInputValueReader rightHandTurnInput public XRBodyYawRotation transformation { get; set; } = new XRBodyYawRotation(); bool m_IsTurningXROrigin; + bool m_TurnAroundActivated; /// /// See . @@ -96,6 +121,9 @@ protected void Update() if (!m_IsTurningXROrigin) TryEndLocomotion(); + + if (input == Vector2.zero) + m_TurnAroundActivated = false; } Vector2 ReadInput() @@ -113,18 +141,20 @@ Vector2 ReadInput() /// Returns the turn amount in degrees for the given vector. protected virtual float GetTurnAmount(Vector2 input) { - if (input == Vector2.zero) - return 0f; - var cardinal = CardinalUtility.GetNearestCardinal(input); switch (cardinal) { case Cardinal.North: + break; case Cardinal.South: + if (m_EnableTurnAround && !m_TurnAroundActivated) + return 180f; break; case Cardinal.East: case Cardinal.West: - return input.magnitude * (Mathf.Sign(input.x) * m_TurnSpeed * Time.deltaTime); + if (m_EnableTurnLeftRight) + return input.magnitude * (Mathf.Sign(input.x) * m_TurnSpeed * Time.deltaTime); + break; default: Assert.IsTrue(false, $"Unhandled {nameof(Cardinal)}={cardinal}"); break; @@ -142,6 +172,9 @@ protected void TurnRig(float turnAmount) if (Mathf.Approximately(turnAmount, 0f)) return; + if (Mathf.Approximately(turnAmount, 180f)) + m_TurnAroundActivated = true; + TryStartLocomotionImmediately(); if (locomotionState != LocomotionState.Moving) diff --git a/Runtime/Locomotion/Turning/SnapTurnProvider.cs b/Runtime/Locomotion/Turning/SnapTurnProvider.cs index 1442cecc..f427e814 100644 --- a/Runtime/Locomotion/Turning/SnapTurnProvider.cs +++ b/Runtime/Locomotion/Turning/SnapTurnProvider.cs @@ -118,6 +118,7 @@ public XRInputValueReader rightHandTurnInput float m_CurrentTurnAmount; float m_TimeStarted; float m_DelayStartTime; + bool m_TurnAroundActivated; /// /// See . @@ -171,6 +172,9 @@ protected void Update() if (Mathf.Approximately(amount, 0f)) TryEndLocomotion(); } + + if (input == Vector2.zero) + m_TurnAroundActivated = false; } Vector2 ReadInput() @@ -197,7 +201,7 @@ protected virtual float GetTurnAmount(Vector2 input) case Cardinal.North: break; case Cardinal.South: - if (m_EnableTurnAround) + if (m_EnableTurnAround && !m_TurnAroundActivated) return 180f; break; case Cardinal.East: @@ -225,6 +229,9 @@ protected void StartTurn(float amount) if (m_TimeStarted > 0f) return; + if (Mathf.Approximately(amount, 180f)) + m_TurnAroundActivated = true; + if (locomotionState == LocomotionState.Idle) { if (m_DelayTime > 0f) diff --git a/Runtime/Locomotion/XRBodyTransformer.cs b/Runtime/Locomotion/XRBodyTransformer.cs index fb177728..a8e454c5 100644 --- a/Runtime/Locomotion/XRBodyTransformer.cs +++ b/Runtime/Locomotion/XRBodyTransformer.cs @@ -248,7 +248,7 @@ public void QueueTransformation(IXRBodyTransformation transformation, int priori /// /// See . /// - internal void OnDrawGizmosSelected() + protected virtual void OnDrawGizmosSelected() { if (m_UseCharacterControllerIfExists && m_ConstrainedBodyManipulator != null && m_ConstrainedBodyManipulator is CharacterControllerBodyManipulator characterControllerManipulator && diff --git a/Runtime/UI/TrackedDeviceEventData.cs b/Runtime/UI/TrackedDeviceEventData.cs index 7cc823d4..bfae80d7 100644 --- a/Runtime/UI/TrackedDeviceEventData.cs +++ b/Runtime/UI/TrackedDeviceEventData.cs @@ -53,7 +53,7 @@ public IUIInteractor interactor /// The position in world space that this button was last pressed. /// This is used to recalculate the relative screen space during head movement. /// - /// + /// internal Vector3 pressWorldPosition { get; set; } } } diff --git a/Runtime/UI/TrackedDeviceGraphicRaycaster.cs b/Runtime/UI/TrackedDeviceGraphicRaycaster.cs index cf61dcd5..faa1afed 100644 --- a/Runtime/UI/TrackedDeviceGraphicRaycaster.cs +++ b/Runtime/UI/TrackedDeviceGraphicRaycaster.cs @@ -185,9 +185,9 @@ Canvas canvas /// /// Checks if poke interactor is interacting with any raycaster in the scene. /// - /// Poke ui interactor to check. - /// True if any poke interactor is hovering or selecting a graphic in the scene. - internal static bool IsPokeInteractingWithUI(IUIInteractor interactor) + /// The to check against, typically a . + /// Returns if the poke interactor is hovering or selecting any graphic in the scene. + public static bool IsPokeInteractingWithUI(IUIInteractor interactor) { foreach (var pokeUIInteractorSet in s_PokeHoverRaycasters.Values) { @@ -218,10 +218,12 @@ void EndPokeInteraction(IUIInteractor interactor) /// /// Attempts to get the for the provided . /// - /// The to check. + /// The to check against, typically a . /// The associated with the if it is found. - /// Returns if the is found and its associated is retrieved successfully, otherwise returns . - internal static bool TryGetPokeStateDataForInteractor(IUIInteractor interactor, out PokeStateData data) + /// Returns if the poke interactor is hovering or selecting any graphic in the scene + /// and thus its associated is retrieved successfully, otherwise returns . + /// + public static bool TryGetPokeStateDataForInteractor(IUIInteractor interactor, out PokeStateData data) { foreach (var kvp in s_PokeHoverRaycasters) { @@ -258,11 +260,12 @@ public IReadOnlyBindableVariable GetPokeStateDataForTarget(Transf } /// - /// This method is used to determine if the has a currently active selection using poke. + /// This method is used to determine if the poke interactor has met the requirements for selecting. + /// This can be treated like the equivalent of left mouse down for a mouse. /// /// The to check against, typically a . /// Returns if the meets requirements for poke with any . - internal static bool HasPokeSelect(IUIInteractor interactor) + public static bool IsPokeSelectingWithUI(IUIInteractor interactor) { return interactor != null && s_InteractorRaycasters.TryGetValue(interactor, out var raycaster) && raycaster != null; } diff --git a/Runtime/UI/TrackedDeviceModel.cs b/Runtime/UI/TrackedDeviceModel.cs index baf6b935..752d2cfa 100644 --- a/Runtime/UI/TrackedDeviceModel.cs +++ b/Runtime/UI/TrackedDeviceModel.cs @@ -9,7 +9,7 @@ namespace UnityEngine.XR.Interaction.Toolkit.UI /// Defines the type of interaction expected from the interactor when interacting with UI. /// /// - internal enum UIInteractionType + public enum UIInteractionType { /// /// The UI interaction is a ray interaction. @@ -71,7 +71,7 @@ internal struct ImplementationData /// This is used to recalculate the relative screen space during head movement. /// /// - /// + /// public Vector3 pressedWorldPosition { get; set; } /// @@ -165,9 +165,10 @@ public bool select /// /// The world starting position of the cast for the tracked device. /// + /// public Vector3 position { - get => positionGetter?.Invoke() ?? m_Position; + get => m_PositionProvider?.Invoke() ?? m_Position; set { if (m_Position != value) @@ -178,11 +179,26 @@ public Vector3 position } } + Func m_PositionProvider; + /// - /// Position getter allows for accurate up just in time position querying. + /// Overrides the position point used for the world starting position of the cast with a function that returns the position instead. + /// This position function allows for accurate just in time position querying. /// Necessary for poke interaction with UGUI if the frame of reference is moving rapidly. /// - internal Func positionGetter { get; set; } + /// + public Func positionProvider + { + get => m_PositionProvider; + set + { + if (m_PositionProvider != value) + { + m_PositionProvider = value; + changedThisFrame = true; + } + } + } Quaternion m_Orientation; @@ -281,7 +297,7 @@ public Vector2 scrollDelta /// Only applies with . /// /// - internal float pokeDepth + public float pokeDepth { get => m_PokeDepth; set @@ -301,7 +317,7 @@ internal float pokeDepth /// It affects the handling of raycasts in the . /// /// - internal UIInteractionType interactionType + public UIInteractionType interactionType { get => m_InteractionType; set @@ -328,7 +344,7 @@ internal UIInteractionType interactionType internal void UpdatePokeSelectState() { if (m_InteractionType == UIInteractionType.Poke) - select = TrackedDeviceGraphicRaycaster.HasPokeSelect(interactor); + select = TrackedDeviceGraphicRaycaster.IsPokeSelectingWithUI(interactor); } /// @@ -341,6 +357,13 @@ internal void UpdatePokeSelectState() /// public bool isScrollable { get; set; } + /// + /// Returns a struct representing an invalid pointer id. + /// This can be used when returning an instance from a method to represent invalid data. + /// + /// + public static TrackedDeviceModel invalid { get; } = new TrackedDeviceModel(-1); + /// /// Initializes and returns an instance of . /// @@ -362,7 +385,7 @@ public void Reset(bool resetImplementation = true) { m_Orientation = Quaternion.identity; m_Position = Vector3.zero; - positionGetter = null; + m_PositionProvider = null; changedThisFrame = false; m_SelectDown = false; selectDelta = ButtonDeltaState.NoChange; @@ -436,7 +459,5 @@ public void CopyFrom(TrackedDeviceEventData eventData) currentRaycast = eventData.pointerCurrentRaycast; currentRaycastEndpointIndex = eventData.rayHitIndex; } - - internal static TrackedDeviceModel invalid { get; } = new TrackedDeviceModel(-1); } } diff --git a/Runtime/UI/UIInputModule.cs b/Runtime/UI/UIInputModule.cs index 72781022..7f7070f4 100644 --- a/Runtime/UI/UIInputModule.cs +++ b/Runtime/UI/UIInputModule.cs @@ -96,7 +96,7 @@ public float trackedScrollDeltaMultiplier /// /// Disables sending events from Event System to UI Toolkit on behalf of this Input Module. /// - bool bypassUIToolkitEvents + public bool bypassUIToolkitEvents { get => m_BypassUIToolkitEvents; set => m_BypassUIToolkitEvents = value; @@ -332,7 +332,7 @@ RaycastResult PerformRaycast(PointerEventData eventData) /// It also updates the internal data of the . /// /// The mouse state you want to forward into the UI Event System. - internal void ProcessMouseState(ref MouseModel mouseState) + private protected void ProcessMouseState(ref MouseModel mouseState) { if (!mouseState.changedThisFrame) return; @@ -614,7 +614,7 @@ void ProcessScrollWheel(PointerEventData eventData) } } - internal void ProcessTouch(ref TouchModel touchState) + private protected void ProcessTouch(ref TouchModel touchState) { if (!touchState.changedThisFrame) return; @@ -636,7 +636,7 @@ internal void ProcessTouch(ref TouchModel touchState) touchState.OnFrameFinished(); } - internal void ProcessTrackedDevice(ref TrackedDeviceModel deviceState, bool force = false) + private protected void ProcessTrackedDevice(ref TrackedDeviceModel deviceState, bool force = false) { if (!deviceState.changedThisFrame && !force) return; @@ -738,7 +738,7 @@ bool TryGetCamera(PointerEventData eventData, out Camera screenPointCamera) /// It also updates the internal data of the NavigationModel. /// /// The navigation state you want to forward into the UI Event System - internal void ProcessNavigationState(ref NavigationModel navigationState) + private protected void ProcessNavigationState(ref NavigationModel navigationState) { var usedSelectionChange = SendUpdateEventToSelectedObject(); @@ -829,7 +829,13 @@ internal void ProcessNavigationState(ref NavigationModel navigationState) navigationState.OnFrameFinished(); } - internal void RemovePointerEventData(int pointerId) + /// + /// Remove the associated with the given ID. + /// + /// ID of the XR device pointer, mouse pointer or touch registered with the UIInputModule. + /// Meaning this should correspond to either .pointerId or .pointerId. + /// + private protected void RemovePointerEventData(int pointerId) { if (!m_TrackedDeviceEventByPointerId.Remove(pointerId)) m_PointerEventByPointerId.Remove(pointerId); diff --git a/Runtime/Utilities/RegistrationList.cs b/Runtime/Utilities/RegistrationList.cs index ba18f6f9..b9458db1 100644 --- a/Runtime/Utilities/RegistrationList.cs +++ b/Runtime/Utilities/RegistrationList.cs @@ -140,7 +140,7 @@ protected void AddToBufferedRemove(T item) protected bool RemoveFromBufferedRemove(T item) => m_BufferedRemove != null && m_BufferedRemove.Remove(item); /// - /// Removes all items from the and returns tis list to the pool (). + /// Removes all items from the and returns this list to the pool (). /// protected void ClearBufferedRemove() { @@ -167,7 +167,7 @@ protected void ClearBufferedRemove() /// It short circuits the check when there are no pending changes to unregister, which is usually the case. /// /// The item to query. - /// Returns if registered + /// Returns if registered. /// /// This includes pending changes that have not yet been pushed to . /// Use this method instead of when iterating over @@ -267,18 +267,27 @@ protected static void EnsureCapacity(List list, int capacity) } /// - class RegistrationList : BaseRegistrationList + sealed class RegistrationList : BaseRegistrationList { readonly HashSet m_UnorderedBufferedAdd = new HashSet(); readonly HashSet m_UnorderedBufferedRemove = new HashSet(); readonly HashSet m_UnorderedRegisteredSnapshot = new HashSet(); readonly HashSet m_UnorderedRegisteredItems = new HashSet(); + /// + /// Equivalent to m_UnorderedBufferedRemove.Count == 0. + /// + /// + /// This profiled slightly faster than checking the count directly, and is used by + /// which is called during each loop iteration for every registered item. + /// + bool m_BufferedRemoveEmpty = true; + /// public override bool IsRegistered(T item) => m_UnorderedRegisteredItems.Contains(item); /// - public override bool IsStillRegistered(T item) => m_UnorderedBufferedRemove.Count == 0 || !m_UnorderedBufferedRemove.Contains(item); + public override bool IsStillRegistered(T item) => m_BufferedRemoveEmpty || !m_UnorderedBufferedRemove.Contains(item); /// public override bool Register(T item) @@ -287,9 +296,10 @@ public override bool Register(T item) return false; var snapshotContainsItem = m_UnorderedRegisteredSnapshot.Contains(item); - if ((m_UnorderedBufferedRemove.Count > 0 && m_UnorderedBufferedRemove.Remove(item)) || !snapshotContainsItem) + if ((!m_BufferedRemoveEmpty && m_UnorderedBufferedRemove.Remove(item)) || !snapshotContainsItem) { RemoveFromBufferedRemove(item); + m_BufferedRemoveEmpty = m_UnorderedBufferedRemove.Count == 0; m_UnorderedRegisteredItems.Add(item); if (!snapshotContainsItem) { @@ -306,7 +316,7 @@ public override bool Register(T item) /// public override bool Unregister(T item) { - if (m_UnorderedBufferedRemove.Count > 0 && m_UnorderedBufferedRemove.Contains(item)) + if (!m_BufferedRemoveEmpty && m_UnorderedBufferedRemove.Contains(item)) return false; if (m_UnorderedBufferedAdd.Count > 0 && m_UnorderedBufferedAdd.Remove(item)) @@ -320,6 +330,7 @@ public override bool Unregister(T item) { AddToBufferedRemove(item); m_UnorderedBufferedRemove.Add(item); + m_BufferedRemoveEmpty = false; m_UnorderedRegisteredItems.Remove(item); return true; } @@ -333,7 +344,7 @@ public override void Flush() // This method is called multiple times each frame, // so additional explicit Count checks are done for // performance. - if (bufferedRemoveCount > 0) + if (!m_BufferedRemoveEmpty) { foreach (var item in m_BufferedRemove) { @@ -343,6 +354,7 @@ public override void Flush() ClearBufferedRemove(); m_UnorderedBufferedRemove.Clear(); + m_BufferedRemoveEmpty = true; } if (bufferedAddCount > 0) @@ -371,7 +383,7 @@ public override void GetRegisteredItems(List results) EnsureCapacity(results, flushedCount); foreach (var item in registeredSnapshot) { - if (m_UnorderedBufferedRemove.Count > 0 && m_UnorderedBufferedRemove.Contains(item)) + if (!m_BufferedRemoveEmpty && m_UnorderedBufferedRemove.Contains(item)) continue; results.Add(item); diff --git a/Runtime/Utilities/Tweenables/Primitives/ColorTweenableVariable.cs b/Runtime/Utilities/Tweenables/Primitives/ColorTweenableVariable.cs index 7746779b..b6a1dd6e 100644 --- a/Runtime/Utilities/Tweenables/Primitives/ColorTweenableVariable.cs +++ b/Runtime/Utilities/Tweenables/Primitives/ColorTweenableVariable.cs @@ -12,24 +12,14 @@ namespace UnityEngine.XR.Interaction.Toolkit.Utilities.Tweenables.Primitives [Obsolete("The Affordance System namespace and all associated classes have been deprecated. The existing affordance system will be moved, replaced and updated with a new interaction feedback system in a future version of XRI.")] public class ColorTweenableVariable : TweenableVariableAsyncBase { - /// - /// Blend mode used by the color affordance receiver when applying the new color. - /// - ColorBlendMode colorBlendMode { get; set; } = ColorBlendMode.Solid; - - /// - /// Value between 0 and 1 used to compute color blend modes. - /// - float colorBlendAmount { get; set; } = 1f; - /// protected override JobHandle ScheduleTweenJob(ref TweenJobData jobData) { var job = new ColorTweenJob { jobData = jobData, - colorBlendAmount = colorBlendAmount, - colorBlendMode = (byte)colorBlendMode + colorBlendAmount = 1f, + colorBlendMode = (byte)ColorBlendMode.Solid, }; return job.Schedule(); } diff --git a/Runtime/XRHelpURLConstants.cs b/Runtime/XRHelpURLConstants.cs index 616c31ed..890256c9 100644 --- a/Runtime/XRHelpURLConstants.cs +++ b/Runtime/XRHelpURLConstants.cs @@ -14,10 +14,12 @@ using UnityEngine.XR.Interaction.Toolkit.Interactors.Visuals; using UnityEngine.XR.Interaction.Toolkit.Locomotion; using UnityEngine.XR.Interaction.Toolkit.Locomotion.Climbing; +using UnityEngine.XR.Interaction.Toolkit.Locomotion.Comfort; +using UnityEngine.XR.Interaction.Toolkit.Locomotion.Gravity; +using UnityEngine.XR.Interaction.Toolkit.Locomotion.Jump; using UnityEngine.XR.Interaction.Toolkit.Locomotion.Movement; using UnityEngine.XR.Interaction.Toolkit.Locomotion.Teleportation; using UnityEngine.XR.Interaction.Toolkit.Locomotion.Turning; -using UnityEngine.XR.Interaction.Toolkit.Locomotion.Comfort; using UnityEngine.XR.Interaction.Toolkit.Transformers; using UnityEngine.XR.Interaction.Toolkit.UI; using UnityEngine.XR.Interaction.Toolkit.UI.BodyUI; @@ -30,7 +32,7 @@ namespace UnityEngine.XR.Interaction.Toolkit ///
static partial class XRHelpURLConstants { - const string k_CurrentDocsVersion = "3.0"; + const string k_CurrentDocsVersion = "3.1"; const string k_BaseApi = "https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit@" + k_CurrentDocsVersion + "/api/"; const string k_HtmlFileSuffix = ".html"; @@ -55,6 +57,8 @@ static partial class XRHelpURLConstants const string k_VisualsNamespace = "Visuals."; // Locomotion + const string k_JumpNamespace = "Jump."; + const string k_GravityNamespace = "Gravity."; const string k_ClimbingNamespace = "Climbing."; const string k_MovementNamespace = "Movement."; const string k_TeleportationNamespace = "Teleportation."; @@ -221,11 +225,26 @@ static partial class XRHelpURLConstants ///
public const string k_XRInputDeviceVector3ValueReader = k_BaseApi + k_BaseNamespace + k_InputsNamespace + k_ReadersNamespace + nameof(XRInputDeviceVector3ValueReader) + k_HtmlFileSuffix; + /// + /// Scripting API URL for . + /// + public const string k_SimulatedDeviceLifecycleManager = k_BaseApi + k_BaseNamespace + k_InputsNamespace + k_SimulationNamespace + nameof(SimulatedDeviceLifecycleManager) + k_HtmlFileSuffix; + + /// + /// Scripting API URL for . + /// + public const string k_SimulatedHandExpressionManager = k_BaseApi + k_BaseNamespace + k_InputsNamespace + k_SimulationNamespace + nameof(SimulatedHandExpressionManager) + k_HtmlFileSuffix; + /// /// Scripting API URL for . /// public const string k_XRDeviceSimulator = k_BaseApi + k_BaseNamespace + k_InputsNamespace + k_SimulationNamespace + nameof(XRDeviceSimulator) + k_HtmlFileSuffix; + /// + /// Scripting API URL for . + /// + public const string k_XRInteractionSimulator = k_BaseApi + k_BaseNamespace + k_InputsNamespace + k_SimulationNamespace + nameof(XRInteractionSimulator) + k_HtmlFileSuffix; + /// /// Scripting API URL for . /// @@ -266,6 +285,16 @@ static partial class XRHelpURLConstants /// public const string k_CharacterControllerBodyManipulator = k_BaseApi + k_BaseNamespace + k_LocomotionNamespace + nameof(CharacterControllerBodyManipulator) + k_HtmlFileSuffix; + /// + /// Scripting API URL for . + /// + public const string k_GravityProvider = k_BaseApi + k_BaseNamespace + k_LocomotionNamespace + k_GravityNamespace + nameof(GravityProvider) + k_HtmlFileSuffix; + + /// + /// Scripting API URL for . + /// + public const string k_JumpProvider = k_BaseApi + k_BaseNamespace + k_LocomotionNamespace + k_JumpNamespace + nameof(JumpProvider) + k_HtmlFileSuffix; + /// /// Scripting API URL for . /// diff --git a/Samples~/Hands Interaction Demo/HandsDemoScene.unity b/Samples~/Hands Interaction Demo/HandsDemoScene.unity index 562db883..f8f8e6be 100644 --- a/Samples~/Hands Interaction Demo/HandsDemoScene.unity +++ b/Samples~/Hands Interaction Demo/HandsDemoScene.unity @@ -8247,7 +8247,7 @@ PrefabInstance: m_Modification: m_TransformParent: {fileID: 0} m_Modifications: - - target: {fileID: 810019319561094050, guid: d6878e1999eb4b44a9f5a263af86c185, type: 3} + - target: {fileID: 17733956650476107, guid: d6878e1999eb4b44a9f5a263af86c185, type: 3} propertyPath: m_UseGravity value: 0 objectReference: {fileID: 0} diff --git a/Samples~/Hands Interaction Demo/Prefabs/XR Origin Hands (XR Rig).prefab b/Samples~/Hands Interaction Demo/Prefabs/XR Origin Hands (XR Rig).prefab index da8d07ff..02f1af34 100644 --- a/Samples~/Hands Interaction Demo/Prefabs/XR Origin Hands (XR Rig).prefab +++ b/Samples~/Hands Interaction Demo/Prefabs/XR Origin Hands (XR Rig).prefab @@ -2194,10 +2194,18 @@ PrefabInstance: propertyPath: m_TransformToFollow value: objectReference: {fileID: 2677369771392174608} + - target: {fileID: 8408429868716997126, guid: b200f6587d118224eba8467281481800, type: 3} + propertyPath: m_UseManipulationInput + value: 0 + objectReference: {fileID: 0} - target: {fileID: 8408429868716997126, guid: b200f6587d118224eba8467281481800, type: 3} propertyPath: m_MinAdditionalVelocityScalar value: 0.25 objectReference: {fileID: 0} + - target: {fileID: 8408429868716997126, guid: b200f6587d118224eba8467281481800, type: 3} + propertyPath: m_ManipulationInput.m_InputSourceMode + value: 0 + objectReference: {fileID: 0} m_RemovedComponents: - {fileID: 5712664876877111600, guid: b200f6587d118224eba8467281481800, type: 3} m_SourcePrefab: {fileID: 100100000, guid: b200f6587d118224eba8467281481800, type: 3} @@ -2241,10 +2249,18 @@ PrefabInstance: propertyPath: m_TransformToFollow value: objectReference: {fileID: 2577301593842775501} + - target: {fileID: 1722882099693224055, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} + propertyPath: m_UseManipulationInput + value: 0 + objectReference: {fileID: 0} - target: {fileID: 1722882099693224055, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} propertyPath: m_MinAdditionalVelocityScalar value: 0.25 objectReference: {fileID: 0} + - target: {fileID: 1722882099693224055, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} + propertyPath: m_ManipulationInput.m_InputSourceMode + value: 0 + objectReference: {fileID: 0} - target: {fileID: 2442306273320644280, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} propertyPath: m_SelectInput.m_InputSourceMode value: 3 diff --git a/Samples~/Starter Assets/Prefabs/Interactors/Left_NearFarInteractor.prefab b/Samples~/Starter Assets/Prefabs/Interactors/Left_NearFarInteractor.prefab index cd43e9bf..13b90b1c 100644 --- a/Samples~/Starter Assets/Prefabs/Interactors/Left_NearFarInteractor.prefab +++ b/Samples~/Starter Assets/Prefabs/Interactors/Left_NearFarInteractor.prefab @@ -472,6 +472,7 @@ MonoBehaviour: m_ManualValue: 0 m_ManualQueuePerformed: 0 m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueWasCompletedThisFrame: 0 m_ManualQueueValue: 0 m_ManualQueueTargetFrame: 0 m_ActivateInput: @@ -501,6 +502,7 @@ MonoBehaviour: m_ManualValue: 0 m_ManualQueuePerformed: 0 m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueWasCompletedThisFrame: 0 m_ManualQueueValue: 0 m_ManualQueueTargetFrame: 0 m_SelectActionTrigger: 1 @@ -583,6 +585,7 @@ MonoBehaviour: m_ManualValue: 0 m_ManualQueuePerformed: 0 m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueWasCompletedThisFrame: 0 m_ManualQueueValue: 0 m_ManualQueueTargetFrame: 0 m_UIScrollInput: @@ -620,11 +623,33 @@ MonoBehaviour: m_UseDistanceBasedVelocityScaling: 1 m_UseMomentum: 1 m_MomentumDecayScale: 1.25 + m_MomentumDecayScaleFromInput: 5.5 m_ZVelocityRampThreshold: 0.3 m_PullVelocityBias: 1 m_PushVelocityBias: 1.25 m_MinAdditionalVelocityScalar: 0.05 m_MaxAdditionalVelocityScalar: 1.5 + m_UseManipulationInput: 1 + m_ManipulationInput: + m_InputSourceMode: 2 + m_InputAction: + m_Name: Manipulation + m_Type: 0 + m_ExpectedControlType: Vector2 + m_Id: 9914e1e2-77ba-43ae-8266-fd33d44c8a24 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReference: {fileID: -8811388872089202044, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualValue: {x: 0, y: 0} + m_ManipulationXAxisMode: 1 + m_ManipulationYAxisMode: 2 + m_CombineManipulationAxes: 0 + m_ManipulationTranslateSpeed: 1 + m_ManipulationRotateSpeed: 180 + m_ManipulationRotateReferenceFrame: {fileID: 0} --- !u!114 &7104419533170684624 MonoBehaviour: m_ObjectHideFlags: 0 diff --git a/Samples~/Starter Assets/Prefabs/Interactors/Right_NearFarInteractor.prefab b/Samples~/Starter Assets/Prefabs/Interactors/Right_NearFarInteractor.prefab index f603a3d4..3f44b47d 100644 --- a/Samples~/Starter Assets/Prefabs/Interactors/Right_NearFarInteractor.prefab +++ b/Samples~/Starter Assets/Prefabs/Interactors/Right_NearFarInteractor.prefab @@ -7,6 +7,10 @@ PrefabInstance: m_Modification: m_TransformParent: {fileID: 0} m_Modifications: + - target: {fileID: 1722882099693224055, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} + propertyPath: m_ManipulationInput.m_InputActionReference + value: + objectReference: {fileID: -440298646266941818, guid: c348712bda248c246b8c49b3db54643f, type: 3} - target: {fileID: 2442306273320644280, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} propertyPath: m_Handedness value: 2 diff --git a/Samples~/Starter Assets/Prefabs/XR Origin (XR Rig).prefab b/Samples~/Starter Assets/Prefabs/XR Origin (XR Rig).prefab index d2188a9e..06bdcb4d 100644 --- a/Samples~/Starter Assets/Prefabs/XR Origin (XR Rig).prefab +++ b/Samples~/Starter Assets/Prefabs/XR Origin (XR Rig).prefab @@ -27,6 +27,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 202364687} + serializedVersion: 2 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} @@ -37,7 +38,6 @@ Transform: - {fileID: 1319746309} - {fileID: 8366379412631108205} m_Father: {fileID: 1680501587} - m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &4778211696441940833 MonoBehaviour: @@ -210,6 +210,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1670256624} + serializedVersion: 2 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} @@ -220,7 +221,6 @@ Transform: - {fileID: 2449787133337329436} - {fileID: 6528530117482412838} m_Father: {fileID: 1680501587} - m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &5663893676086941514 MonoBehaviour: @@ -389,6 +389,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1680501586} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 1.36144, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} @@ -402,7 +403,6 @@ Transform: - {fileID: 1670256625} - {fileID: 8718302446126152263} m_Father: {fileID: 1717954561962503726} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1767192433 GameObject: @@ -430,13 +430,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1767192433} + serializedVersion: 2 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_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1680501587} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!20 &1767192439 Camera: @@ -452,9 +452,17 @@ Camera: m_projectionMatrixMode: 1 m_GateFitMode: 2 m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 m_SensorSize: {x: 36, y: 24} m_LensShift: {x: 0, y: 0} - m_FocalLength: 50 m_NormalizedViewPortRect: serializedVersion: 2 x: 0 @@ -614,13 +622,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 58445280694286476} + serializedVersion: 2 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_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 6981642495833523204} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &153982007679157697 MonoBehaviour: @@ -637,6 +645,7 @@ MonoBehaviour: m_Mediator: {fileID: 6640002710935096923} m_TransformationPriority: 0 m_MoveSpeed: 2.5 + m_InAirControlModifier: 0.5 m_EnableStrafe: 1 m_EnableFly: 0 m_UseGravity: 1 @@ -674,6 +683,63 @@ MonoBehaviour: m_RightControllerTransform: {fileID: 1670256625} m_LeftHandMovementDirection: 0 m_RightHandMovementDirection: 0 +--- !u!1 &1316853283282549446 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1930236392004951510} + - component: {fileID: 658028464602686504} + m_Layer: 2 + m_Name: Gravity + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1930236392004951510 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1316853283282549446} + serializedVersion: 2 + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6981642495833523204} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &658028464602686504 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1316853283282549446} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9b46d3c2f9f9a9849840e47b9ddef1b2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Mediator: {fileID: 6640002710935096923} + m_TransformationPriority: 0 + m_UseGravity: 1 + m_UseLocalSpaceGravity: 1 + m_TerminalVelocity: 90 + m_GravityAccelerationModifier: 1 + m_UpdateCharacterControllerCenterEachFrame: 1 + m_SphereCastRadius: 0.09 + m_SphereCastDistanceBuffer: -0.05 + m_SphereCastLayerMask: + serializedVersion: 2 + m_Bits: 51 + m_SphereCastTriggerInteraction: 1 --- !u!1 &1470279098769358944 GameObject: m_ObjectHideFlags: 0 @@ -699,13 +765,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1470279098769358944} + serializedVersion: 2 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_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 6981642495833523204} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &7347985736721345035 MonoBehaviour: @@ -769,6 +835,8 @@ MonoBehaviour: m_Mediator: {fileID: 6640002710935096923} m_TransformationPriority: 0 m_TurnSpeed: 60 + m_EnableTurnLeftRight: 1 + m_EnableTurnAround: 1 m_LeftHandTurnInput: m_InputSourceMode: 2 m_InputAction: @@ -825,6 +893,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1717954561962503725} + serializedVersion: 2 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} @@ -833,7 +902,6 @@ Transform: - {fileID: 1680501587} - {fileID: 6981642495833523204} m_Father: {fileID: 0} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &1178791450436251564 MonoBehaviour: @@ -860,9 +928,16 @@ CharacterController: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1717954561962503725} m_Material: {fileID: 0} - m_IsTrigger: 0 + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_ProvidesContacts: 0 m_Enabled: 1 - serializedVersion: 2 + serializedVersion: 3 m_Height: 1.36144 m_Radius: 0.1 m_SlopeLimit: 45 @@ -963,13 +1038,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1787516059220952802} + serializedVersion: 2 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_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 8718302446126152263} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &2190828208922718286 GameObject: @@ -995,13 +1070,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2190828208922718286} + serializedVersion: 2 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_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 6981642495833523204} - m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &1748222016861356527 MonoBehaviour: @@ -1042,6 +1117,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2626757739553014894} + serializedVersion: 2 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} @@ -1049,7 +1125,6 @@ Transform: m_Children: - {fileID: 2749926995908329476} m_Father: {fileID: 6981642495833523204} - m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &5739245880472075158 MonoBehaviour: @@ -1065,6 +1140,9 @@ MonoBehaviour: m_EditorClassIdentifier: m_Mediator: {fileID: 6640002710935096923} m_TransformationPriority: 0 + m_ProvidersToDisable: + - {fileID: 7054646180837666701} + m_EnableGravityOnClimbEnd: 1 m_ClimbSettings: m_UseConstant: 1 m_ConstantValue: @@ -1096,6 +1174,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2766569358201078490} + serializedVersion: 2 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} @@ -1103,7 +1182,6 @@ Transform: m_Children: - {fileID: 150171005766949883} m_Father: {fileID: 1680501587} - m_RootOrder: 6 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &1801942220539511183 MonoBehaviour: @@ -1148,13 +1226,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 3533369827395663398} + serializedVersion: 2 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_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 6981642495833523204} - m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &2032798983271290625 MonoBehaviour: @@ -1205,6 +1283,7 @@ MonoBehaviour: m_ManualValue: 0 m_ManualQueuePerformed: 0 m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueWasCompletedThisFrame: 0 m_ManualQueueValue: 0 m_ManualQueueTargetFrame: 0 m_GrabMoveAction: @@ -1268,6 +1347,7 @@ MonoBehaviour: m_ManualValue: 0 m_ManualQueuePerformed: 0 m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueWasCompletedThisFrame: 0 m_ManualQueueValue: 0 m_ManualQueueTargetFrame: 0 m_GrabMoveAction: @@ -1310,6 +1390,91 @@ MonoBehaviour: m_EnableScaling: 0 m_MinimumScale: 0.2 m_MaximumScale: 5 +--- !u!1 &3904471525139099824 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7951184429302108679} + - component: {fileID: 7054646180837666701} + m_Layer: 2 + m_Name: Jump + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7951184429302108679 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3904471525139099824} + serializedVersion: 2 + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6981642495833523204} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &7054646180837666701 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3904471525139099824} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e3cd49dc1a38aff4fa00676ddd64cf4e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Mediator: {fileID: 6640002710935096923} + m_TransformationPriority: 0 + m_DisableGravityDuringJump: 0 + m_UnlimitedInAirJumps: 0 + m_InAirJumpCount: 1 + m_JumpForgivenessWindow: 0.25 + m_JumpHeight: 1.25 + m_VariableHeightJump: 1 + m_MinJumpHoldTime: 0.1 + m_MaxJumpHoldTime: 0.5 + m_EarlyOutDecelerationSpeed: 0.1 + m_JumpInput: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: Jump + m_Type: 1 + m_ExpectedControlType: + m_Id: 51323902-0a19-4bca-8e4c-cf66efe83803 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: Jump Value + m_Type: 0 + m_ExpectedControlType: Axis + m_Id: 45c0fbf7-4a52-45dc-9eb6-d00046973e1b + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: -3875704489234743591, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_InputActionReferenceValue: {fileID: -3875704489234743591, guid: c348712bda248c246b8c49b3db54643f, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueWasCompletedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 --- !u!1 &4026763789982141574 GameObject: m_ObjectHideFlags: 0 @@ -1333,13 +1498,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 4026763789982141574} + serializedVersion: 2 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_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 716906830792148215} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &5167925059111895691 GameObject: @@ -1366,6 +1531,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 5167925059111895691} + serializedVersion: 2 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} @@ -1376,8 +1542,9 @@ Transform: - {fileID: 3771689589969558132} - {fileID: 7401259364726987263} - {fileID: 8418786636219059989} + - {fileID: 1930236392004951510} + - {fileID: 7951184429302108679} m_Father: {fileID: 1717954561962503726} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &6640002710935096923 MonoBehaviour: @@ -1431,6 +1598,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 5563199296126487199} + serializedVersion: 2 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} @@ -1438,7 +1606,6 @@ Transform: m_Children: - {fileID: 5556032914392612086} m_Father: {fileID: 1680501587} - m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &3752199730057449385 MonoBehaviour: @@ -1482,13 +1649,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 5617778599117486727} + serializedVersion: 2 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_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 8418786636219059989} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &758862941726224967 MonoBehaviour: @@ -1574,6 +1741,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 6501755809687671949} + serializedVersion: 2 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} @@ -1581,7 +1749,6 @@ Transform: m_Children: - {fileID: 8381546940850731792} m_Father: {fileID: 1680501587} - m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &9068281059075228377 MonoBehaviour: @@ -1623,19 +1790,20 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 6553456492286146741} + serializedVersion: 2 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_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 3595914740002285240} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1001 &494449108016059778 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 202364688} m_Modifications: - target: {fileID: 8270855663187062767, guid: 1392f805216c47742996d4742c80721c, type: 3} @@ -1687,6 +1855,9 @@ PrefabInstance: value: Left Controller Visual objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 1392f805216c47742996d4742c80721c, type: 3} --- !u!4 &8366379412631108205 stripped Transform: @@ -1698,6 +1869,7 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 1670256625} m_Modifications: - target: {fileID: 2761784063978902503, guid: c1800acf6366418a9b5f610249000331, type: 3} @@ -1817,6 +1989,9 @@ PrefabInstance: value: objectReference: {fileID: 4238984354899526239} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: c1800acf6366418a9b5f610249000331, type: 3} --- !u!114 &2449787133337329425 stripped MonoBehaviour: @@ -1839,6 +2014,7 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 202364688} m_Modifications: - target: {fileID: 780270278251679399, guid: 27024f5809f4a4347b9cd7f26a1bdf93, type: 3} @@ -1906,6 +2082,12 @@ PrefabInstance: value: 10 objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: + - targetCorrespondingSourceObject: {fileID: 780270278251679399, guid: 27024f5809f4a4347b9cd7f26a1bdf93, type: 3} + insertIndex: -1 + addedObject: {fileID: 2814764233898000032} + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 27024f5809f4a4347b9cd7f26a1bdf93, type: 3} --- !u!4 &1666320186578454293 stripped Transform: @@ -1938,6 +2120,7 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 202364688} m_Modifications: - target: {fileID: 2761784063978902503, guid: c1800acf6366418a9b5f610249000331, type: 3} @@ -2057,6 +2240,9 @@ PrefabInstance: value: objectReference: {fileID: 5967689310316253315} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: c1800acf6366418a9b5f610249000331, type: 3} --- !u!4 &1319746309 stripped Transform: @@ -2079,6 +2265,7 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 1670256625} m_Modifications: - target: {fileID: 780270278251679399, guid: 27024f5809f4a4347b9cd7f26a1bdf93, type: 3} @@ -2142,6 +2329,12 @@ PrefabInstance: value: -10 objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: + - targetCorrespondingSourceObject: {fileID: 780270278251679399, guid: 27024f5809f4a4347b9cd7f26a1bdf93, type: 3} + insertIndex: -1 + addedObject: {fileID: 2052418245113747934} + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 27024f5809f4a4347b9cd7f26a1bdf93, type: 3} --- !u!114 &2141651114331267770 stripped MonoBehaviour: @@ -2174,6 +2367,7 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 1670256625} m_Modifications: - target: {fileID: 2447424620550846319, guid: b200f6587d118224eba8467281481800, type: 3} @@ -2225,6 +2419,9 @@ PrefabInstance: value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: b200f6587d118224eba8467281481800, type: 3} --- !u!114 &1883230248363655243 stripped MonoBehaviour: @@ -2247,6 +2444,7 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 202364688} m_Modifications: - target: {fileID: 4804964734930210078, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} @@ -2298,6 +2496,9 @@ PrefabInstance: value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 3df3e1220f2164f448701a6de8084f92, type: 3} --- !u!4 &1543070802843469984 stripped Transform: @@ -2320,6 +2521,7 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 1666320186578454293} m_Modifications: - target: {fileID: 863512645795027999, guid: bb91fcbcb3cc896468b372b1c762bfab, type: 3} @@ -2387,12 +2589,21 @@ PrefabInstance: value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: bb91fcbcb3cc896468b372b1c762bfab, type: 3} +--- !u!4 &2814764233898000032 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 8849414207674852688, guid: bb91fcbcb3cc896468b372b1c762bfab, type: 3} + m_PrefabInstance: {fileID: 6764233457049000944} + m_PrefabAsset: {fileID: 0} --- !u!1001 &7400760887118150798 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 3954319948395782924} m_Modifications: - target: {fileID: 863512645795027999, guid: bb91fcbcb3cc896468b372b1c762bfab, type: 3} @@ -2460,12 +2671,21 @@ PrefabInstance: value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: bb91fcbcb3cc896468b372b1c762bfab, type: 3} +--- !u!4 &2052418245113747934 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 8849414207674852688, guid: bb91fcbcb3cc896468b372b1c762bfab, type: 3} + m_PrefabInstance: {fileID: 7400760887118150798} + m_PrefabAsset: {fileID: 0} --- !u!1001 &7684238452101615925 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 1670256625} m_Modifications: - target: {fileID: 3475118261464492563, guid: 9f3369e30fbd31f4bb596b1a99babe83, type: 3} @@ -2517,6 +2737,9 @@ PrefabInstance: value: Right Controller Visual objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 9f3369e30fbd31f4bb596b1a99babe83, type: 3} --- !u!4 &6528530117482412838 stripped Transform: @@ -2528,6 +2751,7 @@ PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 1680501587} m_Modifications: - target: {fileID: 3055433562365713971, guid: b84cd05e1160fe34cab2585022c8cd99, type: 3} @@ -2591,6 +2815,9 @@ PrefabInstance: value: 0 objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: b84cd05e1160fe34cab2585022c8cd99, type: 3} --- !u!4 &2196849375614954873 stripped Transform: diff --git a/Samples~/Starter Assets/Scripts/ControllerInputActionManager.cs b/Samples~/Starter Assets/Scripts/ControllerInputActionManager.cs index cf5e0cae..84a0c0f9 100644 --- a/Samples~/Starter Assets/Scripts/ControllerInputActionManager.cs +++ b/Samples~/Starter Assets/Scripts/ControllerInputActionManager.cs @@ -3,6 +3,8 @@ using UnityEngine.Events; using UnityEngine.InputSystem; using UnityEngine.Serialization; +using UnityEngine.XR.Interaction.Toolkit.Attachment; +using UnityEngine.XR.Interaction.Toolkit.Inputs.Readers; using UnityEngine.XR.Interaction.Toolkit.Interactors; using UnityEngine.XR.Interaction.Toolkit.UI; @@ -130,6 +132,7 @@ public bool uiScrollingEnabled bool m_StartCalled; bool m_PostponedDeactivateTeleport; + bool m_PostponedNearRegionLocomotion; bool m_HoveringScrollableUI; readonly HashSet m_LocomotionUsers = new HashSet(); @@ -277,15 +280,6 @@ void OnCancelTeleport(InputAction.CallbackContext context) m_RayInteractorChanged?.Invoke(m_RayInteractor); } - void OnNearFarSelectionRegionChanged(NearFarInteractor.Region selectionRegion) - { - if (selectionRegion == NearFarInteractor.Region.Far || - (selectionRegion == NearFarInteractor.Region.Near && !m_NearFarEnableTeleportDuringNearInteraction)) - DisableTeleportActions(); - else - UpdateLocomotionActions(); - } - void OnStartLocomotion(InputAction.CallbackContext context) { m_LocomotionUsers.Add(context.action); @@ -302,6 +296,52 @@ void OnStopLocomotion(InputAction.CallbackContext context) } } + void OnNearFarSelectionRegionChanged(NearFarInteractor.Region selectionRegion) + { + m_PostponedNearRegionLocomotion = false; + + if (selectionRegion == NearFarInteractor.Region.None) + { + UpdateLocomotionActions(); + return; + } + + var manipulateAttachTransform = false; + var attachController = m_NearFarInteractor.interactionAttachController as InteractionAttachController; + if (attachController != null) + { + manipulateAttachTransform = attachController.useManipulationInput && + (attachController.manipulationInput.inputSourceMode == XRInputValueReader.InputSourceMode.InputActionReference && attachController.manipulationInput.inputActionReference != null) || + (attachController.manipulationInput.inputSourceMode != XRInputValueReader.InputSourceMode.InputActionReference && attachController.manipulationInput.inputSourceMode != XRInputValueReader.InputSourceMode.Unused); + } + + if (selectionRegion == NearFarInteractor.Region.Far) + { + if (manipulateAttachTransform) + DisableAllLocomotionActions(); + else + DisableTeleportActions(); + } + else if (selectionRegion == NearFarInteractor.Region.Near) + { + // Determine if the user entered the near region due to pulling back on the thumbstick. + // If so, postpone enabling locomotion until the user releases the thumbstick + // in order to avoid an immediate snap turn around from triggering on region change. + var hasStickInput = manipulateAttachTransform && HasStickInput(attachController); + if (hasStickInput) + { + m_PostponedNearRegionLocomotion = true; + DisableAllLocomotionActions(); + } + else + { + UpdateLocomotionActions(); + if (!m_NearFarEnableTeleportDuringNearInteraction) + DisableTeleportActions(); + } + } + } + void OnRaySelectEntered(SelectEnterEventArgs args) { if (m_RayInteractor.manipulateAttachTransform) @@ -381,7 +421,6 @@ protected void Start() protected void Update() { - // Start the coroutine that executes code after the Update phase (during yield null). // Since this behavior has the default execution order, it runs after the XRInteractionManager, // so selection events have been finished by now this frame. This means that the teleport interactor // has had a chance to process its select interaction event and teleport if needed. @@ -392,6 +431,28 @@ protected void Update() m_PostponedDeactivateTeleport = false; } + + // If stick input caused the near region to be entered, + // wait until the stick is released before enabling locomotion. + if (m_PostponedNearRegionLocomotion) + { + var hasStickInput = false; + if (m_NearFarInteractor != null && + m_NearFarInteractor.interactionAttachController is InteractionAttachController attachController + && attachController != null) + { + hasStickInput = HasStickInput(attachController); + } + + if (!hasStickInput) + { + m_PostponedNearRegionLocomotion = false; + + UpdateLocomotionActions(); + if (!m_NearFarEnableTeleportDuringNearInteraction) + DisableTeleportActions(); + } + } } void UpdateLocomotionActions() @@ -430,6 +491,15 @@ void UpdateUIActions() SetEnabled(m_UIScroll, m_UIScrollingEnabled && m_HoveringScrollableUI && m_LocomotionUsers.Count == 0); } + static bool HasStickInput(InteractionAttachController attachController) + { + // 75% of default 0.5 press threshold + const float sqrStickReleaseThreshold = 0.375f * 0.375f; + + return attachController.manipulationInput.TryReadValue(out var stickInput) && + stickInput.sqrMagnitude > sqrStickReleaseThreshold; + } + static void SetEnabled(InputActionReference actionReference, bool enabled) { if (enabled) @@ -441,15 +511,13 @@ static void SetEnabled(InputActionReference actionReference, bool enabled) static void EnableAction(InputActionReference actionReference) { var action = GetInputAction(actionReference); - if (action != null && !action.enabled) - action.Enable(); + action?.Enable(); } static void DisableAction(InputActionReference actionReference) { var action = GetInputAction(actionReference); - if (action != null && action.enabled) - action.Disable(); + action?.Disable(); } static InputAction GetInputAction(InputActionReference actionReference) diff --git a/Samples~/Starter Assets/Scripts/DynamicMoveProvider.cs b/Samples~/Starter Assets/Scripts/DynamicMoveProvider.cs index 243cfed8..033e5d4e 100644 --- a/Samples~/Starter Assets/Scripts/DynamicMoveProvider.cs +++ b/Samples~/Starter Assets/Scripts/DynamicMoveProvider.cs @@ -117,7 +117,7 @@ protected override Vector3 ComputeDesiredMove(Vector2 input) // Don't need to do anything if the total input is zero. // This is the same check as the base method. if (input == Vector2.zero) - return Vector3.zero; + return base.ComputeDesiredMove(input); // Initialize the Head Transform if necessary, getting the Camera from XR Origin if (m_HeadTransform == null) diff --git a/Samples~/Starter Assets/XRI Default Input Actions.inputactions b/Samples~/Starter Assets/XRI Default Input Actions.inputactions index 3dcc2615..793f9f84 100644 --- a/Samples~/Starter Assets/XRI Default Input Actions.inputactions +++ b/Samples~/Starter Assets/XRI Default Input Actions.inputactions @@ -950,7 +950,7 @@ "initialStateCheck": true }, { - "name": "Directional Manipulation", + "name": "Manipulation", "type": "Value", "id": "93bd97c5-fd23-4853-8045-1b12324aa24e", "expectedControlType": "Vector2", @@ -1247,9 +1247,9 @@ "id": "5fe0ed53-b4d3-4cd8-b567-397a7d1e1c6a", "path": "{LeftHand}/{Primary2DAxis}", "interactions": "", - "processors": "", + "processors": "StickDeadzone", "groups": "", - "action": "Directional Manipulation", + "action": "Manipulation", "isComposite": false, "isPartOfComposite": false }, @@ -2021,7 +2021,7 @@ "initialStateCheck": true }, { - "name": "Directional Manipulation", + "name": "Manipulation", "type": "Value", "id": "b950a329-6492-4e29-b563-afc726f81e95", "expectedControlType": "Vector2", @@ -2318,9 +2318,9 @@ "id": "c4b46d7d-8231-4672-83f9-75af565faf57", "path": "{RightHand}/{Primary2DAxis}", "interactions": "", - "processors": "", + "processors": "StickDeadzone", "groups": "", - "action": "Directional Manipulation", + "action": "Manipulation", "isComposite": false, "isPartOfComposite": false }, @@ -2394,6 +2394,15 @@ "processors": "", "interactions": "", "initialStateCheck": false + }, + { + "name": "Jump", + "type": "Button", + "id": "01c7fda4-9c15-4167-8b87-58024f21d903", + "expectedControlType": "Button", + "processors": "", + "interactions": "", + "initialStateCheck": false } ], "bindings": [ @@ -2462,6 +2471,17 @@ "action": "Snap Turn", "isComposite": false, "isPartOfComposite": false + }, + { + "name": "", + "id": "052b129b-fc83-4b33-a606-af10ad595c3e", + "path": "{RightHand}/{PrimaryButton}", + "interactions": "", + "processors": "", + "groups": "", + "action": "Jump", + "isComposite": false, + "isPartOfComposite": false } ] }, diff --git a/Samples~/XR Device Simulator/UI/ControllerDevice/ControllerOverlayLinesRight.png b/Samples~/XR Device Simulator/UI/ControllerDevice/ControllerOverlayLinesRight.png deleted file mode 100644 index 72885979f9870b254c5028abf9e188d865333563..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10696 zcmeHs2~bnnw)SDL4bBmjs1cC_;=philrRY@CWKj$!4{E_1WYSn2oNHIpix0%kb?pu zi0uF^&`h>6sbEwBDrk!ewhS$apn`D0fkD)N1-rXmzv_GcTet45davqHTKk-R*7&Wp z*V=n0$-|94eaeC<2!c#!I67=Z5S2OvQD1=j24IphgfIyXaj^)(%dDP9P_k8)~aNP+g;|!)4p* z`mA(CU3abHZ09=e4(E98cH6|-y@O@R*0o!$V-sx!0zxkqnJk>NWhl(SjJoSmEyPG|%lXifg0-L*X|B8s0J^TOf9Uv2TS7wqP{EH_9|dmw2FPDh^EU~1af~-|_+gRZEYA8UFq5S8W|!5v za1JvfEPPW~*v{W$nBX!ugc-~+ z-W3|GtMdntR_nrchJ}M-u+D743RhPvMkqgm8Oq`?9Bg&LYa=d~ZDo#H1X9f);i#s8 zL5Aj34%3jj%EZ*rjKgG_aV$82CZ?vp^E-sGB9*cIou3W-D}zuoD%+B3XljBo4b9C0 z%?+ujCDV`-L|wIt8DtR@#J2dI-#wfQ%Zs`5UzVd>bjqZ#a^&(MT*BYhgeQmh+tW_2 z&O{zqF^~ z`0ts|XGZ;FXP=tSl{G17rN(V>a>azm%ch z$)UC>AOEPU@bX7x=7fUiaHzX#QHRD5gjB$AShFcQ>rK0`g5$Hb=Xuxx;r68`_p3|i z>{Cy~{qW#{&J;)ceRo`(HB8SD4x;zXL?_9|22EM^QnG2(PuZ74emZq!OLfjS>YGZo zNNxDztbrAg#>3w2*P5(?-3LC}yeBX7jofRac#`+zmzz(^eGOC*bIHpX1R>03s>kog zkr1K-LFHGSk7L^L?>8IFlTj*l8a~HSR0u}QER7B7tqYl1Dlk|xv#1-?U(yH^mpLj` znsrID*TKFIfJeSPi$e@IsK=-M8$ZVnTAdwG(SI%dK-bD~3jY}U z@k4C>kOA_b=5`=2qFU`IPxW~Aecqh)NVgoF7=qKOhjo#+mklLgP6*K$ocO=LKOyiT zbX%ty8gk@z;9hJhM(i9QBQYd#p?Ik(i!3e_!JsGJL^)iWp+WLW(nX`Bjw{dNToTZY z2bQXOE)g5J&PiB?r={s0u6=|f-Bt!3M12V?9T_=$FX4L6b%hY1;e}i0W zU7{q?Kz2uZD2b*b)1-l=t)0Wu{*>PTzL#30uQvt>_%!dx?Xv^(1Ah3cdMm{tlkqf! znuw~_t`Xsp8M@+sp8@~lCDqnLfB1Cdc30c&z|xw5&Bz&_kU4hOw~wEos-jz-ovoNf zM}l^wFFi~`-tsdhhEkbwXl^k%+=Z+C3D`BQX&ZHkWJm`we$jXOmeBH^}^w~U7Hcl>10;r@>ALkue z-)Z)sSZ%Yegke-jo%+erstd=!NT9kSggp9qU!;ZWPz>XPPu79YdzLr6c~&DWd}>nm z%D#`N(nlDzSXjzepGCXUnn+bOqlkBw<9X^qE`+BIv|IR$WlXlkLOea-peSYCQzZdO zOl(qqz%$v#t8^u`E;v%mWhI9_;Z-0BBAkUje5@oundfgQ$ED2kkCdYhlRaN4DNvNc z32`7MXy9qzDOGAN5kD#e0s8iYi(C*O&O$dnqoo~@CqE*7b7lpTJ$KbcZQ0bo9^5-e z!sZi4sos-l@Ni+`fkxPT`6zkja^D``xi1f(Wixu}N|&RvrS(-iK?Qym?FpCkLY7~n z#Z!M`PuN_}N%m?#rdD_yeR$}ofnc44s=9(Ce#bePeeUZMmlP$bt;LaItu4B6(-Kir zbr=q!rgLD}hnhkF-nkLxXL97x2dd-tv{ATDv6TT zKY+noT2DwMm8_E1`&Mk3>pPXnc4_-@N?{gix=P}eaAG#C&XJgK0#B>EvyvX5CrUBd zvP$ApXgvd+B&}~fQ8%d1SUpdcUkm(mS}j!{<4B&RedmZ>I5M7=`=X6J)5uqlnn-#u zo0i+1Wguw$xji4{1MP`^;#R)8D5b%Q0^Tn^LY3~+AbEN(pj#+v#qd;quW1932{E;t zMGv?yN~!b(wfUfSle9j|AZA_DiC&4?v=r3T;_j`%bG*VSsTA?O6qZ+jkF?&;Fs5+1 z1l<6XNuADhBLyFsyM7o!SN@r@)GfbGG?Ck6pq4kyDwe#X5@wC?V%|LjFBte~|xI_99 z)C>lS1SLsvF)*nK1H7q8aqWpDNV&CwU_IgX8&!=|{~!CQ_O4PKr%6nek~K)jt<5;H zdC83}xPq$4iLx`f#j2DBed-Ltd{x1S^~xeAL7oiD{jf+!KX*0u|$sU!AiDdR=rW$>oAZ#Wt@ZV>xP>Bgn6UR!KeaYWit8P&A}1U83jDB6 zSkz7$q<8XniKJ;5x^{2cQTgT95;d|E7rRAYGLTGN8!5$o(xek+F-6Q-bOMekdQP=% zI5+i4NZsJe{N`F04brr`7a7`KCH)oT0q5}SDtYZVjx_B)7ch-U^{eiuqQ+9(&4_RB zNW8+1>r0{}9*zWNMVh5|Y#7%2WYOgAH3VjB+EdHxl!o`9x|t$I_vGo19)(ikG}NC+ ziqI9KGm05Qy_0%Z$zS@;{Q&GX{-=hhN(R8WnJh+)id{!bUym{*kQ*+^sC4A2{tMn7 zA3wfm-E0~muZ1jh0RVP@@{*}c(ctdLJM!o_Y~iCtlXF3Po0EKm#g%y7#$UnH2sJ*G z(Z+p|T{!Dmw2Xs3oXTu@X{0P+a5gPN!ikd9EaHg(9?!S=WXjyaXJYwuut81|qqfB^ zLSpB99=ltF&wX`*q3u%=%I}Fj2OuTlNG>gRJ+JVuGBJSz@#He5h#SMX6D2vtvnhIQ zj;cy=&BH_FWMf~!O>&Q3CAXay&?>@rKj$z`dzADaWOSq{MnF!y2I-z`834N_we36r z>mtRyEps7uYFpExCNksP7^5p?<$9Hyf!`PSUvU_2uxxi?<>b*M2+S@V>0XO-s!eG? zdnuzMOVJH}F~Q67^z$~7FsJY%RdV|;B78Ih1J|rqH7q1aT*Rm2V;=U&2(M(KEWt&fAvK@FS=w&=c4C zU)5=7p2)b)mPM1j>4b!9yZ!HUMY~{^QrmL-sU-`fxQM~470?S$H11R)k;rzVG<$!7*-E^r8G_dp#-6 zK>qYia#2x^;vLy;i-72R8dbf!+Z*!b+gm9Kc-onR!51p~TOW5f4NAQ767+B+kGp2g zHcdZ2evf4>;IVZ?_#a-q+H52dK#hx_i0wn5tX;;_ck7F5m)qDje)OuIP2Wus*XG-- zynB041fX@`NF`40u0zs&kuAtIMRdk)aE_}Eb~@=v0dGG`DRg3YLHA=TqTc3 zRX@e}WmdaYS4Cy^kZz~si|~YfGJPROSyMX7Uz^{{L{-=EHr|nsj3<&#;7BN$azQxV z&!@%ht#s()<3)!oAqTd{nKcwZFtUSsM&dJXqIOc;w4YhfZhQ1cPvkeFE8zVx>){?F zmJgjGjJlPw7ABq+Q!F8uerB9bRrnOR-82B<5y@`h-`=R&p(hNwl_CLK_S5w&uLZOR z5f_7Nx!`|kG#hLYlV=uL&+xn)R_goCR?S{3k0Ok|QB~v4m%ZK`DPw-u2ZTZgtYvOt zbr1$0x3}{$7Fg2)3jK4+>SOgArg}yh+@02HqRM(-LJpo&XuZ54)ia9tbxPoUC$wr|MRL<|Y01m!{x&0QD z%DphBCv?r!QcZN&lYcISoGO;cY>ZhAys8||LQD5^QU2J!Cu%;@kg>3_{# zy>#><$oQd3G&qm3I!i%<-Beb8`Ve)sX+tw`&3f~G>HBW(zKWVpJ?@lB7FM&R(HB|q z{sVc~$agrIySo4NQ{Z>}P{wN0zD=(5&TN;PtjN#^c-)_=xC)@;j#d-|du1P7W9df- zOIa-G(&wqy^>r{hHk9<&n=d}LvxU0h&=h(1%G;j~jSM7`(4b+bp{5B&hvc3|iw-Sm zH5A7rb>%_|o_Xkk^hVq_(315)vR!`@^|mqZp?dLD3kAaZ&;%J@(x3BiPumHZrG8-f zBDrmuCzp*-7;l}uUWv4;B|26A|_Nh-|S2xPGX8T1hc=CEz@{aNK znYCL%%{6aqrk>@M0R8yu*%^v!u%a`&Sw(wvWr=UzH(HdtXjXk%v^N&^T^ZLb8rr8k ziCxl2*=`t@ow1r% z6*B^G9XSfo^+N%+RdIcfa`J@UgU*XuwytQHjE(!sB9V2wTFh$>nW$~OnPIS4ws77a zS1{<9Lhw<0-{Tb;tTI31UJKZdQrq7uKCml4mQwr(4sAl#4V%s^b2}d9oe3Pc5~5xHIA-p};18uvL$YjFk-Tid)`z z;8oFm%g?cyM}GNot{X*m43(1YnuljS+OR`b@yh*DThk!zM30K^A!~BwnSmugockc* zHJe(?G_gHr#~hH7$(IG$4x@bRao z>xmgdIjL>10kls(I0r2MWKhn(DtwcGWTbz8z+`i1&qxv3ZUa~y#7YFw*(@&cesVSm zIdE`69lMfxeMN&|fxCLGV!EZ6p()e!oF@~|h$=6)zXYc{k5E-h^jSF8!&`&euw8I} ztc{E3E^r2m_8pfEUIo`;&|IZ!dzW!|d+68}uN+)FWBwK(U_sx0A?YnjQIuoj5dcw! z*yNxIOdeTwL@tEWM}QV4l)exY%0Tgt=`I5zLRR6AQFgPE4U+S__>H9~eYM1asO4ZSxGg#Oj z9oYP>!*YIvIP72bejlwhS}IaUU0CFN>yW`(o^NRmfoMflSTSC4-J{;Owxd@C`%B= z7^*-1hUm^1iU;gHj-qKoPmF$HXHT>fluOlscu{HFDQtXqm25Dd;Xj+FP9QV=nrK+3 zqma1wGQe*@C!`BPG1++oiLuMj8Kn>xLNArlz`)bvf7Yzq-Q+aX3if(|y-UE}GiJ=f z-g}V2LT<<1DfY>t((7iaHb!7-Xl8jY@<5a6chn5CSppML6BBAozw8!h$&gEh=3y-= z0gWHvuIhSlMio6*7&K_QsO1wMI@3iZ7Cuqp0>QUfYU-XJTweN(97YT_A)psPleQmlXYuN zdajWEy2ZMvIuMiPRkG&BJBfG%|EwYE=b&5oGYgnRiI$!)PPxiir~VG`^sIM zaXYWQhOBJ($J9LPCA?_=48^2Z*ZEi1W)A1C&Vv}6>56Z@8#ixR1nPe<7gVWw*b@%* zT5|h+4U^>Ons3dGmxy?+r%x!3!>W7Em9SM_);3zm|JFuMb{$?Aemz4Wj>aRkr#0l! zHpZ?*_r22^_ABP0c}TYa-Ps) z1#&1rMs+iGdwVaiC0l-gu?oxDB-D;?C}9!vD7nJBt}y$VJo#atl}c;EB6&qNrbt=# z%<{TrW05BOOeP<>X3#)-Xe-&~q$#8O-B@s{dJeRWW(g z9{UK@1eOfXzsdEj{oWR8+)C&?TfvkBeBG#!l_@iI>KeI09xhysuZ^!*5g8Y!*SLSY z^L0gk8KXZ-kqtRam}Olzx|@$}b9>q}c#hEz?IT`gR-G_r2e!=xoHJ~I>yTP?4N}bs zML#4kz4_`iB*0XZa=x;AWGYNdV)T0h&uJX#RL4pEU0MSb{W}Vbs``~2rr=0h_fQ+&Kx%Zl3~fto ztAZ+XS%b7S*1RDE>S!{h(hE#nKAYyW$Dr}&?F{0VEm#g93MW6ui&GyGkHY3blM$)} zZi>yX?iZg?M&;zrR~7vjL*hKN4VI=y!Xnb$vHj-sb6W+HPNz%Iv_T?V$vyfToe_Fc zaduHl?23jjE<tgWn^?A-l1khHb2n$vyx+*V+AochC{! zt&_FEpcIeEH$C2;p${^aMD}Dhlsfp({J$X|>-g~Ny^?0!>zY!0OC1rKnQl&Xmf7s&`9y_;b z>|HsxXknDC_oq;7uS<9%_{m+bXZhKEm8RE)+XSdC8La_nX~crh{LF=XBrQ-@f6R}fTo916XBkCViW~^m zJqc=R-r^=C7SG|SrvcmdV-cCwZq=WkzlmXd)@!^>k8cvCEcxh?*?SPOC@@p*74Js8 zV9KWJjUI}y^SLU7$#4f916G)f?a2(DSN-`$|3}94OnnTo2CT(! zGRVz@@NrW2TpV+#W#dS!$P;xYMd{9T#+Q#d)RhN?VboV)k=325{QEL!W++n(BVSw0#l#Z^~F-%*2$-i>hk z8&!II8~>^!HsF;t$ybdjy16B&C)(i_p0=LA3^PiDM4;t7+8?$JKCK~q zf9goC&8{vSNk{ykeLY7xr%LNJNRP^Q z61CLMs)HN4@FkCn03zuK- zrrB=bearmAOPb8rKl_qxL*0HM&lv7GAAgMVetSw$75BFNRd3&i%g({GG3I>vm&MlW zd3gca<2e-T@vz9_QwjtQX?6?Rxu2fL$@Aamb!1;}`q19~Jnp(;N8!Hg+Ky?qhmUOi z9Jej1V_E3uakm{;zO=0+Fm1oPRa%fqKdrZ|$79 zYq#Cvt8wMdD$fMzA4T{l!6&Kx5yv+_3$5wSXO-1A(FMAzw%*Os@4FHegUtLqoZmcr zWQVvUuAr(Lw<$n|>+ShC713W4)V0(b|B0{|{GXALIZ4 diff --git a/Samples~/XR Device Simulator/Unity.XR.Interaction.Toolkit.Samples.DeviceSimulator.asmdef b/Samples~/XR Device Simulator/Unity.XR.Interaction.Toolkit.Samples.DeviceSimulator.asmdef index ba301bf6..13c2b890 100644 --- a/Samples~/XR Device Simulator/Unity.XR.Interaction.Toolkit.Samples.DeviceSimulator.asmdef +++ b/Samples~/XR Device Simulator/Unity.XR.Interaction.Toolkit.Samples.DeviceSimulator.asmdef @@ -19,6 +19,26 @@ "name": "com.unity.xr.hands", "expression": "1.1.0", "define": "XR_HANDS_1_1_OR_NEWER" + }, + { + "name": "Unity", + "expression": "[2020.3.45,2021.1)", + "define": "HAS_FIND_FIRST_OBJECT_BY_TYPE" + }, + { + "name": "Unity", + "expression": "[2021.3.18,2022.1.0)", + "define": "HAS_FIND_FIRST_OBJECT_BY_TYPE" + }, + { + "name": "Unity", + "expression": "[2022.2.5,2022.3)", + "define": "HAS_FIND_FIRST_OBJECT_BY_TYPE" + }, + { + "name": "Unity", + "expression": "2022.3.0", + "define": "HAS_FIND_FIRST_OBJECT_BY_TYPE" } ], "noEngineReferences": false diff --git a/Samples~/XR Device Simulator/XR Device Controller Controls.inputactions.meta b/Samples~/XR Device Simulator/XR Device Controller Controls.inputactions.meta deleted file mode 100644 index 6c2eac71..00000000 --- a/Samples~/XR Device Simulator/XR Device Controller Controls.inputactions.meta +++ /dev/null @@ -1,14 +0,0 @@ -fileFormatVersion: 2 -guid: 0be0028c24f2a4c14a96b6aa39055933 -ScriptedImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 2 - userData: - assetBundleName: - assetBundleVariant: - script: {fileID: 11500000, guid: 8404be70184654265930450def6a9037, type: 3} - generateWrapperCode: 0 - wrapperCodePath: - wrapperClassName: - wrapperCodeNamespace: diff --git a/Samples~/XR Device Simulator/XR Device Simulator Controls.inputactions.meta b/Samples~/XR Device Simulator/XR Device Simulator Controls.inputactions.meta deleted file mode 100644 index 554f44e6..00000000 --- a/Samples~/XR Device Simulator/XR Device Simulator Controls.inputactions.meta +++ /dev/null @@ -1,14 +0,0 @@ -fileFormatVersion: 2 -guid: da2b439d1a2de5c46a4f428f8cf4fe19 -ScriptedImporter: - internalIDToNameTable: [] - externalObjects: {} - serializedVersion: 2 - userData: - assetBundleName: - assetBundleVariant: - script: {fileID: 11500000, guid: 8404be70184654265930450def6a9037, type: 3} - generateWrapperCode: 0 - wrapperCodePath: - wrapperClassName: - wrapperCodeNamespace: diff --git a/Samples~/XR Device Simulator/XRDeviceSimulator.meta b/Samples~/XR Device Simulator/XRDeviceSimulator.meta new file mode 100644 index 00000000..ce5546cb --- /dev/null +++ b/Samples~/XR Device Simulator/XRDeviceSimulator.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 597ddf87b4cef41eb9013b03b8bd4f76 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/XR Device Simulator/Scripts.meta b/Samples~/XR Device Simulator/XRDeviceSimulator/Scripts.meta similarity index 100% rename from Samples~/XR Device Simulator/Scripts.meta rename to Samples~/XR Device Simulator/XRDeviceSimulator/Scripts.meta diff --git a/Samples~/XR Device Simulator/Scripts/XRDeviceSimulatorControllerUI.cs b/Samples~/XR Device Simulator/XRDeviceSimulator/Scripts/XRDeviceSimulatorControllerUI.cs similarity index 100% rename from Samples~/XR Device Simulator/Scripts/XRDeviceSimulatorControllerUI.cs rename to Samples~/XR Device Simulator/XRDeviceSimulator/Scripts/XRDeviceSimulatorControllerUI.cs diff --git a/Samples~/XR Device Simulator/Scripts/XRDeviceSimulatorHandsUI.cs b/Samples~/XR Device Simulator/XRDeviceSimulator/Scripts/XRDeviceSimulatorHandsUI.cs similarity index 74% rename from Samples~/XR Device Simulator/Scripts/XRDeviceSimulatorHandsUI.cs rename to Samples~/XR Device Simulator/XRDeviceSimulator/Scripts/XRDeviceSimulatorHandsUI.cs index fb4598a8..90897927 100644 --- a/Samples~/XR Device Simulator/Scripts/XRDeviceSimulatorHandsUI.cs +++ b/Samples~/XR Device Simulator/XRDeviceSimulator/Scripts/XRDeviceSimulatorHandsUI.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using UnityEngine.InputSystem; using UnityEngine.UI; +using UnityEngine.XR.Interaction.Toolkit.Inputs.Readers; using UnityEngine.XR.Interaction.Toolkit.Inputs.Simulation; namespace UnityEngine.XR.Interaction.Toolkit.Samples.DeviceSimulator @@ -34,7 +35,7 @@ public Sprite sprite public void Initialize(InputAction action, string name, Sprite icon) { m_Action = action; - m_BindText.text = m_Action.controls[0].displayName; + m_BindText.text = m_Action?.controls[0].displayName; m_TitleText.text = $"[{name}]"; if (icon != null) m_Sprite = icon; @@ -51,6 +52,7 @@ public void UpdateButtonVisuals(bool active, XRDeviceSimulatorUI uiManager) m_Icon.transform.localScale = Vector3.one; m_Icon.sprite = uiManager.GetInputIcon(m_Action?.controls[0]); + m_Icon.enabled = m_Icon.sprite != null; } public void SetButtonColor(Color color) @@ -79,6 +81,7 @@ public void UpdateButtonActive(bool active) XRDeviceSimulatorUI m_MainUIManager; HandExpressionUI m_ActiveExpression; + SimulatedHandExpressionManager m_HandExpressionManager; protected void Awake() { @@ -87,16 +90,37 @@ protected void Awake() internal void Initialize(XRDeviceSimulator simulator) { - for (var index = 0; index < simulator.simulatedHandExpressions.Count; ++index) + if (!simulator.gameObject.TryGetComponent(out m_HandExpressionManager)) { - var simulatedExpression = simulator.simulatedHandExpressions[index]; + Debug.LogError($"Could not find SimulatedHandExpressionManager component on {simulator.name}, disabling simulator UI."); + gameObject.SetActive(false); + return; + } + + for (var index = 0; index < m_HandExpressionManager.simulatedHandExpressions.Count; ++index) + { + var simulatedExpression = m_HandExpressionManager.simulatedHandExpressions[index]; if (index >= m_Expressions.Count) { Debug.LogWarning("The Device Simulator has more expressions than the UI can display.", this); } else { - m_Expressions[index].Initialize(simulatedExpression.toggleAction, simulatedExpression.name, simulatedExpression.icon); + InputAction action = null; + switch (simulatedExpression.toggleInput.inputSourceMode) + { + case XRInputButtonReader.InputSourceMode.InputActionReference: + action = simulatedExpression.toggleInput.inputActionReferencePerformed; + break; + case XRInputButtonReader.InputSourceMode.InputAction: + action = simulatedExpression.toggleInput.inputActionPerformed; + break; + default: + Debug.LogWarning($"Toggle Input for Simulated Hand Expression \"{simulatedExpression.name}\" is not an input action, cannot display binding or icon in UI.", this); + break; + } + + m_Expressions[index].Initialize(action, simulatedExpression.name, simulatedExpression.icon); } } @@ -135,10 +159,11 @@ internal void SetActive(bool active, XRDeviceSimulator simulator) } } - internal void ToggleExpression(XRDeviceSimulator.SimulatedHandExpression simulatedExpression, XRDeviceSimulator simulator) + internal void ToggleExpression(SimulatedHandExpression simulatedExpression, XRDeviceSimulator simulator) { // The index of the hand expression corresponds 1:1 with the index of the UI button - var index = simulator.simulatedHandExpressions.IndexOf(simulatedExpression); + var index = m_HandExpressionManager.simulatedHandExpressions.IndexOf(simulatedExpression); + if (index >= m_Expressions.Count) { Debug.LogWarning("The Device Simulator has more expressions than the UI can display.", this); diff --git a/Samples~/XR Device Simulator/Scripts/XRDeviceSimulatorHandsUI.cs.meta b/Samples~/XR Device Simulator/XRDeviceSimulator/Scripts/XRDeviceSimulatorHandsUI.cs.meta similarity index 100% rename from Samples~/XR Device Simulator/Scripts/XRDeviceSimulatorHandsUI.cs.meta rename to Samples~/XR Device Simulator/XRDeviceSimulator/Scripts/XRDeviceSimulatorHandsUI.cs.meta diff --git a/Samples~/XR Device Simulator/Scripts/XRDeviceSimulatorUI.cs b/Samples~/XR Device Simulator/XRDeviceSimulator/Scripts/XRDeviceSimulatorUI.cs similarity index 92% rename from Samples~/XR Device Simulator/Scripts/XRDeviceSimulatorUI.cs rename to Samples~/XR Device Simulator/XRDeviceSimulator/Scripts/XRDeviceSimulatorUI.cs index a54794e3..76766a20 100644 --- a/Samples~/XR Device Simulator/Scripts/XRDeviceSimulatorUI.cs +++ b/Samples~/XR Device Simulator/XRDeviceSimulator/Scripts/XRDeviceSimulatorUI.cs @@ -13,6 +13,8 @@ namespace UnityEngine.XR.Interaction.Toolkit.Samples.DeviceSimulator class XRDeviceSimulatorUI : MonoBehaviour { XRDeviceSimulator m_Simulator; + SimulatedDeviceLifecycleManager m_DeviceLifecycleManager; + SimulatedHandExpressionManager m_HandExpressionManager; const string k_MouseDeviceType = "Mouse"; const string k_TranslateLookText = "Move"; @@ -382,6 +384,30 @@ protected void Start() Initialize(simulator); } + /// + /// See . + /// + protected void Update() + { +#if XR_HANDS_1_1_OR_NEWER + if (m_DeviceLifecycleManager.deviceMode != SimulatedDeviceLifecycleManager.DeviceMode.Hand) + return; + + for (var index = 0; index < m_HandExpressionManager.simulatedHandExpressions.Count; ++index) + { + var simulatedExpression = m_HandExpressionManager.simulatedHandExpressions[index]; + if (simulatedExpression.toggleInput.ReadWasPerformedThisFrame()) + { + if (m_Simulator.manipulatingLeftHand) + m_LeftHand.ToggleExpression(simulatedExpression, m_Simulator); + + if (m_Simulator.manipulatingRightHand) + m_RightHand.ToggleExpression(simulatedExpression, m_Simulator); + } + } +#endif + } + /// /// See . /// @@ -410,19 +436,27 @@ protected void OnDestroy() Unsubscribe(m_Simulator.menuAction, OnMenuAction); Unsubscribe(m_Simulator.primaryButtonAction, OnPrimaryButtonAction); Unsubscribe(m_Simulator.secondaryButtonAction, OnSecondaryButtonAction); -#if XR_HANDS_1_1_OR_NEWER - foreach (var simulatedExpression in m_Simulator.simulatedHandExpressions) - { - simulatedExpression.performed -= OnHandExpressionAction; - } -#endif - } } void Initialize(XRDeviceSimulator simulator) { m_Simulator = simulator; + + if (!m_Simulator.gameObject.TryGetComponent(out m_DeviceLifecycleManager)) + { + Debug.LogError($"Could not find SimulatedDeviceLifecycleManager component on {m_Simulator.name}, disabling simulator UI."); + gameObject.SetActive(false); + return; + } + + if (!m_Simulator.gameObject.TryGetComponent(out m_HandExpressionManager)) + { + Debug.LogError($"Could not find SimulatedHandExpressionManager component on {m_Simulator.name}, disabling simulator UI."); + gameObject.SetActive(false); + return; + } + InitColorTheme(); Initialize(); // Start with the headset enabled @@ -542,12 +576,6 @@ void Initialize() Subscribe(m_Simulator.menuAction, OnMenuAction); Subscribe(m_Simulator.primaryButtonAction, OnPrimaryButtonAction); Subscribe(m_Simulator.secondaryButtonAction, OnSecondaryButtonAction); -#if XR_HANDS_1_1_OR_NEWER - foreach (var simulatedExpression in m_Simulator.simulatedHandExpressions) - { - simulatedExpression.performed += OnHandExpressionAction; - } -#endif m_XRDeviceSimulatorMainPanel.SetActive(isMenuOpen); m_XRDeviceSimulatorCollapsedPanel.SetActive(!isMenuOpen); @@ -562,14 +590,14 @@ void UpdateDeviceInputMethod() var modeChangeText = string.Empty; #endif - m_ControllersSelectedValueText.text = m_Simulator.deviceMode == XRDeviceSimulator.DeviceMode.Controller ? toggleManipulateText : modeChangeText; - m_HandsSelectedValueText.text = m_Simulator.deviceMode == XRDeviceSimulator.DeviceMode.Hand ? toggleManipulateText : modeChangeText; + m_ControllersSelectedValueText.text = m_DeviceLifecycleManager.deviceMode == SimulatedDeviceLifecycleManager.DeviceMode.Controller ? toggleManipulateText : modeChangeText; + m_HandsSelectedValueText.text = m_DeviceLifecycleManager.deviceMode == SimulatedDeviceLifecycleManager.DeviceMode.Hand ? toggleManipulateText : modeChangeText; - var modeColor = m_Simulator.deviceMode == XRDeviceSimulator.DeviceMode.Controller ? enabledColor : disabledColor; + var modeColor = m_DeviceLifecycleManager.deviceMode == SimulatedDeviceLifecycleManager.DeviceMode.Controller ? enabledColor : disabledColor; m_ControllerSelectedIcon.color = modeColor; m_ControllerSelectedText.color = modeColor; - modeColor = m_Simulator.deviceMode == XRDeviceSimulator.DeviceMode.Hand ? enabledColor : disabledColor; + modeColor = m_DeviceLifecycleManager.deviceMode == SimulatedDeviceLifecycleManager.DeviceMode.Hand ? enabledColor : disabledColor; m_HandsSelectedIcon.color = modeColor; m_HandsSelectedText.color = modeColor; } @@ -619,25 +647,25 @@ public void OnClickOpenSimulatorUIPanel() void OnActivateLeftDevice() { - if (m_Simulator.deviceMode == XRDeviceSimulator.DeviceMode.Controller) + if (m_DeviceLifecycleManager.deviceMode == SimulatedDeviceLifecycleManager.DeviceMode.Controller) OnActivateLeftController(); - else if (m_Simulator.deviceMode == XRDeviceSimulator.DeviceMode.Hand) + else if (m_DeviceLifecycleManager.deviceMode == SimulatedDeviceLifecycleManager.DeviceMode.Hand) OnActivateLeftHand(); } void OnActivateRightDevice() { - if (m_Simulator.deviceMode == XRDeviceSimulator.DeviceMode.Controller) + if (m_DeviceLifecycleManager.deviceMode == SimulatedDeviceLifecycleManager.DeviceMode.Controller) OnActivateRightController(); - else if (m_Simulator.deviceMode == XRDeviceSimulator.DeviceMode.Hand) + else if (m_DeviceLifecycleManager.deviceMode == SimulatedDeviceLifecycleManager.DeviceMode.Hand) OnActivateRightHand(); } void OnActivateBothDevices() { - if (m_Simulator.deviceMode == XRDeviceSimulator.DeviceMode.Controller) + if (m_DeviceLifecycleManager.deviceMode == SimulatedDeviceLifecycleManager.DeviceMode.Controller) OnActivateBothControllers(); - else if (m_Simulator.deviceMode == XRDeviceSimulator.DeviceMode.Hand) + else if (m_DeviceLifecycleManager.deviceMode == SimulatedDeviceLifecycleManager.DeviceMode.Hand) OnActivateBothHands(); } @@ -759,8 +787,8 @@ void OnActivateHeadsetDevice(bool activated = true) if (m_Simulator.manipulatingFPS) { - ControllersSetActive(false, m_Simulator.deviceMode == XRDeviceSimulator.DeviceMode.Controller); - HandsSetActive(false, m_Simulator.deviceMode == XRDeviceSimulator.DeviceMode.Hand); + ControllersSetActive(false, m_DeviceLifecycleManager.deviceMode == SimulatedDeviceLifecycleManager.DeviceMode.Controller); + HandsSetActive(false, m_DeviceLifecycleManager.deviceMode == SimulatedDeviceLifecycleManager.DeviceMode.Hand); } else { @@ -922,8 +950,8 @@ void OnHandControllerModeAction(InputAction.CallbackContext context) OnActivateHeadsetDevice(); else { - ControllersSetActive(false, m_Simulator.deviceMode == XRDeviceSimulator.DeviceMode.Controller); - HandsSetActive(false, m_Simulator.deviceMode == XRDeviceSimulator.DeviceMode.Hand); + ControllersSetActive(false, m_DeviceLifecycleManager.deviceMode == SimulatedDeviceLifecycleManager.DeviceMode.Controller); + HandsSetActive(false, m_DeviceLifecycleManager.deviceMode == SimulatedDeviceLifecycleManager.DeviceMode.Hand); } } @@ -1028,18 +1056,6 @@ void OnSecondaryButtonAction(InputAction.CallbackContext context) OnSecondaryButtonPerformed(context.phase.IsInProgress()); } - void OnHandExpressionAction(XRDeviceSimulator.SimulatedHandExpression simulatedExpression, InputAction.CallbackContext context) - { - if (context.phase.IsInProgress()) - { - if (m_Simulator.manipulatingLeftHand) - m_LeftHand.ToggleExpression(simulatedExpression, m_Simulator); - - if (m_Simulator.manipulatingRightHand) - m_RightHand.ToggleExpression(simulatedExpression, m_Simulator); - } - } - void OnSetMouseMode() { // Translate/Rotate diff --git a/Samples~/XR Device Simulator/Scripts/XRDeviceSimulatorUI.cs.meta b/Samples~/XR Device Simulator/XRDeviceSimulator/Scripts/XRDeviceSimulatorUI.cs.meta similarity index 100% rename from Samples~/XR Device Simulator/Scripts/XRDeviceSimulatorUI.cs.meta rename to Samples~/XR Device Simulator/XRDeviceSimulator/Scripts/XRDeviceSimulatorUI.cs.meta diff --git a/Samples~/XR Device Simulator/UI.meta b/Samples~/XR Device Simulator/XRDeviceSimulator/UI.meta similarity index 100% rename from Samples~/XR Device Simulator/UI.meta rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI.meta diff --git a/Samples~/XR Device Simulator/UI/ControllerDevice.meta b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/Controller.meta similarity index 100% rename from Samples~/XR Device Simulator/UI/ControllerDevice.meta rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/Controller.meta diff --git a/Samples~/XR Device Simulator/UI/ControllerDevice/ControllerLeft.png b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/Controller/ControllerLeft.png similarity index 100% rename from Samples~/XR Device Simulator/UI/ControllerDevice/ControllerLeft.png rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/Controller/ControllerLeft.png diff --git a/Samples~/XR Device Simulator/UI/ControllerDevice/ControllerLeft.png.meta b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/Controller/ControllerLeft.png.meta similarity index 100% rename from Samples~/XR Device Simulator/UI/ControllerDevice/ControllerLeft.png.meta rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/Controller/ControllerLeft.png.meta diff --git a/Samples~/XR Device Simulator/UI/ControllerDevice/ControllerOverlayLinesLeft.png b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/Controller/ControllerOverlayLinesLeft.png similarity index 100% rename from Samples~/XR Device Simulator/UI/ControllerDevice/ControllerOverlayLinesLeft.png rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/Controller/ControllerOverlayLinesLeft.png diff --git a/Samples~/XR Device Simulator/UI/ControllerDevice/ControllerRight.png b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/Controller/ControllerRight.png similarity index 100% rename from Samples~/XR Device Simulator/UI/ControllerDevice/ControllerRight.png rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/Controller/ControllerRight.png diff --git a/Samples~/XR Device Simulator/UI/ControllerDevice/ControllerRight.png.meta b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/Controller/ControllerRight.png.meta similarity index 100% rename from Samples~/XR Device Simulator/UI/ControllerDevice/ControllerRight.png.meta rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/Controller/ControllerRight.png.meta diff --git a/Samples~/XR Device Simulator/UI/ControllerDevice/xr_ctlr.png b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/Controller/xr_ctlr.png similarity index 100% rename from Samples~/XR Device Simulator/UI/ControllerDevice/xr_ctlr.png rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/Controller/xr_ctlr.png diff --git a/Samples~/XR Device Simulator/UI/ControllerDevice/xr_ctlr.png.meta b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/Controller/xr_ctlr.png.meta similarity index 100% rename from Samples~/XR Device Simulator/UI/ControllerDevice/xr_ctlr.png.meta rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/Controller/xr_ctlr.png.meta diff --git a/Samples~/XR Device Simulator/UI/General.meta b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/General.meta similarity index 100% rename from Samples~/XR Device Simulator/UI/General.meta rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/General.meta diff --git a/Samples~/XR Device Simulator/UI/General/CloseWindow.png b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/General/CloseWindow.png similarity index 100% rename from Samples~/XR Device Simulator/UI/General/CloseWindow.png rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/General/CloseWindow.png diff --git a/Samples~/XR Device Simulator/UI/General/CloseWindow.png.meta b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/General/CloseWindow.png.meta similarity index 100% rename from Samples~/XR Device Simulator/UI/General/CloseWindow.png.meta rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/General/CloseWindow.png.meta diff --git a/Samples~/XR Device Simulator/UI/General/CycleXRDevices.png b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/General/CycleXRDevices.png similarity index 100% rename from Samples~/XR Device Simulator/UI/General/CycleXRDevices.png rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/General/CycleXRDevices.png diff --git a/Samples~/XR Device Simulator/UI/General/CycleXRDevices.png.meta b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/General/CycleXRDevices.png.meta similarity index 100% rename from Samples~/XR Device Simulator/UI/General/CycleXRDevices.png.meta rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/General/CycleXRDevices.png.meta diff --git a/Samples~/XR Device Simulator/UI/General/DeviceSimUI_bg.png b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/General/DeviceSimUI_bg.png similarity index 100% rename from Samples~/XR Device Simulator/UI/General/DeviceSimUI_bg.png rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/General/DeviceSimUI_bg.png diff --git a/Samples~/XR Device Simulator/UI/General/DeviceSimUI_bg.png.meta b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/General/DeviceSimUI_bg.png.meta similarity index 100% rename from Samples~/XR Device Simulator/UI/General/DeviceSimUI_bg.png.meta rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/General/DeviceSimUI_bg.png.meta diff --git a/Samples~/XR Device Simulator/UI/General/Gripper.png b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/General/Gripper.png similarity index 100% rename from Samples~/XR Device Simulator/UI/General/Gripper.png rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/General/Gripper.png diff --git a/Samples~/XR Device Simulator/UI/General/Gripper.png.meta b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/General/Gripper.png.meta similarity index 100% rename from Samples~/XR Device Simulator/UI/General/Gripper.png.meta rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/General/Gripper.png.meta diff --git a/Samples~/XR Device Simulator/UI/General/KeyboardIcon.png b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/General/KeyboardIcon.png similarity index 100% rename from Samples~/XR Device Simulator/UI/General/KeyboardIcon.png rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/General/KeyboardIcon.png diff --git a/Samples~/XR Device Simulator/UI/General/KeyboardIcon.png.meta b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/General/KeyboardIcon.png.meta similarity index 100% rename from Samples~/XR Device Simulator/UI/General/KeyboardIcon.png.meta rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/General/KeyboardIcon.png.meta diff --git a/Samples~/XR Device Simulator/UI/General/Locked.png b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/General/Locked.png similarity index 100% rename from Samples~/XR Device Simulator/UI/General/Locked.png rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/General/Locked.png diff --git a/Samples~/XR Device Simulator/UI/General/Locked.png.meta b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/General/Locked.png.meta similarity index 100% rename from Samples~/XR Device Simulator/UI/General/Locked.png.meta rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/General/Locked.png.meta diff --git a/Samples~/XR Device Simulator/UI/General/Look.png b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/General/Look.png similarity index 100% rename from Samples~/XR Device Simulator/UI/General/Look.png rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/General/Look.png diff --git a/Samples~/XR Device Simulator/UI/General/Look.png.meta b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/General/Look.png.meta similarity index 100% rename from Samples~/XR Device Simulator/UI/General/Look.png.meta rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/General/Look.png.meta diff --git a/Samples~/XR Device Simulator/UI/General/OpenWindow.png b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/General/OpenWindow.png similarity index 100% rename from Samples~/XR Device Simulator/UI/General/OpenWindow.png rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/General/OpenWindow.png diff --git a/Samples~/XR Device Simulator/UI/General/OpenWindow.png.meta b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/General/OpenWindow.png.meta similarity index 100% rename from Samples~/XR Device Simulator/UI/General/OpenWindow.png.meta rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/General/OpenWindow.png.meta diff --git a/Samples~/XR Device Simulator/UI/General/Unlocked.png b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/General/Unlocked.png similarity index 100% rename from Samples~/XR Device Simulator/UI/General/Unlocked.png rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/General/Unlocked.png diff --git a/Samples~/XR Device Simulator/UI/General/Unlocked.png.meta b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/General/Unlocked.png.meta similarity index 100% rename from Samples~/XR Device Simulator/UI/General/Unlocked.png.meta rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/General/Unlocked.png.meta diff --git a/Samples~/XR Device Simulator/UI/General/btn_bgbottom.png b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/General/btn_bgbottom.png similarity index 100% rename from Samples~/XR Device Simulator/UI/General/btn_bgbottom.png rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/General/btn_bgbottom.png diff --git a/Samples~/XR Device Simulator/UI/General/btn_bgbottom.png.meta b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/General/btn_bgbottom.png.meta similarity index 100% rename from Samples~/XR Device Simulator/UI/General/btn_bgbottom.png.meta rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/General/btn_bgbottom.png.meta diff --git a/Samples~/XR Device Simulator/UI/Hands.meta b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/Hands.meta similarity index 100% rename from Samples~/XR Device Simulator/UI/Hands.meta rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/Hands.meta diff --git a/Samples~/XR Device Simulator/UI/Hands/Hand_Default.png b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/Hands/Hand_Default.png similarity index 100% rename from Samples~/XR Device Simulator/UI/Hands/Hand_Default.png rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/Hands/Hand_Default.png diff --git a/Samples~/XR Device Simulator/UI/Hands/Hand_Default.png.meta b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/Hands/Hand_Default.png.meta similarity index 100% rename from Samples~/XR Device Simulator/UI/Hands/Hand_Default.png.meta rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/Hands/Hand_Default.png.meta diff --git a/Samples~/XR Device Simulator/UI/Hands/Hand_Fist.png b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/Hands/Hand_Fist.png similarity index 100% rename from Samples~/XR Device Simulator/UI/Hands/Hand_Fist.png rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/Hands/Hand_Fist.png diff --git a/Samples~/XR Device Simulator/UI/Hands/Hand_Fist.png.meta b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/Hands/Hand_Fist.png.meta similarity index 100% rename from Samples~/XR Device Simulator/UI/Hands/Hand_Fist.png.meta rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/Hands/Hand_Fist.png.meta diff --git a/Samples~/XR Device Simulator/UI/Hands/Hand_Grab.png b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/Hands/Hand_Grab.png similarity index 100% rename from Samples~/XR Device Simulator/UI/Hands/Hand_Grab.png rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/Hands/Hand_Grab.png diff --git a/Samples~/XR Device Simulator/UI/Hands/Hand_Grab.png.meta b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/Hands/Hand_Grab.png.meta similarity index 100% rename from Samples~/XR Device Simulator/UI/Hands/Hand_Grab.png.meta rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/Hands/Hand_Grab.png.meta diff --git a/Samples~/XR Device Simulator/UI/Hands/Hand_Open.png b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/Hands/Hand_Open.png similarity index 100% rename from Samples~/XR Device Simulator/UI/Hands/Hand_Open.png rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/Hands/Hand_Open.png diff --git a/Samples~/XR Device Simulator/UI/Hands/Hand_Open.png.meta b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/Hands/Hand_Open.png.meta similarity index 100% rename from Samples~/XR Device Simulator/UI/Hands/Hand_Open.png.meta rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/Hands/Hand_Open.png.meta diff --git a/Samples~/XR Device Simulator/UI/Hands/Hand_Pinch.png b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/Hands/Hand_Pinch.png similarity index 100% rename from Samples~/XR Device Simulator/UI/Hands/Hand_Pinch.png rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/Hands/Hand_Pinch.png diff --git a/Samples~/XR Device Simulator/UI/Hands/Hand_Pinch.png.meta b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/Hands/Hand_Pinch.png.meta similarity index 100% rename from Samples~/XR Device Simulator/UI/Hands/Hand_Pinch.png.meta rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/Hands/Hand_Pinch.png.meta diff --git a/Samples~/XR Device Simulator/UI/Hands/Hand_Poke.png b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/Hands/Hand_Poke.png similarity index 100% rename from Samples~/XR Device Simulator/UI/Hands/Hand_Poke.png rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/Hands/Hand_Poke.png diff --git a/Samples~/XR Device Simulator/UI/Hands/Hand_Poke.png.meta b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/Hands/Hand_Poke.png.meta similarity index 100% rename from Samples~/XR Device Simulator/UI/Hands/Hand_Poke.png.meta rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/Hands/Hand_Poke.png.meta diff --git a/Samples~/XR Device Simulator/UI/Hands/Hand_Thumb.png b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/Hands/Hand_Thumb.png similarity index 100% rename from Samples~/XR Device Simulator/UI/Hands/Hand_Thumb.png rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/Hands/Hand_Thumb.png diff --git a/Samples~/XR Device Simulator/UI/Hands/Hand_Thumb.png.meta b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/Hands/Hand_Thumb.png.meta similarity index 100% rename from Samples~/XR Device Simulator/UI/Hands/Hand_Thumb.png.meta rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/Hands/Hand_Thumb.png.meta diff --git a/Samples~/XR Device Simulator/UI/Hands/hand.png b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/Hands/hand.png similarity index 100% rename from Samples~/XR Device Simulator/UI/Hands/hand.png rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/Hands/hand.png diff --git a/Samples~/XR Device Simulator/UI/Hands/hand.png.meta b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/Hands/hand.png.meta similarity index 100% rename from Samples~/XR Device Simulator/UI/Hands/hand.png.meta rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/Hands/hand.png.meta diff --git a/Samples~/XR Device Simulator/UI/HeadDevice.meta b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/Head.meta similarity index 100% rename from Samples~/XR Device Simulator/UI/HeadDevice.meta rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/Head.meta diff --git a/Samples~/XR Device Simulator/UI/HeadDevice/HMD.png b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/Head/HMD.png similarity index 100% rename from Samples~/XR Device Simulator/UI/HeadDevice/HMD.png rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/Head/HMD.png diff --git a/Samples~/XR Device Simulator/UI/HeadDevice/HMD.png.meta b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/Head/HMD.png.meta similarity index 100% rename from Samples~/XR Device Simulator/UI/HeadDevice/HMD.png.meta rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/Head/HMD.png.meta diff --git a/Samples~/XR Device Simulator/UI/HeadDevice/HMDOverlay.png b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/Head/HMDOverlay.png similarity index 100% rename from Samples~/XR Device Simulator/UI/HeadDevice/HMDOverlay.png rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/Head/HMDOverlay.png diff --git a/Samples~/XR Device Simulator/UI/HeadDevice/HMDOverlay.png.meta b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/Head/HMDOverlay.png.meta similarity index 100% rename from Samples~/XR Device Simulator/UI/HeadDevice/HMDOverlay.png.meta rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/Head/HMDOverlay.png.meta diff --git a/Samples~/XR Device Simulator/UI/HeadDevice/HMD_d.png b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/Head/HMD_d.png similarity index 100% rename from Samples~/XR Device Simulator/UI/HeadDevice/HMD_d.png rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/Head/HMD_d.png diff --git a/Samples~/XR Device Simulator/UI/HeadDevice/HMD_d.png.meta b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/Head/HMD_d.png.meta similarity index 100% rename from Samples~/XR Device Simulator/UI/HeadDevice/HMD_d.png.meta rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/Head/HMD_d.png.meta diff --git a/Samples~/XR Device Simulator/UI/HeadDevice/MoveRotateTool.png b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/Head/MoveRotateTool.png similarity index 100% rename from Samples~/XR Device Simulator/UI/HeadDevice/MoveRotateTool.png rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/Head/MoveRotateTool.png diff --git a/Samples~/XR Device Simulator/UI/HeadDevice/MoveRotateTool.png.meta b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/Head/MoveRotateTool.png.meta similarity index 100% rename from Samples~/XR Device Simulator/UI/HeadDevice/MoveRotateTool.png.meta rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/Head/MoveRotateTool.png.meta diff --git a/Samples~/XR Device Simulator/UI/HeadDevice/Movement.png b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/Head/Movement.png similarity index 100% rename from Samples~/XR Device Simulator/UI/HeadDevice/Movement.png rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/Head/Movement.png diff --git a/Samples~/XR Device Simulator/UI/HeadDevice/Movement.png.meta b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/Head/Movement.png.meta similarity index 100% rename from Samples~/XR Device Simulator/UI/HeadDevice/Movement.png.meta rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/Head/Movement.png.meta diff --git a/Samples~/XR Device Simulator/UI/HeadDevice/XR.png b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/Head/XR.png similarity index 100% rename from Samples~/XR Device Simulator/UI/HeadDevice/XR.png rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/Head/XR.png diff --git a/Samples~/XR Device Simulator/UI/HeadDevice/XR.png.meta b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/Head/XR.png.meta similarity index 100% rename from Samples~/XR Device Simulator/UI/HeadDevice/XR.png.meta rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/Head/XR.png.meta diff --git a/Samples~/XR Device Simulator/UI/HeadDevice/xr_hmd.png b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/Head/xr_hmd.png similarity index 100% rename from Samples~/XR Device Simulator/UI/HeadDevice/xr_hmd.png rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/Head/xr_hmd.png diff --git a/Samples~/XR Device Simulator/UI/HeadDevice/xr_hmd.png.meta b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/Head/xr_hmd.png.meta similarity index 100% rename from Samples~/XR Device Simulator/UI/HeadDevice/xr_hmd.png.meta rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/Head/xr_hmd.png.meta diff --git a/Samples~/XR Device Simulator/UI/Mouse.meta b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/Mouse.meta similarity index 100% rename from Samples~/XR Device Simulator/UI/Mouse.meta rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/Mouse.meta diff --git a/Samples~/XR Device Simulator/UI/Mouse/Cursor.png b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/Mouse/Cursor.png similarity index 100% rename from Samples~/XR Device Simulator/UI/Mouse/Cursor.png rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/Mouse/Cursor.png diff --git a/Samples~/XR Device Simulator/UI/Mouse/Cursor.png.meta b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/Mouse/Cursor.png.meta similarity index 100% rename from Samples~/XR Device Simulator/UI/Mouse/Cursor.png.meta rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/Mouse/Cursor.png.meta diff --git a/Samples~/XR Device Simulator/UI/Mouse/Mouse.png b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/Mouse/Mouse.png similarity index 100% rename from Samples~/XR Device Simulator/UI/Mouse/Mouse.png rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/Mouse/Mouse.png diff --git a/Samples~/XR Device Simulator/UI/Mouse/Mouse.png.meta b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/Mouse/Mouse.png.meta similarity index 100% rename from Samples~/XR Device Simulator/UI/Mouse/Mouse.png.meta rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/Mouse/Mouse.png.meta diff --git a/Samples~/XR Device Simulator/UI/Mouse/MouseMoveAround.png b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/Mouse/MouseMoveAround.png similarity index 100% rename from Samples~/XR Device Simulator/UI/Mouse/MouseMoveAround.png rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/Mouse/MouseMoveAround.png diff --git a/Samples~/XR Device Simulator/UI/Mouse/MouseMoveAround.png.meta b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/Mouse/MouseMoveAround.png.meta similarity index 100% rename from Samples~/XR Device Simulator/UI/Mouse/MouseMoveAround.png.meta rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/Mouse/MouseMoveAround.png.meta diff --git a/Samples~/XR Device Simulator/UI/Mouse/MouseR.png b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/Mouse/MouseR.png similarity index 100% rename from Samples~/XR Device Simulator/UI/Mouse/MouseR.png rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/Mouse/MouseR.png diff --git a/Samples~/XR Device Simulator/UI/Mouse/MouseR.png.meta b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/Mouse/MouseR.png.meta similarity index 100% rename from Samples~/XR Device Simulator/UI/Mouse/MouseR.png.meta rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/Mouse/MouseR.png.meta diff --git a/Samples~/XR Device Simulator/UI/Mouse/MouseR_d.png b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/Mouse/MouseR_d.png similarity index 100% rename from Samples~/XR Device Simulator/UI/Mouse/MouseR_d.png rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/Mouse/MouseR_d.png diff --git a/Samples~/XR Device Simulator/UI/Mouse/MouseR_d.png.meta b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/Mouse/MouseR_d.png.meta similarity index 100% rename from Samples~/XR Device Simulator/UI/Mouse/MouseR_d.png.meta rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/Mouse/MouseR_d.png.meta diff --git a/Samples~/XR Device Simulator/UI/XR Device Simulator UI.prefab b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/XR Device Simulator UI.prefab similarity index 100% rename from Samples~/XR Device Simulator/UI/XR Device Simulator UI.prefab rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/XR Device Simulator UI.prefab diff --git a/Samples~/XR Device Simulator/UI/XR Device Simulator UI.prefab.meta b/Samples~/XR Device Simulator/XRDeviceSimulator/UI/XR Device Simulator UI.prefab.meta similarity index 100% rename from Samples~/XR Device Simulator/UI/XR Device Simulator UI.prefab.meta rename to Samples~/XR Device Simulator/XRDeviceSimulator/UI/XR Device Simulator UI.prefab.meta diff --git a/Samples~/XR Device Simulator/XR Device Controller Controls.inputactions b/Samples~/XR Device Simulator/XRDeviceSimulator/XR Device Controller Controls.inputactions similarity index 100% rename from Samples~/XR Device Simulator/XR Device Controller Controls.inputactions rename to Samples~/XR Device Simulator/XRDeviceSimulator/XR Device Controller Controls.inputactions diff --git a/Samples~/XR Device Simulator/XR Device Hand Controls.inputactions b/Samples~/XR Device Simulator/XRDeviceSimulator/XR Device Hand Controls.inputactions similarity index 100% rename from Samples~/XR Device Simulator/XR Device Hand Controls.inputactions rename to Samples~/XR Device Simulator/XRDeviceSimulator/XR Device Hand Controls.inputactions diff --git a/Samples~/XR Device Simulator/XR Device Hand Controls.inputactions.meta b/Samples~/XR Device Simulator/XRDeviceSimulator/XR Device Hand Controls.inputactions.meta similarity index 100% rename from Samples~/XR Device Simulator/XR Device Hand Controls.inputactions.meta rename to Samples~/XR Device Simulator/XRDeviceSimulator/XR Device Hand Controls.inputactions.meta diff --git a/Samples~/XR Device Simulator/XR Device Simulator Controls.inputactions b/Samples~/XR Device Simulator/XRDeviceSimulator/XR Device Simulator Controls.inputactions similarity index 100% rename from Samples~/XR Device Simulator/XR Device Simulator Controls.inputactions rename to Samples~/XR Device Simulator/XRDeviceSimulator/XR Device Simulator Controls.inputactions diff --git a/Samples~/XR Device Simulator/XR Device Simulator.prefab b/Samples~/XR Device Simulator/XRDeviceSimulator/XR Device Simulator.prefab similarity index 50% rename from Samples~/XR Device Simulator/XR Device Simulator.prefab rename to Samples~/XR Device Simulator/XRDeviceSimulator/XR Device Simulator.prefab index cd68795c..68d0f3c5 100644 --- a/Samples~/XR Device Simulator/XR Device Simulator.prefab +++ b/Samples~/XR Device Simulator/XRDeviceSimulator/XR Device Simulator.prefab @@ -10,6 +10,8 @@ GameObject: m_Component: - component: {fileID: 6598815579406187027} - component: {fileID: 6598815579406187026} + - component: {fileID: 8477477680821523469} + - component: {fileID: 1689558038395899221} m_Layer: 0 m_Name: XR Device Simulator m_TagString: Untagged @@ -85,26 +87,6 @@ MonoBehaviour: m_PrimaryTouchAction: {fileID: -4201894270441249665, guid: 0be0028c24f2a4c14a96b6aa39055933, type: 3} m_SecondaryTouchAction: {fileID: 5188782311186578770, guid: 0be0028c24f2a4c14a96b6aa39055933, type: 3} m_HandActionAsset: {fileID: -944628639613478452, guid: b72ab2a46d9094be38774d023beb4d34, type: 3} - m_RestingHandExpressionCapture: {fileID: 11400000, guid: 5be099e6e6012c244bb41881b6c0ea07, type: 2} - m_SimulatedHandExpressions: - - m_Name: Poke - m_ToggleAction: {fileID: -5976510165261225158, guid: b72ab2a46d9094be38774d023beb4d34, type: 3} - m_Capture: {fileID: 11400000, guid: 95c319715e9d2644da8ae09af8ccfee6, type: 2} - - m_Name: Pinch - m_ToggleAction: {fileID: -8306000708137014372, guid: b72ab2a46d9094be38774d023beb4d34, type: 3} - m_Capture: {fileID: 11400000, guid: d6e15a52475c2564ca7d2977fdece24a, type: 2} - - m_Name: Grab - m_ToggleAction: {fileID: -4373459253818063952, guid: b72ab2a46d9094be38774d023beb4d34, type: 3} - m_Capture: {fileID: 11400000, guid: 3861c298d39c60c44b16920421444875, type: 2} - - m_Name: Thumb - m_ToggleAction: {fileID: -741559036651486339, guid: b72ab2a46d9094be38774d023beb4d34, type: 3} - m_Capture: {fileID: 11400000, guid: 9d8c9c84da35a7c4c89efd57343c1df8, type: 2} - - m_Name: Open - m_ToggleAction: {fileID: -9192331390769138535, guid: b72ab2a46d9094be38774d023beb4d34, type: 3} - m_Capture: {fileID: 11400000, guid: 05293ab353dc8a747a36ed129311686d, type: 2} - - m_Name: Fist - m_ToggleAction: {fileID: 6469712917552426222, guid: b72ab2a46d9094be38774d023beb4d34, type: 3} - m_Capture: {fileID: 11400000, guid: 2a7c8ca0feac7cc44a5c225164ef311d, type: 2} m_CameraTransform: {fileID: 0} m_KeyboardTranslateSpace: 0 m_MouseTranslateSpace: 2 @@ -120,8 +102,6 @@ MonoBehaviour: m_MouseScrollRotateSensitivity: 0.05 m_MouseYRotateInvert: 0 m_DesiredCursorLockMode: 1 - m_RemoveOtherHMDDevices: 1 - m_HandTrackingCapability: 1 m_DeviceSimulatorUI: {fileID: 7662076761675301960, guid: ead42e0472b7547fbba6c229aeaf37d3, type: 3} m_GripAmount: 1 m_TriggerAmount: 1 @@ -133,3 +113,225 @@ MonoBehaviour: m_RightControllerTrackingState: 3 m_LeftHandIsTracked: 1 m_RightHandIsTracked: 1 + m_RestingHandExpressionCapture: {fileID: 0} + m_SimulatedHandExpressions: [] +--- !u!114 &8477477680821523469 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6598815579406187037} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2a798ede3f9ef495cb5b62f2a9896b2e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_RemoveOtherHMDDevices: 1 + m_HandTrackingCapability: 1 +--- !u!114 &1689558038395899221 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6598815579406187037} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 18d5c629281874bc18cb5ead1d245f6a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_SimulatedHandExpressions: + - m_Name: Poke + m_ToggleInput: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: aac4fcd2-f835-44f9-ad9e-717f1d0a56a1 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: c11ef2db-7277-4707-a130-c362223114a8 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: -5976510165261225158, guid: b72ab2a46d9094be38774d023beb4d34, type: 3} + m_InputActionReferenceValue: {fileID: -5976510165261225158, guid: b72ab2a46d9094be38774d023beb4d34, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueWasCompletedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_Capture: {fileID: 11400000, guid: 95c319715e9d2644da8ae09af8ccfee6, type: 2} + - m_Name: Pinch + m_ToggleInput: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: 76db0311-b6ef-41ff-bbaf-1dac59f943dc + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: 86573393-89f5-448d-8c62-8ab352958afd + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: -8306000708137014372, guid: b72ab2a46d9094be38774d023beb4d34, type: 3} + m_InputActionReferenceValue: {fileID: -8306000708137014372, guid: b72ab2a46d9094be38774d023beb4d34, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueWasCompletedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_Capture: {fileID: 11400000, guid: d6e15a52475c2564ca7d2977fdece24a, type: 2} + - m_Name: Grab + m_ToggleInput: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: a1f98a06-df3d-4feb-b1da-206a5f661aa8 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: 1713ae4a-66fb-4348-af45-de3be63a5454 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: -4373459253818063952, guid: b72ab2a46d9094be38774d023beb4d34, type: 3} + m_InputActionReferenceValue: {fileID: -4373459253818063952, guid: b72ab2a46d9094be38774d023beb4d34, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueWasCompletedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_Capture: {fileID: 11400000, guid: 3861c298d39c60c44b16920421444875, type: 2} + - m_Name: Thumb + m_ToggleInput: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: 5762c19a-008c-42f8-8f5b-3b36804b8137 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: abe80d9c-1cdb-4099-acb0-77a27f861033 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: -741559036651486339, guid: b72ab2a46d9094be38774d023beb4d34, type: 3} + m_InputActionReferenceValue: {fileID: -741559036651486339, guid: b72ab2a46d9094be38774d023beb4d34, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueWasCompletedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_Capture: {fileID: 11400000, guid: 9d8c9c84da35a7c4c89efd57343c1df8, type: 2} + - m_Name: Open + m_ToggleInput: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: 48f4382d-8c5f-4e39-83ef-405d16e851a8 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: 3a364d19-e512-4a45-a31d-ff022b11485f + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: -9192331390769138535, guid: b72ab2a46d9094be38774d023beb4d34, type: 3} + m_InputActionReferenceValue: {fileID: -9192331390769138535, guid: b72ab2a46d9094be38774d023beb4d34, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueWasCompletedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_Capture: {fileID: 11400000, guid: 05293ab353dc8a747a36ed129311686d, type: 2} + - m_Name: Fist + m_ToggleInput: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: 725934b7-db89-4d01-a944-8760f9586bcd + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: f2556394-ebee-4447-aab9-a0c752530e74 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: 6469712917552426222, guid: b72ab2a46d9094be38774d023beb4d34, type: 3} + m_InputActionReferenceValue: {fileID: 6469712917552426222, guid: b72ab2a46d9094be38774d023beb4d34, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueWasCompletedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_Capture: {fileID: 11400000, guid: 2a7c8ca0feac7cc44a5c225164ef311d, type: 2} + m_RestingHandExpressionCapture: {fileID: 11400000, guid: 5be099e6e6012c244bb41881b6c0ea07, type: 2} diff --git a/Samples~/XR Device Simulator/XR Device Simulator.prefab.meta b/Samples~/XR Device Simulator/XRDeviceSimulator/XR Device Simulator.prefab.meta similarity index 100% rename from Samples~/XR Device Simulator/XR Device Simulator.prefab.meta rename to Samples~/XR Device Simulator/XRDeviceSimulator/XR Device Simulator.prefab.meta diff --git a/Samples~/XR Device Simulator/XRInteractionSimulator.meta b/Samples~/XR Device Simulator/XRInteractionSimulator.meta new file mode 100644 index 00000000..c0f921ad --- /dev/null +++ b/Samples~/XR Device Simulator/XRInteractionSimulator.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a735b82e2f3ef5344815008cc33d94a3 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/XR Device Simulator/XRInteractionSimulator/Scripts.meta b/Samples~/XR Device Simulator/XRInteractionSimulator/Scripts.meta new file mode 100644 index 00000000..d11d9a5f --- /dev/null +++ b/Samples~/XR Device Simulator/XRInteractionSimulator/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 15bdba6829c554c0a9e70eaf0ffae219 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/XR Device Simulator/XRInteractionSimulator/UI.meta b/Samples~/XR Device Simulator/XRInteractionSimulator/UI.meta new file mode 100644 index 00000000..7bf5abdf --- /dev/null +++ b/Samples~/XR Device Simulator/XRInteractionSimulator/UI.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e2931976513a80848a6f75f916212ab6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Controller.meta b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Controller.meta new file mode 100644 index 00000000..cbbd4b6b --- /dev/null +++ b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Controller.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6459f8e081c2d438aaad7b67e6dff49d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Controller/BothControllers.png b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Controller/BothControllers.png new file mode 100644 index 0000000000000000000000000000000000000000..0383712d0319d56ab655819c8fe673c8f46e8f07 GIT binary patch literal 1444 zcmV;V1zY-wP)0+G&Xvu{$;kt} z0Gw{pRdV^&m4cf(SMEu_)4hS`1}S#s#+5y$p?0N!X979hl~tnt)|KmL)9(b$Cv@C$ z#2Fk3>>YoL$Dwtlis?9s7;x(zbEApEeFJ^y5vY?iEzS*EqWSDXvx5oX5p3Ww%m>i) z`VsD22i8q=pA1n;r~5CM3LZU;g)6fF4~`f3z@tZS0Y`ubVXI_arZBeFsIgaR zB!&f%o;5}y0}msi4A53nI?p!MKAYGHt<|4Y0|r4e^zQ`peikuQjzklnYoxIenIW6n z!6xjtP>Fe}p*7fE^f@84IB6qFgQie4RX|>mU{i~a(JQA_6B2r0BpP9fz4zz(Jp_Q` z(V83WQeJHI=N_B%nlop5JphFz^imM)#rw5*Un?Ftzt`eD8Pjl?g=hs&qxD#Fe6*r% zWwqgW0IK2rso<6K_#SNhqrP{dE~fyk_664|6m9EN7TQI`n9l$o>!txI$b*M zx1k~(;KN!ONed;7Y71in@92Y%ym#XL7h}|-=L+WW$yq6z8n$T*W1E(c3LGyW>p+`@ zr6G^jlu~^k&>HleHAl4^@qQVxX`$$wkiB~GXd?~^cHV+Acw@A$kC18EM2nrZ%d~># z=i+$kkzJ72<>i8_ld=``izSuLl{JMW_H(bIckcVjBlAMkH%9wT(42z@+&P*;tB_5K zXUG=)z{4|m>L}<#$-@?E>W8X!ZuY)hM1T(Kg&Okgi#RtU9?*=yw3JQ3Xr@_Lry!s<`1_u?I00E>vRnI3!%T}XxOp-2hm1b=giRmjqM8W zYUt0Rdu{x;4px<`{t1s6 zVhj`&w440yc%x^TQ%C@JqGFGhT!xSvKn|kNTtB7L9{nr#SaCF!(1$eXAHsc@5`+E+ zmcJ;_sm{{mpB^UunC0u|GmS y72HYr8$bvBpC|v5_GV;cWMpJyWMpK#A^rvV;+)-taR_Yy0000}KydJd!2wa|!SVQU>^!-~na=BIf3j!}WN1cz8I#dxRmEnXoqDgwvokp@a!A znMPTIHFR41WWv^jBV3P#2}=`xGJ!Pv!D#peuEdl?TXV@w_}LVw@x0IZy<7<|5{Asw z#9NumqX|1B^E139$h_FpO8!kIyfop-gnfc3lk796m#g$EeqX?qm_(ygKy&%qgvx|9 zbY_<+kr#e{;CqdX!;elJVENzqO3i|_`hU0rQxQey5s~@Jgq;ZubZs?}zjCxI`BMciUD7BKyeJMp~^?6Dgb;6LZZ1aWd{GR$Pek7IRYRRUDQcnaZP#DmD+$rZ8p}csY)` zptvPOg425rq_uYBYks#-@$#6A)+}7ISrCc=S*b-CM_(rjoUuC&W)UP?H$4t|O1M|~ zm8wP{}MI5?scU^Q`6y$Og-W z)>K7ksBOCDJ-SX*aOWN_dFKEW_3v7GNu5a*F!IB}0~S-{4G zUoc`G%}u3%&Uxmd0qd9g%yO?0cTOW-1v1g?V0_F1JJVA4JC95e>Kimk42-v`gOpCS z)h}zbzMo*h(RS?{b??oT<<}}>sibm1Rw}L@AW`7RvP>!K>7v6j_eU4M#5qYbEPC_Qcl zBuhQ{p5w`?q=XyrJ=_Q(%LQ3-(56Mh)Ndv{g*1cRM4x*47nVQrJyjZwi5nyHqeLaoN8RC;h!Ps$WQBkLq=&0;&mrglv`2nVq=eRxVN5 z_jny_;SNAv?j^{#IO07(yFywq*^};!j$o%|(l+ja0_;3D2DH#9Fg(P#)7if?(HA8| z0zbjbQ0@3rLbM}a^MFjj*8|@lz8estj2D>bq(*xxMYa=BhKAI%0uY6S(xc_(nFIfB zd_+l;4d1UI65M&w*jGWfjsH6bx~HDnjz7O0dK7Tihf zAp&TfQ7w8F1Kh>8=$ZJVa(zVRMQJpF_gm(Wdu1J>725H%fbq%KnPrRTH*pa1L zkMS5rLzT7B+6+Z_CCb0`E?JJ&JMhsH_i0R1*qwVI47RgWIA$vMVP`t}z1}q!P7>Pt z$f9+toZTj#cWaf-Br_xrN$HhWV-bBsg#a>1edK24$+%WlP-FjOXEPzm-q9OXkyT9O z3!;jECaX33=#ek5Yl{uq<8cK{1hgJP(WH=!YZ605`JIof9`|yX8IHv?j=64A5*j3` zGHMk$-?n`Y69fC_^u=|mNmnW9jS^)UodKdfz4fG?ZKg0)WtJyLiz`hUQV~Pcl~vj; zvAe<#nf|3Cr1_2K$hnxaJC=Acs0yN47z` zg`o*vr$tal&9SrfwOI@&9Y4ozszo!VoF5&bTj-K+hZe^R6-Y+B@Sx-+95^n?k^`XR zIJ7vYMf}sXpM=~@RK=$i$qFugO$~JC>yKc)0!O|I=^Q$8KS1X}a7~@!2|=pBT`J+p zh^lmQ=n7kc|I3FM$d0({G|M>6BXl4993c{u6Lo>shvPHd7wCT_apdc2s4Up^=(LhL znAacRiUK8dMsotk$Mo}J91?KTZrU5-Y}zS9%$G_u8Q+M0ZTLp?Yr{99UmLy={o3%Q z6OCTMe5pifNBfwvRJ-{=)ttaf-xIBR$azjHp`?%6-!)O_j>x$nE&gh>xrGG0ccQM= z&Zo4mai_d%qN!R7;a@qtoXr7o{_TYbOtKlJ;U1AAm_{`&0Xrhwv=%I@{fXeV0 z<^py{S<^lpp1usToGx`cqa9pv25@4Od~IMZV8S8c8OzXO;0WB58P%9@HgDp*%Q?(; zD6==wD#je0nITg-YIC<97!y8wo-)(kS4uE5Fy&Oq44F$eAN-Sv3G(?Uo4@c@P@Tgp znnim$ZPv<+EzA6zIyW31`3EfwPIX{-&YMO}4>i-9@JKbWMv{hdPK9Zjex1LuhpgXTXLCzNlh%gbC ilP0@|8~$YUR{R6zWkbUhV(y^;0000 z^~9tn{-&@wCsgj)t-*y>bh6KcQ;_E&a^R9@GSdoJ=Sw4Frg<6=_R2V`m|Ax)xBGt!ReN8`aWs z?~z6V%GZSF-o4G}y$iG3gOK##6F%=@cB2st)UC;t_?(Y!${xuCEi2gaEyjz}!N?kvDGIMU0RrFAjQ1kwEXCv@D;_0VU*S0Xb_y3r(h_zTEHCF2z_?UU>OZ$%^8M zPEp>(yT4TRtV1#_@~I+|1mtW(EZOyH8Y-|vuUVnY%WpS_u!3#nY-}UOG@c@`Vr6wL zvP*Vr|FP^3S}Cg6BMDz*RL54=fwG3US(W!$dap#CQr@3k4W1zbM$puA_nwY?+mJUljSSKF37&w9NN5Avg*mD;(tduuN&95~JBc ziG=Ew@gXgga>S;Z>j_A_ly3pgMgnExZQ1)1>c=m5&R&1-khMKooRrTl>=B$mtn%zR z5N%+$0SJ}zVrN9I*V0W-S$16JYTQpdlrZ@MNfrHCk< z;d;?Q^4PfSX6Y_R#CFyc4Y}3IF)Hm{DmwgkfL&+{ihydEokST`ZZe_lq4ePzy_HeBLb>_(KYSEfc~&MF`yxuniP_2c{fjPmt9DV33b>xp zGOCw~ujF1cq*O0iDMyTj+MZIca({Xr4HEGe=RzG6gQAw|8yMfBWhqTg_{(!wpUjj*G5 zSU>s}L=T%1HB??d1QbcAUcY|pD9Em3qbLp2o^$h+qnO-hK66rnymZ71sm{_w?QTWZ zG4cMBj>)6K|AgX^${&9ngkmyT+pHeS2xSUvfC$W%Kv3Jq!6QyOrd0Wl*z~OwTV}L|DaABPzG+tsgsD_s#I^wpzV2 zw$eZ2=6luL7mN=XQe%B=3oJi!i&LRmyf@g!9RV>v!j?XpPnV!usc$4P&`0#rbtdyW0e8fIHC|jeJ&%_hO1D5QX0BZ_ap)7O1KAQTsi@x5N}hhj zSW)xDwZLxl6KbB`mJsI)xy|zvxqYTYLT0hwixHM2=cDLCz)UkJBi9wx8}~Joo>249 zRpJ#FLgjPS48|pYfHETj70qxezid-{Rm@CsdH&^;$&bj8H=NM}q&mYY{EzZLG8Q z)n;`qqKD&lJmOJ+fsm79)uq3M)CyLI_vudHGtMzxTG56h4me-2{tQH~YgO!y%*^Nx z;K0{HuUXllS7Tlqj$H2?jhxagz-Jtc9I?*ZjLksB%UhW+U+Fy5ISOn*_KB_pZk}1X z&$8wzG5QZKv3Jms?g?)GxWtObJAF1~_l?9Uy%lit2bVG$2yXuT*G+#{DH@)smFVH# zamDWImzLn+)Cxu5KEJaEz|>?mwi^I@=Ak0@{#DlCU#R)3I3g$Cq*%tj`oAkt3z%Js pB-e6iLm$VHZJ#~0QVcn`@els@#aw9|%;*3B002ovPDHLkV1kZ-<^BKw literal 0 HcmV?d00001 diff --git a/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Controller/ControllerRight.png.meta b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Controller/ControllerRight.png.meta new file mode 100644 index 00000000..d1c02b0e --- /dev/null +++ b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Controller/ControllerRight.png.meta @@ -0,0 +1,140 @@ +fileFormatVersion: 2 +guid: e854b252bbd914e019576e0089dfc2d6 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Controller/LeftController.png b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Controller/LeftController.png new file mode 100644 index 0000000000000000000000000000000000000000..f24924870d42003e1a422a4cb5dce7651260c5ac GIT binary patch literal 1106 zcmV-Y1g-mtP)kd3hk_YG+b}wy&7f_+o6GxQFtaSe@-$g(gNSoHl!>GjCdf#<;DlrCxTUOfw97y~sDdnj+@&M1G^ zwj=7@I~W7i__fl>wZWCtkyIFo){w|Z-`1)B%`irIsr0gA+md=@M@~w2D?2F-;h$G! z?{CTnXpVegYTVewCbL{j8Mx>>4Gr-~~p4VtBaF`vAZbZ^!pnT2~v~N$pDBnFAdRn~nJ%7(@#~O=)5@*!06Z$h7 zOzKmik6}pg^%=kg^5})KjCG)ni0fGzIvmpgdJkU)@>NBKXk<6g5S+j+pjlaoez79I z{^sQuWEY?uTEKpK`Rwx?pxgV>!K2B>3}}5C!ax3>V0$ zeXSLB>Fv^?z3u6+n3-=7lmYaCr*Y_-{hAI}8w_u$I=--hu}}s$;_FqJ=q+lCc35qk z7=UP$Hh>kiO|au9EwsaGCm0)T08Xpv2pJ%t$G}J?LR?8+GDh1o#@kS30L~MkeafrLncp*wQI}v1 z1Bkq22-@C`H9JlDwv+65P7?#Da=D+ALFCtD>hx-?PJe`f;A`uVo-tbx^J}g1x+fTk zzU~4S%WMF+a%Ka-l`|UvuADXoNX7FfXooEK43`8JKTNC|mhU~XJ2?3I%GxM4kHx$G zbkF@Euz2OYsaa0Xp6UJNXC2TEgKaCy#A@bH`3No*9!(v+p* Y01SJAZVmp+eE#TK2Z|T>qjlzs2>+OFN3|^07LKUILKUAhQ+a;?HNQHYoLmuXZxm+La1TaKpX*Kms`jwoxLnD945V+NJTI6yHvU0Gy-+jP-3m$b;dg`V7+Zc0j3mezF^U{hy8?w+n{yXqIG9`WK3`zp!{jIQxO`s0B3vKC| zI0GdKMdEt9XfXVYhO>znCJdy;BrmsffVrVuf&Zak+Cy)X51@g8FnQ zIl!&~%RssE`C+dZ&g8P}WCdVw`L%fA3@AfWUKT?;a?2(w0E6%g&KM2|KT&3r7NEol z!6PDXX*B0cabXv^83BA?=lP3gFblLo#MaqYfFaKWqi_eP(hV+5+>;4c{YYvw0j9z% z0NpvW0CeZf0??f^wg4w_olrLtaebsn#uh*}ILZTL-19*qqE2*6pnjH^MwV~&k;SAz z_1u8PX!VXC_DoT-rCUT91?Nk~D8}Dr@0Xzdogu>qsvEo?eU*>XnV0X3fj-9_6{T0( z(0a<;1Ze-^B$I!Lp4Y(p$&Ut?{Ny&UuL^~}u7OdI|IxiMD*xYiT_ P00000NkvXXu0mjfSN8hF literal 0 HcmV?d00001 diff --git a/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Controller/RightController.png.meta b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Controller/RightController.png.meta new file mode 100644 index 00000000..9631fd2e --- /dev/null +++ b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Controller/RightController.png.meta @@ -0,0 +1,114 @@ +fileFormatVersion: 2 +guid: cbd1e2a1a972644eea7bfae3d6f2b979 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/XR Device Simulator/XRInteractionSimulator/UI/General.meta b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/General.meta new file mode 100644 index 00000000..0f6eb8ba --- /dev/null +++ b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/General.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 62b4455cddb834ec09432f4e687505da +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/XR Device Simulator/XRInteractionSimulator/UI/General/SwitchIcon.png b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/General/SwitchIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..86f99bd1cab6b8ef7b2a28fc252986bf480f29f2 GIT binary patch literal 306 zcmeAS@N?(olHy`uVBq!ia0vp^YCtT&!3HF&--SYSrKl?)7@_rGi2mVeR(d)R5O`La0S~c*> z-0TfUG_x+;tK7k1x~wg5N4W4;-{XHBObz_Z&M{Bz{p_Opc$&l6haTeQ>*l_zEwp_g zJ=1pHv@`c6&pXHZ`c$E_%ie#>qiTOV*>%XAeVx~Jb+ftl`4ZP%@9%02P6;#FKKs^_ zE^nvG$D0D;b|_t8IrnMZn(n~(9dbbHi&vNjUz>d0HLaip=p_bES3j3^P6yCurq#licmcq6p9$(o0{!?dMHuvft*;}E! z|2!sjXA53#6#Q<;nRVdS*$aPpRvmcuG{fZPTx0uYi@w=`i)Zc(-o9dMX};zE6Q?)T ze0RUiQ1|iS!H;_lFR?N1S6+2=&1>Zj`-kgoPCv5Ue{DtKl-%Qmv$iR{v2VC=Y{t44 zvl9+p*WzW%4?n;8>wm|c4%Q0h16x?0m@u5kWSDT7L18(ggCBFl95x0^UWOtm1~MdA zuK78fir`^oW3Av#NnXORQlaBh!nbc$mX@~JyB=!?Y}`BjV{m=7aE#o$r)&~UEv5he zKD9aX*WyF`{L7i5YR~`fo!T4ldu~GYRi!=Jrw_hAeR=n#FPl=|Y84y5-L)q;P}Eb@CG3h)SbZY2F?U_CrCO0WCD{3uBRgU&a(LM0TR6E z_uf5(goJcDeG4EE2m}IwKp^lwS%4=H@rE7|NwHWga(FLL!DEsGo|BOz;DOOBK-X|W za!c|?a@6j$A=-xImE?{@#V<&n$U=57C#dji9F~kEf;m7Ledt)ASbx9N?_J{Dz?4z7 zWMuk8vLo3W{)rK9X@qY{QcJu{r>S^GPyI$Ml%b80*@%TDEG)Lftw;_39X6BURGJ5# z_wE}@cvX9mB`nurOT&MK?HoYJ2N(#-#F`#4^Lnv-_6F?~4evS0H3ee{Gz`SxO+hz`O@`kVzj6fd?NTFQJRNT*TQS%W5=-U6z zydDQA{7XxCml5P@L<%6*%$-x=Q|Jk$v8wS`ql0Q%Z3+@0Rlpr{KS6hXUitk$NC`(6 ziK`WW<${FI*7jZFQb9U@>k3IHXs*acF-=!U6cF(j%b4CYZch$LAJAAZW#-gOzR+_P zmLai#)|#D5;T1!y1tOR+qgcS4xLN_a)8k55!i2Us3Y^*)>s{5SEb{HBboU}RK>Yt()QJ~0j_PGhePDE%LksC||pvoBE1 zVw7PKFHfLEr$K{*mlqySKb>41OkCTAP@)y adhi$W;qT)>F#u}-0000`rhMMbw9M`oKa!6aU`R zGe(C#PN$Pj*Z?yQ<}UK zCT7$rAWb`g*1XT1dCSo)WuA?*NMFQrH7T=sCY58s-FB zuTI%@jl$N1E7VC0Wtq4qGU{~Mz?>)zs+jyFPyri8j#}Iv0{H-8P!oJrGo{D&-RPW| zdk4q8&k#tc0(^M&l>4oGKO1(5RO!DUkWdBG^r2iI%lfSugIaR1I!|223i053beQZ8*rk+w`Dv^9P}ht*Z2HpnI9 zI@kg}x&+X?k8e7AuiP_jOd4l(2mY`Q5HDf$KRF1*#{z6YjM^a6_VfV5@Ns|*H3VW+ zfY5lZRJs%CL8KpsM?M+u*WiXOX(rR|jlQswU<+_ffv@CxCn|jCz6j;i;^Vs_Z?b?I zhH)_5r{(+ZFRZwx0M+;czkt0sC4nnS9j>3PU-~`M};$SL(<&alrQIEt8*>t<8f# z{dj84$WSZTLIk7&Ik+=}%+=;06+1^*kvT#Hm`<^6A@Y8K1cg)Ki6Y)xAw zG03K)S%551)qcjvbf?3y6reiWtwna{8n9~`Q2JCJ3zVyfZ4jiKI%RVh1MDAwo`TJ4 zc>Sf%sG>eq5*PzUvy&c4qufYIo-A_5XqJk7XBf7=4zJres;E1^48{aKoM9~Rvbot? zWX5-XOeJ2X7@^)o4#3)yPst$$sK3aZ)ESzHyv{XN9wviZ5yz^?#>Y$Rn+ux>R*mAexQJf!1hJ$w2sfvkp0wF zFuUn1jmf6Ag4s=z)0z9N>QeTT7^L z9GYoWKqR96Z4TRW0$*oXb2k_HAE6sJZoC=(0Olr|A&!SgiU0rr07*qoM6N<$f|7$D A+yDRo literal 0 HcmV?d00001 diff --git a/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Hands/Hand_Left.png.meta b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Hands/Hand_Left.png.meta new file mode 100644 index 00000000..d141b4e0 --- /dev/null +++ b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Hands/Hand_Left.png.meta @@ -0,0 +1,114 @@ +fileFormatVersion: 2 +guid: f4ae9f38f5d3b410f84c02c1486c64eb +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Hands/Hand_Right.png b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Hands/Hand_Right.png new file mode 100644 index 0000000000000000000000000000000000000000..398bb2114141e9ecd0ab52c80a5b8feb76d67040 GIT binary patch literal 1166 zcmV;91abR`P) z(=ZG`RTiKdU?!j=WCLyk!UkmmauZycpk;!C2^uEo-2^EU^q4?6mxPlY$#D|L$>aLp z^J^O`wjN5-PZW?JjlgH@N6 zexNQ}rY_ax#LSSp+J7tqk7-@<$&$&Kb~5y*ScDR=a%cs%t<0t#IcQh(@DWK_^x_j{(Eoz_BIoB|Xhci|L1gf}oAx(Tv1KmXk zKZX8#6G8!$)?n%fc(N{^!H?g<^>+}65DIuC@0B1kG|ZLmTYJcO5kdjfx=N6FgkeYz zw-Ng9O$Y_hLB8{lDPafAtatnKbIj4vb}wShfZY202Rsl?h-y8^BPJz|8=GoVBXa($<&v;!#ezR4#@a!2T3v;yiATVF@$ z;2-GZEyUt}z8@#w+2MADX%Uorm1GEvVnv zHa-R#+lifpaYcFwM*Pmsa(>e&zK=7E4Vrs@3R8h*#MhZ>iUEc^_;_^Y^uA&4Gw4+g85P+%A?b$h{&yp#WJ4(0W#z>l-= gi}5R0u3Q<-U*nzKs@DkQ*8l(j07*qoM6N<$g7RG#4FCWD literal 0 HcmV?d00001 diff --git a/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Hands/Hand_Right.png.meta b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Hands/Hand_Right.png.meta new file mode 100644 index 00000000..0a1cb529 --- /dev/null +++ b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Hands/Hand_Right.png.meta @@ -0,0 +1,114 @@ +fileFormatVersion: 2 +guid: c4d8b8565bef1451b94058ebfcab985d +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Hands/Hands.png b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Hands/Hands.png new file mode 100644 index 0000000000000000000000000000000000000000..f7813b28c77dd2197cd0723fd0ee87dfcbd3b0c1 GIT binary patch literal 1315 zcmV+;1>E|HP)n5-_K*$)(fe1 z(xli;!+vp|a>LT<+Ghq2{GWl!%K-r91oWkc_`#bWUY6G1Cp*|H)IXIma@ zX(B4EEq~dv_V1R*2__I&(~9TdN=16j21df_J}5TF;DTd98tv$T-fmJvNBWDZ;d=>ILrPGtBdxA`0*E7%9#ZKs41rMongd7OvE!7!D z?jq#*iZ~fV^_8$?GB~V-ZpC=;0XIUgWjt02KSX8MSw=`0QS~JO+62_vkN2SC#-2Zs zEGS9Kz;FbFy)Cl+VSxU7E9-e3`fNKabsNFJq+&Zj=j0!h6}Z80wERWbI>+Q9GKM$! z#o}1wqmAeS%O`su2}^2lFD|+L4T}5lI&DT3 zoFgP|%x#k(SuVeh^bylPM|3&2+Loi61Me9P^vCk=;{92X@ubgUz?{S<$Vbbbjenp% zo<-jra;o9~~io*xi@XnS$APk3J6CH6v&q_xg&NXW)6+}QgkdxU!I8Y-*Poi%Q z$>TSn_r{igSzXoHz8E3Hw@L`f?vy&eg>FUtBgS!Y{WICriFYq-Z>hc#^=@lzlsXSX zbt`UsDQDFi7Tc(S5Pk6~+kWYhH9+x71dq_~&g(>9eQn+|4lM6=^9Y9DKzFR($l0WN zw}MZ?hMVPDu`Q43>WL83Ctin(V!uXlE+Q|Ge6?}#KA(K$R*+pO6Sa|phXD|SX;^(D z`s4%OM&xivzfuNYLU_+*gx#7q#K@?*VBkdX71>7!YLF9uWNijAfiH_~SY0jpyl<_v zO?_ngfBFYH0=qkk7V^PYNFL*B_Uz)DXa7pb@~p3&7gBKc--T&7@nXUUV=k<}lCj=w&rVInZ}%56+YX4pBrL-wKGQBd3Lp{n%X zNt}JcM<)0PGXulDUCSlhYj!X*Fgy`IriA&-U13IGH*wX9%&eiR*uV7kpCW8vJ|c&d zZS0S+Y8I!=r{wVE5<61~M_pE0__P)lG)(=xZG3cK=M8v@Tj=>#aQ#(sbWtZ~{+AHwz|L{4C4vm6>f`WpAf`WpAf`WqY ZhtG{JhdxK{Lp=Zh002ovPDHLkV1nprWC#EN literal 0 HcmV?d00001 diff --git a/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Hands/Hands.png.meta b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Hands/Hands.png.meta new file mode 100644 index 00000000..ee68eb44 --- /dev/null +++ b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Hands/Hands.png.meta @@ -0,0 +1,114 @@ +fileFormatVersion: 2 +guid: 51dbca003875e4a13a6aa29047489e85 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Hands/LeftHandOutline@2x.png b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Hands/LeftHandOutline@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..49e72cef522cbe119b75d6b8949b44341d4f944d GIT binary patch literal 1103 zcmV-V1hD&wP)BQ0IAu6TMwb+4{`Yg~$4?TUE4^>J+_OaUis=}M){s;|2ib-C!f zXKg#GTPv>Sad5>zN_d6=VH)n0{+UpCGr+^sWRMDuSs|FOsZ@&aZGcBZD<|R(YYR$# zTSx({XP*z=^e7jjK#$?pFsYx-|E9((>k0sKghCdQ3o6d1xI9EZUT z&b7b70Adv212l>d3-$6i1S_7O0(6G1F+8Ib;EXN;G#19AV>xn}EYz-HPysTdrN@v@ zKEZgDN*#~4zYu|z0$8utYg*cNuB@o3u|kIWCKEGT&k=q21X+l{d2@qxp0X26yfRiW z)2v`&9Bd#!%~+mq7QlMz--A9l19d*rV5!iIU5SPQ*kjZ_aLej^Dsbt_Pta$<$O^F% zX?-L@3V&ty&k%ugiu`6)y=gC-MslB`M+k=n-8v1p%aj2cBlr#COmu3QmUhNc^a%}e zXeHtbge+hh+L%qu!z*Cf^LK^jS3rnFY#gWoEcO6Pbvdnu70Zzdlm{bhCuF(8ybwuP zrqHaY?HUxg`Wr2QW9>^Z$Xo2kMq~cgSz(@w&P#~TM8o3|t0t})~N@IcTrLyXw+cUb(a>|4G zWr~6J3~bPSuzNnwG@^nLB@foXz?MP*6QJ7;DcSF16CqY6w%yG1G30wf4iiHta223g zMNh0S)fQ#|4RF=dei%}c6Z2Prvj%fuJgwm6ZR(+(vc-}f`FY`^ux0mUOoymFVJ<`m zujtfDZ{dT0?Hp{}I53oR%mniNDmr)-1_kRpdmLapZ5ZzbVmX~(ISxx@A+sHhiQeasFg&%`)+=496q4CP^aQY+v@-^q$OtdP`o1mnrA zptw#BDKT{{2-iu!;)xkbY6Yx6s=T`nrv6gT1o55m77_rve*q-_Aw&w}IB9prZmu)h zb&mO4#i!P5R^`tQ{>?OhyBrI{?yW07X8Ab^+pi&0pu)M6MXdAm0#8GQ;^pmF`~yiP V^La^ha7h3F002ovPDHLkV1hyj@WKE9 literal 0 HcmV?d00001 diff --git a/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Hands/LeftHandOutline@2x.png.meta b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Hands/LeftHandOutline@2x.png.meta new file mode 100644 index 00000000..58aabd8d --- /dev/null +++ b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Hands/LeftHandOutline@2x.png.meta @@ -0,0 +1,140 @@ +fileFormatVersion: 2 +guid: b658f477a2ba14f238604081771bf274 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Hands/LeftHandOutlineThin@2x.png b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Hands/LeftHandOutlineThin@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..af77fa49be852f88e6b7b0bb181e9dec538b6efd GIT binary patch literal 963 zcmV;!13dhRP)u)3aP9=hZIDg?8*rVVY(P3e=>*UTt{a36pc5oF0dxY_4$|=>Okxt#*Z-cM ziEK+hk}NwAC4jXyb8X|=f!o?OL;njLnVr4Fj{YT_!Q8cin^AI)%FDS`EX$P+KepmF zqf~IpmH`hfcQ z`eC@=K0G{#*B)J$yA~BDH-Exo>K@Yt-C7az9b) zaIB^d#1O3MlFVKi>4Om5f=pic*tM{ipbN>7m1K}}doXPH_gjaWC$&!2dek(Api*M4 zJoh2zz99%NdSnM&MJz$do#w4sX-%gvg~D8OZ+L?=>;E>#Tq>x+92j8f@p+2R=7IT=w-v<@bfjuJg}~=w&dL0K zr17{WSW`cYkW;%=wb zX;#`=Xit|=%e(uPe@|ge2_)u<#40ofr6NFb}+42_zdOGy-5lQc0q;R`V_i;(+Bs4GL{Y(Ex%A4Y6F_09b4VIf=PHH7HOytA_vCg%KaP%sjlOZLU-Yj<@C~0J1>?PVU z_FQO3m6d?r35U7VUb5#u0Om1@^4?@k2zxHz@%C)s%)A$(Hb-Dl$&03RN7(jZU~sJO zn?$}vKGS_6Ui+pBb~o->ZotNJaIV|HsgjtSxfa@6l$5NXpu~WpT+mQJ0w?t%hIX{x z)LvAf&1o!Bdl6oE)ZOx$(t<|7t^W$4HIxb|ylC5BhyCa600X1EXonnUHyY62Cqqyr l4Q+sAVTZ$~$Ltn+e*xRIb@?|7YNP-F002ovPDHLkV1l+fx)%Td literal 0 HcmV?d00001 diff --git a/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Hands/Pinch.png b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Hands/Pinch.png new file mode 100644 index 0000000000000000000000000000000000000000..60a526846d87705bbfde74d6864c75a6605006f4 GIT binary patch literal 1373 zcmV-j1)}-k@XyZxFgcHZYwa?gVish&zGl1W6}=PT+Kct1gH}$ag{l3*$V0 z@9|L333R7JIvozcg$qXo5f|!sP)DVXM_taPTR&=#fH)i??J<+k$CR;-N8i zFh^9!R#r#%D3dbn6Q+Hl>vGEwIm`{CgL_j!rt^r58#4yDx9Zbbdx6opEmN1G;Soan z)G|QE$n0E3jKRAA*=K$JWLI2WUDfLJWXaj2M!8mPN=D|7QJ$RvS_M;~zU{DN0F&>+ z_0MfV8#Ov12KcSd3G!?9M}7Vyw9kz)_ZnsDw9tS4goy|-Ky8#Wrv3xC`J&Iigwf57 z@*3s_HZgun!PK*}yROU8vBX&uWCas4)B`>_?USuL7A-<|e-!URRdwRI~peu-W*uER5@!^p0aUN=%u1 z?p*b;8R`MVLXfH3f?nFvwyiz7TH#Fp`Rf#;e=Gx}M%jD?a-+lu{n0IrReAG-r2&-|?Y)r-odby4D7S8%80UMCC&($FXFvD~4>15Y5%%o^ zriPYfuR#c!12m=qXd+8N9&vgvX%|^Td~U42sZUQ31ANW?RLEy|slLF8vO3tTPIiv+ z)~D?d4v5;v~E zZs23G^k^4T@s_x&5c1yu%bqqXj8BD3w%NtdIe>e=Hj*$lo>2(ZFA*G!TPdD(pJ>D7 zlaw6?cDKJR3x|Bg$d}l7(j+UzQNeDG?*)e}XRHkjMBne;GAhk0JJesEAvV}ej1Z3j zvel4L*NRuz4;kYIVuIZ)4zWFktm7Ul4CDWY*FJ{q1ql0nFTtOEfGjD02l50eLCPFM*@S9M$iKLBwiSL7$P#39cGO??3qZL*}C z!p3}_D&Gil8N>h&f9bLBk>@rlFNqUDo|LZyr3y=SfqZ1ShFGYZZ>@)w9&HLiq4pBhSDA9`QdX!IL3Ydp`t+&=aQf-JQ>t40Ko(XNLlPa$}Voy9dLos~ZuKB9Jk7TU&fbJYYS=}0%Z1Q%J f?|Bz4T;TWzASjwBdPxA-00000NkvXXu0mjf&{u-c literal 0 HcmV?d00001 diff --git a/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Hands/Pinch.png.meta b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Hands/Pinch.png.meta new file mode 100644 index 00000000..3c8c54db --- /dev/null +++ b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Hands/Pinch.png.meta @@ -0,0 +1,114 @@ +fileFormatVersion: 2 +guid: 45d5d868f6ac7433db8072bb252ca290 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Hands/Poke.png b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Hands/Poke.png new file mode 100644 index 0000000000000000000000000000000000000000..11f3ee861fac2d9d8d80efea893000a56e8d5a19 GIT binary patch literal 929 zcmV;S177@zP)P`@4f_ejcgQgQ$ognE1QYNrBK!FI3Y3LLAOp1!b zcZZWD(IN-}{6GSTL?V$$Boc{4A|H_i1^^MS=x`;c_U|1@nIy>$0^!U6(#Vv=kbEJT zK-Eyw8gg!3OZDsxgoG5BVY93AwG2JP zsyx?bE}dX})YlpUR2jQ_rY@Hx-^nd=@QCz$3a3%_xc-l1X@^zPqJVBZ$1+b*OE?31 z?vxH+dlWTrx&ivaZQ)LQXuK=&tViUt<6EAc;dn?{r$i}e=KPot)8I~5HnbN=1KT!S ze2;gh#=5o!#|qdu+4-GV|0(&!v$o`#{X&Rc>RNuMQ04Q6&wbL{qZhx{e)biYR- ztFA2zht0z&)abtjA7GVtd#z+lQz7f3LcoA)q!K$0GZ+!d04exDyV_X10K1YHjw{kD z!e0;=(W$U>dIXh#L<)+c<(TS++aVRO(`G~RxlFQy5@0V z%4bt*Q=W`_G>)ds_JD?){3exix)Cr^wnA?dlJ+xtbkZ#4S8-T$??qd!Uwf zZbjYc%9J|7t9FLSI`~2m7AWD|!$U>*JYX7*S(R{uqs;B}Z!xrZFaUv18EIQNUf(b@ zQU$rd7%N8GMFv$vngSK07tTOYSuuQoG${9c@c~Ov!gSoy7sJ~I{SQ*5hZv+P;L%zB zoY00Oh2WP@FdmZisgW8OK&k>i z1p&!|BKR%TuiaCcp#UEt4JRgmTkinlao`mgrWh}-PD8tke{y}E=t7dJKtp~<1K9|& zZB(SagqRDhsT{Y=YEri~#mcg&$j(-b4PqdJOc_ugpO|}4AIW(V?nX!VfRcOGA{^qRgGe-*&)DXKQ*o~-+g?}U*9iLfI}kY<3p(0-sz^ZFOV zY%>NMG!H{b7D?7hfxdP0%LuK&frJp-GenpOvPyK>V2%B_1OaZ43i=gL5!#x`*hJdw zJ9G@)rX-CO#`AZJ?=S(5rxs|`khRd48oBTUpMOh-kZnYP9b|?zO2@kLIPNK-R{__i zVhY?teg$@t^&Pz?^0hQLEp*mQfoI4Jd|Mb3diog2~7DH$`WQmcIy+y znz@pK%$UXcOaOJIe4jwy`0r=2J`uoODO;L>VctK>40}O5%}|g5vs<4Dqnk{9t`gXO zp`UF1DgUivHx_#@q)2rG9K+rZnOsfdlE3eVW# Z{{XU@LBhQP6g0`-2tS6kP1R7@O6-MU{V24fw>CIRj`p@_ZaKsznypUo}W&u z)$Vw_`fx-Ofth3b56ED^(DY-w)TBuo2j?2|b~T;Ci2EoAoMyOnQ=Y(Q?Y%u&o}uy?Mn`cXbr7ApAb&4%@}WfBDRC| zIbfWw`0@cocB5b)v!Mw{Y=>TwQ`bIQd8 zs!2{=41b&MVucbE@(zD6BR|evhp1sJ0lS{FD}F4RSjN&y9=_ia95U%gFewMyjj%_+ zz1W6fCBj(jzobVx^J7BZl^XP7xCbY9VSL>Jr0-DDNI={YRpr2K2UT&-c!Bg4)nH2+ z0j>g7d%}D;A(w$I*p^5dB=2(AH<8PMTmre?Z1g%o3qG$S%}~fR0(`I2%o8FF<);Ai z80=b)ImkZwFDeirsdLa8t6LbkKRyvL-O9=)r%H{1UDe~6$b}a|z){uNd3IM5M;RZr zS_3%?$r-gd>RxlC{{Rl{Z7mbtER4ATB@_Ilp
X|t(6VE|vGJ#?PIj~mKQnh`u? zV~1MkH?beF_AR7g@_x?6!A++^hsk)J&T%Se>|y_8gwN|%u%U^-HNV(~1lkXlzdq(T z)gTa_ucJTjWU4{H^;DmCGS$4G`Pk1pxoQyDz~^1l0L-Eq1oy8`Lolss9>F~ihf}`u aiSrLN)e30ustjoW0000=lJ57)a;1-3W8fGb1xxi);* zc{9Ngy*XSddRUmlp%@cbeir9@EJ0Y&`U!0a-HhM!AZO2dL~#ZCh0w=>M9Qq;grwM2 z!$Dr|$)leK?TyqIBg$qtz9tZ-$ed&CVz)@LWSxf5YH}Y9Q>fbGT>FQ}4va!&g zn5{!cD5tVZ>kBggwsb8V!aiQf{Vl{(oX9RcH2Ho5esb*k-XWf|*bNClYAVy{w-C=+ z>_!J5WJ1#uR_V|Y%317s1E43CmON^FpCfspOU*WAe{e3lH-?dKj&{GveId&R?dyd~ z)xmHAd$8#1zsV(zpDty$3&XkPkGVP;+XOw~A*w@-E*nezlSPkOwW%endFawOoXcXD z=%eiy{Rt3d8W{u^F6YIFjH)Yg+coS{s=k80jT%Nk{}H*Wn>l1x=x3GNuA$?jJvbs9 zw06gC>@KwIQr}l2?afS6a#LMuqpr+l*N_#&Mq?_a)Q}nU%r!V%qc0#cQs=$lV_`OU zCYAmZ)c6j(SfjtMr)Lr?$Os;e{l?XZ&IJMkc3_Dem|NP+M&HnJwndO%7#YCnM8(BAoiZwi?clA=j@BigA=Xa{gOPxL`3AQElYc9d3!DzF8i4}{8+ z(j%|Z?%opprvTeaLq=$4LTswOJ)`|M&A5pbyYvy5k2MCQGd5IW=}!q4 kW|LtUhG7_nVVKX$UpJM$U#ICOz5oCK07*qoM6N<$f+oDp2><{9 literal 0 HcmV?d00001 diff --git a/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Headset/HeadsetOutline.png.meta b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Headset/HeadsetOutline.png.meta new file mode 100644 index 00000000..d5fc4671 --- /dev/null +++ b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Headset/HeadsetOutline.png.meta @@ -0,0 +1,114 @@ +fileFormatVersion: 2 +guid: f9cb67e576d274c29bfa90e7bd16ba32 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 2 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 0 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 1 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 1 + textureFormat: -1 + textureCompression: 2 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Headset/HeadsetOutline@2x.png b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Headset/HeadsetOutline@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..2ca02788c9743225fc4a17317fe0ba34545eb86c GIT binary patch literal 1268 zcmV%6PoWfby(n%t1!uQ@i zfvx+|=_H@d9zg~WvCz##(^%7`rV>5|UNk*xT5H;lMx#eazz8Bi4!PA-5q$=1H9cr* zw4=6CCb4svQ)Ze9cFWAt8ul~wLWcZLl+<3)@3C`#rRhhElf2N5xz)781I+JQQwbj& z#zsw3O)YjYha8w_(X?a&je;Bar08+dCTW7n;~OTZp{4cdK~c{qyo_Nkn1{_0n!=eu zk7>-tD0dKx7~_~RoGEB^a0eA3hB*tl3eFtlAp5Yn=l4c#N8Pma*F5fOkSj3}#-q$6 zUu*aW=+mv~QR{yZ@>jZ1^mnTH?)o~}5K|xkdA-5zW1hoYU*bDF@@Ze3dvs%rZW@QR zxo~eznb1-o?6$|4);JcsPdSUcyy95*&ZFDCx4^)DLe92)wR=-pZwriDGR1~((x)7c z^9qHT=>T^3#FiY@r@LZfLULNjLG}^9;}=UNWE>E%V0~+l4T$FzLFaqq%$Xcf-lhA@ zSVX8mUmiUb7w|e00p@9}V+MF<5D8}j>qy>8%FCjy>Ax_{*yhYW`Zm2VuaeBZhrgES zW|P?33pSLlJxtvDC8QZxNObk^jdOLAoLwk#d4yh&7p*6sJ+dd%KBOM^Det&*dKajeT~WJ+JXjqS$nlNZC&+`<9Xb-dIY+woOGiN}w$#S# zImL-|KRWV;@aCLYT*CPy+Bx=|@)h!6XKf2|Slzi5g3^)aMT~QPQ!9ST48U&0&k;OU z_Z8&9>Xt1}{)iU#i_TG)3|<}(ms_1QqJl)QJnbgXPrdqs=MW$lzJLVa;povO@G8tp z0_W0P3F+YMrsbi7*@X3tI%Q+`6dzrrccLd&H%}sKLI2%bu%LU`@-sHEMmmmZAQ9L- zz)E%Bu<>mK{R^wWUQkl6QvVe*vh9lmQsR~k)KGL%|B`0eclN1W-6$_vln@@9T^&1D zVbHS!Msfob_7|KQk1?u8R*M6bJnWVsM7mM<5W&O5FYSeb393K{+|Tq1{bf>P*m!_f zVHmBZiAQ(q(XA53V{y%ID7u*XG%#U2Wi+@vu=`5HU`hN1-5=v|6|oBFo-o}NCZrp9 zh?>^D!FTi-yd$^~=&3wn_pNJkekHVtN6k%N2VRWIP1T2th)U?N`}VblcYqVg%4f)i z&1wlJhL(A6mr?|eE#vOs#E2R*9={^3;6!jjw~FB76~vQ$<>8D~wp#Fb!(8M>k+VEf zjt?~(LLt5uj{IBLmo3dc@MnPC@R$;3MgL75<-0D&t{?$42nF4$NG_d8JTzn&n`Vzf{;y_JV0a%GabN>?6UMt(Hj%%`|2-slA eMA=h}9e)9^oN-8EB-7Ra0000t_nQ`}Xa7^ebo9v%j;tXBFokJ81tiN{V^@ti9{!t~c*b zjJH}T(ZFxdQqJCuY znya2Ua{bQrbK&7L9=={Gze$s)PWC;!fnZ^peEq4Zy3rpl zk+f=yn-~8c)e82^Ug6a9V8WSlTf2qY`#QD0+<(v67P~4rMHJkQpw z$=Bl*8_qv@a3^4O{K?n*6QgH*U(UBL4H&*LyHl=p7ZixK+if!oIhwx9EA3A2{h0K! z#%lqs2B-h+{`#Zkj@|{qgI|t5EEi9I%|30WS4YAjuEYFt-r_mG_e@PRdepb?)SFia zzg;@I+lgiF`s;N+RxdQYGv!BS{Eu5AZ1Qg|y`FW5pL?o}WY(ukCTERoXZ($Ku=%*X zw%)7bC1?My`NfC%XBCGZTl?=~o4Uu^M6W{+;%jnie;mK$na(W1y+1yu!lx$x@PF=# rsEX)A6TX|-+^YZnwKVU;|G&&9#k@AWZOJ?d%svdBu6{1-oD!M<_9JQU literal 0 HcmV?d00001 diff --git a/Samples~/XR Device Simulator/UI/ControllerDevice/ControllerOverlayLinesRight.png.meta b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Highlight/RoundedHighlight.png.meta similarity index 97% rename from Samples~/XR Device Simulator/UI/ControllerDevice/ControllerOverlayLinesRight.png.meta rename to Samples~/XR Device Simulator/XRInteractionSimulator/UI/Highlight/RoundedHighlight.png.meta index 6224d656..be9c994b 100644 --- a/Samples~/XR Device Simulator/UI/ControllerDevice/ControllerOverlayLinesRight.png.meta +++ b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Highlight/RoundedHighlight.png.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 310ef0f38fe364cc986d05acdbdf1183 +guid: e6eb07daf4cc52449a15922f0b93851d TextureImporter: internalIDToNameTable: [] externalObjects: {} @@ -63,7 +63,7 @@ TextureImporter: textureFormatSet: 0 ignorePngGamma: 0 applyGammaDecoding: 0 - cookieLightType: 1 + cookieLightType: 0 platformSettings: - serializedVersion: 3 buildTarget: DefaultTexturePlatform @@ -90,7 +90,7 @@ TextureImporter: androidETC2FallbackOverride: 0 forceMaximumCompressionQuality_BC6H_BC7: 0 - serializedVersion: 3 - buildTarget: iPhone + buildTarget: Server maxTextureSize: 2048 resizeAlgorithm: 0 textureFormat: -1 @@ -102,7 +102,7 @@ TextureImporter: androidETC2FallbackOverride: 0 forceMaximumCompressionQuality_BC6H_BC7: 0 - serializedVersion: 3 - buildTarget: WebGL + buildTarget: Android maxTextureSize: 2048 resizeAlgorithm: 0 textureFormat: -1 @@ -114,7 +114,7 @@ TextureImporter: androidETC2FallbackOverride: 0 forceMaximumCompressionQuality_BC6H_BC7: 0 - serializedVersion: 3 - buildTarget: Android + buildTarget: iPhone maxTextureSize: 2048 resizeAlgorithm: 0 textureFormat: -1 @@ -126,7 +126,7 @@ TextureImporter: androidETC2FallbackOverride: 0 forceMaximumCompressionQuality_BC6H_BC7: 0 - serializedVersion: 3 - buildTarget: Server + buildTarget: Windows Store Apps maxTextureSize: 2048 resizeAlgorithm: 0 textureFormat: -1 diff --git a/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Highlight/highlight_head.png b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Highlight/highlight_head.png new file mode 100644 index 0000000000000000000000000000000000000000..f50d3eae947e2acd4389ab224a2b2e3a24c22c5a GIT binary patch literal 1167 zcmeAS@N?(olHy`uVBq!ia0vp^IY4}bgAGVlX&&)oU|2f4?k257zW}As6|dOx8uA1B9F}rPH$VTn zch`cAijktm`@hr+CH=W~gZqD#alXu9@tk^z+_1S>>aANOog=t6+uJsYJTj<1et5Qs z-QSPTeqMZjuA84X?|pw+a>x5mPpU3lS}Jlbc<#Ob|F)S&%$d!-t#ZP(UDqeiUp1ku zIZA;~FFdT?=5Dumx$<^))v)(fMMBQEII?<+R?4hhlXusxy3G3G?4J5Q!*fSZnd-k1 z;IlTA{rh)~b^c+m!VM{iU7!?`>A+a)vL;P&x+2$=`SGfMNM}=rE**}Zb@45M8q^17Y6vhK3urny5y*B-=;;U($>F`Kc%b5 zult7Y@q-`j&#V8--Q}CA`$T2>+0|!blU5&jnELoz$@d2}Q`o~kyLi1cSRv}weY$n8 zOU;WT*MBd*Yx7l4C(eDVOl5Q6yU64D)y+p&{#g3G_V?+~daJd+Lwlq(Tc$hqFZy#U sr0zh+&zTnX)x34T_m%(JS^S@I!2_nk_r_D!0}C1kPgg&ebxsLQ0GSj0DF6Tf literal 0 HcmV?d00001 diff --git a/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Highlight/highlight_head.png.meta b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Highlight/highlight_head.png.meta new file mode 100644 index 00000000..dee2ae4d --- /dev/null +++ b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Highlight/highlight_head.png.meta @@ -0,0 +1,140 @@ +fileFormatVersion: 2 +guid: 1a452a6a86d684a7ba39272e4e14a1d6 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Modes.meta b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Modes.meta new file mode 100644 index 00000000..ca21e920 --- /dev/null +++ b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Modes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2f2b52788ce4b4a84b1daf8e3e04dcd7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Modes/MirrorMode@2x.png b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Modes/MirrorMode@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..85c4bec207d6bbe1d44f778877ab34b4f578b57d GIT binary patch literal 510 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9E$svykh8Km+7D9BhG zNupn+*h5A534xT+-4rNpKV6 zOSY00zW_G{=`F$&cxUmxU@Kw%t`l=oX~ukxVu5?=k%|S5JDX)@Ft|X#X2WADMp}|f zV~<_iapZq!z@}!Q*<1hDsV{iIDSe#D;r!9)eMxVRm6dkhJbmKM4gL<@n8SY#2$}BM zHS^V_XOr^Z{q9(5_;ym?k0tMWI92lJZZJ{PnG*BzXo&7@=acK#F|2jXU^CfPs%oFf z_-q%~le7eXgHmUmlsAUWmio=|17(DlNlGJ3w~$Jayrk|*#QQRelsU}CjNSTK)D_mT@0SCelF{r5}E*$-`mCj literal 0 HcmV?d00001 diff --git a/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Modes/MirrorMode@2x.png.meta b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Modes/MirrorMode@2x.png.meta new file mode 100644 index 00000000..56e4d153 --- /dev/null +++ b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Modes/MirrorMode@2x.png.meta @@ -0,0 +1,140 @@ +fileFormatVersion: 2 +guid: 4f305c7c25f0148cd8a3b2707827b5b7 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Modes/NavigationMode@2x.png b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Modes/NavigationMode@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..192e8206ceaaa20ed28f3dbec66794a7423a884e GIT binary patch literal 589 zcmV-T0Z@MkAr1V(TKHmDoO2yReE=mydWYA29Rpq(IYpc}j<$MdR>VBiA~=>K<@>otU& zt27UJ zC}C_s(ViZiQy~Y=xRUTz28T^21bs?TLJ(800000 b0O-*#Cs|Rngr(F;00000NkvXXu0mjf`@Rri literal 0 HcmV?d00001 diff --git a/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Modes/NavigationMode@2x.png.meta b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Modes/NavigationMode@2x.png.meta new file mode 100644 index 00000000..3553906a --- /dev/null +++ b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Modes/NavigationMode@2x.png.meta @@ -0,0 +1,140 @@ +fileFormatVersion: 2 +guid: 4d2bd0d57837a4c7fb2320a5edb4a318 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Rotate.meta b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Rotate.meta new file mode 100644 index 00000000..e573c03e --- /dev/null +++ b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Rotate.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2bdb443e45f4947cfb486eb765126e29 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Rotate/BackRotate@2x.png b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Rotate/BackRotate@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..8e665bb2d5220f8ead0801b644298255f6dca4df GIT binary patch literal 774 zcmV+h1Nr=kP)-)Jb0x3oc-BfTXzE0^u!4@nhm)=nr<(_Q z;(yeFBL+PuFvt+l%5Ek8UuhiAN}dxKm;prDT0U;P=oJ4)d$!(J3CxT@=*3Ac zfZRLPeRrTs;p{L2(1eNPk+GHK9!LXp76(d#Ss5TKTWi4o0LNU(F9Zf@fWI>CWIW3F zLl}~K0IU@DC2&bt&Xime7-$mYwwZY^;}(aFQcy_bFdCma(MrJ zKsDf+vQI%y&|!*!41rq7L;3>R#X~PB)Z7-dvvfdqgxunE2dDVpGTq=P0;B2v-xDPO zT?rnvNdL}28?E%8`aJ-=8wAHE!mW?j<-lteD$ZAt+z=k9=sj+eB|XVb_ZDuI;+@~p z2;e=zLvgu7lvqF4U$po$^us5(efx7_;U8tS}K}r-Own*{a z;Ut=pd;md^1PLS(i9{lixD`aSWZ8Ogm=mnB5=H9rs& ztk6bLa>cUtt*&v8SYTx`ma|Z>Xw(;q0jlR6VnI=|r6AwuiV@;jBX}=32?e*}nYChs zHDaNsm6zg~t>P&eVu8BD;!f0S@ggcOSPJD1$}`1~k%EWX!{SP*&*+7&5=xp!N#SbjnKIY|;rvn0SD1ao70CArMRqpro=L0wI(j_-e{at&qkv`}Ri|!3tMv`;u=nzW)hZ?nL>BIYHf=fZ48* znFrMPj7{aTN5hRy=>a9C2tDue{GY5?1VZZO4$US(71qOG(={DSj?2kK`8N!)Hb5!L z-*Gu#MR|{@LdIEKB_DXk)S(wPJVt)&B);{4siOp~H+cc+`-2W4pm@Qk$W717-*a%S zU(@3SuO1Q=*AMTE0JZn^9!I>V9i<6#Q`CFHvQf@_-_8f#k>>|Chy}&952WM}y%%hP zZFvnEJ|%XuZSSjPg#5y&?5V!l$&YKN#J;ioLe~&am>WLW4W121Boc|lJM#~A&EKIKn+!zQ9=NY(-q2XW?6yGK zqUmk}?-t=Jya_FN4bm^zZg7?~U!Sflv(tki`@xbw_hZiqD_2$?o6y1mG!_C9lFrC@ zYVItYSTtqQB_R)Y?lSJuxgOVpJ5Mgjd38Q*y*gu||6Cu{_Gdn&mws_y`Q|paX?N;o ze-~fg-0F&Qm6IVC>ec7^Tscvo^4P;$NjA>gQi3z$ve3)@?tiy%?5vE+IVrxcHjMwF ze#67UcWWhtJ~jSMPnrakbUS9m<*z@#RZ(>yX^0n7FhyQhV zJ8-os-o{%<$MWX|Bc`C^9y9*j%s-m>PO|KYw>Q(3LmAIKnz#}UE5ARt+m|JuR1Tr@f0YTdbce6Gy1I{3`Yyj-qI#ZH|X8oSo;T#((Fy)Ac? iKW$pY42zqFqrX^PRDKx7%yfJR67zKRb6Mw<&;$TUp#K5@ literal 0 HcmV?d00001 diff --git a/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Rotate/LeftRotate@2x.png.meta b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Rotate/LeftRotate@2x.png.meta new file mode 100644 index 00000000..6e2b138c --- /dev/null +++ b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Rotate/LeftRotate@2x.png.meta @@ -0,0 +1,140 @@ +fileFormatVersion: 2 +guid: 065d9dcc5f44f4313a79886e9c40ea06 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Rotate/RightRotate@2x.png b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Rotate/RightRotate@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..48e0ad1b5da85d025053453c8e725b41b7f8e812 GIT binary patch literal 626 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9E$svykh8Km+7D9BhG zYk_hFwgP)HxTmW!F2mH@-RV?)(?uENijO zZVBH;wFO*fpGeG+`%v>r;M{$;&l+2g#)(YX-Rm;%dFvH^FWvKt7$vN(`(Lru-dLX1 zxroui>QUjw8z;OSyW(Fsbg?Ovt$Y8%ODuG$$*iW4|qI)eZheU;o&kr7wTudD8hgDee7tii(yTYUT;Q z|4M~*Enmasg|1%iX3v)T^0sxI`hEX{a@_0dQVrg#+@oYZT=hv;vb6EwiJYwJk<1nO zo$c1Nje@F`$9uO0i)8!U4$j;>ck6ui^#4yb++6AK=+({|xo4Yi`@am<oVon3Nk`Qb{@-BZ8+l6+b5CZ_zkU7sluu5L``W z$lZxy-8q?;Kn_c~qpu?a!^VE@KZ&eB{&r6n$B+uft=I1I9x~uzNjS_@($aT;W6c4U zmue-(ZV4>?2RM$mGBJI8e&d{{-*1t6UoBN7o`#8~E`C!=SA1Ug!{|e0QtzbMnP(HP zCq9~0JGW+n-OW4GU9C-Ku2YsibE4NSD#Z46&z>pM^Bv~J-52Ai{Pn4jUEuob>u+6S z;_Lp|GwwaLpXH0IPT`BtHH9y7v)b>iD|>PK3h%G7(&l^1&0hS?YPMTem$l(&(T7LZ jGN!#r*r__he+~D`4fif?&$)FI=miE(S3j3^P6``W z$lZxy-8q?;Kn_c~qpu?a!^VE@KZ&eB{z6X|$B+ufty6M&TMPtTmM?#xGN)zo0ZU6x z3kNBo2@HG(4jQp|{NT8dR~~P4^Iz3vvrNWhmnXd08oD#0(xR3*>9N1$%h)-2)lmz=ee)fy>)NbSZ80eL zGlOs52a)=j^;>gdykq>EB1}|0RF|?uC3#Ia9m~1KV#*gEOQuN%e!PZPdlG<-W$<+M Kb6Mw<&;$Tg&|Omi literal 0 HcmV?d00001 diff --git a/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Rotate/RotateLeftArrow.png.meta b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Rotate/RotateLeftArrow.png.meta new file mode 100644 index 00000000..fdabe4b4 --- /dev/null +++ b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Rotate/RotateLeftArrow.png.meta @@ -0,0 +1,140 @@ +fileFormatVersion: 2 +guid: e49c8945f20a44825a5c383e704bdd4d +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Rotate/RotateRightArrow.png b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Rotate/RotateRightArrow.png new file mode 100644 index 0000000000000000000000000000000000000000..7a84e0f8d80ca496ae91b5b8f51a91b5563ed57c GIT binary patch literal 275 zcmeAS@N?(olHy`uVBq!ia0vp^;vmey1|%P7U0DF6I14-?iy0WiR6&^0Gf3qFP>``W z$lZxy-8q?;Kn_c~qpu?a!^VE@KZ&eB{t8bQ$B+ufw^O5eTMYzUwws4D2u)~U(OJl# z(!e}NfmNoVIrWrs>CFMagtpYpBGqQI};IpO|vjT3uS)22Uu;nB~Sd4H1rpBJunJ5RTW)L%O4CB4M# zm`~KF$tC-HrdBWA_{n=^h@6UTqxh`5es^1!^M5+3@QqYoDmKO zCp0iGQDo$t+|Y7~k+){T#93BcW&Q!vUkhJJ{l!zd&(3-7a{Ykiueq;eRyF>L)ekuSl`HF9oUf>ZT7Nr4?YTzpZ5A+XZX~YTi>Y5txt8E8#c@E&0PlWE%$CR TpL=}*=wt>@S3j3^P6L01*)p z5fM=#B67Bm`|$XJCT?K)%Rr0axBl#oN_HsBO*{4TorMbCpd150IR=1o3;^XA0Ln1{ zlw$xW#{f_+IY2ANSylEibDVWeyvC%&Yh0@wtIZr|B}G^oU}kvd^~Y+S0M0q`8rcEl z=WQ=F0~qlOM#v2i7~Z*{1bd^KEQpX3AY%9%O0hS4UlJiTK+N!NPbg`K&<8elnpqni zz+EG7kG}Zu51ZRdIKt<|x~Kqdt%Qf)qo&9Rho?2c0B()6KKv*mg8S(FczC@xfP1a@ zKW_VGh99Lw@C8`q@T1txd!A2vCp9TDLe6vT4?mLdAFvz;tcl(5QU1>nYb4=+Vq%=I zW)lALQ!G*&_N?!#jM~n%(eRWxU+eb9BD)vM`xI7lUOlOE(d zOkk4Qj0HZo#k#`NloHIIomgq!mdjZpyR}Q%dr5lj_0l=de!ehz8=N%l&w+0uyXMq; zWL2~~ZJ$0<&ppRL$WQdSvWU+l`5Sl3;)Ua`1tm{eYkP`q>&h6XIsC24pPB#OjlJ@^ z!sy0k-=~)z*J$vZ=J&ky?x;ik?5yOOg?1vpJ|DJ!-SK(h1v#-_k)1IKw-1`Coy!KM cf-?u?4XaM1FF7Qb4NPhbp00i_>zopr0A^7z;Q#;t literal 0 HcmV?d00001 diff --git a/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Translate/TranslateDown.png.meta b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Translate/TranslateDown.png.meta new file mode 100644 index 00000000..60368f6a --- /dev/null +++ b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Translate/TranslateDown.png.meta @@ -0,0 +1,114 @@ +fileFormatVersion: 2 +guid: e0fd4b1a727e94e57832e369a6bcaebd +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Translate/TranslateForward@2x.png b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Translate/TranslateForward@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..87e323e7fc8c75fc98e7bb4a7b824b7d5eb7a470 GIT binary patch literal 486 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9E$svykh8Km+7D9BhG z<_9>aSE#4PaV&fpN+M zz5;d?Q3tI>EYlsVW~`YyQHix$KCb%jjB1tt73FEqQjq^U3sl2#ucZ4-s#psWjs!H4aX)TQpw<{iGU7<3cEBgp<-K38eiM~4; z`;F|}*D#vDaIBmE?pFrex~;bS5k?aqexLVs@0w7jQy*%jOLV=IrnRWl71=TF+9$^; z_%OQff7TwR68{(NTV}>OrTi#%j}2&eXMH+Ibw~4kRhfOSR`v=lsCMQL_O<5rTJ%u9 z@nDvJ?G}c+@$BcSM5Zc8KHO^O*>H_Tbpgw}1*=n9uFIWd+M=hj@Yt1(|L<4!y)pD? zxb{oM#?Vxb@q3G0Gi%1*T0h28zlygLRUN8JJbyTF-fDjGerj2-%P|3iV=~rfT;gxc zWoE5xF4SN+wva)hohd_WExUn50_aKIe!#gAxeL>h7?4 z`D04l?0d>wyuY=U^I3^~c<1xujjZ{HhM5@$w(c|O&}f~0`jXI!hZ7C=oS&TV<-_fX zALc$kTqka{r!DHm4R^l#ZoKi*hqliv#BU#ZU8hwGKLX&;oD*ZI~hgZq4s>y3lPoqHrtseCH4 zn0$hFqL0${BSxKfME?3So9Q%}xkRw!_VkDxd>@}I+09TaSYxl4q|x+V-KC^^*Tw1P zF3b0Sd38o;g<$I!+t&Gtf2RMQtRM&iftmjpc2~x_zn3W!1O`5Xr>mdKI;Vst07RR= A?*IS* literal 0 HcmV?d00001 diff --git a/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Translate/TranslateLeft@2x.png.meta b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Translate/TranslateLeft@2x.png.meta new file mode 100644 index 00000000..37611433 --- /dev/null +++ b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Translate/TranslateLeft@2x.png.meta @@ -0,0 +1,140 @@ +fileFormatVersion: 2 +guid: 7bccab66a397c492c93ab84fb87d8fcb +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Translate/TranslateRight@2x.png b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Translate/TranslateRight@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..e6ca142becf2a18f71644aef2067752b108489fd GIT binary patch literal 464 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=oCO|{#S9E$svykh8Km+7D9BhG z;%3x+Z;s!qjGiCbCu=uO5`X0nJD=)sXAFu2?Szct~qMNyF=n8ll@Hn#FIi1hrWw0?4Ghg z^t6!ojqcP=RhbgqBdd-GMe(a{;Z(hnB>L-jO9bcKb|JoX-W(N7r6o>k*t-HMTv&om<4GAsnk)2`9zhnBR!|V^O*9GzElqwj_yrU~H z>uri$^nas3p0{_xaoND>=*8y@a_5yH=R#%`^u#44*bvW@DckLb?VEC z{>{A+Z6D2D!X6#{p!~y%rM_|b^(P%*p!ZTZ-Y7P+U-_i~Faj7nUHx3vIVCg!0Jr$J Az5oCK literal 0 HcmV?d00001 diff --git a/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Translate/TranslateRight@2x.png.meta b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Translate/TranslateRight@2x.png.meta new file mode 100644 index 00000000..88a906d7 --- /dev/null +++ b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Translate/TranslateRight@2x.png.meta @@ -0,0 +1,140 @@ +fileFormatVersion: 2 +guid: eb5a85b675ed34acf9efd6d574df4ceb +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: iPhone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Translate/TranslateUp.png b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Translate/TranslateUp.png new file mode 100644 index 0000000000000000000000000000000000000000..ca37e6ea0d67012b1c1333faaaf1542f299c4273 GIT binary patch literal 725 zcmV;`0xJE9P)uBpeT*_gg^5Rif{{hHZqzca^O4gv7@fWpvk9#jZzc!vMey^g9sz~LynhX5Ph2MlB2KSYK7bm!bf zeP01;&#Q|T(<~I=hz~IMdCl;II?`8woAC+5_zL*A1&@oNL)cxESxW$KHY4;?6 zJxy(6nttvJ?D3&u9)9i%+TB9cCA1b$W^e*b>2M?xiTLmb%heE+UeqxP00000NkvXX Hu0mjffZahN literal 0 HcmV?d00001 diff --git a/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Translate/TranslateUp.png.meta b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Translate/TranslateUp.png.meta new file mode 100644 index 00000000..9c28ff66 --- /dev/null +++ b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/Translate/TranslateUp.png.meta @@ -0,0 +1,114 @@ +fileFormatVersion: 2 +guid: 46c27b4ffbe1f4c92b44af023b7ee228 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Samples~/XR Device Simulator/XRInteractionSimulator/UI/XR Interaction Simulator UI.prefab b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/XR Interaction Simulator UI.prefab new file mode 100644 index 00000000..d593c130 --- /dev/null +++ b/Samples~/XR Device Simulator/XRInteractionSimulator/UI/XR Interaction Simulator UI.prefab @@ -0,0 +1,26884 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &3872635599277961 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8094499031099762269} + m_Layer: 0 + m_Name: Secondary2DAxisTouchPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &8094499031099762269 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3872635599277961} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1577622462674208938} + m_Father: {fileID: 8425869877281121703} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 945, y: -18} + m_SizeDelta: {x: 150, y: 36} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &14619953387140814 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7347103933836094446} + m_Layer: 0 + m_Name: RotateLeftPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &7347103933836094446 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 14619953387140814} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2598780092585628750} + m_Father: {fileID: 2616124474499915878} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 951, y: -25} + m_SizeDelta: {x: 50, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &42524817193246771 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1866291706863406180} + m_Layer: 0 + m_Name: PokePanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &1866291706863406180 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 42524817193246771} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5719157918649075888} + m_Father: {fileID: 4182932038750303461} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 50, y: -18} + m_SizeDelta: {x: 100, y: 36} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &69764350499750149 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4972783221715884806} + - component: {fileID: 9078795665607353373} + - component: {fileID: 4561930163719203412} + m_Layer: 0 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4972783221715884806 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 69764350499750149} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5709037953205928473} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -70, y: 0} + m_SizeDelta: {x: 200, y: 100} + m_Pivot: {x: 1, y: 1} +--- !u!222 &9078795665607353373 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 69764350499750149} + m_CullTransparentMesh: 1 +--- !u!114 &4561930163719203412 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 69764350499750149} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 35 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Close/ Open +--- !u!1 &93451371686567606 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4288028380194794276} + - component: {fileID: 2696682093589455654} + - component: {fileID: 4485145677973796883} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4288028380194794276 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 93451371686567606} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4586035851904729257} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2696682093589455654 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 93451371686567606} + m_CullTransparentMesh: 1 +--- !u!114 &4485145677973796883 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 93451371686567606} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: K +--- !u!1 &96201490428917187 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5264817491353012661} + m_Layer: 0 + m_Name: PrimaryTouchPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &5264817491353012661 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 96201490428917187} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3923586880972117920} + m_Father: {fileID: 8425869877281121703} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 1087.5, y: -18} + m_SizeDelta: {x: 125, y: 36} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &111803837879485087 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6950507072066123508} + - component: {fileID: 2816325560651032234} + - component: {fileID: 5729679123406112540} + m_Layer: 5 + m_Name: Separator + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6950507072066123508 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 111803837879485087} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 7243652154361334245} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 15, y: -50} + m_SizeDelta: {x: 700, y: 2} + m_Pivot: {x: 0, y: 0.5} +--- !u!222 &2816325560651032234 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 111803837879485087} + m_CullTransparentMesh: 1 +--- !u!114 &5729679123406112540 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 111803837879485087} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.34509805, g: 0.34509805, b: 0.34509805, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &132060447423614786 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2331962377881872398} + m_Layer: 5 + m_Name: ActionColumn + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2331962377881872398 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 132060447423614786} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 9148729020113727066} + - {fileID: 2059962098950313763} + m_Father: {fileID: 592911455511671645} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 15, y: 0} + m_SizeDelta: {x: 75, y: 0} + m_Pivot: {x: 0, y: 0.5} +--- !u!1 &135691538862025931 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7816389861956802540} + - component: {fileID: 720789101551990689} + - component: {fileID: 6056739797483759771} + m_Layer: 5 + m_Name: Bg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7816389861956802540 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 135691538862025931} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6709438869090117406} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &720789101551990689 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 135691538862025931} + m_CullTransparentMesh: 1 +--- !u!114 &6056739797483759771 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 135691538862025931} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.10980392, g: 0.11372549, b: 0.13333334, a: 0.78431374} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &143476470218432200 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8865462156448843826} + m_Layer: 5 + m_Name: HighlightPanels + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8865462156448843826 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 143476470218432200} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 7510661044183851904} + - {fileID: 911343385663444929} + - {fileID: 929312126353461551} + m_Father: {fileID: 3299587613051498839} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: -30} + m_SizeDelta: {x: 190, y: 155} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &153109947063242070 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7912528020120599782} + - component: {fileID: 2836090834241968662} + - component: {fileID: 9222528042540972209} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7912528020120599782 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 153109947063242070} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.49999437, y: 0.49999437, z: 0.49999437} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 7316057237409594490} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 10.989997, y: 0} + m_SizeDelta: {x: -21.980005, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2836090834241968662 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 153109947063242070} + m_CullTransparentMesh: 1 +--- !u!114 &9222528042540972209 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 153109947063242070} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 42 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 115 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Thumb +--- !u!1 &154048017620832086 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 89667494743843822} + - component: {fileID: 2048802649604373955} + - component: {fileID: 6145135022083844779} + - component: {fileID: 7125639609123344578} + m_Layer: 0 + m_Name: Panel04 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &89667494743843822 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 154048017620832086} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5523238469624902473} + m_Father: {fileID: 3349165801399695611} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 15} + m_SizeDelta: {x: 55, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2048802649604373955 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 154048017620832086} + m_CullTransparentMesh: 1 +--- !u!114 &6145135022083844779 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 154048017620832086} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.27058825, g: 0.3019608, b: 0.3372549, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &7125639609123344578 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 154048017620832086} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 6145135022083844779} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &188936453882889533 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 318831086246078444} + - component: {fileID: 8938872463253538228} + - component: {fileID: 5263470202793387849} + - component: {fileID: 4415796403667648342} + m_Layer: 0 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &318831086246078444 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 188936453882889533} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8724851072079499689} + m_Father: {fileID: 7861159257729309501} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -15, y: -10} + m_SizeDelta: {x: 50, y: 30} + m_Pivot: {x: 1, y: 1} +--- !u!222 &8938872463253538228 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 188936453882889533} + m_CullTransparentMesh: 1 +--- !u!114 &5263470202793387849 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 188936453882889533} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.43801177, g: 0.4461339, b: 0.4811321, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &4415796403667648342 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 188936453882889533} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 5263470202793387849} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 7960291804964704818} + m_TargetAssemblyTypeName: UnityEngine.GameObject, UnityEngine + m_MethodName: SetActive + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 1 + m_CallState: 2 + - m_Target: {fileID: 2492122509147849978} + m_TargetAssemblyTypeName: UnityEngine.GameObject, UnityEngine + m_MethodName: SetActive + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!1 &226860843984593777 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3319338259274601914} + - component: {fileID: 5017537970520063453} + - component: {fileID: 1197534180605393298} + m_Layer: 5 + m_Name: HotkeyLabel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3319338259274601914 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 226860843984593777} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5000036, y: 0.5000036, z: 0.5000036} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8017059706523433701} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 5, y: -25} + m_SizeDelta: {x: 470, y: 32} + m_Pivot: {x: 0, y: 0.5} +--- !u!222 &5017537970520063453 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 226860843984593777} + m_CullTransparentMesh: 0 +--- !u!114 &1197534180605393298 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 226860843984593777} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Hotkey +--- !u!1 &257884137979402555 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8798300114242226055} + - component: {fileID: 764482650655022338} + - component: {fileID: 3002223734513693657} + - component: {fileID: 3082331775949650428} + m_Layer: 0 + m_Name: Panel06 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8798300114242226055 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 257884137979402555} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4316759160778380365} + m_Father: {fileID: 3789650784899537203} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -55, y: 15} + m_SizeDelta: {x: 55, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &764482650655022338 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 257884137979402555} + m_CullTransparentMesh: 1 +--- !u!114 &3002223734513693657 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 257884137979402555} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.41362584, g: 0.4618618, b: 0.5188679, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &3082331775949650428 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 257884137979402555} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 3002223734513693657} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &330795061615007659 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2962794875539291406} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2962794875539291406 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 330795061615007659} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2655742354012748673} + - {fileID: 2807309294433390513} + m_Father: {fileID: 2599148704571305237} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &354291531000585035 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6078689847635876804} + - component: {fileID: 2104835346069148214} + - component: {fileID: 7148256422321279182} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6078689847635876804 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 354291531000585035} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 9150852280288228678} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2104835346069148214 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 354291531000585035} + m_CullTransparentMesh: 1 +--- !u!114 &7148256422321279182 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 354291531000585035} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: L +--- !u!1 &363650146638369293 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2059962098950313763} + - component: {fileID: 4354390323416263959} + m_Layer: 5 + m_Name: OrderedListView + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2059962098950313763 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 363650146638369293} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4502221477487820569} + - {fileID: 8101301704248490591} + - {fileID: 1206070348257068892} + - {fileID: 5726990488982842294} + m_Father: {fileID: 2331962377881872398} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -20} + m_SizeDelta: {x: 0, y: -50} + m_Pivot: {x: 0, y: 0.5} +--- !u!114 &4354390323416263959 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 363650146638369293} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 12 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 0 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!1 &372740900775709253 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3789650784899537203} + m_Layer: 0 + m_Name: TranslateArea + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3789650784899537203 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 372740900775709253} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3844355639352728716} + - {fileID: 3752517032357166874} + - {fileID: 5896775422697978110} + - {fileID: 6606093925856735165} + - {fileID: 813917015904466963} + - {fileID: 7526453948634149802} + - {fileID: 8798300114242226055} + m_Father: {fileID: 9067816575889166465} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: -65} + m_SizeDelta: {x: 165, y: 60} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &405030099935448936 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6248604403604966559} + - component: {fileID: 5195417136342976319} + - component: {fileID: 1002789894967402766} + m_Layer: 5 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6248604403604966559 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 405030099935448936} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6481212961435706716} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 25, y: 0} + m_SizeDelta: {x: 25, y: 25} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5195417136342976319 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 405030099935448936} + m_CullTransparentMesh: 1 +--- !u!114 &1002789894967402766 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 405030099935448936} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: ac2724ca4693e43b8b66f8ef01bd8e3c, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &410723391366653248 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2314358066319439725} + - component: {fileID: 2800570758939390394} + - component: {fileID: 3756794225943487815} + m_Layer: 5 + m_Name: Bg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2314358066319439725 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 410723391366653248} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3365218671118266616} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2800570758939390394 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 410723391366653248} + m_CullTransparentMesh: 1 +--- !u!114 &3756794225943487815 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 410723391366653248} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.21960786, g: 0.21960786, b: 0.21960786, a: 0.78431374} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &437644692821957831 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 254206951869566067} + - component: {fileID: 2954552860814726447} + - component: {fileID: 8195068698005347487} + m_Layer: 5 + m_Name: Bg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &254206951869566067 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 437644692821957831} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 7101224599062538259} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2954552860814726447 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 437644692821957831} + m_CullTransparentMesh: 1 +--- !u!114 &8195068698005347487 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 437644692821957831} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.10980392, g: 0.11372549, b: 0.13333334, a: 0.78431374} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &447917334507266154 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1329497536324033519} + - component: {fileID: 2468437206895184477} + - component: {fileID: 4266125095612870657} + m_Layer: 5 + m_Name: ControllerActionsTitle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1329497536324033519 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 447917334507266154} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2158477176593190204} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 25, y: -30} + m_SizeDelta: {x: 470, y: 32} + m_Pivot: {x: 0, y: 0.5} +--- !u!222 &2468437206895184477 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 447917334507266154} + m_CullTransparentMesh: 0 +--- !u!114 &4266125095612870657 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 447917334507266154} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 35 + m_FontStyle: 1 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Hand Actions +--- !u!1 &448132350680990459 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9134458267640456047} + - component: {fileID: 2632218981143506694} + - component: {fileID: 4641072208648644716} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &9134458267640456047 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 448132350680990459} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5896775422697978110} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2632218981143506694 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 448132350680990459} + m_CullTransparentMesh: 1 +--- !u!114 &4641072208648644716 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 448132350680990459} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: D +--- !u!1 &499278063024314186 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5163667027452509501} + - component: {fileID: 8495864230241802672} + - component: {fileID: 1160348577549772809} + - component: {fileID: 7147108500381629340} + m_Layer: 0 + m_Name: Panel02 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5163667027452509501 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 499278063024314186} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5068247915849755885} + m_Father: {fileID: 3349165801399695611} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 55, y: -15} + m_SizeDelta: {x: 55, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8495864230241802672 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 499278063024314186} + m_CullTransparentMesh: 1 +--- !u!114 &1160348577549772809 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 499278063024314186} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.27058825, g: 0.3019608, b: 0.3372549, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &7147108500381629340 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 499278063024314186} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1160348577549772809} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &505887277988611639 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3185743914063005846} + - component: {fileID: 3067099355426028230} + - component: {fileID: 1052925417775551851} + m_Layer: 5 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3185743914063005846 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 505887277988611639} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8397221895643053450} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 30, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3067099355426028230 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 505887277988611639} + m_CullTransparentMesh: 1 +--- !u!114 &1052925417775551851 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 505887277988611639} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 7bccab66a397c492c93ab84fb87d8fcb, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &522126745035829395 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2807309294433390513} + - component: {fileID: 371745429556907937} + - component: {fileID: 3019049780180526093} + m_Layer: 5 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2807309294433390513 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 522126745035829395} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2962794875539291406} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 30, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &371745429556907937 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 522126745035829395} + m_CullTransparentMesh: 1 +--- !u!114 &3019049780180526093 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 522126745035829395} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: cbd1e2a1a972644eea7bfae3d6f2b979, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &550129371695366427 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3026702587458427644} + - component: {fileID: 188232056986354911} + - component: {fileID: 6786902725270564306} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3026702587458427644 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 550129371695366427} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5844035398286289782} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &188232056986354911 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 550129371695366427} + m_CullTransparentMesh: 1 +--- !u!114 &6786902725270564306 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 550129371695366427} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Space +--- !u!1 &599557720195780425 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6757559251263015446} + - component: {fileID: 1770312696503671000} + - component: {fileID: 8661181416575580406} + m_Layer: 5 + m_Name: Bg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6757559251263015446 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 599557720195780425} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5719157918649075888} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1770312696503671000 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 599557720195780425} + m_CullTransparentMesh: 1 +--- !u!114 &8661181416575580406 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 599557720195780425} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.10980392, g: 0.11372549, b: 0.13333334, a: 0.78431374} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &600761891956326385 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1971974159405262163} + m_Layer: 0 + m_Name: StartEnd + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1971974159405262163 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 600761891956326385} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5844035398286289782} + - {fileID: 5789357266426074471} + m_Father: {fileID: 8717765101557363114} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 0.5, y: 0} + m_AnchoredPosition: {x: 25, y: 0} + m_SizeDelta: {x: 175, y: 50} + m_Pivot: {x: 1, y: 0} +--- !u!1 &643828247022746240 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7936921073162473388} + - component: {fileID: 7676190500246100604} + - component: {fileID: 4134223581198011097} + m_Layer: 5 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7936921073162473388 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 643828247022746240} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5944909518084152386} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 30, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7676190500246100604 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 643828247022746240} + m_CullTransparentMesh: 1 +--- !u!114 &4134223581198011097 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 643828247022746240} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: b6f90cafdbfff47a4933a026c7bd32c1, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &673172383692468223 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5896775422697978110} + - component: {fileID: 1440431300351282549} + - component: {fileID: 3572189494499890415} + - component: {fileID: 4218822182135371565} + m_Layer: 0 + m_Name: Panel02 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5896775422697978110 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 673172383692468223} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 9134458267640456047} + m_Father: {fileID: 3789650784899537203} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 55, y: -15} + m_SizeDelta: {x: 55, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1440431300351282549 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 673172383692468223} + m_CullTransparentMesh: 1 +--- !u!114 &3572189494499890415 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 673172383692468223} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.27058825, g: 0.3019608, b: 0.3372549, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &4218822182135371565 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 673172383692468223} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 3572189494499890415} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &681113951713324290 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5233932076482202238} + - component: {fileID: 2465270733317413010} + - component: {fileID: 4880137711586223127} + m_Layer: 5 + m_Name: HeadsetImage + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5233932076482202238 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 681113951713324290} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6822129441471570829} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 50, y: 25} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2465270733317413010 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 681113951713324290} + m_CullTransparentMesh: 1 +--- !u!114 &4880137711586223127 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 681113951713324290} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: b121d7be9654e4d019fe207d5efebed7, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &688721528213623439 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1115949796456744587} + - component: {fileID: 1957962978886872884} + - component: {fileID: 8453112923494850646} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1115949796456744587 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 688721528213623439} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6844145415412592068} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 6.5, y: 0} + m_SizeDelta: {x: -27, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1957962978886872884 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 688721528213623439} + m_CullTransparentMesh: 1 +--- !u!114 &8453112923494850646 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 688721528213623439} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 42 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 115 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Grab +--- !u!1 &744623150426840450 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2316342934838105792} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2316342934838105792 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 744623150426840450} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8411006411540699461} + - {fileID: 2752046669439991284} + m_Father: {fileID: 4197298713820827933} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &826188952725001174 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2709629706720696284} + - component: {fileID: 2276843280762192096} + - component: {fileID: 9094294558560093338} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2709629706720696284 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 826188952725001174} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 9125128771972128813} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2276843280762192096 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 826188952725001174} + m_CullTransparentMesh: 1 +--- !u!114 &9094294558560093338 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 826188952725001174} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: H +--- !u!1 &898591890720936052 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4571546103676003614} + - component: {fileID: 26723095160579212} + - component: {fileID: 5060622108881528882} + m_Layer: 5 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4571546103676003614 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 898591890720936052} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 7614873236758490043} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 25, y: 0} + m_SizeDelta: {x: 30, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &26723095160579212 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 898591890720936052} + m_CullTransparentMesh: 1 +--- !u!114 &5060622108881528882 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 898591890720936052} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 51dbca003875e4a13a6aa29047489e85, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &929165321379043261 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 656342488099416437} + m_Layer: 0 + m_Name: PressRelease + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &656342488099416437 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 929165321379043261} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1546639525225788782} + - {fileID: 6595883509210786901} + m_Father: {fileID: 6806629910064356187} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 75, y: 0} + m_SizeDelta: {x: 175, y: 50} + m_Pivot: {x: 0, y: 0} +--- !u!1 &956497911316878905 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6606093925856735165} + - component: {fileID: 8627233794169050237} + - component: {fileID: 635053762122829608} + - component: {fileID: 1710584085389826911} + m_Layer: 0 + m_Name: Panel03 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6606093925856735165 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 956497911316878905} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4423570637848008926} + m_Father: {fileID: 3789650784899537203} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -55, y: -15} + m_SizeDelta: {x: 55, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8627233794169050237 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 956497911316878905} + m_CullTransparentMesh: 1 +--- !u!114 &635053762122829608 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 956497911316878905} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.27058825, g: 0.3019608, b: 0.3372549, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &1710584085389826911 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 956497911316878905} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 635053762122829608} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &972520171171219313 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6595883509210786901} + - component: {fileID: 2267839983034882915} + - component: {fileID: 7307263462765275803} + m_Layer: 0 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6595883509210786901 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 972520171171219313} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 656342488099416437} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -125, y: 0} + m_SizeDelta: {x: 200, y: 100} + m_Pivot: {x: 1, y: 1} +--- !u!222 &2267839983034882915 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 972520171171219313} + m_CullTransparentMesh: 1 +--- !u!114 &7307263462765275803 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 972520171171219313} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.54901963, g: 0.5568628, b: 0.58431375, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Press/ Release +--- !u!1 &996006546304875212 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1618050742599611899} + - component: {fileID: 4920999662096225281} + - component: {fileID: 726578794725696516} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1618050742599611899 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 996006546304875212} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3939973601132676864} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4920999662096225281 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 996006546304875212} + m_CullTransparentMesh: 1 +--- !u!114 &726578794725696516 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 996006546304875212} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: T +--- !u!1 &998665026289537673 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1159915022424144059} + - component: {fileID: 1438750034364871461} + - component: {fileID: 6407687928847628990} + m_Layer: 0 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1159915022424144059 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 998665026289537673} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2981473075935261234} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -70, y: 0} + m_SizeDelta: {x: 200, y: 100} + m_Pivot: {x: 1, y: 1} +--- !u!222 &1438750034364871461 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 998665026289537673} + m_CullTransparentMesh: 1 +--- !u!114 &6407687928847628990 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 998665026289537673} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.54901963, g: 0.5568628, b: 0.58431375, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Cycle Actions +--- !u!1 &1032444688534768818 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5944909518084152386} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5944909518084152386 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1032444688534768818} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4770951397515631500} + - {fileID: 7936921073162473388} + m_Father: {fileID: 1883294724177101389} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1100495203996196980 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 83453666236336810} + m_Layer: 0 + m_Name: CloseOpenWindowArea + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &83453666236336810 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1100495203996196980} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3137170806966307387} + - {fileID: 4828788785936039823} + m_Father: {fileID: 1534137771346558524} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -5} + m_SizeDelta: {x: 175, y: 50} + m_Pivot: {x: 1, y: 1} +--- !u!1 &1159095475909233982 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6481212961435706716} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6481212961435706716 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1159095475909233982} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1150767532150488799} + - {fileID: 5679257702642234393} + - {fileID: 6973168152540866834} + - {fileID: 6248604403604966559} + m_Father: {fileID: 3471145126301731449} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 7.5, y: 0} + m_SizeDelta: {x: -15, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1169827130645316575 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7925807210110930479} + - component: {fileID: 4959764699486767241} + - component: {fileID: 5183659809025799366} + m_Layer: 0 + m_Name: CloseOpenText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7925807210110930479 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1169827130645316575} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8986270490598884845} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -70, y: 0} + m_SizeDelta: {x: 200, y: 100} + m_Pivot: {x: 1, y: 1} +--- !u!222 &4959764699486767241 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1169827130645316575} + m_CullTransparentMesh: 1 +--- !u!114 &5183659809025799366 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1169827130645316575} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 35 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Close/ Open +--- !u!1 &1210099477354727383 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8598129656025319670} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8598129656025319670 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1210099477354727383} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8935044325263569736} + - {fileID: 5100638291358832347} + m_Father: {fileID: 4494445783134658300} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1243002123672047433 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2098453561177131157} + - component: {fileID: 4824054464483789289} + - component: {fileID: 1795025328659074286} + - component: {fileID: 8390494268115859379} + m_Layer: 0 + m_Name: Panel01 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2098453561177131157 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1243002123672047433} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6947234127914887600} + m_Father: {fileID: 4625834173686673388} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: -15} + m_SizeDelta: {x: 55, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4824054464483789289 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1243002123672047433} + m_CullTransparentMesh: 1 +--- !u!114 &1795025328659074286 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1243002123672047433} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.43801177, g: 0.4461339, b: 0.4811321, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &8390494268115859379 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1243002123672047433} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1795025328659074286} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &1256498608039198762 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 969668848567293117} + - component: {fileID: 5389203054568992956} + - component: {fileID: 5833211375358567432} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &969668848567293117 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1256498608039198762} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.49999437, y: 0.49999437, z: 0.49999437} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3209650352576931573} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -0.0000019073486, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5389203054568992956 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1256498608039198762} + m_CullTransparentMesh: 1 +--- !u!114 &5833211375358567432 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1256498608039198762} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 42 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 115 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Prim2DTouch +--- !u!1 &1293103267684772900 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3536405280500901237} + m_Layer: 0 + m_Name: FistPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &3536405280500901237 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1293103267684772900} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6612033344245225099} + m_Father: {fileID: 4182932038750303461} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 607.5, y: -18} + m_SizeDelta: {x: 95, y: 36} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1299613224714369819 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8263786892442998087} + m_Layer: 0 + m_Name: ResetToView + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8263786892442998087 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1299613224714369819} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1399950637389611688} + - {fileID: 7992491541968451500} + m_Father: {fileID: 6806629910064356187} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: -75, y: 0} + m_SizeDelta: {x: 175, y: 50} + m_Pivot: {x: 1, y: 0} +--- !u!1 &1325100965134396193 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4586035851904729257} + - component: {fileID: 4085543164890198536} + - component: {fileID: 6379863276269976041} + - component: {fileID: 2820158413379280828} + m_Layer: 0 + m_Name: Panel02 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4586035851904729257 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1325100965134396193} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4288028380194794276} + m_Father: {fileID: 5079952485184716055} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: -20} + m_SizeDelta: {x: 55, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4085543164890198536 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1325100965134396193} + m_CullTransparentMesh: 1 +--- !u!114 &6379863276269976041 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1325100965134396193} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.27058825, g: 0.3019608, b: 0.3372549, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &2820158413379280828 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1325100965134396193} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 6379863276269976041} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &1357189513918634868 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3658045465717465819} + - component: {fileID: 8295295340540125381} + - component: {fileID: 4778871133805023441} + m_Layer: 5 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3658045465717465819 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1357189513918634868} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 7101224599062538259} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 30, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8295295340540125381 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1357189513918634868} + m_CullTransparentMesh: 1 +--- !u!114 &4778871133805023441 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1357189513918634868} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: db211eab80abe447b865ccff41592e0e, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &1362622371509736921 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4828788785936039823} + - component: {fileID: 4874586834207387414} + - component: {fileID: 9083342587752578236} + m_Layer: 0 + m_Name: CloseOpenText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4828788785936039823 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1362622371509736921} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 83453666236336810} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -70, y: 0} + m_SizeDelta: {x: 200, y: 100} + m_Pivot: {x: 1, y: 1} +--- !u!222 &4874586834207387414 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1362622371509736921} + m_CullTransparentMesh: 1 +--- !u!114 &9083342587752578236 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1362622371509736921} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.54903877, g: 0.5550166, b: 0.5849056, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 35 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Close/ Open +--- !u!1 &1364008535971852161 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 604845444653919950} + - component: {fileID: 5618266864154682923} + - component: {fileID: 2143290109788015064} + m_Layer: 0 + m_Name: Label01 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &604845444653919950 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1364008535971852161} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4967460965833401963} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: -15} + m_SizeDelta: {x: 85, y: 30} + m_Pivot: {x: 0, y: 0.5} +--- !u!222 &5618266864154682923 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1364008535971852161} + m_CullTransparentMesh: 1 +--- !u!114 &2143290109788015064 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1364008535971852161} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.75686276, g: 0.7647059, b: 0.7921569, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: 1. Poke +--- !u!1 &1398328972843590313 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2868649890003439439} + - component: {fileID: 7147858960400368383} + - component: {fileID: 2575373484840802181} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2868649890003439439 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1398328972843590313} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 813917015904466963} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7147858960400368383 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1398328972843590313} + m_CullTransparentMesh: 1 +--- !u!114 &2575373484840802181 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1398328972843590313} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: W +--- !u!1 &1407244870148967082 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7770028712192281475} + - component: {fileID: 7721636323657955718} + - component: {fileID: 146125953027093911} + m_Layer: 5 + m_Name: HeadHighlight + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &7770028712192281475 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1407244870148967082} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6822129441471570829} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 1} + m_SizeDelta: {x: 0, y: -2} + m_Pivot: {x: 0.5, y: 0} +--- !u!222 &7721636323657955718 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1407244870148967082} + m_CullTransparentMesh: 1 +--- !u!114 &146125953027093911 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1407244870148967082} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 1a452a6a86d684a7ba39272e4e14a1d6, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &1431119686785059673 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5850202698177368701} + - component: {fileID: 5302905922750419007} + - component: {fileID: 7780432347858531783} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5850202698177368701 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431119686785059673} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1577622462674208938} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5302905922750419007 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431119686785059673} + m_CullTransparentMesh: 1 +--- !u!114 &7780432347858531783 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1431119686785059673} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 42 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 115 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Sec2DTouch +--- !u!1 &1438627640334842309 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1274541353756613963} + m_Layer: 0 + m_Name: TranslateRightPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &1274541353756613963 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1438627640334842309} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4149270384499422738} + m_Father: {fileID: 2616124474499915878} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 783, y: -25} + m_SizeDelta: {x: 50, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1442539181866979841 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2920709862229991414} + m_Layer: 0 + m_Name: TranslateUpPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &2920709862229991414 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1442539181866979841} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6332096640150509629} + m_Father: {fileID: 2616124474499915878} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 503, y: -25} + m_SizeDelta: {x: 50, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1452320579138997372 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4617453281104925394} + - component: {fileID: 5933634620521141540} + - component: {fileID: 324983378670726889} + m_Layer: 0 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4617453281104925394 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1452320579138997372} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3349165801399695611} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 50} + m_SizeDelta: {x: 85, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5933634620521141540 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1452320579138997372} + m_CullTransparentMesh: 1 +--- !u!114 &324983378670726889 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1452320579138997372} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Rotate +--- !u!1 &1453345799491037743 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4625834173686673388} + - component: {fileID: 6233948996656242232} + - component: {fileID: 3991348172433689739} + m_Layer: 5 + m_Name: ModalityPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4625834173686673388 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1453345799491037743} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 9197683768530096908} + - {fileID: 2171444240456824305} + - {fileID: 2098453561177131157} + - {fileID: 7123093230012993544} + - {fileID: 7965676535099519776} + - {fileID: 5893151266970048260} + - {fileID: 8287293109346138334} + m_Father: {fileID: 3132576533883217541} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 135, y: 0} + m_SizeDelta: {x: 240, y: 210} + m_Pivot: {x: 0, y: 0.5} +--- !u!222 &6233948996656242232 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1453345799491037743} + m_CullTransparentMesh: 1 +--- !u!114 &3991348172433689739 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1453345799491037743} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.09019608, g: 0.09411765, b: 0.101960786, a: 0.5882353} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &1482625830809364970 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3923586880972117920} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3923586880972117920 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1482625830809364970} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2133126520422376320} + - {fileID: 6910918637130442105} + m_Father: {fileID: 5264817491353012661} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1495162503205807742 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4456344196334606415} + m_Layer: 0 + m_Name: HMDPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &4456344196334606415 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1495162503205807742} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 9201998970743556438} + m_Father: {fileID: 2616124474499915878} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 25, y: -25} + m_SizeDelta: {x: 50, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1503907049339462441 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7965676535099519776} + - component: {fileID: 3306535573288242923} + - component: {fileID: 8905424078122245157} + - component: {fileID: 3034543110817788383} + m_Layer: 0 + m_Name: Panel03 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7965676535099519776 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1503907049339462441} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5422342244361285364} + m_Father: {fileID: 4625834173686673388} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: -25, y: 10} + m_SizeDelta: {x: 55, y: 30} + m_Pivot: {x: 1, y: 0} +--- !u!222 &3306535573288242923 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1503907049339462441} + m_CullTransparentMesh: 1 +--- !u!114 &8905424078122245157 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1503907049339462441} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.43801177, g: 0.4461339, b: 0.4811321, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &3034543110817788383 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1503907049339462441} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 8905424078122245157} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &1542675919277286565 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6332096640150509629} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6332096640150509629 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1542675919277286565} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5653666562589261387} + - {fileID: 5648368935754560292} + m_Father: {fileID: 2920709862229991414} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1576597961711835330 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6357862912854609243} + - component: {fileID: 6859822864559966688} + - component: {fileID: 7879259745449113243} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6357862912854609243 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1576597961711835330} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5719157918649075888} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 6.5, y: 0} + m_SizeDelta: {x: -29, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6859822864559966688 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1576597961711835330} + m_CullTransparentMesh: 1 +--- !u!114 &7879259745449113243 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1576597961711835330} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 42 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 115 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Poke +--- !u!1 &1602462095946604254 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5679257702642234393} + - component: {fileID: 2274860638844471984} + - component: {fileID: 862899570021833484} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5679257702642234393 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1602462095946604254} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6481212961435706716} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 12.5, y: 0} + m_SizeDelta: {x: -25, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2274860638844471984 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1602462095946604254} + m_CullTransparentMesh: 1 +--- !u!114 &862899570021833484 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1602462095946604254} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 42 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 115 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: G +--- !u!1 &1624786497090344615 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6553039120841506856} + - component: {fileID: 1239470441343076771} + - component: {fileID: 8640240231482321955} + m_Layer: 5 + m_Name: RightPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6553039120841506856 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1624786497090344615} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4551501784236766960} + - {fileID: 8762098838486589850} + m_Father: {fileID: 8927720812409968449} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 80, y: 10} + m_SizeDelta: {x: 125, y: 225} + m_Pivot: {x: 0, y: 0.5} +--- !u!222 &1239470441343076771 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1624786497090344615} + m_CullTransparentMesh: 1 +--- !u!114 &8640240231482321955 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1624786497090344615} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.09019608, g: 0.09411766, b: 0.10196079, a: 0.5882353} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &1685460840310616818 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3752517032357166874} + - component: {fileID: 9153278254051412771} + - component: {fileID: 5135055611394748034} + - component: {fileID: 8904140459035284240} + m_Layer: 0 + m_Name: Panel01 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3752517032357166874 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1685460840310616818} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2583300566849556117} + m_Father: {fileID: 3789650784899537203} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: -15} + m_SizeDelta: {x: 55, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &9153278254051412771 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1685460840310616818} + m_CullTransparentMesh: 1 +--- !u!114 &5135055611394748034 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1685460840310616818} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.27058825, g: 0.3019608, b: 0.3372549, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &8904140459035284240 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1685460840310616818} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 5135055611394748034} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &1685609228504453658 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4182932038750303461} + - component: {fileID: 5006418740969203174} + m_Layer: 0 + m_Name: OrderedListViewHand + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4182932038750303461 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1685609228504453658} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.7, y: 0.7, z: 0.7} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1866291706863406180} + - {fileID: 2421303011123297887} + - {fileID: 7588369489465562914} + - {fileID: 7608597320112058617} + - {fileID: 7578456877763460119} + - {fileID: 3536405280500901237} + - {fileID: 2446668716667908932} + - {fileID: 3471145126301731449} + m_Father: {fileID: 985979082482746275} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &5006418740969203174 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1685609228504453658} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 5 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 0 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!1 &1691738332905199744 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5789357266426074471} + - component: {fileID: 7674205973468342692} + - component: {fileID: 4185012985767366955} + m_Layer: 0 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5789357266426074471 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1691738332905199744} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1971974159405262163} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -125, y: 0} + m_SizeDelta: {x: 200, y: 100} + m_Pivot: {x: 1, y: 1} +--- !u!222 &7674205973468342692 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1691738332905199744} + m_CullTransparentMesh: 1 +--- !u!114 &4185012985767366955 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1691738332905199744} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.54901963, g: 0.5568628, b: 0.58431375, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Start/ End +--- !u!1 &1694008792132535129 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4502221477487820569} + - component: {fileID: 8965803024341504646} + - component: {fileID: 7040963878487973647} + m_Layer: 0 + m_Name: Label01 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4502221477487820569 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1694008792132535129} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2059962098950313763} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: -15} + m_SizeDelta: {x: 85, y: 30} + m_Pivot: {x: 0, y: 0.5} +--- !u!222 &8965803024341504646 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1694008792132535129} + m_CullTransparentMesh: 1 +--- !u!114 &7040963878487973647 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1694008792132535129} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.75686276, g: 0.7647059, b: 0.7921569, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: 1. Trigger +--- !u!1 &1788138351666028207 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8672739676909435217} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8672739676909435217 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1788138351666028207} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2476527380089783404} + - {fileID: 2526830773974959146} + - {fileID: 5669322730281365547} + m_Father: {fileID: 2289920746676440892} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1814924590649068355 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7072671058180535645} + - component: {fileID: 3603594488592160584} + - component: {fileID: 7209679768255586253} + - component: {fileID: 6757045383537191198} + m_Layer: 0 + m_Name: ControlPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7072671058180535645 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1814924590649068355} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6146562634286816264} + m_Father: {fileID: 991375141000976476} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 35} + m_SizeDelta: {x: 75, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3603594488592160584 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1814924590649068355} + m_CullTransparentMesh: 1 +--- !u!114 &7209679768255586253 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1814924590649068355} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.43801177, g: 0.4461339, b: 0.4811321, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &6757045383537191198 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1814924590649068355} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 7209679768255586253} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &1837445930496515474 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6887138384176392633} + - component: {fileID: 939504981158514995} + - component: {fileID: 395335245769303352} + m_Layer: 5 + m_Name: RightHandImage + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6887138384176392633 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1837445930496515474} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3161203776773436233} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 50, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &939504981158514995 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1837445930496515474} + m_CullTransparentMesh: 1 +--- !u!114 &395335245769303352 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1837445930496515474} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 63f1aa62d6de546b8833c6b66b8a6dd8, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &1838337765974295499 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1577622462674208938} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1577622462674208938 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1838337765974295499} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4318008924376101682} + - {fileID: 5850202698177368701} + m_Father: {fileID: 8094499031099762269} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1876198629500369650 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8760793361132745743} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8760793361132745743 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1876198629500369650} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3579246366628628781} + - {fileID: 4771949168516337383} + m_Father: {fileID: 319578137759929299} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1897643049645192663 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8680592316691630936} + - component: {fileID: 5818782869437077106} + - component: {fileID: 7762687288714831} + m_Layer: 5 + m_Name: LeftHandImage + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8680592316691630936 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1897643049645192663} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5893151266970048260} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 0.5, y: 0} + m_AnchoredPosition: {x: 0, y: 15} + m_SizeDelta: {x: 30, y: 35} + m_Pivot: {x: 0.5, y: 0} +--- !u!222 &5818782869437077106 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1897643049645192663} + m_CullTransparentMesh: 1 +--- !u!114 &7762687288714831 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1897643049645192663} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: b658f477a2ba14f238604081771bf274, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &1937250830231884031 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4771949168516337383} + - component: {fileID: 7652334131198194248} + - component: {fileID: 3524068494239331667} + m_Layer: 5 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4771949168516337383 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1937250830231884031} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8760793361132745743} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 30, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7652334131198194248 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1937250830231884031} + m_CullTransparentMesh: 1 +--- !u!114 &3524068494239331667 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1937250830231884031} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: c2bc09e4357ee4c6bbb9d0e8ccf7f21d, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &1938582854093168618 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2171444240456824305} + - component: {fileID: 751418930229612705} + - component: {fileID: 2871003904279524192} + m_Layer: 0 + m_Name: BothLabel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2171444240456824305 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1938582854093168618} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4625834173686673388} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 25} + m_SizeDelta: {x: 100, y: 50} + m_Pivot: {x: 0.5, y: 1} +--- !u!222 &751418930229612705 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1938582854093168618} + m_CullTransparentMesh: 1 +--- !u!114 &2871003904279524192 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1938582854093168618} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Both +--- !u!1 &1995247952258354469 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3041285225187009106} + - component: {fileID: 2062246571530760839} + - component: {fileID: 1397702551759858652} + m_Layer: 5 + m_Name: Bg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3041285225187009106 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1995247952258354469} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3466780529405657112} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2062246571530760839 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1995247952258354469} + m_CullTransparentMesh: 1 +--- !u!114 &1397702551759858652 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1995247952258354469} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.10980392, g: 0.11372549, b: 0.13333334, a: 0.78431374} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &2022557408468720666 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3844355639352728716} + - component: {fileID: 7055860676011233229} + - component: {fileID: 4667740069009676212} + m_Layer: 0 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3844355639352728716 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2022557408468720666} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3789650784899537203} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 50} + m_SizeDelta: {x: 85, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7055860676011233229 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2022557408468720666} + m_CullTransparentMesh: 1 +--- !u!114 &4667740069009676212 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2022557408468720666} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Translate +--- !u!1 &2035052454872665901 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3906539553172013192} + m_Layer: 5 + m_Name: HotkeyColumn + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3906539553172013192 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2035052454872665901} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4983141539188237439} + - {fileID: 344118157753254797} + m_Father: {fileID: 3299587613051498839} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 75, y: 0} + m_Pivot: {x: 1, y: 0.5} +--- !u!1 &2051901299334723461 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4389095758392510845} + - component: {fileID: 3317187640722960590} + - component: {fileID: 8619133535477042407} + m_Layer: 5 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4389095758392510845 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2051901299334723461} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6933365344557907413} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 20, y: 0} + m_SizeDelta: {x: 24, y: 40} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3317187640722960590 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2051901299334723461} + m_CullTransparentMesh: 1 +--- !u!114 &8619133535477042407 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2051901299334723461} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 45d5d868f6ac7433db8072bb252ca290, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &2057132365463250777 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7908348882388512590} + - component: {fileID: 8744797400634502458} + - component: {fileID: 320444116895668326} + m_Layer: 5 + m_Name: ControllerActionsLabel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7908348882388512590 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2057132365463250777} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8927720812409968449} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 50, y: 5} + m_SizeDelta: {x: 470, y: 32} + m_Pivot: {x: 0, y: 0.5} +--- !u!222 &8744797400634502458 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2057132365463250777} + m_CullTransparentMesh: 0 +--- !u!114 &320444116895668326 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2057132365463250777} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Left Controller Actions +--- !u!1 &2074308902874776707 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9222525280428007628} + - component: {fileID: 8070949761241561236} + - component: {fileID: 6257830134989218701} + m_Layer: 5 + m_Name: Bg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &9222525280428007628 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2074308902874776707} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6136880138545987148} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8070949761241561236 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2074308902874776707} + m_CullTransparentMesh: 1 +--- !u!114 &6257830134989218701 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2074308902874776707} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.21960786, g: 0.21960786, b: 0.21960786, a: 0.78431374} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &2087642295596939910 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7701354143585068587} + - component: {fileID: 1990689548612826784} + - component: {fileID: 292674508506433790} + m_Layer: 5 + m_Name: Bg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7701354143585068587 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2087642295596939910} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4100146090115003127} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1990689548612826784 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2087642295596939910} + m_CullTransparentMesh: 1 +--- !u!114 &292674508506433790 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2087642295596939910} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.10980392, g: 0.11372549, b: 0.13333334, a: 0.78431374} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &2121089644640539186 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2258540431901169821} + - component: {fileID: 1991648608028483103} + m_Layer: 0 + m_Name: OrderedListView + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2258540431901169821 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2121089644640539186} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1534137771346558524} + - {fileID: 3694782915305002292} + - {fileID: 7243652154361334245} + - {fileID: 2158477176593190204} + - {fileID: 4664102382212086408} + - {fileID: 5776210204937225324} + m_Father: {fileID: 4328764193154433265} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!114 &1991648608028483103 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2121089644640539186} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 6 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 0 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!1 &2150147349540457652 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8042126031526164700} + - component: {fileID: 8009891501659407964} + - component: {fileID: 6341709966332042073} + m_Layer: 0 + m_Name: CloseOpenText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8042126031526164700 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2150147349540457652} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8514917942798000873} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -70, y: 0} + m_SizeDelta: {x: 200, y: 100} + m_Pivot: {x: 1, y: 1} +--- !u!222 &8009891501659407964 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2150147349540457652} + m_CullTransparentMesh: 1 +--- !u!114 &6341709966332042073 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2150147349540457652} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.54903877, g: 0.5550166, b: 0.5849056, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 35 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Close/ Open +--- !u!1 &2191721441082841400 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2583300566849556117} + - component: {fileID: 8213101443221031777} + - component: {fileID: 402752140825279601} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2583300566849556117 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2191721441082841400} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3752517032357166874} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8213101443221031777 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2191721441082841400} + m_CullTransparentMesh: 1 +--- !u!114 &402752140825279601 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2191721441082841400} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: S +--- !u!1 &2201923626126428333 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5269522660398789996} + - component: {fileID: 3240401609689437706} + - component: {fileID: 4184957880464256191} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5269522660398789996 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2201923626126428333} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 7123093230012993544} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3240401609689437706 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2201923626126428333} + m_CullTransparentMesh: 1 +--- !u!114 &4184957880464256191 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2201923626126428333} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 1 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: '[' +--- !u!1 &2209925386125314837 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4770951397515631500} + - component: {fileID: 9089873301857590761} + - component: {fileID: 8522517275715419121} + m_Layer: 5 + m_Name: Bg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4770951397515631500 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2209925386125314837} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5944909518084152386} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &9089873301857590761 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2209925386125314837} + m_CullTransparentMesh: 1 +--- !u!114 &8522517275715419121 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2209925386125314837} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.10980392, g: 0.11372549, b: 0.13333334, a: 0.78431374} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &2213802017060509428 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2766694630152064848} + - component: {fileID: 6798130601816254987} + - component: {fileID: 2711647125706155034} + m_Layer: 5 + m_Name: RightHandHighlight + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &2766694630152064848 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2213802017060509428} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8287293109346138334} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 0.5, y: 0} + m_AnchoredPosition: {x: 0, y: 5} + m_SizeDelta: {x: 55, y: 55} + m_Pivot: {x: 0.5, y: 0} +--- !u!222 &6798130601816254987 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2213802017060509428} + m_CullTransparentMesh: 1 +--- !u!114 &2711647125706155034 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2213802017060509428} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.1477839, g: 0.47206765, b: 0.764151, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: e6eb07daf4cc52449a15922f0b93851d, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &2215532569850060799 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8603889657556066090} + - component: {fileID: 191669710237811291} + - component: {fileID: 5657714174598024165} + m_Layer: 5 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8603889657556066090 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2215532569850060799} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6612033344245225099} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 25, y: 0} + m_SizeDelta: {x: 30, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &191669710237811291 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2215532569850060799} + m_CullTransparentMesh: 1 +--- !u!114 &5657714174598024165 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2215532569850060799} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 51dbca003875e4a13a6aa29047489e85, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &2226167905028386744 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7316057237409594490} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7316057237409594490 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2226167905028386744} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8250314397998016930} + - {fileID: 7912528020120599782} + - {fileID: 1705965217030963751} + m_Father: {fileID: 7608597320112058617} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &2286221999909731891 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9067816575889166465} + m_Layer: 0 + m_Name: InputMovementArea + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &9067816575889166465 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2286221999909731891} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4700667935544648171} + - {fileID: 4002419433977471295} + - {fileID: 3349165801399695611} + - {fileID: 3789650784899537203} + m_Father: {fileID: 4664102382212086408} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: -20, y: 30} + m_SizeDelta: {x: 200, y: 230} + m_Pivot: {x: 1, y: 0} +--- !u!1 &2327781561641315451 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1152638071590110996} + - component: {fileID: 6106184640826891788} + - component: {fileID: 5267497595319650295} + m_Layer: 5 + m_Name: Bg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1152638071590110996 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2327781561641315451} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8743676548450038441} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6106184640826891788 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2327781561641315451} + m_CullTransparentMesh: 1 +--- !u!114 &5267497595319650295 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2327781561641315451} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.21960786, g: 0.21960786, b: 0.21960786, a: 0.78431374} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &2331884340419976195 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7398789958703377111} + - component: {fileID: 2055474038111941224} + - component: {fileID: 5103770327621049677} + m_Layer: 5 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7398789958703377111 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2331884340419976195} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6844145415412592068} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 21, y: 0} + m_SizeDelta: {x: 30, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2055474038111941224 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2331884340419976195} + m_CullTransparentMesh: 1 +--- !u!114 &5103770327621049677 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2331884340419976195} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 4ed93528617394a9fa8e25193e497fee, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &2335088844444153984 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4316759160778380365} + - component: {fileID: 8706600293195313012} + - component: {fileID: 4001799951813782746} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4316759160778380365 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2335088844444153984} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8798300114242226055} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8706600293195313012 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2335088844444153984} + m_CullTransparentMesh: 1 +--- !u!114 &4001799951813782746 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2335088844444153984} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Q +--- !u!1 &2379312552025249173 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3348035522208519344} + - component: {fileID: 1517052578699502337} + - component: {fileID: 4643755318834018097} + m_Layer: 5 + m_Name: Bg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3348035522208519344 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2379312552025249173} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 9201998970743556438} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1517052578699502337 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2379312552025249173} + m_CullTransparentMesh: 1 +--- !u!114 &4643755318834018097 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2379312552025249173} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.10980392, g: 0.11372549, b: 0.13333334, a: 0.78431374} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &2421611860516788940 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8250314397998016930} + - component: {fileID: 6507618720037681792} + - component: {fileID: 4033979322507351798} + m_Layer: 5 + m_Name: Bg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8250314397998016930 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2421611860516788940} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 7316057237409594490} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6507618720037681792 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2421611860516788940} + m_CullTransparentMesh: 1 +--- !u!114 &4033979322507351798 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2421611860516788940} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.10980392, g: 0.11372549, b: 0.13333334, a: 0.78431374} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &2468117762727587091 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 272371890972314931} + - component: {fileID: 1617363524605803878} + - component: {fileID: 5400390782458338293} + m_Layer: 5 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &272371890972314931 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2468117762727587091} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4008613158589331144} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 30, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1617363524605803878 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2468117762727587091} + m_CullTransparentMesh: 1 +--- !u!114 &5400390782458338293 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2468117762727587091} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: e1e3a07825d874ec2be9136fdfb7ab51, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &2479176232581707795 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2705374579976199964} + m_Layer: 0 + m_Name: TriggerPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &2705374579976199964 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2479176232581707795} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3365218671118266616} + m_Father: {fileID: 8425869877281121703} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 37.5, y: -18} + m_SizeDelta: {x: 75, y: 36} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &2492122509147849978 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4664102382212086408} + m_Layer: 0 + m_Name: InputSelectionWindow + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &4664102382212086408 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2492122509147849978} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 7979601971872826194} + - {fileID: 8937204562658477792} + - {fileID: 4293226185622064000} + - {fileID: 3633277011693553459} + - {fileID: 7861159257729309501} + - {fileID: 3132576533883217541} + - {fileID: 9067816575889166465} + m_Father: {fileID: 2258540431901169821} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: -655} + m_SizeDelta: {x: 725, y: 350} + m_Pivot: {x: 0, y: 0} +--- !u!1 &2495412846369825533 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8942413187771376359} + - component: {fileID: 8795401688274262154} + - component: {fileID: 8427756262541559112} + m_Layer: 5 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8942413187771376359 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2495412846369825533} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 9201998970743556438} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 34, y: 34} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8795401688274262154 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2495412846369825533} + m_CullTransparentMesh: 1 +--- !u!114 &8427756262541559112 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2495412846369825533} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: f9cb67e576d274c29bfa90e7bd16ba32, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &2548512083975810762 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8291476099510493451} + - component: {fileID: 4966184148326696194} + - component: {fileID: 4050764958590858736} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8291476099510493451 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2548512083975810762} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.35, y: 0.35, z: 0.35} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2339633520571222730} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 30, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4966184148326696194 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2548512083975810762} + m_CullTransparentMesh: 1 +--- !u!114 &4050764958590858736 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2548512083975810762} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: da36ec1117e4c49f8890a4c5234522ef, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &2565761664341139354 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5893151266970048260} + - component: {fileID: 6616420870326258134} + - component: {fileID: 8716101324341427028} + m_Layer: 5 + m_Name: LeftDevicePanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5893151266970048260 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2565761664341139354} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4020109067483886163} + - {fileID: 8680592316691630936} + - {fileID: 6201890944216999079} + - {fileID: 852662916917091370} + m_Father: {fileID: 4625834173686673388} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 20, y: 0} + m_SizeDelta: {x: 65, y: 125} + m_Pivot: {x: 0, y: 0.5} +--- !u!222 &6616420870326258134 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2565761664341139354} + m_CullTransparentMesh: 1 +--- !u!114 &8716101324341427028 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2565761664341139354} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.09019608, g: 0.09411766, b: 0.10196079, a: 0.5882353} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &2567208205650633595 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 23813667705221232} + - component: {fileID: 3687091468875173570} + - component: {fileID: 5516546782725968387} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &23813667705221232 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2567208205650633595} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2922253935851140131} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3687091468875173570 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2567208205650633595} + m_CullTransparentMesh: 1 +--- !u!114 &5516546782725968387 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2567208205650633595} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: N +--- !u!1 &2576878689481002531 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1652830179350088080} + - component: {fileID: 3895445059491319120} + - component: {fileID: 1415036154846172559} + m_Layer: 5 + m_Name: Bg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1652830179350088080 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2576878689481002531} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6819994946754835142} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3895445059491319120 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2576878689481002531} + m_CullTransparentMesh: 1 +--- !u!114 &1415036154846172559 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2576878689481002531} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.10980392, g: 0.11372549, b: 0.13333334, a: 0.78431374} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &2581336834642277087 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1758506564661323501} + - component: {fileID: 7256107533884072984} + - component: {fileID: 3041567032389859708} + m_Layer: 5 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1758506564661323501 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2581336834642277087} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6819994946754835142} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 25, y: 0} + m_SizeDelta: {x: 30, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7256107533884072984 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2581336834642277087} + m_CullTransparentMesh: 1 +--- !u!114 &3041567032389859708 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2581336834642277087} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 51dbca003875e4a13a6aa29047489e85, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &2615352352732936743 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3939973601132676864} + - component: {fileID: 9157460331961317792} + - component: {fileID: 682268568692602764} + - component: {fileID: 3440606133967787170} + m_Layer: 0 + m_Name: Panel01 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3939973601132676864 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2615352352732936743} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1618050742599611899} + m_Father: {fileID: 865914667572998966} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 55, y: 0} + m_SizeDelta: {x: 55, y: 30} + m_Pivot: {x: 1, y: 1} +--- !u!222 &9157460331961317792 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2615352352732936743} + m_CullTransparentMesh: 1 +--- !u!114 &682268568692602764 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2615352352732936743} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.27058825, g: 0.3019608, b: 0.3372549, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &3440606133967787170 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2615352352732936743} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 682268568692602764} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &2621914129207101519 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2446668716667908932} + m_Layer: 0 + m_Name: CustomPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &2446668716667908932 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2621914129207101519} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6819994946754835142} + m_Father: {fileID: 4182932038750303461} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 722.5, y: -18} + m_SizeDelta: {x: 125, y: 36} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &2753457161458658109 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1330688712581291359} + - component: {fileID: 7157335581106900958} + - component: {fileID: 2057910738506920258} + - component: {fileID: 2932943606622410908} + m_Layer: 0 + m_Name: Panel01 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1330688712581291359 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2753457161458658109} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 7576922181942720660} + m_Father: {fileID: 5079952485184716055} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -55, y: -20} + m_SizeDelta: {x: 55, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7157335581106900958 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2753457161458658109} + m_CullTransparentMesh: 1 +--- !u!114 &2057910738506920258 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2753457161458658109} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.27058825, g: 0.3019608, b: 0.3372549, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &2932943606622410908 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2753457161458658109} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 2057910738506920258} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &2777271659693523304 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4620873162094209160} + - component: {fileID: 7095006925020056466} + - component: {fileID: 5888763559272919894} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4620873162094209160 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2777271659693523304} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.35, y: 0.35, z: 0.35} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4229390355412622218} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 30, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7095006925020056466 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2777271659693523304} + m_CullTransparentMesh: 1 +--- !u!114 &5888763559272919894 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2777271659693523304} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: e49c8945f20a44825a5c383e704bdd4d, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &2813932997008303915 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8787249433612794604} + m_Layer: 0 + m_Name: TopRow + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8787249433612794604 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2813932997008303915} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.7, y: 0.7, z: 0.7} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2616124474499915878} + m_Father: {fileID: 410678886995482376} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 200, y: 100} + m_Pivot: {x: 0, y: 1} +--- !u!1 &2814010764989920895 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2587283141843018356} + - component: {fileID: 8599413065498176132} + - component: {fileID: 659308852333833722} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2587283141843018356 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2814010764989920895} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1399950637389611688} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8599413065498176132 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2814010764989920895} + m_CullTransparentMesh: 1 +--- !u!114 &659308852333833722 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2814010764989920895} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: R +--- !u!1 &2878421002919375161 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5369170770478178254} + - component: {fileID: 6242622903749276192} + - component: {fileID: 1685255801283181429} + m_Layer: 5 + m_Name: Bg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5369170770478178254 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2878421002919375161} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6811891375136488604} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6242622903749276192 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2878421002919375161} + m_CullTransparentMesh: 1 +--- !u!114 &1685255801283181429 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2878421002919375161} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.10980392, g: 0.11372549, b: 0.13333334, a: 0.78431374} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &2909404117557252829 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3349165801399695611} + m_Layer: 0 + m_Name: RotateArea + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3349165801399695611 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2909404117557252829} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4617453281104925394} + - {fileID: 2339633520571222730} + - {fileID: 5163667027452509501} + - {fileID: 4229390355412622218} + - {fileID: 89667494743843822} + m_Father: {fileID: 9067816575889166465} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 40} + m_SizeDelta: {x: 165, y: 60} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &2950203337303658465 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7637704689904377349} + - component: {fileID: 6635966882219293660} + - component: {fileID: 7931849741764499809} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7637704689904377349 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2950203337303658465} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8743676548450038441} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6635966882219293660 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2950203337303658465} + m_CullTransparentMesh: 1 +--- !u!114 &7931849741764499809 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2950203337303658465} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 42 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 115 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Prim2DClick +--- !u!1 &2961637890377610379 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7415250936184792679} + - component: {fileID: 3755056454044837591} + - component: {fileID: 195434587186299607} + m_Layer: 5 + m_Name: ControllerActionsTitle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7415250936184792679 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2961637890377610379} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5776210204937225324} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 25, y: -30} + m_SizeDelta: {x: 470, y: 32} + m_Pivot: {x: 0, y: 0.5} +--- !u!222 &3755056454044837591 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2961637890377610379} + m_CullTransparentMesh: 0 +--- !u!114 &195434587186299607 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2961637890377610379} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 35 + m_FontStyle: 1 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Input Selection +--- !u!1 &2970811688263072926 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4975160660423542691} + - component: {fileID: 2540087803932043228} + - component: {fileID: 5489103623761303184} + m_Layer: 5 + m_Name: TriggerHighlight + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &4975160660423542691 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2970811688263072926} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4380196631978487517} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 0.5, y: 0} + m_AnchoredPosition: {x: 0, y: 145} + m_SizeDelta: {x: 190, y: 48} + m_Pivot: {x: 0.5, y: 0} +--- !u!222 &2540087803932043228 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2970811688263072926} + m_CullTransparentMesh: 1 +--- !u!114 &5489103623761303184 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2970811688263072926} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: dd8fd94bee0954b82adaf33046ec980d, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &2982576179844464071 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 681353596503800686} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &681353596503800686 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2982576179844464071} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2649818408318764144} + - {fileID: 2101289955874765098} + m_Father: {fileID: 6371556872934477241} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &2993293739620195529 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6201890944216999079} + - component: {fileID: 1311415432147338232} + - component: {fileID: 8072678577548433886} + m_Layer: 5 + m_Name: LeftControllerHighlight + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &6201890944216999079 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2993293739620195529} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5893151266970048260} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 1} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: -5} + m_SizeDelta: {x: 55, y: 55} + m_Pivot: {x: 0.5, y: 1} +--- !u!222 &1311415432147338232 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2993293739620195529} + m_CullTransparentMesh: 1 +--- !u!114 &8072678577548433886 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2993293739620195529} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.1477839, g: 0.47206765, b: 0.764151, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: e6eb07daf4cc52449a15922f0b93851d, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &2995216176530447659 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4423570637848008926} + - component: {fileID: 8889875099690386568} + - component: {fileID: 6201746460681286712} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4423570637848008926 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2995216176530447659} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6606093925856735165} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8889875099690386568 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2995216176530447659} + m_CullTransparentMesh: 1 +--- !u!114 &6201746460681286712 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2995216176530447659} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: A +--- !u!1 &3013830772895798345 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2730305557113074067} + - component: {fileID: 623654291003448580} + - component: {fileID: 5170955592955981493} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2730305557113074067 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3013830772895798345} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8961203073220847541} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &623654291003448580 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3013830772895798345} + m_CullTransparentMesh: 1 +--- !u!114 &5170955592955981493 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3013830772895798345} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: M +--- !u!1 &3042770775352671984 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4000528753814536211} + - component: {fileID: 5631105136814584067} + - component: {fileID: 7998036945722733422} + m_Layer: 5 + m_Name: LeftPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4000528753814536211 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3042770775352671984} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2399913181122689174} + m_Father: {fileID: 5357045099504853531} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 15, y: 10} + m_SizeDelta: {x: 65, y: 225} + m_Pivot: {x: 0, y: 0.5} +--- !u!222 &5631105136814584067 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3042770775352671984} + m_CullTransparentMesh: 1 +--- !u!114 &7998036945722733422 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3042770775352671984} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.10196079, g: 0.11764707, b: 0.14509805, a: 0.5882353} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &3071520500023141186 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2476527380089783404} + - component: {fileID: 5012619533695247019} + - component: {fileID: 4448934049968922253} + m_Layer: 5 + m_Name: Bg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2476527380089783404 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3071520500023141186} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8672739676909435217} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5012619533695247019 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3071520500023141186} + m_CullTransparentMesh: 1 +--- !u!114 &4448934049968922253 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3071520500023141186} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.34509805, g: 0.34509805, b: 0.34509805, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &3102861836040358921 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7588369489465562914} + m_Layer: 0 + m_Name: GrabPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &7588369489465562914 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3102861836040358921} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6844145415412592068} + m_Father: {fileID: 4182932038750303461} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 260, y: -18} + m_SizeDelta: {x: 100, y: 36} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &3127770775838305934 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2526830773974959146} + - component: {fileID: 7627383714366418552} + - component: {fileID: 4002493102811584586} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2526830773974959146 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3127770775838305934} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8672739676909435217} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7627383714366418552 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3127770775838305934} + m_CullTransparentMesh: 1 +--- !u!114 &4002493102811584586 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3127770775838305934} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 42 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 115 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: R | R +--- !u!1 &3128150422681935294 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4008613158589331144} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4008613158589331144 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3128150422681935294} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6247579921553943294} + - {fileID: 272371890972314931} + m_Father: {fileID: 291896369846182320} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &3132497852055209462 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2220631344909927049} + - component: {fileID: 3967819374837278419} + - component: {fileID: 7381547315462987873} + m_Layer: 5 + m_Name: ControllerImage + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2220631344909927049 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3132497852055209462} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4758278766138899793} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 45, y: 70} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3967819374837278419 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3132497852055209462} + m_CullTransparentMesh: 1 +--- !u!114 &7381547315462987873 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3132497852055209462} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: e854b252bbd914e019576e0089dfc2d6, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &3144492984098654999 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 671700557140141237} + - component: {fileID: 4542874369689132270} + - component: {fileID: 1379556632536765743} + m_Layer: 5 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &671700557140141237 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3144492984098654999} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4100146090115003127} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 30, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4542874369689132270 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3144492984098654999} + m_CullTransparentMesh: 1 +--- !u!114 &1379556632536765743 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3144492984098654999} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: e1be5a83864ad4b0eb0031e575739dc0, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &3145070553659672540 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5068247915849755885} + - component: {fileID: 8555940268491105467} + - component: {fileID: 3475204175259702502} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5068247915849755885 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3145070553659672540} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.35, y: 0.35, z: 0.35} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5163667027452509501} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 30, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8555940268491105467 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3145070553659672540} + m_CullTransparentMesh: 1 +--- !u!114 &3475204175259702502 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3145070553659672540} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: facc8619d91ad4608b3af66d3e3432db, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &3146201753836637611 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6298177138383834311} + - component: {fileID: 2196069120430886603} + - component: {fileID: 4216838364463523653} + m_Layer: 5 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6298177138383834311 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3146201753836637611} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3466780529405657112} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 33, y: 33} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2196069120430886603 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3146201753836637611} + m_CullTransparentMesh: 1 +--- !u!114 &4216838364463523653 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3146201753836637611} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 87805fa2e196d415b84396f8e984abcf, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &3150945017307151804 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6811891375136488604} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6811891375136488604 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3150945017307151804} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5369170770478178254} + - {fileID: 7680956757446303372} + m_Father: {fileID: 433728218585467843} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &3153407070354300975 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7680956757446303372} + - component: {fileID: 356061797596940792} + - component: {fileID: 2883111968434153981} + m_Layer: 5 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7680956757446303372 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3153407070354300975} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6811891375136488604} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 30, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &356061797596940792 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3153407070354300975} + m_CullTransparentMesh: 1 +--- !u!114 &2883111968434153981 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3153407070354300975} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: f4ae9f38f5d3b410f84c02c1486c64eb, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &3162708432494361913 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4700667935544648171} + - component: {fileID: 274687619197983514} + - component: {fileID: 1037779309852142742} + m_Layer: 5 + m_Name: Bg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4700667935544648171 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3162708432494361913} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 9067816575889166465} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!222 &274687619197983514 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3162708432494361913} + m_CullTransparentMesh: 1 +--- !u!114 &1037779309852142742 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3162708432494361913} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0.39215687} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &3177480734895132315 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3471145126301731449} + m_Layer: 0 + m_Name: HotkeyPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &3471145126301731449 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3177480734895132315} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6481212961435706716} + m_Father: {fileID: 4182932038750303461} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 840, y: -18} + m_SizeDelta: {x: 100, y: 36} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &3210289541458989383 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2289920746676440892} + m_Layer: 0 + m_Name: MirrorModePanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &2289920746676440892 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3210289541458989383} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8672739676909435217} + m_Father: {fileID: 2616124474499915878} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 96, y: -25} + m_SizeDelta: {x: 80, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &3266237681419409190 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2339633520571222730} + - component: {fileID: 1110464660913625493} + - component: {fileID: 2421748780543340940} + - component: {fileID: 1254180084618047660} + m_Layer: 0 + m_Name: Panel01 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2339633520571222730 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3266237681419409190} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8291476099510493451} + m_Father: {fileID: 3349165801399695611} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: -15} + m_SizeDelta: {x: 55, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1110464660913625493 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3266237681419409190} + m_CullTransparentMesh: 1 +--- !u!114 &2421748780543340940 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3266237681419409190} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.27058825, g: 0.3019608, b: 0.3372549, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &1254180084618047660 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3266237681419409190} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 2421748780543340940} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &3292115020647013831 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2599148704571305237} + m_Layer: 0 + m_Name: RightControllerPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &2599148704571305237 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3292115020647013831} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2962794875539291406} + m_Father: {fileID: 2616124474499915878} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 25, y: -25} + m_SizeDelta: {x: 50, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &3310148639053912994 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8017059706523433701} + m_Layer: 5 + m_Name: HotkeyColumn + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8017059706523433701 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3310148639053912994} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3319338259274601914} + - {fileID: 865914667572998966} + m_Father: {fileID: 592911455511671645} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 75, y: 0} + m_Pivot: {x: 1, y: 0.5} +--- !u!1 &3314297589038959434 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 592911455511671645} + - component: {fileID: 769437570026888928} + - component: {fileID: 8441318088802406769} + m_Layer: 5 + m_Name: MiddlePanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &592911455511671645 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3314297589038959434} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2331962377881872398} + - {fileID: 8017059706523433701} + - {fileID: 4380196631978487517} + m_Father: {fileID: 5988305161568956383} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 80, y: 10} + m_SizeDelta: {x: 200, y: 225} + m_Pivot: {x: 0, y: 0.5} +--- !u!222 &769437570026888928 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3314297589038959434} + m_CullTransparentMesh: 1 +--- !u!114 &8441318088802406769 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3314297589038959434} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.09019608, g: 0.09411766, b: 0.10196079, a: 0.5882353} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &3339236843379809269 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8425869877281121703} + - component: {fileID: 5445725589378442086} + m_Layer: 0 + m_Name: OrderedListViewController + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8425869877281121703 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3339236843379809269} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.7, y: 0.7, z: 0.7} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2705374579976199964} + - {fileID: 4494445783134658300} + - {fileID: 748586345435336783} + - {fileID: 8905853233531598978} + - {fileID: 4197298713820827933} + - {fileID: 5646085260269725379} + - {fileID: 2499771684115911356} + - {fileID: 2481861518241712779} + - {fileID: 8094499031099762269} + - {fileID: 5264817491353012661} + - {fileID: 2523884692327029128} + - {fileID: 5042812543268994979} + m_Father: {fileID: 985979082482746275} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &5445725589378442086 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3339236843379809269} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 5 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 0 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!1 &3369587631396269627 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1391848147440557170} + - component: {fileID: 4539215705061876784} + - component: {fileID: 6802545537601090002} + m_Layer: 5 + m_Name: WarningMessage + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1391848147440557170 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3369587631396269627} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 7243652154361334245} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 65, y: -65} + m_SizeDelta: {x: 470, y: 32} + m_Pivot: {x: 0, y: 0.5} +--- !u!222 &4539215705061876784 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3369587631396269627} + m_CullTransparentMesh: 0 +--- !u!114 &6802545537601090002 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3369587631396269627} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 0, b: 0, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 35 + m_FontStyle: 1 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Hand Actions are currently not interactive. They only change the hand shape. +--- !u!1 &3381567573697843027 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8643803981155670597} + - component: {fileID: 5702935907698965662} + - component: {fileID: 5457432017805683841} + m_Layer: 5 + m_Name: ControllerActionsTitle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8643803981155670597 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3381567573697843027} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1534137771346558524} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 25, y: -30} + m_SizeDelta: {x: 470, y: 32} + m_Pivot: {x: 0, y: 0.5} +--- !u!222 &5702935907698965662 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3381567573697843027} + m_CullTransparentMesh: 0 +--- !u!114 &5457432017805683841 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3381567573697843027} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 35 + m_FontStyle: 1 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Controller Actions +--- !u!1 &3392586278457549667 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6819994946754835142} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6819994946754835142 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3392586278457549667} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1652830179350088080} + - {fileID: 5028184261344385899} + - {fileID: 1758506564661323501} + m_Father: {fileID: 2446668716667908932} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &3396296707107138166 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 410678886995482376} + m_Layer: 0 + m_Name: SelectedInputFeedbackPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &410678886995482376 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3396296707107138166} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1.5000036, y: 1.5000036, z: 1.5000036} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8787249433612794604} + - {fileID: 985979082482746275} + m_Father: {fileID: 4371884039492262807} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 20, y: -19.999878} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0, y: 1} +--- !u!1 &3402425381518987149 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8231515396528814961} + - component: {fileID: 1466692495251522092} + - component: {fileID: 2675211129511046207} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8231515396528814961 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3402425381518987149} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3090297890081872097} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1466692495251522092 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3402425381518987149} + m_CullTransparentMesh: 1 +--- !u!114 &2675211129511046207 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3402425381518987149} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 35 + m_FontStyle: 1 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: X +--- !u!1 &3444592632101030600 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8040049962811822599} + - component: {fileID: 2013161671634927459} + - component: {fileID: 4120237122365547101} + m_Layer: 5 + m_Name: Bg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8040049962811822599 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3444592632101030600} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1534137771346558524} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2013161671634927459 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3444592632101030600} + m_CullTransparentMesh: 1 +--- !u!114 &4120237122365547101 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3444592632101030600} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.10980393, g: 0.1137255, b: 0.13333334, a: 0.78431374} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &3446697044944627489 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6612033344245225099} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6612033344245225099 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3446697044944627489} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6578091506877101235} + - {fileID: 4265939669474097041} + - {fileID: 8603889657556066090} + m_Father: {fileID: 3536405280500901237} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &3468036014651588138 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6031633703728948580} + - component: {fileID: 3539246824679368411} + - component: {fileID: 5432467127834361503} + m_Layer: 5 + m_Name: Bg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6031633703728948580 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3468036014651588138} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3382065945366543770} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3539246824679368411 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3468036014651588138} + m_CullTransparentMesh: 1 +--- !u!114 &5432467127834361503 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3468036014651588138} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.10980392, g: 0.11372549, b: 0.13333334, a: 0.78431374} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &3513069058632174966 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5709037953205928473} + m_Layer: 0 + m_Name: CloseOpenWindow + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5709037953205928473 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3513069058632174966} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 545201384620436452} + - {fileID: 4972783221715884806} + m_Father: {fileID: 7243652154361334245} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 175, y: 50} + m_Pivot: {x: 1, y: 1} +--- !u!1 &3524964649556250577 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6868710521208251015} + - component: {fileID: 5772501228498478109} + - component: {fileID: 5606787043534361400} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6868710521208251015 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3524964649556250577} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1996462089335580228} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5772501228498478109 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3524964649556250577} + m_CullTransparentMesh: 1 +--- !u!114 &5606787043534361400 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3524964649556250577} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 35 + m_FontStyle: 1 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Y +--- !u!1 &3583352891214695622 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6806629910064356187} + m_Layer: 0 + m_Name: ControllerActionsPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6806629910064356187 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3583352891214695622} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4983013818414831318} + - {fileID: 8927720812409968449} + - {fileID: 5988305161568956383} + - {fileID: 656342488099416437} + - {fileID: 2981473075935261234} + - {fileID: 8263786892442998087} + m_Father: {fileID: 3694782915305002292} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: 20, y: 15} + m_SizeDelta: {x: -40, y: 300} + m_Pivot: {x: 0, y: 0} +--- !u!1 &3619921744586787417 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 852662916917091370} + - component: {fileID: 1534045579433515681} + - component: {fileID: 482734355349931046} + m_Layer: 5 + m_Name: LeftControllerImage + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &852662916917091370 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3619921744586787417} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5893151266970048260} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 1} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: -15} + m_SizeDelta: {x: 25, y: 40} + m_Pivot: {x: 0.5, y: 1} +--- !u!222 &1534045579433515681 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3619921744586787417} + m_CullTransparentMesh: 1 +--- !u!114 &482734355349931046 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3619921744586787417} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 86ad78bcde32c40de86c59ef68e8c525, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &3629434402666471575 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3382065945366543770} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3382065945366543770 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3629434402666471575} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6031633703728948580} + - {fileID: 234688033643161652} + m_Father: {fileID: 4224604046746953303} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &3771092549353991761 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9125128771972128813} + - component: {fileID: 9165045606194585274} + - component: {fileID: 8282750013370475067} + - component: {fileID: 3406369528778329621} + m_Layer: 0 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &9125128771972128813 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3771092549353991761} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2709629706720696284} + m_Father: {fileID: 6822129441471570829} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 0.5, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 55, y: 30} + m_Pivot: {x: 0.5, y: 1} +--- !u!222 &9165045606194585274 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3771092549353991761} + m_CullTransparentMesh: 1 +--- !u!114 &8282750013370475067 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3771092549353991761} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.43801177, g: 0.4461339, b: 0.4811321, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &3406369528778329621 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3771092549353991761} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 8282750013370475067} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &3790744179823793378 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1671826015336775934} + m_Layer: 0 + m_Name: TranslateForwardPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &1671826015336775934 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3790744179823793378} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4100146090115003127} + m_Father: {fileID: 2616124474499915878} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 615, y: -25} + m_SizeDelta: {x: 50, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &3846620710285012465 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3325604111646158507} + m_Layer: 0 + m_Name: BothControllersPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &3325604111646158507 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3846620710285012465} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3466780529405657112} + m_Father: {fileID: 2616124474499915878} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 391, y: -25} + m_SizeDelta: {x: 50, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &3876311681811798585 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4020109067483886163} + - component: {fileID: 6014167106804142683} + - component: {fileID: 7032006061559919754} + m_Layer: 5 + m_Name: LeftHandHighlight + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &4020109067483886163 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3876311681811798585} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5893151266970048260} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 0.5, y: 0} + m_AnchoredPosition: {x: 0, y: 5} + m_SizeDelta: {x: 55, y: 55} + m_Pivot: {x: 0.5, y: 0} +--- !u!222 &6014167106804142683 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3876311681811798585} + m_CullTransparentMesh: 1 +--- !u!114 &7032006061559919754 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3876311681811798585} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.1477839, g: 0.47206765, b: 0.764151, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: e6eb07daf4cc52449a15922f0b93851d, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &3877689271622952557 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7619186013668305424} + - component: {fileID: 1818109112778160990} + - component: {fileID: 8751517039485044021} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7619186013668305424 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3877689271622952557} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 545201384620436452} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1818109112778160990 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3877689271622952557} + m_CullTransparentMesh: 1 +--- !u!114 &8751517039485044021 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3877689271622952557} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 35 + m_FontStyle: 1 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: X +--- !u!1 &3881779404761259386 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 813917015904466963} + - component: {fileID: 8246670754963447650} + - component: {fileID: 3947207569488616372} + - component: {fileID: 7561760909099458248} + m_Layer: 0 + m_Name: Panel04 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &813917015904466963 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3881779404761259386} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2868649890003439439} + m_Father: {fileID: 3789650784899537203} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 15} + m_SizeDelta: {x: 55, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8246670754963447650 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3881779404761259386} + m_CullTransparentMesh: 1 +--- !u!114 &3947207569488616372 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3881779404761259386} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.27058825, g: 0.3019608, b: 0.3372549, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &7561760909099458248 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3881779404761259386} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 3947207569488616372} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &3906196597612753507 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6916333246256487805} + - component: {fileID: 7615612748407320333} + - component: {fileID: 448283864822666755} + - component: {fileID: 2353627643596650880} + m_Layer: 0 + m_Name: Panel03 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6916333246256487805 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3906196597612753507} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1273162673758324536} + m_Father: {fileID: 344118157753254797} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 55, y: -116.66667} + m_SizeDelta: {x: 55, y: 30} + m_Pivot: {x: 1, y: 1} +--- !u!222 &7615612748407320333 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3906196597612753507} + m_CullTransparentMesh: 1 +--- !u!114 &448283864822666755 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3906196597612753507} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.43801177, g: 0.4461339, b: 0.4811321, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &2353627643596650880 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3906196597612753507} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 448283864822666755} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &3946779398479771854 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1996462089335580228} + - component: {fileID: 5947851741628526642} + - component: {fileID: 6998806431045785784} + - component: {fileID: 3217999989538435383} + m_Layer: 0 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1996462089335580228 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3946779398479771854} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6868710521208251015} + m_Father: {fileID: 8514917942798000873} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -15, y: -10} + m_SizeDelta: {x: 50, y: 30} + m_Pivot: {x: 1, y: 1} +--- !u!222 &5947851741628526642 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3946779398479771854} + m_CullTransparentMesh: 1 +--- !u!114 &6998806431045785784 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3946779398479771854} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.27058825, g: 0.3019608, b: 0.3372549, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &3217999989538435383 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3946779398479771854} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 6998806431045785784} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 7960291804964704818} + m_TargetAssemblyTypeName: UnityEngine.GameObject, UnityEngine + m_MethodName: SetActive + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + - m_Target: {fileID: 2492122509147849978} + m_TargetAssemblyTypeName: UnityEngine.GameObject, UnityEngine + m_MethodName: SetActive + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 1 + m_CallState: 2 +--- !u!1 &3953347883324740868 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5988305161568956383} + m_Layer: 0 + m_Name: RightControllerActions + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5988305161568956383 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3953347883324740868} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6542690231547238600} + - {fileID: 4758278766138899793} + - {fileID: 592911455511671645} + - {fileID: 5079952485184716055} + m_Father: {fileID: 6806629910064356187} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 193.99997, y: 0} + m_SizeDelta: {x: 235, y: 255} + m_Pivot: {x: 0, y: 0.5} +--- !u!1 &3990821709125147001 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4293226185622064000} + - component: {fileID: 24123118354213691} + - component: {fileID: 3726926147702627049} + m_Layer: 5 + m_Name: HandsPackageWarning + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &4293226185622064000 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3990821709125147001} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4664102382212086408} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 0.5, y: 0} + m_AnchoredPosition: {x: -50, y: 20} + m_SizeDelta: {x: 470, y: 32} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &24123118354213691 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3990821709125147001} + m_CullTransparentMesh: 0 +--- !u!114 &3726926147702627049 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3990821709125147001} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.6320754, g: 0.062611245, b: 0.062611245, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 35 + m_FontStyle: 1 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Download XR Hands Package to enable Hands. +--- !u!1 &3996808379603881156 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 344118157753254797} + - component: {fileID: 2520200972078308313} + m_Layer: 5 + m_Name: OrderedListView + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &344118157753254797 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3996808379603881156} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2922253935851140131} + - {fileID: 8961203073220847541} + - {fileID: 6916333246256487805} + m_Father: {fileID: 3906539553172013192} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -25} + m_SizeDelta: {x: 0, y: -50} + m_Pivot: {x: 0, y: 0.5} +--- !u!114 &2520200972078308313 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3996808379603881156} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 0 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!1 &4012047974255101659 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6158781090080212897} + - component: {fileID: 660774715569155898} + - component: {fileID: 4681211937247753220} + m_Layer: 0 + m_Name: SelectedInputLabel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6158781090080212897 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4012047974255101659} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3132576533883217541} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 1} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: -10} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0} +--- !u!222 &660774715569155898 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4012047974255101659} + m_CullTransparentMesh: 1 +--- !u!114 &4681211937247753220 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4012047974255101659} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 35 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Selected Input +--- !u!1 &4024449410481113720 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5653666562589261387} + - component: {fileID: 4556063317163932903} + - component: {fileID: 5329264155846747728} + m_Layer: 5 + m_Name: Bg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5653666562589261387 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4024449410481113720} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6332096640150509629} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4556063317163932903 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4024449410481113720} + m_CullTransparentMesh: 1 +--- !u!114 &5329264155846747728 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4024449410481113720} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.10980392, g: 0.11372549, b: 0.13333334, a: 0.78431374} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &4037090237031190581 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8743676548450038441} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8743676548450038441 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4037090237031190581} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1152638071590110996} + - {fileID: 7637704689904377349} + m_Father: {fileID: 5646085260269725379} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4067958456177157746 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6591958430727469847} + - component: {fileID: 5124483984763679343} + - component: {fileID: 1172297633139583264} + m_Layer: 5 + m_Name: Bg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6591958430727469847 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4067958456177157746} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3844796826368179264} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5124483984763679343 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4067958456177157746} + m_CullTransparentMesh: 1 +--- !u!114 &1172297633139583264 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4067958456177157746} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.10980392, g: 0.11372549, b: 0.13333334, a: 0.78431374} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &4097802845532184356 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7999378108177547697} + - component: {fileID: 823677094750439746} + - component: {fileID: 5857290358502505757} + m_Layer: 5 + m_Name: Bg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7999378108177547697 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4097802845532184356} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3132576533883217541} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!222 &823677094750439746 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4097802845532184356} + m_CullTransparentMesh: 1 +--- !u!114 &5857290358502505757 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4097802845532184356} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0.39215687} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &4124743419775524576 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7992491541968451500} + - component: {fileID: 6080642417098617597} + - component: {fileID: 8921064997086666523} + m_Layer: 0 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7992491541968451500 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4124743419775524576} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8263786892442998087} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -70, y: 0} + m_SizeDelta: {x: 200, y: 100} + m_Pivot: {x: 1, y: 1} +--- !u!222 &6080642417098617597 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4124743419775524576} + m_CullTransparentMesh: 1 +--- !u!114 &8921064997086666523 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4124743419775524576} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.54901963, g: 0.5568628, b: 0.58431375, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Reposition into view +--- !u!1 &4142607296923578154 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7770419022292439469} + - component: {fileID: 4177438146366684854} + - component: {fileID: 3080483111807852381} + m_Layer: 5 + m_Name: Bg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7770419022292439469 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4142607296923578154} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 970508293922870668} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4177438146366684854 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4142607296923578154} + m_CullTransparentMesh: 1 +--- !u!114 &3080483111807852381 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4142607296923578154} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.21960786, g: 0.21960786, b: 0.21960786, a: 0.78431374} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &4184778430551844397 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2981473075935261234} + m_Layer: 0 + m_Name: CycleActions + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2981473075935261234 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4184778430551844397} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6778593999777684486} + - {fileID: 1159915022424144059} + m_Father: {fileID: 6806629910064356187} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 0.5, y: 0} + m_AnchoredPosition: {x: 75, y: 0} + m_SizeDelta: {x: 175, y: 50} + m_Pivot: {x: 1, y: 0} +--- !u!1 &4196974160024840083 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6178413744684232337} + - component: {fileID: 2311716628293521192} + - component: {fileID: 2756932236237953788} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6178413744684232337 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4196974160024840083} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6828990220713066928} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: -25} + m_SizeDelta: {x: 25, y: 15} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2311716628293521192 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4196974160024840083} + m_CullTransparentMesh: 1 +--- !u!114 &2756932236237953788 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4196974160024840083} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 208b7cba2773646428c0a2fe8c31d4e4, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &4257315694993276943 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1705965217030963751} + - component: {fileID: 2016267594051782329} + - component: {fileID: 4771872553864128020} + m_Layer: 5 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1705965217030963751 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4257315694993276943} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 7316057237409594490} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 25, y: 0} + m_SizeDelta: {x: 30.2816, y: 30.281} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2016267594051782329 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4257315694993276943} + m_CullTransparentMesh: 1 +--- !u!114 &4771872553864128020 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4257315694993276943} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 51dbca003875e4a13a6aa29047489e85, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &4267984779722773918 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8794901099486035912} + - component: {fileID: 3581565977647808074} + - component: {fileID: 5283896952198314581} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8794901099486035912 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4267984779722773918} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8949636231158854138} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3581565977647808074 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4267984779722773918} + m_CullTransparentMesh: 1 +--- !u!114 &5283896952198314581 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4267984779722773918} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: G +--- !u!1 &4285961034861842867 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2896886030413715106} + m_Layer: 0 + m_Name: RotateDownPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &2896886030413715106 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4285961034861842867} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 7101224599062538259} + m_Father: {fileID: 2616124474499915878} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 895, y: -25} + m_SizeDelta: {x: 50, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4302463985318714154 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7979601971872826194} + - component: {fileID: 2754141748214218421} + - component: {fileID: 8374010209965841964} + m_Layer: 5 + m_Name: Bg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7979601971872826194 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4302463985318714154} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4664102382212086408} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2754141748214218421 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4302463985318714154} + m_CullTransparentMesh: 1 +--- !u!114 &8374010209965841964 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4302463985318714154} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.10980393, g: 0.1137255, b: 0.13333334, a: 0.78431374} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &4319587984834472493 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1206070348257068892} + - component: {fileID: 5779872400812062906} + - component: {fileID: 2856109443893643175} + m_Layer: 0 + m_Name: Label03 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1206070348257068892 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4319587984834472493} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2059962098950313763} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: -108.5} + m_SizeDelta: {x: 85, y: 30} + m_Pivot: {x: 0, y: 0.5} +--- !u!222 &5779872400812062906 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4319587984834472493} + m_CullTransparentMesh: 1 +--- !u!114 &2856109443893643175 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4319587984834472493} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.75686276, g: 0.7647059, b: 0.7921569, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: '3. Primary + +' +--- !u!1 &4341026951353028758 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6109187273434472244} + m_Layer: 0 + m_Name: RightControllerActions + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6109187273434472244 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4341026951353028758} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2346171517373739530} + - {fileID: 3161203776773436233} + - {fileID: 3299587613051498839} + m_Father: {fileID: 8717765101557363114} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 193.99997, y: 0} + m_SizeDelta: {x: 235, y: 255} + m_Pivot: {x: 0, y: 0.5} +--- !u!1 &4376523900230537024 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3155337674143670155} + - component: {fileID: 5013513095826526692} + - component: {fileID: 7648418503507324691} + m_Layer: 5 + m_Name: PlusMark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3155337674143670155 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4376523900230537024} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.49999437, y: 0.49999437, z: 0.49999437} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 970508293922870668} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -25, y: 0} + m_SizeDelta: {x: 50, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5013513095826526692 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4376523900230537024} + m_CullTransparentMesh: 1 +--- !u!114 &7648418503507324691 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4376523900230537024} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 42 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 115 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: + +--- !u!1 &4559025518540611574 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6247579921553943294} + - component: {fileID: 8216094801543789929} + - component: {fileID: 4534660888760227124} + m_Layer: 5 + m_Name: Bg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6247579921553943294 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4559025518540611574} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4008613158589331144} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8216094801543789929 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4559025518540611574} + m_CullTransparentMesh: 1 +--- !u!114 &4534660888760227124 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4559025518540611574} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.10980392, g: 0.11372549, b: 0.13333334, a: 0.78431374} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &4576252623551698422 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 991375141000976476} + - component: {fileID: 127637950316200929} + - component: {fileID: 4411280289753513230} + m_Layer: 5 + m_Name: RightPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &991375141000976476 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4576252623551698422} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 7072671058180535645} + - {fileID: 1367931462059591173} + m_Father: {fileID: 5357045099504853531} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 80, y: 10} + m_SizeDelta: {x: 125, y: 225} + m_Pivot: {x: 0, y: 0.5} +--- !u!222 &127637950316200929 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4576252623551698422} + m_CullTransparentMesh: 1 +--- !u!114 &4411280289753513230 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4576252623551698422} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.10196079, g: 0.11764707, b: 0.14509805, a: 0.5882353} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &4601928621978175947 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7861159257729309501} + m_Layer: 0 + m_Name: CloseOpenWindowArea + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7861159257729309501 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4601928621978175947} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 318831086246078444} + - {fileID: 3816936823830545153} + m_Father: {fileID: 4664102382212086408} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 175, y: 50} + m_Pivot: {x: 1, y: 1} +--- !u!1 &4612921555161000992 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7510661044183851904} + - component: {fileID: 5551720339166127510} + - component: {fileID: 4978519522540504929} + m_Layer: 5 + m_Name: GrabHighlight + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &7510661044183851904 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4612921555161000992} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8865462156448843826} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 0.5, y: 0} + m_AnchoredPosition: {x: 0, y: 13} + m_SizeDelta: {x: 185, y: 50} + m_Pivot: {x: 0.5, y: 0} +--- !u!222 &5551720339166127510 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4612921555161000992} + m_CullTransparentMesh: 1 +--- !u!114 &4978519522540504929 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4612921555161000992} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: dd8fd94bee0954b82adaf33046ec980d, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &4641217639154947236 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1703763512753803258} + - component: {fileID: 5318543098134807021} + - component: {fileID: 7396532574401644929} + m_Layer: 5 + m_Name: GripHighlight + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &1703763512753803258 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4641217639154947236} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4380196631978487517} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 0.5, y: 0} + m_AnchoredPosition: {x: 0, y: 102} + m_SizeDelta: {x: 190, y: 48} + m_Pivot: {x: 0.5, y: 0} +--- !u!222 &5318543098134807021 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4641217639154947236} + m_CullTransparentMesh: 1 +--- !u!114 &7396532574401644929 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4641217639154947236} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: dd8fd94bee0954b82adaf33046ec980d, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &4653516047911305232 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6371556872934477241} + m_Layer: 0 + m_Name: TranslateDownPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &6371556872934477241 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4653516047911305232} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 681353596503800686} + m_Father: {fileID: 2616124474499915878} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 559, y: -25} + m_SizeDelta: {x: 50, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4685110669507008040 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8961203073220847541} + - component: {fileID: 1499149968294621843} + - component: {fileID: 1570899397590954926} + - component: {fileID: 4577255496243263830} + m_Layer: 0 + m_Name: Panel02 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8961203073220847541 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4685110669507008040} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2730305557113074067} + m_Father: {fileID: 344118157753254797} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 55, y: -58.333336} + m_SizeDelta: {x: 55, y: 30} + m_Pivot: {x: 1, y: 1} +--- !u!222 &1499149968294621843 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4685110669507008040} + m_CullTransparentMesh: 1 +--- !u!114 &1570899397590954926 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4685110669507008040} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.43801177, g: 0.4461339, b: 0.4811321, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &4577255496243263830 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4685110669507008040} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1570899397590954926} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &4712784914374026177 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2833847429906496415} + - component: {fileID: 7476710908684066983} + - component: {fileID: 8198067014597314855} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2833847429906496415 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4712784914374026177} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 7526453948634149802} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7476710908684066983 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4712784914374026177} + m_CullTransparentMesh: 1 +--- !u!114 &8198067014597314855 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4712784914374026177} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: E +--- !u!1 &4737357180700011870 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8935044325263569736} + - component: {fileID: 7021811169961513635} + - component: {fileID: 6282437471291683846} + m_Layer: 5 + m_Name: Bg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8935044325263569736 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4737357180700011870} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8598129656025319670} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7021811169961513635 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4737357180700011870} + m_CullTransparentMesh: 1 +--- !u!114 &6282437471291683846 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4737357180700011870} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.10980392, g: 0.11372549, b: 0.13333334, a: 0.78431374} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &4742026790041128657 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5867722273410490029} + - component: {fileID: 770183710195353217} + - component: {fileID: 6486198524529525802} + m_Layer: 0 + m_Name: Label02 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5867722273410490029 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4742026790041128657} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4967460965833401963} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: -77.333336} + m_SizeDelta: {x: 85, y: 30} + m_Pivot: {x: 0, y: 0.5} +--- !u!222 &770183710195353217 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4742026790041128657} + m_CullTransparentMesh: 1 +--- !u!114 &6486198524529525802 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4742026790041128657} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.75686276, g: 0.7647059, b: 0.7921569, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: 2. Pinch +--- !u!1 &4751428748907251786 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7353795325587961532} + - component: {fileID: 3931991250811683829} + - component: {fileID: 5618386190117463981} + m_Layer: 5 + m_Name: Bg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7353795325587961532 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4751428748907251786} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8479753274659742030} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3931991250811683829 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4751428748907251786} + m_CullTransparentMesh: 1 +--- !u!114 &5618386190117463981 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4751428748907251786} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.10980392, g: 0.11372549, b: 0.13333334, a: 0.78431374} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &4810540065430969470 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1046941916145497684} + - component: {fileID: 7315912383930140847} + - component: {fileID: 8204039486842106123} + m_Layer: 5 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1046941916145497684 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4810540065430969470} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 970508293922870668} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 25, y: 0} + m_SizeDelta: {x: 25, y: 25} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7315912383930140847 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4810540065430969470} + m_CullTransparentMesh: 1 +--- !u!114 &8204039486842106123 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4810540065430969470} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 25a7ddcf659944c8d89baff5fcdf9d2e, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &4817740290841730939 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4759511295660790030} + m_Layer: 5 + m_Name: ActionColumn + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4759511295660790030 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4817740290841730939} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1056483781790259420} + - {fileID: 4967460965833401963} + m_Father: {fileID: 3299587613051498839} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 15, y: 0} + m_SizeDelta: {x: 75, y: 0} + m_Pivot: {x: 0, y: 0.5} +--- !u!1 &4821306420266707006 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 970508293922870668} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &970508293922870668 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4821306420266707006} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 7770419022292439469} + - {fileID: 6160843009444529302} + - {fileID: 3155337674143670155} + - {fileID: 1046941916145497684} + m_Father: {fileID: 5042812543268994979} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 7.5, y: 0} + m_SizeDelta: {x: -15, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4838359631210732590 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 93416291502737880} + - component: {fileID: 3350328019468119768} + - component: {fileID: 7491236000102133212} + m_Layer: 5 + m_Name: RightHandImage + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &93416291502737880 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4838359631210732590} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8287293109346138334} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 0.5, y: 0} + m_AnchoredPosition: {x: 0, y: 15} + m_SizeDelta: {x: 30, y: 35} + m_Pivot: {x: 0.5, y: 0} +--- !u!222 &3350328019468119768 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4838359631210732590} + m_CullTransparentMesh: 1 +--- !u!114 &7491236000102133212 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4838359631210732590} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: fd446dd001ea5485bb654a52817c3e96, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &4838781571193856842 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9148729020113727066} + - component: {fileID: 3138345911816761330} + - component: {fileID: 6924574856049014531} + m_Layer: 5 + m_Name: ActionLabel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &9148729020113727066 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4838781571193856842} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2331962377881872398} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 20, y: -25} + m_SizeDelta: {x: 470, y: 32} + m_Pivot: {x: 0, y: 0.5} +--- !u!222 &3138345911816761330 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4838781571193856842} + m_CullTransparentMesh: 0 +--- !u!114 &6924574856049014531 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4838781571193856842} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Action +--- !u!1 &4911365969864101993 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8766408802495292769} + - component: {fileID: 384374515986393102} + - component: {fileID: 5427795204006297372} + m_Layer: 5 + m_Name: Bg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8766408802495292769 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4911365969864101993} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 7614873236758490043} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &384374515986393102 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4911365969864101993} + m_CullTransparentMesh: 1 +--- !u!114 &5427795204006297372 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4911365969864101993} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.10980392, g: 0.11372549, b: 0.13333334, a: 0.78431374} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &4915099322819805516 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2421303011123297887} + m_Layer: 0 + m_Name: PinchPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &2421303011123297887 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4915099322819805516} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6933365344557907413} + m_Father: {fileID: 4182932038750303461} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 155, y: -18} + m_SizeDelta: {x: 100, y: 36} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &4920882313468001026 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4919164979522701761} + - component: {fileID: 8989450416318176823} + - component: {fileID: 6994401511849240319} + m_Layer: 5 + m_Name: HandActionsTitle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4919164979522701761 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4920882313468001026} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 7243652154361334245} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 25, y: -25} + m_SizeDelta: {x: 470, y: 32} + m_Pivot: {x: 0, y: 0.5} +--- !u!222 &8989450416318176823 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4920882313468001026} + m_CullTransparentMesh: 0 +--- !u!114 &6994401511849240319 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4920882313468001026} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 35 + m_FontStyle: 1 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Hand Actions +--- !u!1 &4943049255218925665 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2297162629739030516} + - component: {fileID: 2709238529918074012} + - component: {fileID: 3291852131798145620} + m_Layer: 5 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2297162629739030516 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4943049255218925665} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5719157918649075888} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 21, y: 0} + m_SizeDelta: {x: 26, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2709238529918074012 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4943049255218925665} + m_CullTransparentMesh: 1 +--- !u!114 &3291852131798145620 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4943049255218925665} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 8511a3a1d58364d7da8521c56be3feaa, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &4951925752196195924 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3242538737529602091} + m_Layer: 0 + m_Name: CloseOpenWindowArea + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3242538737529602091 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4951925752196195924} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3090297890081872097} + - {fileID: 8595173280344598221} + m_Father: {fileID: 2158477176593190204} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -5} + m_SizeDelta: {x: 175, y: 50} + m_Pivot: {x: 1, y: 1} +--- !u!1 &4999758389361183625 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9197683768530096908} + - component: {fileID: 2522204982274097339} + - component: {fileID: 2968096442933148004} + m_Layer: 0 + m_Name: HandModalityLabel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &9197683768530096908 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4999758389361183625} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4625834173686673388} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 1} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: -10} + m_SizeDelta: {x: 100, y: 50} + m_Pivot: {x: 0.5, y: 1} +--- !u!222 &2522204982274097339 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4999758389361183625} + m_CullTransparentMesh: 1 +--- !u!114 &2968096442933148004 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4999758389361183625} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Hand Modality +--- !u!1 &5009254698425503920 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3638238043440212286} + - component: {fileID: 1001591860148277537} + - component: {fileID: 2656354189804339379} + m_Layer: 5 + m_Name: FullBodyPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3638238043440212286 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5009254698425503920} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4571686054701045371} + - {fileID: 7618915864732456778} + - {fileID: 6828990220713066928} + m_Father: {fileID: 3132576533883217541} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 10, y: 105} + m_SizeDelta: {x: 65, y: 200} + m_Pivot: {x: 0, y: 1} +--- !u!222 &1001591860148277537 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5009254698425503920} + m_CullTransparentMesh: 1 +--- !u!114 &2656354189804339379 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5009254698425503920} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.09019608, g: 0.09411765, b: 0.101960786, a: 0.5882353} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &5022496112978294671 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8937204562658477792} + - component: {fileID: 1496230401252934919} + - component: {fileID: 2788339409729031323} + m_Layer: 5 + m_Name: InputSelectionTitle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8937204562658477792 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5022496112978294671} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4664102382212086408} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 25, y: -25} + m_SizeDelta: {x: 470, y: 32} + m_Pivot: {x: 0, y: 0.5} +--- !u!222 &1496230401252934919 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5022496112978294671} + m_CullTransparentMesh: 0 +--- !u!114 &2788339409729031323 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5022496112978294671} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 35 + m_FontStyle: 1 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Input Selection +--- !u!1 &5037900736003274455 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2022507861997135951} + m_Layer: 0 + m_Name: CycleActions + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2022507861997135951 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5037900736003274455} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8282822644349973774} + - {fileID: 2309210688439760166} + m_Father: {fileID: 8717765101557363114} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 0.5, y: 0} + m_AnchoredPosition: {x: 210, y: 0} + m_SizeDelta: {x: 175, y: 50} + m_Pivot: {x: 1, y: 0} +--- !u!1 &5135897811718927995 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3844796826368179264} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3844796826368179264 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5135897811718927995} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6591958430727469847} + - {fileID: 6275971252049694896} + m_Father: {fileID: 6533097481413838378} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &5136728361903692085 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2922253935851140131} + - component: {fileID: 4663967959718018869} + - component: {fileID: 5580644086468955739} + - component: {fileID: 3033205171824704617} + m_Layer: 0 + m_Name: Panel01 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2922253935851140131 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5136728361903692085} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 23813667705221232} + m_Father: {fileID: 344118157753254797} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 55, y: 0} + m_SizeDelta: {x: 55, y: 30} + m_Pivot: {x: 1, y: 1} +--- !u!222 &4663967959718018869 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5136728361903692085} + m_CullTransparentMesh: 1 +--- !u!114 &5580644086468955739 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5136728361903692085} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.43801177, g: 0.4461339, b: 0.4811321, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &3033205171824704617 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5136728361903692085} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 5580644086468955739} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &5141810100947232803 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1150767532150488799} + - component: {fileID: 2895412625489924071} + - component: {fileID: 8174217074363377897} + m_Layer: 5 + m_Name: Bg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1150767532150488799 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5141810100947232803} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6481212961435706716} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2895412625489924071 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5141810100947232803} + m_CullTransparentMesh: 1 +--- !u!114 &8174217074363377897 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5141810100947232803} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.21960786, g: 0.21960786, b: 0.21960786, a: 0.78431374} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &5206737261165886619 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3816936823830545153} + - component: {fileID: 2468678696228094726} + - component: {fileID: 2779226798658706644} + m_Layer: 0 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3816936823830545153 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5206737261165886619} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 7861159257729309501} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -70, y: 0} + m_SizeDelta: {x: 200, y: 100} + m_Pivot: {x: 1, y: 1} +--- !u!222 &2468678696228094726 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5206737261165886619} + m_CullTransparentMesh: 1 +--- !u!114 &2779226798658706644 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5206737261165886619} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 35 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Close/ Open +--- !u!1 &5207631386085566706 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6533097481413838378} + m_Layer: 0 + m_Name: RotateRightPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &6533097481413838378 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5207631386085566706} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3844796826368179264} + m_Father: {fileID: 2616124474499915878} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 1007, y: -25} + m_SizeDelta: {x: 50, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &5241964406875047633 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8986270490598884845} + m_Layer: 0 + m_Name: CloseOpenWindowArea + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8986270490598884845 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5241964406875047633} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6357373159845911667} + - {fileID: 7925807210110930479} + m_Father: {fileID: 3694782915305002292} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 175, y: 50} + m_Pivot: {x: 1, y: 1} +--- !u!1 &5268104901054605220 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8762098838486589850} + - component: {fileID: 8927644498333606401} + - component: {fileID: 7809110943769801447} + m_Layer: 0 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8762098838486589850 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5268104901054605220} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6553039120841506856} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: -25} + m_SizeDelta: {x: 85, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8927644498333606401 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5268104901054605220} + m_CullTransparentMesh: 1 +--- !u!114 &7809110943769801447 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5268104901054605220} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.75686276, g: 0.7647059, b: 0.7921569, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: '+ + + Right + + Controller + + Actions' +--- !u!1 &5312014588083781357 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2481861518241712779} + m_Layer: 0 + m_Name: Primary2DAxisTouchPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &2481861518241712779 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5312014588083781357} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3209650352576931573} + m_Father: {fileID: 8425869877281121703} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 785, y: -18} + m_SizeDelta: {x: 160, y: 36} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &5312993485763927777 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3209650352576931573} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3209650352576931573 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5312993485763927777} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8559162770417674386} + - {fileID: 969668848567293117} + m_Father: {fileID: 2481861518241712779} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &5318866622417918304 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5523238469624902473} + - component: {fileID: 2707023754537383880} + - component: {fileID: 6379192349237237766} + m_Layer: 0 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5523238469624902473 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5318866622417918304} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.35, y: 0.35, z: 0.35} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 89667494743843822} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 30, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2707023754537383880 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5318866622417918304} + m_CullTransparentMesh: 1 +--- !u!114 &6379192349237237766 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5318866622417918304} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 45cf9a9247ff14898b4edee9ea72ebf2, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &5344209675267329217 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 319578137759929299} + m_Layer: 0 + m_Name: LeftControllerPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &319578137759929299 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5344209675267329217} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8760793361132745743} + m_Father: {fileID: 2616124474499915878} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 335, y: -25} + m_SizeDelta: {x: 50, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &5371609632107121757 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 952998031630166152} + - component: {fileID: 1026115500368197154} + - component: {fileID: 3016256468572728028} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &952998031630166152 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5371609632107121757} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.49999437, y: 0.49999437, z: 0.49999437} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6136880138545987148} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1026115500368197154 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5371609632107121757} + m_CullTransparentMesh: 1 +--- !u!114 &3016256468572728028 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5371609632107121757} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 42 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 115 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: SecTouch +--- !u!1 &5431141979425061809 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8815123004976668449} + - component: {fileID: 1349540580376781780} + - component: {fileID: 2417155739207568977} + m_Layer: 5 + m_Name: Bg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8815123004976668449 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5431141979425061809} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6933365344557907413} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1349540580376781780 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5431141979425061809} + m_CullTransparentMesh: 1 +--- !u!114 &2417155739207568977 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5431141979425061809} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.10980392, g: 0.11372549, b: 0.13333334, a: 0.78431374} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &5459984291805228544 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5454361984813372064} + - component: {fileID: 4648945468996065851} + - component: {fileID: 2166982716501790012} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5454361984813372064 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5459984291805228544} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4551501784236766960} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4648945468996065851 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5459984291805228544} + m_CullTransparentMesh: 1 +--- !u!114 &2166982716501790012 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5459984291805228544} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 35 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Shift +--- !u!1 &5466814724474154049 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7123093230012993544} + - component: {fileID: 4014915832507641918} + - component: {fileID: 5738498941148011982} + - component: {fileID: 1940732242930743954} + m_Layer: 0 + m_Name: Panel02 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7123093230012993544 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5466814724474154049} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5269522660398789996} + m_Father: {fileID: 4625834173686673388} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 25, y: 10} + m_SizeDelta: {x: 55, y: 30} + m_Pivot: {x: 0, y: 0} +--- !u!222 &4014915832507641918 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5466814724474154049} + m_CullTransparentMesh: 1 +--- !u!114 &5738498941148011982 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5466814724474154049} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.43801177, g: 0.4461339, b: 0.4811321, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &1940732242930743954 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5466814724474154049} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 5738498941148011982} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &5469073136235038116 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5726990488982842294} + - component: {fileID: 4947537456058467534} + - component: {fileID: 8716151608216135750} + m_Layer: 0 + m_Name: Label04 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5726990488982842294 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5469073136235038116} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2059962098950313763} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: -155.25} + m_SizeDelta: {x: 85, y: 30} + m_Pivot: {x: 0, y: 0.5} +--- !u!222 &4947537456058467534 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5469073136235038116} + m_CullTransparentMesh: 1 +--- !u!114 &8716151608216135750 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5469073136235038116} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.75686276, g: 0.7647059, b: 0.7921569, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: '4. Secondary + +' +--- !u!1 &5614014856432448417 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7526453948634149802} + - component: {fileID: 4659089158520729000} + - component: {fileID: 7831231128558158052} + - component: {fileID: 4637712720792960939} + m_Layer: 0 + m_Name: Panel05 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7526453948634149802 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5614014856432448417} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2833847429906496415} + m_Father: {fileID: 3789650784899537203} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 55, y: 15} + m_SizeDelta: {x: 55, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4659089158520729000 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5614014856432448417} + m_CullTransparentMesh: 1 +--- !u!114 &7831231128558158052 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5614014856432448417} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.41362584, g: 0.4618618, b: 0.5188679, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &4637712720792960939 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5614014856432448417} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 7831231128558158052} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &5624743732757696302 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3951020173057577787} + - component: {fileID: 5553770850808814170} + - component: {fileID: 8546480657457008899} + m_Layer: 5 + m_Name: Bg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3951020173057577787 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5624743732757696302} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5776210204937225324} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5553770850808814170 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5624743732757696302} + m_CullTransparentMesh: 1 +--- !u!114 &8546480657457008899 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5624743732757696302} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.10980393, g: 0.1137255, b: 0.13333334, a: 0.78431374} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &5683531925987636385 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8473010408441040937} + - component: {fileID: 2634370733603304117} + - component: {fileID: 4845436640597652261} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8473010408441040937 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5683531925987636385} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1546639525225788782} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2634370733603304117 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5683531925987636385} + m_CullTransparentMesh: 1 +--- !u!114 &4845436640597652261 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5683531925987636385} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Space +--- !u!1 &5737792087470629820 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7614873236758490043} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7614873236758490043 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5737792087470629820} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8766408802495292769} + - {fileID: 5765961306417971073} + - {fileID: 4571546103676003614} + m_Father: {fileID: 7578456877763460119} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &5741689373858900667 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1921955018932743967} + - component: {fileID: 1906976629095906212} + - component: {fileID: 527854281967467598} + m_Layer: 5 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1921955018932743967 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5741689373858900667} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8479753274659742030} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 36, y: 36} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1906976629095906212 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5741689373858900667} + m_CullTransparentMesh: 1 +--- !u!114 &527854281967467598 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5741689373858900667} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 51dbca003875e4a13a6aa29047489e85, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &5758407298479139993 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3694782915305002292} + m_Layer: 0 + m_Name: ControllerActionsWindow + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &3694782915305002292 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5758407298479139993} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 533283657285806340} + - {fileID: 5429162246892834618} + - {fileID: 4677305894017678612} + - {fileID: 8986270490598884845} + - {fileID: 6806629910064356187} + m_Father: {fileID: 2258540431901169821} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: -280} + m_SizeDelta: {x: 725, y: 375} + m_Pivot: {x: 0, y: 1} +--- !u!1 &5800897151244169190 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8411006411540699461} + - component: {fileID: 4923638585144480903} + - component: {fileID: 6799830946875625479} + m_Layer: 5 + m_Name: Bg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8411006411540699461 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5800897151244169190} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2316342934838105792} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4923638585144480903 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5800897151244169190} + m_CullTransparentMesh: 1 +--- !u!114 &6799830946875625479 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5800897151244169190} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.21960786, g: 0.21960786, b: 0.21960786, a: 0.78431374} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &5820484897868695497 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1056483781790259420} + - component: {fileID: 581754416653013835} + - component: {fileID: 207714910800747556} + m_Layer: 5 + m_Name: ActionLabel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1056483781790259420 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5820484897868695497} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4759511295660790030} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 20, y: -25} + m_SizeDelta: {x: 470, y: 32} + m_Pivot: {x: 0, y: 0.5} +--- !u!222 &581754416653013835 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5820484897868695497} + m_CullTransparentMesh: 0 +--- !u!114 &207714910800747556 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5820484897868695497} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Action +--- !u!1 &5844679480558357900 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2220757352000271712} + - component: {fileID: 1744763869996258713} + - component: {fileID: 8316617441152753479} + m_Layer: 5 + m_Name: Bg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2220757352000271712 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5844679480558357900} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8304842993933847701} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1744763869996258713 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5844679480558357900} + m_CullTransparentMesh: 1 +--- !u!114 &8316617441152753479 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5844679480558357900} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.21960786, g: 0.21960786, b: 0.21960786, a: 0.78431374} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &5858455181936961189 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6293272087375937981} + - component: {fileID: 8130233088596090970} + - component: {fileID: 8383935976889007878} + m_Layer: 5 + m_Name: Bg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6293272087375937981 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5858455181936961189} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6844145415412592068} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8130233088596090970 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5858455181936961189} + m_CullTransparentMesh: 1 +--- !u!114 &8383935976889007878 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5858455181936961189} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.10980392, g: 0.11372549, b: 0.13333334, a: 0.78431374} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &5862926434345359237 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7877990192294503132} + - component: {fileID: 1205814990259293429} + - component: {fileID: 240139676279429175} + m_Layer: 5 + m_Name: HandActionsLabel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7877990192294503132 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5862926434345359237} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5357045099504853531} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 45, y: 5} + m_SizeDelta: {x: 470, y: 32} + m_Pivot: {x: 0, y: 0.5} +--- !u!222 &1205814990259293429 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5862926434345359237} + m_CullTransparentMesh: 0 +--- !u!114 &240139676279429175 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5862926434345359237} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Left Hand Actions +--- !u!1 &5873537314939949276 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8673998409005379795} + - component: {fileID: 6462012729780694030} + - component: {fileID: 6189123438240697278} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8673998409005379795 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5873537314939949276} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8282822644349973774} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: -10} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6462012729780694030 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5873537314939949276} + m_CullTransparentMesh: 1 +--- !u!114 &6189123438240697278 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5873537314939949276} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 70 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: '`' +--- !u!1 &5884976220780869605 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7826744483457650007} + - component: {fileID: 4652007633148001056} + - component: {fileID: 2254041663086450489} + m_Layer: 5 + m_Name: Bg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7826744483457650007 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5884976220780869605} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8397221895643053450} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4652007633148001056 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5884976220780869605} + m_CullTransparentMesh: 1 +--- !u!114 &2254041663086450489 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5884976220780869605} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.10980392, g: 0.11372549, b: 0.13333334, a: 0.78431374} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &5887853673336278296 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5765961306417971073} + - component: {fileID: 4514792742689166869} + - component: {fileID: 5221765745569923711} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5765961306417971073 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5887853673336278296} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 7614873236758490043} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 8, y: 0} + m_SizeDelta: {x: -28, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4514792742689166869 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5887853673336278296} + m_CullTransparentMesh: 1 +--- !u!114 &5221765745569923711 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5887853673336278296} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 42 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 115 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Open +--- !u!1 &5943653823503148148 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4677305894017678612} + - component: {fileID: 7800311747728846924} + - component: {fileID: 7334265360652218828} + m_Layer: 5 + m_Name: Separator + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4677305894017678612 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5943653823503148148} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3694782915305002292} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 15, y: -50} + m_SizeDelta: {x: 700, y: 2} + m_Pivot: {x: 0, y: 0.5} +--- !u!222 &7800311747728846924 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5943653823503148148} + m_CullTransparentMesh: 1 +--- !u!114 &7334265360652218828 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5943653823503148148} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.34509805, g: 0.34509805, b: 0.34509805, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &5953639037831635960 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1546639525225788782} + - component: {fileID: 468846642692737794} + - component: {fileID: 3793131397926025495} + - component: {fileID: 6639690702375659230} + m_Layer: 0 + m_Name: SpacePanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1546639525225788782 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5953639037831635960} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8473010408441040937} + m_Father: {fileID: 656342488099416437} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -15, y: -10} + m_SizeDelta: {x: 85, y: 30} + m_Pivot: {x: 1, y: 1} +--- !u!222 &468846642692737794 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5953639037831635960} + m_CullTransparentMesh: 1 +--- !u!114 &3793131397926025495 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5953639037831635960} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.27058825, g: 0.3019608, b: 0.3372549, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &6639690702375659230 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5953639037831635960} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 3793131397926025495} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &5956302315917965318 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3132576533883217541} + m_Layer: 0 + m_Name: SelectedInputArea + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3132576533883217541 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5956302315917965318} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6158781090080212897} + - {fileID: 7999378108177547697} + - {fileID: 3638238043440212286} + - {fileID: 4625834173686673388} + - {fileID: 6822129441471570829} + m_Father: {fileID: 4664102382212086408} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 15, y: 30} + m_SizeDelta: {x: 465, y: 230} + m_Pivot: {x: 0, y: 0} +--- !u!1 &5969797543589240054 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4002419433977471295} + - component: {fileID: 7623719593287204912} + - component: {fileID: 2156269867538765726} + m_Layer: 0 + m_Name: InputMovementLabel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4002419433977471295 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5969797543589240054} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 9067816575889166465} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 1} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: -10} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0} +--- !u!222 &7623719593287204912 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5969797543589240054} + m_CullTransparentMesh: 1 +--- !u!114 &2156269867538765726 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5969797543589240054} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 35 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Input Movement +--- !u!1 &6018953161220160520 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6146562634286816264} + - component: {fileID: 703169914329258435} + - component: {fileID: 8248648543937707774} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6146562634286816264 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6018953161220160520} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 7072671058180535645} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &703169914329258435 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6018953161220160520} + m_CullTransparentMesh: 1 +--- !u!114 &8248648543937707774 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6018953161220160520} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 35 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Shift +--- !u!1 &6051377064002059282 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6844145415412592068} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6844145415412592068 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6051377064002059282} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6293272087375937981} + - {fileID: 1115949796456744587} + - {fileID: 7398789958703377111} + m_Father: {fileID: 7588369489465562914} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &6051976920946010091 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6275971252049694896} + - component: {fileID: 2176178044073385076} + - component: {fileID: 2747525744003420607} + m_Layer: 5 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6275971252049694896 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6051976920946010091} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3844796826368179264} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 30, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2176178044073385076 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6051976920946010091} + m_CullTransparentMesh: 1 +--- !u!114 &2747525744003420607 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6051976920946010091} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 03307529d9f01459599263d114b1ba47, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &6073077918886997994 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5216465564804835638} + - component: {fileID: 7409132535088881030} + - component: {fileID: 7139724344188552827} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5216465564804835638 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6073077918886997994} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2136719752336738479} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7409132535088881030 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6073077918886997994} + m_CullTransparentMesh: 1 +--- !u!114 &7139724344188552827 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6073077918886997994} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: 2 +--- !u!1 &6087904220660124248 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9150852280288228678} + - component: {fileID: 6219018859823872687} + - component: {fileID: 859786098983603160} + - component: {fileID: 8210693515171886700} + m_Layer: 0 + m_Name: Panel03 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &9150852280288228678 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6087904220660124248} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6078689847635876804} + m_Father: {fileID: 5079952485184716055} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 55, y: -20} + m_SizeDelta: {x: 55, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6219018859823872687 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6087904220660124248} + m_CullTransparentMesh: 1 +--- !u!114 &859786098983603160 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6087904220660124248} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.27058825, g: 0.3019608, b: 0.3372549, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &8210693515171886700 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6087904220660124248} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 859786098983603160} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &6107270132854994609 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 533283657285806340} + - component: {fileID: 8258091743927733100} + - component: {fileID: 2658928058812901354} + m_Layer: 5 + m_Name: Bg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &533283657285806340 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6107270132854994609} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3694782915305002292} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8258091743927733100 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6107270132854994609} + m_CullTransparentMesh: 1 +--- !u!114 &2658928058812901354 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6107270132854994609} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.10980393, g: 0.1137255, b: 0.13333334, a: 0.78431374} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &6124867561087186000 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8082231378409087951} + - component: {fileID: 6158128932503025641} + - component: {fileID: 3469523898568486090} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8082231378409087951 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6124867561087186000} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6933365344557907413} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 4.5, y: 0} + m_SizeDelta: {x: -23, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6158128932503025641 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6124867561087186000} + m_CullTransparentMesh: 1 +--- !u!114 &3469523898568486090 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6124867561087186000} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 42 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 115 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Pinch +--- !u!1 &6129732220930283249 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5100638291358832347} + - component: {fileID: 3497119161694645479} + - component: {fileID: 6097426652711680378} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5100638291358832347 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6129732220930283249} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 1 + m_Children: [] + m_Father: {fileID: 8598129656025319670} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3497119161694645479 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6129732220930283249} + m_CullTransparentMesh: 1 +--- !u!114 &6097426652711680378 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6129732220930283249} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 42 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 115 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Grip +--- !u!1 &6160542316042459921 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4100146090115003127} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4100146090115003127 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6160542316042459921} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 7701354143585068587} + - {fileID: 671700557140141237} + m_Father: {fileID: 1671826015336775934} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &6170077855614272475 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4224604046746953303} + m_Layer: 0 + m_Name: RightHandPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &4224604046746953303 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6170077855614272475} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3382065945366543770} + m_Father: {fileID: 2616124474499915878} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 223, y: -25} + m_SizeDelta: {x: 50, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &6194534353290425472 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6947234127914887600} + - component: {fileID: 8326808464189935275} + - component: {fileID: 6971971424516052307} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6947234127914887600 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6194534353290425472} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2098453561177131157} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8326808464189935275 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6194534353290425472} + m_CullTransparentMesh: 1 +--- !u!114 &6971971424516052307 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6194534353290425472} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 1 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: ' [ ]' +--- !u!1 &6211541101151776228 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5357045099504853531} + m_Layer: 0 + m_Name: LeftHandActions + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5357045099504853531 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6211541101151776228} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 7877990192294503132} + - {fileID: 4000528753814536211} + - {fileID: 991375141000976476} + m_Father: {fileID: 8717765101557363114} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: -5, y: 0} + m_SizeDelta: {x: 235, y: 255} + m_Pivot: {x: 0, y: 0.5} +--- !u!1 &6218021279439115299 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 291896369846182320} + m_Layer: 0 + m_Name: TranslateBackwardPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &291896369846182320 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6218021279439115299} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4008613158589331144} + m_Father: {fileID: 2616124474499915878} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 671, y: -25} + m_SizeDelta: {x: 50, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &6264196667075053794 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3090297890081872097} + - component: {fileID: 8438140749775301847} + - component: {fileID: 4524151405222738835} + - component: {fileID: 990205525483701145} + m_Layer: 0 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3090297890081872097 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6264196667075053794} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8231515396528814961} + m_Father: {fileID: 3242538737529602091} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -15, y: -10} + m_SizeDelta: {x: 50, y: 30} + m_Pivot: {x: 1, y: 1} +--- !u!222 &8438140749775301847 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6264196667075053794} + m_CullTransparentMesh: 1 +--- !u!114 &4524151405222738835 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6264196667075053794} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.27058825, g: 0.3019608, b: 0.3372549, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &990205525483701145 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6264196667075053794} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 4524151405222738835} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 8680935085713349974} + m_TargetAssemblyTypeName: UnityEngine.GameObject, UnityEngine + m_MethodName: SetActive + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + - m_Target: {fileID: 7414648820516415283} + m_TargetAssemblyTypeName: UnityEngine.GameObject, UnityEngine + m_MethodName: SetActive + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 1 + m_CallState: 2 +--- !u!1 &6277494424451699994 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1819048200497289691} + - component: {fileID: 9030605886441777664} + - component: {fileID: 8273029332885832027} + m_Layer: 5 + m_Name: Bg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1819048200497289691 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6277494424451699994} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6049838807890318467} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &9030605886441777664 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6277494424451699994} + m_CullTransparentMesh: 1 +--- !u!114 &8273029332885832027 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6277494424451699994} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.10980392, g: 0.11372549, b: 0.13333334, a: 0.78431374} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &6340459718158859446 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7900669244373975265} + - component: {fileID: 5707038480188735902} + - component: {fileID: 8668282988412796499} + m_Layer: 5 + m_Name: Bg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7900669244373975265 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6340459718158859446} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 7243652154361334245} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5707038480188735902 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6340459718158859446} + m_CullTransparentMesh: 1 +--- !u!114 &8668282988412796499 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6340459718158859446} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.09019608, g: 0.09019608, b: 0.10196079, a: 0.78431374} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &6353062067597621656 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8397221895643053450} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8397221895643053450 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6353062067597621656} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 7826744483457650007} + - {fileID: 3185743914063005846} + m_Father: {fileID: 2249152157662335320} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &6427756697192018837 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7608597320112058617} + m_Layer: 0 + m_Name: ThumbPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &7608597320112058617 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6427756697192018837} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 7316057237409594490} + m_Father: {fileID: 4182932038750303461} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 377.5, y: -18} + m_SizeDelta: {x: 125, y: 36} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &6463461599144267619 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3100948476465997141} + - component: {fileID: 8779228594201459178} + - component: {fileID: 3670534118543466899} + m_Layer: 5 + m_Name: ControllerImage + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3100948476465997141 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6463461599144267619} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 379693820140647522} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 45, y: 70} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8779228594201459178 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6463461599144267619} + m_CullTransparentMesh: 1 +--- !u!114 &3670534118543466899 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6463461599144267619} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 0865850a3ad58456a88bbd9a574129fd, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &6482944790719979478 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8282822644349973774} + - component: {fileID: 1672111671965961835} + - component: {fileID: 4123566805111319237} + m_Layer: 0 + m_Name: ShiftPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8282822644349973774 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6482944790719979478} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8673998409005379795} + m_Father: {fileID: 2022507861997135951} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 10, y: -10} + m_SizeDelta: {x: 65, y: 30} + m_Pivot: {x: 1, y: 1} +--- !u!222 &1672111671965961835 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6482944790719979478} + m_CullTransparentMesh: 1 +--- !u!114 &4123566805111319237 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6482944790719979478} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.43801177, g: 0.4461339, b: 0.4811321, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &6513330609577340256 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1367931462059591173} + - component: {fileID: 936623382151844050} + - component: {fileID: 2393887061225596181} + m_Layer: 0 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1367931462059591173 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6513330609577340256} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 991375141000976476} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: -25} + m_SizeDelta: {x: 85, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &936623382151844050 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6513330609577340256} + m_CullTransparentMesh: 1 +--- !u!114 &2393887061225596181 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6513330609577340256} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.75686276, g: 0.7647059, b: 0.7921569, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: '+ + + Right + + Hand + + Actions' +--- !u!1 &6522815099591240273 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 379693820140647522} + - component: {fileID: 9158192136761221289} + - component: {fileID: 5370442437358460455} + m_Layer: 5 + m_Name: LeftPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &379693820140647522 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6522815099591240273} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3100948476465997141} + m_Father: {fileID: 8927720812409968449} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 15, y: 10} + m_SizeDelta: {x: 65, y: 225} + m_Pivot: {x: 0, y: 0.5} +--- !u!222 &9158192136761221289 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6522815099591240273} + m_CullTransparentMesh: 1 +--- !u!114 &5370442437358460455 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6522815099591240273} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.09019608, g: 0.09411766, b: 0.10196079, a: 0.5882353} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &6553082274001734126 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2249152157662335320} + m_Layer: 0 + m_Name: TranslateLeftPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &2249152157662335320 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6553082274001734126} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8397221895643053450} + m_Father: {fileID: 2616124474499915878} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 727, y: -25} + m_SizeDelta: {x: 50, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &6562188568371810340 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6973168152540866834} + - component: {fileID: 1447941046161052514} + - component: {fileID: 968509594691675549} + m_Layer: 5 + m_Name: PlusMark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6973168152540866834 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6562188568371810340} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6481212961435706716} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -25, y: 0} + m_SizeDelta: {x: 50, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1447941046161052514 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6562188568371810340} + m_CullTransparentMesh: 1 +--- !u!114 &968509594691675549 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6562188568371810340} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.76862746, g: 0.76862746, b: 0.76862746, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 42 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 115 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: + +--- !u!1 &6569580931950465076 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9205640867175165290} + m_Layer: 0 + m_Name: BothHandsPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &9205640867175165290 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6569580931950465076} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8479753274659742030} + m_Father: {fileID: 2616124474499915878} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 447, y: -25} + m_SizeDelta: {x: 50, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &6592486620119633549 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7618915864732456778} + - component: {fileID: 614054966029198151} + - component: {fileID: 5596893241172654919} + m_Layer: 0 + m_Name: FullBodyLabel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7618915864732456778 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6592486620119633549} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3638238043440212286} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &614054966029198151 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6592486620119633549} + m_CullTransparentMesh: 1 +--- !u!114 &5596893241172654919 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6592486620119633549} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: "Full \nBody" +--- !u!1 &6600077032971744509 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2523884692327029128} + m_Layer: 0 + m_Name: SecondaryTouchPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &2523884692327029128 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6600077032971744509} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6136880138545987148} + m_Father: {fileID: 8425869877281121703} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 1217.5, y: -18} + m_SizeDelta: {x: 125, y: 36} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &6608368289885106764 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 865914667572998966} + - component: {fileID: 1162392940604521122} + m_Layer: 5 + m_Name: OrderedListView + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &865914667572998966 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6608368289885106764} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3939973601132676864} + - {fileID: 8949636231158854138} + - {fileID: 6098325525514411026} + - {fileID: 2136719752336738479} + m_Father: {fileID: 8017059706523433701} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -20} + m_SizeDelta: {x: 0, y: -50} + m_Pivot: {x: 0, y: 0.5} +--- !u!114 &1162392940604521122 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6608368289885106764} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 0 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!1 &6613592760212887335 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4758278766138899793} + - component: {fileID: 6318791990478193320} + - component: {fileID: 5075413772572021958} + m_Layer: 5 + m_Name: LeftPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4758278766138899793 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6613592760212887335} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2220631344909927049} + m_Father: {fileID: 5988305161568956383} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 15, y: 10} + m_SizeDelta: {x: 65, y: 225} + m_Pivot: {x: 0, y: 0.5} +--- !u!222 &6318791990478193320 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6613592760212887335} + m_CullTransparentMesh: 1 +--- !u!114 &5075413772572021958 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6613592760212887335} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.09019608, g: 0.09411766, b: 0.10196079, a: 0.5882353} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &6614241644705307400 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2136719752336738479} + - component: {fileID: 3593610405754668471} + - component: {fileID: 8403291975487209803} + - component: {fileID: 4599571482596787604} + m_Layer: 0 + m_Name: Panel04 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2136719752336738479 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6614241644705307400} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5216465564804835638} + m_Father: {fileID: 865914667572998966} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 55, y: -131.25} + m_SizeDelta: {x: 55, y: 30} + m_Pivot: {x: 1, y: 1} +--- !u!222 &3593610405754668471 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6614241644705307400} + m_CullTransparentMesh: 1 +--- !u!114 &8403291975487209803 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6614241644705307400} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.27058825, g: 0.3019608, b: 0.3372549, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &4599571482596787604 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6614241644705307400} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 8403291975487209803} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &6614847391413095661 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3365218671118266616} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3365218671118266616 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6614847391413095661} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2314358066319439725} + - {fileID: 5901146456163099017} + m_Father: {fileID: 2705374579976199964} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &6631339706381068503 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 433728218585467843} + m_Layer: 0 + m_Name: LeftHandPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &433728218585467843 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6631339706381068503} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6811891375136488604} + m_Father: {fileID: 2616124474499915878} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 167, y: -25} + m_SizeDelta: {x: 50, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &6635673949917016387 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8304842993933847701} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8304842993933847701 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6635673949917016387} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2220757352000271712} + - {fileID: 3629909188310349376} + m_Father: {fileID: 2499771684115911356} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &6653624374793035088 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2499771684115911356} + m_Layer: 0 + m_Name: Secondary2DAxisClickPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &2499771684115911356 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6653624374793035088} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8304842993933847701} + m_Father: {fileID: 8425869877281121703} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 630, y: -18} + m_SizeDelta: {x: 140, y: 36} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &6665579737799444567 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 748586345435336783} + m_Layer: 0 + m_Name: PrimaryPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &748586345435336783 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6665579737799444567} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6709438869090117406} + m_Father: {fileID: 8425869877281121703} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 197.5, y: -18} + m_SizeDelta: {x: 75, y: 36} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &6680462794232952390 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2616124474499915878} + - component: {fileID: 3760106427656278490} + m_Layer: 0 + m_Name: OrderedListView + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2616124474499915878 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6680462794232952390} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4456344196334606415} + - {fileID: 2289920746676440892} + - {fileID: 433728218585467843} + - {fileID: 4224604046746953303} + - {fileID: 2599148704571305237} + - {fileID: 319578137759929299} + - {fileID: 3325604111646158507} + - {fileID: 9205640867175165290} + - {fileID: 2920709862229991414} + - {fileID: 6371556872934477241} + - {fileID: 1671826015336775934} + - {fileID: 291896369846182320} + - {fileID: 2249152157662335320} + - {fileID: 1274541353756613963} + - {fileID: 1883294724177101389} + - {fileID: 2896886030413715106} + - {fileID: 7347103933836094446} + - {fileID: 6533097481413838378} + m_Father: {fileID: 8787249433612794604} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &3760106427656278490 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6680462794232952390} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 6 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 0 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!1 &6691578187724635831 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8479753274659742030} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8479753274659742030 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6691578187724635831} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 7353795325587961532} + - {fileID: 1921955018932743967} + m_Father: {fileID: 9205640867175165290} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &6701143140890938055 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2346171517373739530} + - component: {fileID: 2744981411574188986} + - component: {fileID: 400658812131142792} + m_Layer: 5 + m_Name: HandActionsLabel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2346171517373739530 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6701143140890938055} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6109187273434472244} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 15, y: 5} + m_SizeDelta: {x: 470, y: 32} + m_Pivot: {x: 0, y: 0.5} +--- !u!222 &2744981411574188986 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6701143140890938055} + m_CullTransparentMesh: 0 +--- !u!114 &400658812131142792 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6701143140890938055} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Right Hand Actions +--- !u!1 &6740295060025806853 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8717765101557363114} + m_Layer: 0 + m_Name: HandActionsPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8717765101557363114 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6740295060025806853} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 137964997540369689} + - {fileID: 5357045099504853531} + - {fileID: 6109187273434472244} + - {fileID: 1971974159405262163} + - {fileID: 2022507861997135951} + m_Father: {fileID: 7243652154361334245} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 0.5, y: 0} + m_AnchoredPosition: {x: 0, y: 165} + m_SizeDelta: {x: 485, y: 300} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &6783828158785535268 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8101301704248490591} + - component: {fileID: 4781829100333772873} + - component: {fileID: 6495255235186818208} + m_Layer: 0 + m_Name: Label02 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8101301704248490591 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6783828158785535268} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2059962098950313763} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: -61.75} + m_SizeDelta: {x: 85, y: 30} + m_Pivot: {x: 0, y: 0.5} +--- !u!222 &4781829100333772873 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6783828158785535268} + m_CullTransparentMesh: 1 +--- !u!114 &6495255235186818208 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6783828158785535268} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.75686276, g: 0.7647059, b: 0.7921569, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: 2. Grip +--- !u!1 &6791389464868306462 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 234688033643161652} + - component: {fileID: 5669771891385629307} + - component: {fileID: 6519086767472977363} + m_Layer: 5 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &234688033643161652 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6791389464868306462} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3382065945366543770} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 30, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5669771891385629307 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6791389464868306462} + m_CullTransparentMesh: 1 +--- !u!114 &6519086767472977363 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6791389464868306462} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: c4d8b8565bef1451b94058ebfcab985d, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &6811590919686970267 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4303177063311842900} + - component: {fileID: 839195612411036186} + - component: {fileID: 1316632605640892227} + m_Layer: 5 + m_Name: ThumbstickLabel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4303177063311842900 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6811590919686970267} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5079952485184716055} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 35} + m_SizeDelta: {x: 470, y: 32} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &839195612411036186 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6811590919686970267} + m_CullTransparentMesh: 0 +--- !u!114 &1316632605640892227 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6811590919686970267} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: 'Thumbstick + +' +--- !u!1 &6822929532438044970 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 137964997540369689} + - component: {fileID: 903208239602533137} + - component: {fileID: 1674948554848333621} + m_Layer: 5 + m_Name: Bg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &137964997540369689 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6822929532438044970} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8717765101557363114} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!222 &903208239602533137 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6822929532438044970} + m_CullTransparentMesh: 1 +--- !u!114 &1674948554848333621 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6822929532438044970} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0.39215687} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &6842569494978686306 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 377242596902221629} + - component: {fileID: 6162045199683704665} + - component: {fileID: 8445819680256420996} + m_Layer: 0 + m_Name: Label03 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &377242596902221629 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6842569494978686306} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4967460965833401963} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: -139.66667} + m_SizeDelta: {x: 85, y: 30} + m_Pivot: {x: 0, y: 0.5} +--- !u!222 &6162045199683704665 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6842569494978686306} + m_CullTransparentMesh: 1 +--- !u!114 &8445819680256420996 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6842569494978686306} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.75686276, g: 0.7647059, b: 0.7921569, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: '3. Grab + +' +--- !u!1 &6860482990203578860 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2655742354012748673} + - component: {fileID: 6666480250808247490} + - component: {fileID: 5732672166919741237} + m_Layer: 5 + m_Name: Bg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2655742354012748673 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6860482990203578860} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2962794875539291406} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6666480250808247490 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6860482990203578860} + m_CullTransparentMesh: 1 +--- !u!114 &5732672166919741237 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6860482990203578860} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.10980392, g: 0.11372549, b: 0.13333334, a: 0.78431374} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &6882134238654462568 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6160843009444529302} + - component: {fileID: 1993134938251296397} + - component: {fileID: 2811528528473565518} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6160843009444529302 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6882134238654462568} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.49999437} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 970508293922870668} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 50, y: 0} + m_SizeDelta: {x: 100, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1993134938251296397 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6882134238654462568} + m_CullTransparentMesh: 1 +--- !u!114 &2811528528473565518 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6882134238654462568} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 42 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 115 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: G +--- !u!1 &6901473172318060371 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7576922181942720660} + - component: {fileID: 7025035177214711389} + - component: {fileID: 6660725836059154522} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7576922181942720660 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6901473172318060371} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1330688712581291359} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7025035177214711389 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6901473172318060371} + m_CullTransparentMesh: 1 +--- !u!114 &6660725836059154522 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6901473172318060371} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: J +--- !u!1 &6922087983315974228 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6578091506877101235} + - component: {fileID: 7930581609101102777} + - component: {fileID: 1435705020410069305} + m_Layer: 5 + m_Name: Bg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6578091506877101235 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6922087983315974228} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6612033344245225099} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7930581609101102777 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6922087983315974228} + m_CullTransparentMesh: 1 +--- !u!114 &1435705020410069305 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6922087983315974228} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.10980392, g: 0.11372549, b: 0.13333334, a: 0.78431374} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &6948302168365031579 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3466780529405657112} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3466780529405657112 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6948302168365031579} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3041285225187009106} + - {fileID: 6298177138383834311} + m_Father: {fileID: 3325604111646158507} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &6968097027761340547 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5646085260269725379} + m_Layer: 0 + m_Name: Primary2DAxisClickPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &5646085260269725379 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6968097027761340547} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8743676548450038441} + m_Father: {fileID: 8425869877281121703} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 480, y: -18} + m_SizeDelta: {x: 150, y: 36} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &6978575913948214000 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7101224599062538259} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7101224599062538259 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6978575913948214000} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 254206951869566067} + - {fileID: 3658045465717465819} + m_Father: {fileID: 2896886030413715106} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &7056322053473980106 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4551501784236766960} + - component: {fileID: 731087501629404069} + - component: {fileID: 8965333228182020313} + - component: {fileID: 3931561960919826346} + m_Layer: 0 + m_Name: ControlPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4551501784236766960 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7056322053473980106} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5454361984813372064} + m_Father: {fileID: 6553039120841506856} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 35} + m_SizeDelta: {x: 75, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &731087501629404069 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7056322053473980106} + m_CullTransparentMesh: 1 +--- !u!114 &8965333228182020313 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7056322053473980106} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.27058825, g: 0.3019608, b: 0.3372549, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &3931561960919826346 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7056322053473980106} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 8965333228182020313} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &7059034088535369141 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7330080352838346242} + - component: {fileID: 4687605978189764308} + - component: {fileID: 3460761950011664220} + m_Layer: 5 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7330080352838346242 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7059034088535369141} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4149270384499422738} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 30, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4687605978189764308 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7059034088535369141} + m_CullTransparentMesh: 1 +--- !u!114 &3460761950011664220 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7059034088535369141} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: eb5a85b675ed34acf9efd6d574df4ceb, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &7085891693662269490 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5719157918649075888} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5719157918649075888 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7085891693662269490} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6757559251263015446} + - {fileID: 6357862912854609243} + - {fileID: 2297162629739030516} + m_Father: {fileID: 1866291706863406180} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &7135811012162183301 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4380196631978487517} + m_Layer: 5 + m_Name: HighlightPanels + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4380196631978487517 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7135811012162183301} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 35424495705098992} + - {fileID: 105756309241978945} + - {fileID: 1703763512753803258} + - {fileID: 4975160660423542691} + m_Father: {fileID: 592911455511671645} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: -32.5} + m_SizeDelta: {x: 190, y: 170} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &7175798894597123964 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8949636231158854138} + - component: {fileID: 7210982738638027945} + - component: {fileID: 1035662663923299876} + - component: {fileID: 6223493353659252525} + m_Layer: 0 + m_Name: Panel02 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8949636231158854138 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7175798894597123964} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8794901099486035912} + m_Father: {fileID: 865914667572998966} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 55, y: -43.75} + m_SizeDelta: {x: 55, y: 30} + m_Pivot: {x: 1, y: 1} +--- !u!222 &7210982738638027945 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7175798894597123964} + m_CullTransparentMesh: 1 +--- !u!114 &1035662663923299876 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7175798894597123964} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.27058825, g: 0.3019608, b: 0.3372549, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &6223493353659252525 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7175798894597123964} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1035662663923299876} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &7188831087915916370 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5680121632152969387} + - component: {fileID: 6385535128645885139} + - component: {fileID: 4895599445871616303} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5680121632152969387 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7188831087915916370} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6828990220713066928} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6385535128645885139 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7188831087915916370} + m_CullTransparentMesh: 1 +--- !u!114 &4895599445871616303 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7188831087915916370} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Tab +--- !u!1 &7198568224895511686 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2133126520422376320} + - component: {fileID: 7932796921200004637} + - component: {fileID: 7907909128063583968} + m_Layer: 5 + m_Name: Bg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2133126520422376320 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7198568224895511686} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3923586880972117920} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7932796921200004637 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7198568224895511686} + m_CullTransparentMesh: 1 +--- !u!114 &7907909128063583968 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7198568224895511686} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.21960786, g: 0.21960786, b: 0.21960786, a: 0.78431374} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &7227851648536705891 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6933365344557907413} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6933365344557907413 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7227851648536705891} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8815123004976668449} + - {fileID: 8082231378409087951} + - {fileID: 4389095758392510845} + m_Father: {fileID: 2421303011123297887} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &7241063373068672445 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7578456877763460119} + m_Layer: 0 + m_Name: OpenPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &7578456877763460119 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7241063373068672445} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 7614873236758490043} + m_Father: {fileID: 4182932038750303461} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 500, y: -18} + m_SizeDelta: {x: 110, y: 36} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &7246769327139383515 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4229390355412622218} + - component: {fileID: 6899458402402039744} + - component: {fileID: 379693002258625199} + - component: {fileID: 4227547671862889303} + m_Layer: 0 + m_Name: Panel03 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4229390355412622218 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7246769327139383515} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4620873162094209160} + m_Father: {fileID: 3349165801399695611} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: -55, y: -15} + m_SizeDelta: {x: 55, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6899458402402039744 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7246769327139383515} + m_CullTransparentMesh: 1 +--- !u!114 &379693002258625199 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7246769327139383515} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.27058825, g: 0.3019608, b: 0.3372549, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &4227547671862889303 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7246769327139383515} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 379693002258625199} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &7306083069204707498 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 561318995995882959} + - component: {fileID: 7241674450663721158} + - component: {fileID: 3200973256311476600} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &561318995995882959 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7306083069204707498} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6778593999777684486} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: -10} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7241674450663721158 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7306083069204707498} + m_CullTransparentMesh: 1 +--- !u!114 &3200973256311476600 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7306083069204707498} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 70 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: '`' +--- !u!1 &7344313013811052991 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5042812543268994979} + m_Layer: 0 + m_Name: HotkeyPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &5042812543268994979 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7344313013811052991} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 970508293922870668} + m_Father: {fileID: 8425869877281121703} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 50, y: -18} + m_SizeDelta: {x: 100, y: 36} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &7353919081103557362 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2649818408318764144} + - component: {fileID: 524877933745675578} + - component: {fileID: 3699393179771728481} + m_Layer: 5 + m_Name: Bg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2649818408318764144 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7353919081103557362} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 681353596503800686} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &524877933745675578 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7353919081103557362} + m_CullTransparentMesh: 1 +--- !u!114 &3699393179771728481 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7353919081103557362} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.10980392, g: 0.11372549, b: 0.13333334, a: 0.78431374} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &7362726370462144552 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4669518287577112141} + - component: {fileID: 8708670738755167118} + - component: {fileID: 5944759026132902397} + m_Layer: 5 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4669518287577112141 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7362726370462144552} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2598780092585628750} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 30, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8708670738755167118 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7362726370462144552} + m_CullTransparentMesh: 1 +--- !u!114 &5944759026132902397 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7362726370462144552} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 065d9dcc5f44f4313a79886e9c40ea06, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &7381424581637871258 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3579246366628628781} + - component: {fileID: 3504769210847021519} + - component: {fileID: 7634304562742041407} + m_Layer: 5 + m_Name: Bg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3579246366628628781 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7381424581637871258} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8760793361132745743} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3504769210847021519 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7381424581637871258} + m_CullTransparentMesh: 1 +--- !u!114 &7634304562742041407 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7381424581637871258} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.10980392, g: 0.11372549, b: 0.13333334, a: 0.78431374} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &7413870273444430438 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6822129441471570829} + - component: {fileID: 1073828006476811177} + - component: {fileID: 6729818145575625752} + m_Layer: 5 + m_Name: HeadPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6822129441471570829 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7413870273444430438} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 9125128771972128813} + - {fileID: 2423734174758047513} + - {fileID: 5233932076482202238} + - {fileID: 7770028712192281475} + m_Father: {fileID: 3132576533883217541} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -12, y: 0} + m_SizeDelta: {x: 70, y: 125} + m_Pivot: {x: 1, y: 0.5} +--- !u!222 &1073828006476811177 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7413870273444430438} + m_CullTransparentMesh: 1 +--- !u!114 &6729818145575625752 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7413870273444430438} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.09019608, g: 0.09411765, b: 0.101960786, a: 0.5882353} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &7414648820516415283 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7243652154361334245} + m_Layer: 0 + m_Name: HandActionsWindow + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &7243652154361334245 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7414648820516415283} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 7900669244373975265} + - {fileID: 4919164979522701761} + - {fileID: 1391848147440557170} + - {fileID: 6950507072066123508} + - {fileID: 5709037953205928473} + - {fileID: 8717765101557363114} + m_Father: {fileID: 2258540431901169821} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: -265} + m_SizeDelta: {x: 725, y: 390} + m_Pivot: {x: 0, y: 1} +--- !u!1 &7432607551642163055 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6910918637130442105} + - component: {fileID: 5570201348103097716} + - component: {fileID: 3637268197156484540} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6910918637130442105 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7432607551642163055} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.49999437, y: 0.49999437, z: 0.49999437} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3923586880972117920} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5570201348103097716 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7432607551642163055} + m_CullTransparentMesh: 1 +--- !u!114 &3637268197156484540 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7432607551642163055} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 42 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 115 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: PrimTouch +--- !u!1 &7447157643505252433 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5422342244361285364} + - component: {fileID: 8520487164624356040} + - component: {fileID: 253028427503380105} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5422342244361285364 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7447157643505252433} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 7965676535099519776} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8520487164624356040 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7447157643505252433} + m_CullTransparentMesh: 1 +--- !u!114 &253028427503380105 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7447157643505252433} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 1 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: ']' +--- !u!1 &7527260924758019630 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3356846500688860579} + - component: {fileID: 4477198071414360632} + - component: {fileID: 4211827068364607239} + m_Layer: 5 + m_Name: Bg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3356846500688860579 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7527260924758019630} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2598780092585628750} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4477198071414360632 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7527260924758019630} + m_CullTransparentMesh: 1 +--- !u!114 &4211827068364607239 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7527260924758019630} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.10980392, g: 0.11372549, b: 0.13333334, a: 0.78431374} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &7528030120230455479 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4197298713820827933} + m_Layer: 0 + m_Name: MenuPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &4197298713820827933 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7528030120230455479} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2316342934838105792} + m_Father: {fileID: 8425869877281121703} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 360, y: -18} + m_SizeDelta: {x: 80, y: 36} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &7576331738583547997 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2399913181122689174} + - component: {fileID: 7006779165472815189} + - component: {fileID: 6458497838234124026} + m_Layer: 5 + m_Name: LeftHandImage + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2399913181122689174 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7576331738583547997} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4000528753814536211} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 50, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7006779165472815189 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7576331738583547997} + m_CullTransparentMesh: 1 +--- !u!114 &6458497838234124026 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7576331738583547997} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 10965b4049d944e82bf6a78d4c23cfe6, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &7580895525898509257 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8905853233531598978} + m_Layer: 0 + m_Name: SecondaryPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &8905853233531598978 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7580895525898509257} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6049838807890318467} + m_Father: {fileID: 8425869877281121703} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 277.5, y: -18} + m_SizeDelta: {x: 75, y: 36} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &7583486903777776979 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6828990220713066928} + - component: {fileID: 2209634824513177441} + - component: {fileID: 1969074491518499210} + - component: {fileID: 919404632623674514} + m_Layer: 0 + m_Name: TabPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6828990220713066928 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7583486903777776979} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5680121632152969387} + - {fileID: 6178413744684232337} + m_Father: {fileID: 3638238043440212286} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: 30, y: 0} + m_SizeDelta: {x: 55, y: 27} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2209634824513177441 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7583486903777776979} + m_CullTransparentMesh: 1 +--- !u!114 &1969074491518499210 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7583486903777776979} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.43801177, g: 0.4461339, b: 0.4811321, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &919404632623674514 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7583486903777776979} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1969074491518499210} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &7601948085641089617 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4265939669474097041} + - component: {fileID: 2123049867226383614} + - component: {fileID: 4477116683866385677} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4265939669474097041 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7601948085641089617} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6612033344245225099} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 12.5, y: 0} + m_SizeDelta: {x: -35, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2123049867226383614 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7601948085641089617} + m_CullTransparentMesh: 1 +--- !u!114 &4477116683866385677 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7601948085641089617} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 42 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 115 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Fist +--- !u!1 &7607523562164067767 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6049838807890318467} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6049838807890318467 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7607523562164067767} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1819048200497289691} + - {fileID: 3526813650769415112} + m_Father: {fileID: 8905853233531598978} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &7613409430734960171 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4149270384499422738} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4149270384499422738 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7613409430734960171} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5038776941478000679} + - {fileID: 7330080352838346242} + m_Father: {fileID: 1274541353756613963} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &7630264108842550592 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 842024090074107350} + - component: {fileID: 1565714092379098201} + - component: {fileID: 1767897879848515067} + m_Layer: 5 + m_Name: Bg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &842024090074107350 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7630264108842550592} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2158477176593190204} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1565714092379098201 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7630264108842550592} + m_CullTransparentMesh: 1 +--- !u!114 &1767897879848515067 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7630264108842550592} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.10980393, g: 0.1137255, b: 0.13333334, a: 0.78431374} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &7643869076699240295 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 985979082482746275} + m_Layer: 0 + m_Name: BottomRow + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &985979082482746275 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7643869076699240295} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8425869877281121703} + - {fileID: 4182932038750303461} + m_Father: {fileID: 410678886995482376} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: -30, y: -25} + m_SizeDelta: {x: 200, y: 100} + m_Pivot: {x: 0, y: 1} +--- !u!1 &7744830894045031026 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8559162770417674386} + - component: {fileID: 5467971850611557785} + - component: {fileID: 4754829074139730316} + m_Layer: 5 + m_Name: Bg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8559162770417674386 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7744830894045031026} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3209650352576931573} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5467971850611557785 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7744830894045031026} + m_CullTransparentMesh: 1 +--- !u!114 &4754829074139730316 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7744830894045031026} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.21960786, g: 0.21960786, b: 0.21960786, a: 0.78431374} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &7764959323661838636 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8514917942798000873} + m_Layer: 0 + m_Name: CloseOpenWindowArea + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8514917942798000873 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7764959323661838636} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1996462089335580228} + - {fileID: 8042126031526164700} + m_Father: {fileID: 5776210204937225324} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -5} + m_SizeDelta: {x: 175, y: 50} + m_Pivot: {x: 1, y: 1} +--- !u!1 &7789544486223392190 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1273162673758324536} + - component: {fileID: 8262814597356861103} + - component: {fileID: 5821014250485708728} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1273162673758324536 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7789544486223392190} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6916333246256487805} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8262814597356861103 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7789544486223392190} + m_CullTransparentMesh: 1 +--- !u!114 &5821014250485708728 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7789544486223392190} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: K +--- !u!1 &7796241728689269639 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4983141539188237439} + - component: {fileID: 2168983384902517618} + - component: {fileID: 7813644266718714081} + m_Layer: 5 + m_Name: HotkeyLabel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4983141539188237439 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7796241728689269639} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3906539553172013192} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: -25} + m_SizeDelta: {x: 470, y: 32} + m_Pivot: {x: 0, y: 0.5} +--- !u!222 &2168983384902517618 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7796241728689269639} + m_CullTransparentMesh: 0 +--- !u!114 &7813644266718714081 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7796241728689269639} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Hotkey +--- !u!1 &7798246736588004461 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2795849021197816920} + - component: {fileID: 75823717290380092} + - component: {fileID: 2767097031809063126} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2795849021197816920 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7798246736588004461} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3137170806966307387} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &75823717290380092 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7798246736588004461} + m_CullTransparentMesh: 1 +--- !u!114 &2767097031809063126 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7798246736588004461} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 35 + m_FontStyle: 1 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: X +--- !u!1 &7849224162898937479 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4318008924376101682} + - component: {fileID: 3912394354185896095} + - component: {fileID: 7529179801954948605} + m_Layer: 5 + m_Name: Bg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4318008924376101682 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7849224162898937479} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1577622462674208938} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3912394354185896095 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7849224162898937479} + m_CullTransparentMesh: 1 +--- !u!114 &7529179801954948605 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7849224162898937479} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.21960786, g: 0.21960786, b: 0.21960786, a: 0.78431374} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &7922348886110434251 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 105756309241978945} + - component: {fileID: 7944302266616622709} + - component: {fileID: 2490152667265973584} + m_Layer: 5 + m_Name: PrimaryHighlight + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &105756309241978945 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7922348886110434251} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4380196631978487517} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 0.5, y: 0} + m_AnchoredPosition: {x: 0, y: 58} + m_SizeDelta: {x: 190, y: 48} + m_Pivot: {x: 0.5, y: 0} +--- !u!222 &7944302266616622709 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7922348886110434251} + m_CullTransparentMesh: 1 +--- !u!114 &2490152667265973584 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7922348886110434251} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: dd8fd94bee0954b82adaf33046ec980d, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &7935348187181017081 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6357373159845911667} + - component: {fileID: 3445491632800480078} + - component: {fileID: 459424351524726008} + - component: {fileID: 5796537802290388064} + m_Layer: 0 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6357373159845911667 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7935348187181017081} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 819262228787745} + m_Father: {fileID: 8986270490598884845} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -15, y: -10} + m_SizeDelta: {x: 50, y: 30} + m_Pivot: {x: 1, y: 1} +--- !u!222 &3445491632800480078 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7935348187181017081} + m_CullTransparentMesh: 1 +--- !u!114 &459424351524726008 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7935348187181017081} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.27058825, g: 0.3019608, b: 0.3372549, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &5796537802290388064 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7935348187181017081} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 459424351524726008} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 8544196888547749106} + m_TargetAssemblyTypeName: UnityEngine.GameObject, UnityEngine + m_MethodName: SetActive + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 1 + m_CallState: 2 + - m_Target: {fileID: 5758407298479139993} + m_TargetAssemblyTypeName: UnityEngine.GameObject, UnityEngine + m_MethodName: SetActive + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!1 &7938851560051180636 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2101289955874765098} + - component: {fileID: 7176614113178273352} + - component: {fileID: 7905296142274346944} + m_Layer: 5 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2101289955874765098 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7938851560051180636} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 681353596503800686} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 30, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7176614113178273352 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7938851560051180636} + m_CullTransparentMesh: 1 +--- !u!114 &7905296142274346944 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7938851560051180636} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: e0fd4b1a727e94e57832e369a6bcaebd, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &7943944044186861536 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6778593999777684486} + - component: {fileID: 1408277066488803433} + - component: {fileID: 1765698398775762348} + m_Layer: 0 + m_Name: ShiftPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6778593999777684486 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7943944044186861536} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 561318995995882959} + m_Father: {fileID: 2981473075935261234} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 10, y: -10} + m_SizeDelta: {x: 65, y: 30} + m_Pivot: {x: 1, y: 1} +--- !u!222 &1408277066488803433 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7943944044186861536} + m_CullTransparentMesh: 1 +--- !u!114 &1765698398775762348 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7943944044186861536} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.27058825, g: 0.3019608, b: 0.3372549, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &7960291804964704818 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5776210204937225324} + m_Layer: 0 + m_Name: InputSelectionClosedWindow + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5776210204937225324 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7960291804964704818} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3951020173057577787} + - {fileID: 7415250936184792679} + - {fileID: 8514917942798000873} + m_Father: {fileID: 2258540431901169821} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 400, y: 60} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &7980228574165420415 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8287293109346138334} + - component: {fileID: 6415603523782287750} + - component: {fileID: 4513363782420264944} + m_Layer: 5 + m_Name: RightDevicePanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8287293109346138334 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7980228574165420415} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2766694630152064848} + - {fileID: 93416291502737880} + - {fileID: 7376613165943711181} + - {fileID: 4510258685305179205} + m_Father: {fileID: 4625834173686673388} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -20, y: 0} + m_SizeDelta: {x: 65, y: 125} + m_Pivot: {x: 1, y: 0.5} +--- !u!222 &6415603523782287750 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7980228574165420415} + m_CullTransparentMesh: 1 +--- !u!114 &4513363782420264944 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7980228574165420415} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.09019608, g: 0.09411766, b: 0.10196079, a: 0.5882353} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &8024262530782357361 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5079952485184716055} + - component: {fileID: 7738837684036883501} + - component: {fileID: 2433962448908783193} + m_Layer: 5 + m_Name: ThumbstickPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5079952485184716055 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8024262530782357361} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4303177063311842900} + - {fileID: 1330688712581291359} + - {fileID: 4586035851904729257} + - {fileID: 9150852280288228678} + - {fileID: 8140417387033196426} + m_Father: {fileID: 5988305161568956383} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 280, y: 10} + m_SizeDelta: {x: 200, y: 225} + m_Pivot: {x: 0, y: 0.5} +--- !u!222 &7738837684036883501 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8024262530782357361} + m_CullTransparentMesh: 1 +--- !u!114 &2433962448908783193 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8024262530782357361} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.09019608, g: 0.09411766, b: 0.10196079, a: 0.5882353} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &8032876439274769546 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3526813650769415112} + - component: {fileID: 6938240383245611969} + - component: {fileID: 9170026776812551343} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3526813650769415112 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8032876439274769546} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 1 + m_Children: [] + m_Father: {fileID: 6049838807890318467} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6938240383245611969 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8032876439274769546} + m_CullTransparentMesh: 1 +--- !u!114 &9170026776812551343 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8032876439274769546} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 42 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 115 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Sec +--- !u!1 &8096924377001329239 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8595173280344598221} + - component: {fileID: 3273780723648933625} + - component: {fileID: 2839282130562959906} + m_Layer: 0 + m_Name: CloseOpenText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8595173280344598221 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8096924377001329239} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3242538737529602091} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -70, y: 0} + m_SizeDelta: {x: 200, y: 100} + m_Pivot: {x: 1, y: 1} +--- !u!222 &3273780723648933625 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8096924377001329239} + m_CullTransparentMesh: 1 +--- !u!114 &2839282130562959906 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8096924377001329239} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.54903877, g: 0.5550166, b: 0.5849056, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 35 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Close/ Open +--- !u!1 &8102786779209660300 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4510258685305179205} + - component: {fileID: 6459549444080883921} + - component: {fileID: 4923627266612043330} + m_Layer: 5 + m_Name: RightControllerImage + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4510258685305179205 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8102786779209660300} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8287293109346138334} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 1} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: -15} + m_SizeDelta: {x: 25, y: 40} + m_Pivot: {x: 0.5, y: 1} +--- !u!222 &6459549444080883921 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8102786779209660300} + m_CullTransparentMesh: 1 +--- !u!114 &4923627266612043330 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8102786779209660300} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 10dc4b76fedda43bc9f45737b47e2a35, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &8117110670191033586 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 911343385663444929} + - component: {fileID: 5480164219674079821} + - component: {fileID: 4112225011712583456} + m_Layer: 5 + m_Name: PinchHighlight + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &911343385663444929 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8117110670191033586} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8865462156448843826} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 0.5, y: 0} + m_AnchoredPosition: {x: 0, y: 72} + m_SizeDelta: {x: 185, y: 50} + m_Pivot: {x: 0.5, y: 0} +--- !u!222 &5480164219674079821 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8117110670191033586} + m_CullTransparentMesh: 1 +--- !u!114 &4112225011712583456 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8117110670191033586} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: dd8fd94bee0954b82adaf33046ec980d, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &8190903740090713228 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3137170806966307387} + - component: {fileID: 1336053615755118998} + - component: {fileID: 3448949150129689896} + - component: {fileID: 5439229981888925529} + m_Layer: 0 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3137170806966307387 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8190903740090713228} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2795849021197816920} + m_Father: {fileID: 83453666236336810} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -15, y: -10} + m_SizeDelta: {x: 50, y: 30} + m_Pivot: {x: 1, y: 1} +--- !u!222 &1336053615755118998 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8190903740090713228} + m_CullTransparentMesh: 1 +--- !u!114 &3448949150129689896 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8190903740090713228} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.27058825, g: 0.3019608, b: 0.3372549, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &5439229981888925529 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8190903740090713228} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 3448949150129689896} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 8544196888547749106} + m_TargetAssemblyTypeName: UnityEngine.GameObject, UnityEngine + m_MethodName: SetActive + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + - m_Target: {fileID: 5758407298479139993} + m_TargetAssemblyTypeName: UnityEngine.GameObject, UnityEngine + m_MethodName: SetActive + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 1 + m_CallState: 2 +--- !u!1 &8199106090440077494 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3713890539798672084} + - component: {fileID: 7930292245531097648} + - component: {fileID: 224812513717176303} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3713890539798672084 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8199106090440077494} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6098325525514411026} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &7930292245531097648 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8199106090440077494} + m_CullTransparentMesh: 1 +--- !u!114 &224812513717176303 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8199106090440077494} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: 1 +--- !u!1 &8214452246601953002 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7876596861176811358} + - component: {fileID: 8129676796944658487} + - component: {fileID: 4872760740320832833} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7876596861176811358 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8214452246601953002} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 1 + m_Children: [] + m_Father: {fileID: 6709438869090117406} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &8129676796944658487 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8214452246601953002} + m_CullTransparentMesh: 1 +--- !u!114 &4872760740320832833 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8214452246601953002} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 42 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 115 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Prim +--- !u!1 &8219429256413824890 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6098325525514411026} + - component: {fileID: 2893662774975437982} + - component: {fileID: 3603289307501307286} + - component: {fileID: 6233306344503741242} + m_Layer: 0 + m_Name: Panel03 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6098325525514411026 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8219429256413824890} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3713890539798672084} + m_Father: {fileID: 865914667572998966} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 55, y: -87.5} + m_SizeDelta: {x: 55, y: 30} + m_Pivot: {x: 1, y: 1} +--- !u!222 &2893662774975437982 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8219429256413824890} + m_CullTransparentMesh: 1 +--- !u!114 &3603289307501307286 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8219429256413824890} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.27058825, g: 0.3019608, b: 0.3372549, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &6233306344503741242 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8219429256413824890} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 3603289307501307286} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &8223189697636407875 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7376613165943711181} + - component: {fileID: 7929007818693604889} + - component: {fileID: 7475135459059474479} + m_Layer: 5 + m_Name: RightControllerHighlight + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &7376613165943711181 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8223189697636407875} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8287293109346138334} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 1} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: -5} + m_SizeDelta: {x: 55, y: 55} + m_Pivot: {x: 0.5, y: 1} +--- !u!222 &7929007818693604889 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8223189697636407875} + m_CullTransparentMesh: 1 +--- !u!114 &7475135459059474479 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8223189697636407875} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.1477839, g: 0.47206765, b: 0.764151, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: e6eb07daf4cc52449a15922f0b93851d, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &8295217241658335260 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7859565072911869271} + - component: {fileID: 4945623684416898881} + - component: {fileID: 5567115301130373436} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &7859565072911869271 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8295217241658335260} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8140417387033196426} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4945623684416898881 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8295217241658335260} + m_CullTransparentMesh: 1 +--- !u!114 &5567115301130373436 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8295217241658335260} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: I +--- !u!1 &8325565902362548592 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2309210688439760166} + - component: {fileID: 5334285648512714657} + - component: {fileID: 419893490009768702} + m_Layer: 0 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2309210688439760166 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8325565902362548592} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2022507861997135951} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -70, y: 0} + m_SizeDelta: {x: 200, y: 100} + m_Pivot: {x: 1, y: 1} +--- !u!222 &5334285648512714657 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8325565902362548592} + m_CullTransparentMesh: 1 +--- !u!114 &419893490009768702 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8325565902362548592} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.54901963, g: 0.5568628, b: 0.58431375, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Cycle Actions +--- !u!1 &8344705831256558712 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8927720812409968449} + m_Layer: 0 + m_Name: LeftControllerActionsPanels + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8927720812409968449 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8344705831256558712} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 7908348882388512590} + - {fileID: 379693820140647522} + - {fileID: 6553039120841506856} + m_Father: {fileID: 6806629910064356187} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: -5, y: 0} + m_SizeDelta: {x: 235, y: 255} + m_Pivot: {x: 0, y: 0.5} +--- !u!1 &8363930961426488048 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 929312126353461551} + - component: {fileID: 7567854270698167446} + - component: {fileID: 5513940081830824028} + m_Layer: 5 + m_Name: PokeHighlight + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &929312126353461551 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8363930961426488048} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8865462156448843826} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 0.5, y: 0} + m_AnchoredPosition: {x: 0, y: 130} + m_SizeDelta: {x: 185, y: 50} + m_Pivot: {x: 0.5, y: 0} +--- !u!222 &7567854270698167446 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8363930961426488048} + m_CullTransparentMesh: 1 +--- !u!114 &5513940081830824028 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8363930961426488048} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: dd8fd94bee0954b82adaf33046ec980d, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &8396889295277883614 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5028184261344385899} + - component: {fileID: 3681718306006120071} + - component: {fileID: 586666822162661169} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5028184261344385899 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8396889295277883614} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6819994946754835142} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 12.5, y: 0} + m_SizeDelta: {x: -35, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &3681718306006120071 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8396889295277883614} + m_CullTransparentMesh: 1 +--- !u!114 &586666822162661169 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8396889295277883614} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 42 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 115 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: ??? +--- !u!1 &8426442143961462490 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1399950637389611688} + - component: {fileID: 960060700018259848} + - component: {fileID: 4938715603282470999} + m_Layer: 0 + m_Name: ShiftPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1399950637389611688 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8426442143961462490} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2587283141843018356} + m_Father: {fileID: 8263786892442998087} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 215, y: 15} + m_SizeDelta: {x: 65, y: 30} + m_Pivot: {x: 1, y: 1} +--- !u!222 &960060700018259848 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8426442143961462490} + m_CullTransparentMesh: 1 +--- !u!114 &4938715603282470999 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8426442143961462490} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.27058825, g: 0.3019608, b: 0.3372549, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &8433566974991557534 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3629909188310349376} + - component: {fileID: 2118553204551243339} + - component: {fileID: 712113417612185643} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3629909188310349376 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8433566974991557534} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8304842993933847701} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2118553204551243339 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8433566974991557534} + m_CullTransparentMesh: 1 +--- !u!114 &712113417612185643 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8433566974991557534} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 42 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 115 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Sec2DClick +--- !u!1 &8522278435667068479 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1883294724177101389} + m_Layer: 0 + m_Name: RotateUpPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &1883294724177101389 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8522278435667068479} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 5944909518084152386} + m_Father: {fileID: 2616124474499915878} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 839, y: -25} + m_SizeDelta: {x: 50, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &8523242128361666790 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6136880138545987148} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6136880138545987148 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8523242128361666790} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 9222525280428007628} + - {fileID: 952998031630166152} + m_Father: {fileID: 2523884692327029128} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &8544196888547749106 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1534137771346558524} + m_Layer: 0 + m_Name: ControllerActionsClosedWindow + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &1534137771346558524 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8544196888547749106} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8040049962811822599} + - {fileID: 8643803981155670597} + - {fileID: 83453666236336810} + m_Father: {fileID: 2258540431901169821} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 200, y: -625} + m_SizeDelta: {x: 400, y: 60} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &8553039509400452274 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4983013818414831318} + - component: {fileID: 5740472243878256700} + - component: {fileID: 1676719592433590157} + m_Layer: 5 + m_Name: Bg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4983013818414831318 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8553039509400452274} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6806629910064356187} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!222 &5740472243878256700 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8553039509400452274} + m_CullTransparentMesh: 1 +--- !u!114 &1676719592433590157 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8553039509400452274} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0.5882353} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &8594944271624754706 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4328764193154433265} + m_Layer: 0 + m_Name: PlayModeMenu + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4328764193154433265 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8594944271624754706} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2258540431901169821} + m_Father: {fileID: 4371884039492262807} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 12, y: 6} + m_SizeDelta: {x: 600, y: 715} + m_Pivot: {x: 0, y: 0} +--- !u!1 &8612742822290976846 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2598780092585628750} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2598780092585628750 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8612742822290976846} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3356846500688860579} + - {fileID: 4669518287577112141} + m_Father: {fileID: 7347103933836094446} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &8615435195221189226 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6542690231547238600} + - component: {fileID: 2362441317461358685} + - component: {fileID: 3564972927004152258} + m_Layer: 5 + m_Name: ControllerActionsLabel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6542690231547238600 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8615435195221189226} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5988305161568956383} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 50, y: 5} + m_SizeDelta: {x: 470, y: 32} + m_Pivot: {x: 0, y: 0.5} +--- !u!222 &2362441317461358685 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8615435195221189226} + m_CullTransparentMesh: 0 +--- !u!114 &3564972927004152258 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8615435195221189226} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Right Controller Actions +--- !u!1 &8627200968908435487 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3633277011693553459} + - component: {fileID: 890407994651899206} + - component: {fileID: 8003751192997557315} + m_Layer: 5 + m_Name: Separator + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3633277011693553459 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8627200968908435487} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4664102382212086408} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 12, y: -50} + m_SizeDelta: {x: 700, y: 2} + m_Pivot: {x: 0, y: 0.5} +--- !u!222 &890407994651899206 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8627200968908435487} + m_CullTransparentMesh: 1 +--- !u!114 &8003751192997557315 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8627200968908435487} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.34509805, g: 0.34509805, b: 0.34509805, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &8627322106985149675 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5648368935754560292} + - component: {fileID: 5486358533485841735} + - component: {fileID: 8944868471381969800} + m_Layer: 5 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5648368935754560292 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8627322106985149675} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6332096640150509629} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 30, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5486358533485841735 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8627322106985149675} + m_CullTransparentMesh: 1 +--- !u!114 &8944868471381969800 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8627322106985149675} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 46c27b4ffbe1f4c92b44af023b7ee228, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &8629524045509049125 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4571686054701045371} + - component: {fileID: 6189919986872254948} + - component: {fileID: 395423402047618663} + m_Layer: 5 + m_Name: FullbodyHighlight + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &4571686054701045371 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8629524045509049125} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3638238043440212286} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0} +--- !u!222 &6189919986872254948 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8629524045509049125} + m_CullTransparentMesh: 1 +--- !u!114 &395423402047618663 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8629524045509049125} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 269338fb8e448438b9e9667d6d1cea81, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &8636524733536549377 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5844035398286289782} + - component: {fileID: 9085529316923664183} + - component: {fileID: 5423014065191291530} + - component: {fileID: 1995280185564097759} + m_Layer: 0 + m_Name: SpacePanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5844035398286289782 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8636524733536549377} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3026702587458427644} + m_Father: {fileID: 1971974159405262163} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -55, y: -10} + m_SizeDelta: {x: 85, y: 30} + m_Pivot: {x: 1, y: 1} +--- !u!222 &9085529316923664183 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8636524733536549377} + m_CullTransparentMesh: 1 +--- !u!114 &5423014065191291530 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8636524733536549377} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.43801177, g: 0.4461339, b: 0.4811321, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &1995280185564097759 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8636524733536549377} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 5423014065191291530} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &8640641445779114434 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4371884039492262807} + - component: {fileID: 6898868113288085843} + - component: {fileID: 1212721096153496711} + - component: {fileID: 5857381328910261995} + - component: {fileID: 6687835892228167061} + - component: {fileID: 3225540301575752044} + m_Layer: 0 + m_Name: XR Interaction Simulator UI + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4371884039492262807 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8640641445779114434} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 410678886995482376} + - {fileID: 4328764193154433265} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!223 &6898868113288085843 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8640641445779114434} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_AdditionalShaderChannelsFlag: 0 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: 1 + m_TargetDisplay: 0 +--- !u!114 &1212721096153496711 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8640641445779114434} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 1920, y: 1080} + m_ScreenMatchMode: 1 + m_MatchWidthOrHeight: 1 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 0 +--- !u!114 &5857381328910261995 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8640641445779114434} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &6687835892228167061 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8640641445779114434} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4b9da94370444448aa6dcb1598d0dae, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HMDPanel: {fileID: 1495162503205807742} + m_MirrorModePanel: {fileID: 3210289541458989383} + m_RightHandPanel: {fileID: 6170077855614272475} + m_LeftHandPanel: {fileID: 6631339706381068503} + m_RightControllerPanel: {fileID: 3292115020647013831} + m_LeftControllerPanel: {fileID: 5344209675267329217} + m_BothControllersPanel: {fileID: 3846620710285012465} + m_BothHandsPanel: {fileID: 6569580931950465076} + m_TriggerPanel: {fileID: 2479176232581707795} + m_TriggerBg: {fileID: 3756794225943487815} + m_GripPanel: {fileID: 9100785935827759820} + m_GripBg: {fileID: 6282437471291683846} + m_PrimaryPanel: {fileID: 6665579737799444567} + m_PrimaryBg: {fileID: 6056739797483759771} + m_SecondaryPanel: {fileID: 7580895525898509257} + m_SecondaryBg: {fileID: 8273029332885832027} + m_MenuPanel: {fileID: 7528030120230455479} + m_MenuBg: {fileID: 6799830946875625479} + m_Primary2DAxisClickPanel: {fileID: 6968097027761340547} + m_Primary2DAxisClickBg: {fileID: 5267497595319650295} + m_Secondary2DAxisClickPanel: {fileID: 6653624374793035088} + m_Secondary2DAxisClickBg: {fileID: 8316617441152753479} + m_Primary2DAxisTouchPanel: {fileID: 5312014588083781357} + m_Primary2DAxisTouchBg: {fileID: 4754829074139730316} + m_Secondary2DAxisTouchPanel: {fileID: 3872635599277961} + m_Secondary2DAxisTouchBg: {fileID: 7529179801954948605} + m_PrimaryTouchPanel: {fileID: 96201490428917187} + m_PrimaryTouchBg: {fileID: 7907909128063583968} + m_SecondaryTouchPanel: {fileID: 6600077032971744509} + m_SecondaryTouchBg: {fileID: 6257830134989218701} + m_ControllerHotkeyPanel: {fileID: 7344313013811052991} + m_ControllerHotkeyBg: {fileID: 3080483111807852381} + m_ControllerHotkeyIcon: {fileID: 8204039486842106123} + m_ControllerHotkeyText: {fileID: 2811528528473565518} + m_LeftControllerSprite: {fileID: 21300000, guid: c2bc09e4357ee4c6bbb9d0e8ccf7f21d, type: 3} + m_RightControllerSprite: {fileID: 21300000, guid: cbd1e2a1a972644eea7bfae3d6f2b979, type: 3} + m_ControllerInputRow: {fileID: 3339236843379809269} + m_PokePanel: {fileID: 42524817193246771} + m_PokePanelBg: {fileID: 8661181416575580406} + m_PinchPanel: {fileID: 4915099322819805516} + m_PinchPanelBg: {fileID: 2417155739207568977} + m_GrabPanel: {fileID: 3102861836040358921} + m_GrabPanelBg: {fileID: 8383935976889007878} + m_ThumbPanel: {fileID: 6427756697192018837} + m_ThumbPanelBg: {fileID: 4033979322507351798} + m_OpenPanel: {fileID: 7241063373068672445} + m_OpenPanelBg: {fileID: 5427795204006297372} + m_FistPanel: {fileID: 1293103267684772900} + m_FistPanelBg: {fileID: 1435705020410069305} + m_CustomPanel: {fileID: 2621914129207101519} + m_HandHotkeyPanel: {fileID: 3177480734895132315} + m_HandHotkeyBg: {fileID: 8174217074363377897} + m_HandHotkeyIcon: {fileID: 1002789894967402766} + m_HandHotkeyText: {fileID: 862899570021833484} + m_LeftHandSprite: {fileID: 21300000, guid: f4ae9f38f5d3b410f84c02c1486c64eb, type: 3} + m_RightHandSprite: {fileID: 21300000, guid: c4d8b8565bef1451b94058ebfcab985d, type: 3} + m_HandInputRow: {fileID: 1685609228504453658} + m_TranslateForwardPanel: {fileID: 3790744179823793378} + m_TranslateBackwardPanel: {fileID: 6218021279439115299} + m_TranslateUpPanel: {fileID: 1442539181866979841} + m_TranslateDownPanel: {fileID: 4653516047911305232} + m_TranslateLeftPanel: {fileID: 6553082274001734126} + m_TranslateRightPanel: {fileID: 1438627640334842309} + m_RotateUpPanel: {fileID: 8522278435667068479} + m_RotateDownPanel: {fileID: 4285961034861842867} + m_RotateLeftPanel: {fileID: 14619953387140814} + m_RotateRightPanel: {fileID: 5207631386085566706} +--- !u!114 &3225540301575752044 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8640641445779114434} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: cc8177f906fb249e0aaf332f7afba347, type: 3} + m_Name: + m_EditorClassIdentifier: + m_InputSelectionMenu: {fileID: 2492122509147849978} + m_ClosedInputSelectionMenu: {fileID: 7960291804964704818} + m_ControllerActionsMenu: {fileID: 5758407298479139993} + m_ClosedControllerActionsMenu: {fileID: 8544196888547749106} + m_HandActionsMenu: {fileID: 7414648820516415283} + m_ClosedHandActionsMenu: {fileID: 8680935085713349974} + m_ToggleActionMenu: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: 456302da-b718-48d2-93ea-c7ca6f353926 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: faaf2ac4-cfbe-4cf3-a926-d3538aed4650 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: 8194751571243181529, guid: 7f59cc19636f04d5cbbc64e77a20787f, type: 3} + m_InputActionReferenceValue: {fileID: 8194751571243181529, guid: 7f59cc19636f04d5cbbc64e77a20787f, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueWasCompletedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_ToggleInputSelectionMenu: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: 9a1ae4e1-7bc3-4b3e-8e2c-92c462acb821 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: 868afc36-9f22-4170-86bf-83e544296897 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: -5413762223967049505, guid: 7f59cc19636f04d5cbbc64e77a20787f, type: 3} + m_InputActionReferenceValue: {fileID: -5413762223967049505, guid: 7f59cc19636f04d5cbbc64e77a20787f, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueWasCompletedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_HighlightFullBodyPanel: {fileID: 8629524045509049125} + m_HighlightLeftControllerPanel: {fileID: 2993293739620195529} + m_HighlightRightControllerPanel: {fileID: 8223189697636407875} + m_HighlightLeftHandPanel: {fileID: 3876311681811798585} + m_HighlightRightHandPanel: {fileID: 2213802017060509428} + m_HighlightHeadPanel: {fileID: 1407244870148967082} + m_HighlightTriggerPanel: {fileID: 2970811688263072926} + m_HighlightGripPanel: {fileID: 4641217639154947236} + m_HighlightPrimaryPanel: {fileID: 7922348886110434251} + m_HighlightSecondaryPanel: {fileID: 9177581174047456597} + m_HighlightPokePanel: {fileID: 8363930961426488048} + m_HighlightPinchPanel: {fileID: 8117110670191033586} + m_HighlightGrabPanel: {fileID: 4612921555161000992} + m_LeftHandIcon: {fileID: 7762687288714831} + m_RightHandIcon: {fileID: 7491236000102133212} + m_HandPackageWarningPanel: {fileID: 3990821709125147001} +--- !u!1 &8651812985971655735 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6709438869090117406} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6709438869090117406 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8651812985971655735} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 7816389861956802540} + - {fileID: 7876596861176811358} + m_Father: {fileID: 748586345435336783} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &8672120061651974478 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3299587613051498839} + - component: {fileID: 658354273125854810} + - component: {fileID: 6077941452014194777} + m_Layer: 5 + m_Name: MiddlePanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3299587613051498839 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8672120061651974478} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 4759511295660790030} + - {fileID: 3906539553172013192} + - {fileID: 8865462156448843826} + m_Father: {fileID: 6109187273434472244} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 80, y: 10} + m_SizeDelta: {x: 200, y: 225} + m_Pivot: {x: 0, y: 0.5} +--- !u!222 &658354273125854810 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8672120061651974478} + m_CullTransparentMesh: 1 +--- !u!114 &6077941452014194777 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8672120061651974478} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.10196079, g: 0.11764707, b: 0.14509805, a: 0.5882353} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &8680935085713349974 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2158477176593190204} + m_Layer: 0 + m_Name: HandActionsClosedWindow + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &2158477176593190204 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8680935085713349974} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 842024090074107350} + - {fileID: 1329497536324033519} + - {fileID: 3242538737529602091} + m_Father: {fileID: 2258540431901169821} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 200, y: -625} + m_SizeDelta: {x: 400, y: 60} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &8686859773748372026 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5901146456163099017} + - component: {fileID: 4095376184259797218} + - component: {fileID: 419217863192809782} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5901146456163099017 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8686859773748372026} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 1 + m_Children: [] + m_Father: {fileID: 3365218671118266616} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -10, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4095376184259797218 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8686859773748372026} + m_CullTransparentMesh: 1 +--- !u!114 &419217863192809782 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8686859773748372026} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 42 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 115 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Trig +--- !u!1 &8692929584992769818 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 9201998970743556438} + m_Layer: 5 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &9201998970743556438 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8692929584992769818} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 3348035522208519344} + - {fileID: 8942413187771376359} + m_Father: {fileID: 4456344196334606415} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &8808297254821809005 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5038776941478000679} + - component: {fileID: 1425789282448716411} + - component: {fileID: 8579172214525997546} + m_Layer: 5 + m_Name: Bg + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5038776941478000679 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8808297254821809005} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4149270384499422738} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1425789282448716411 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8808297254821809005} + m_CullTransparentMesh: 1 +--- !u!114 &8579172214525997546 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8808297254821809005} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.10980392, g: 0.11372549, b: 0.13333334, a: 0.78431374} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &8816822530821571146 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3161203776773436233} + - component: {fileID: 3955256318123390382} + - component: {fileID: 4040128365367114} + m_Layer: 5 + m_Name: LeftPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3161203776773436233 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8816822530821571146} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 6887138384176392633} + m_Father: {fileID: 6109187273434472244} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 15, y: 10} + m_SizeDelta: {x: 65, y: 225} + m_Pivot: {x: 0, y: 0.5} +--- !u!222 &3955256318123390382 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8816822530821571146} + m_CullTransparentMesh: 1 +--- !u!114 &4040128365367114 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8816822530821571146} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.10196079, g: 0.11764707, b: 0.14509805, a: 0.5882353} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 0.5 +--- !u!1 &8931766039158343834 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5429162246892834618} + - component: {fileID: 3000140074209154230} + - component: {fileID: 1073523763930077525} + m_Layer: 5 + m_Name: ControllerActionsTitle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5429162246892834618 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8931766039158343834} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3694782915305002292} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 25, y: -25} + m_SizeDelta: {x: 470, y: 32} + m_Pivot: {x: 0, y: 0.5} +--- !u!222 &3000140074209154230 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8931766039158343834} + m_CullTransparentMesh: 0 +--- !u!114 &1073523763930077525 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8931766039158343834} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 35 + m_FontStyle: 1 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Controller Actions +--- !u!1 &8990022366337345864 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8724851072079499689} + - component: {fileID: 1051674049557148555} + - component: {fileID: 125511206592663296} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8724851072079499689 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8990022366337345864} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 318831086246078444} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1051674049557148555 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8990022366337345864} + m_CullTransparentMesh: 1 +--- !u!114 &125511206592663296 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8990022366337345864} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 35 + m_FontStyle: 1 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Y +--- !u!1 &9010255435830132030 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 545201384620436452} + - component: {fileID: 7361010033401944151} + - component: {fileID: 368345103779336615} + - component: {fileID: 4829362624633405295} + m_Layer: 0 + m_Name: Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &545201384620436452 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9010255435830132030} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 7619186013668305424} + m_Father: {fileID: 5709037953205928473} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -15, y: -10} + m_SizeDelta: {x: 50, y: 30} + m_Pivot: {x: 1, y: 1} +--- !u!222 &7361010033401944151 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9010255435830132030} + m_CullTransparentMesh: 1 +--- !u!114 &368345103779336615 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9010255435830132030} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.43801177, g: 0.4461339, b: 0.4811321, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &4829362624633405295 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9010255435830132030} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 368345103779336615} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 7414648820516415283} + m_TargetAssemblyTypeName: UnityEngine.GameObject, UnityEngine + m_MethodName: SetActive + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + - m_Target: {fileID: 8680935085713349974} + m_TargetAssemblyTypeName: UnityEngine.GameObject, UnityEngine + m_MethodName: SetActive + m_Mode: 6 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 1 + m_CallState: 2 +--- !u!1 &9023391777316888452 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2423734174758047513} + - component: {fileID: 5034196485693547336} + - component: {fileID: 4392811251524903759} + m_Layer: 0 + m_Name: Label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2423734174758047513 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9023391777316888452} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6822129441471570829} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 1} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: 25} + m_SizeDelta: {x: 100, y: 50} + m_Pivot: {x: 0.5, y: 1} +--- !u!222 &5034196485693547336 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9023391777316888452} + m_CullTransparentMesh: 1 +--- !u!114 &4392811251524903759 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9023391777316888452} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: 'Head + +' +--- !u!1 &9069784064568793058 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8140417387033196426} + - component: {fileID: 6526779670514727728} + - component: {fileID: 1736788058193445287} + - component: {fileID: 4479285610161569417} + m_Layer: 0 + m_Name: Panel04 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &8140417387033196426 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9069784064568793058} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 7859565072911869271} + m_Father: {fileID: 5079952485184716055} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 10} + m_SizeDelta: {x: 55, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6526779670514727728 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9069784064568793058} + m_CullTransparentMesh: 1 +--- !u!114 &1736788058193445287 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9069784064568793058} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.27058825, g: 0.3019608, b: 0.3372549, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &4479285610161569417 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9069784064568793058} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1736788058193445287} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &9100785935827759820 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4494445783134658300} + m_Layer: 0 + m_Name: GripPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &4494445783134658300 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9100785935827759820} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8598129656025319670} + m_Father: {fileID: 8425869877281121703} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 117.5, y: -18} + m_SizeDelta: {x: 75, y: 36} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &9127740946964775122 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4967460965833401963} + - component: {fileID: 2066785091551639616} + m_Layer: 5 + m_Name: OrderedListView + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &4967460965833401963 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9127740946964775122} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 604845444653919950} + - {fileID: 5867722273410490029} + - {fileID: 377242596902221629} + m_Father: {fileID: 4759511295660790030} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -25} + m_SizeDelta: {x: 0, y: -50} + m_Pivot: {x: 0, y: 0.5} +--- !u!114 &2066785091551639616 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9127740946964775122} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 12 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 0 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 0 + m_ChildScaleHeight: 0 + m_ReverseArrangement: 0 +--- !u!1 &9177581174047456597 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 35424495705098992} + - component: {fileID: 3970645526065479986} + - component: {fileID: 6980795373623205006} + m_Layer: 5 + m_Name: SecondaryHighlight + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &35424495705098992 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9177581174047456597} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 4380196631978487517} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 0.5, y: 0} + m_AnchoredPosition: {x: 0, y: 16} + m_SizeDelta: {x: 190, y: 48} + m_Pivot: {x: 0.5, y: 0} +--- !u!222 &3970645526065479986 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9177581174047456597} + m_CullTransparentMesh: 1 +--- !u!114 &6980795373623205006 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9177581174047456597} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: dd8fd94bee0954b82adaf33046ec980d, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &9179390864612079659 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 819262228787745} + - component: {fileID: 4099409662104570377} + - component: {fileID: 3301497262009104165} + m_Layer: 0 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &819262228787745 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9179390864612079659} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 6357373159845911667} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4099409662104570377 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9179390864612079659} + m_CullTransparentMesh: 1 +--- !u!114 &3301497262009104165 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9179390864612079659} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 35 + m_FontStyle: 1 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 300 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: X +--- !u!1 &9201234416432430894 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2752046669439991284} + - component: {fileID: 2040077781219440518} + - component: {fileID: 5188242911474563161} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2752046669439991284 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9201234416432430894} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2316342934838105792} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &2040077781219440518 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9201234416432430894} + m_CullTransparentMesh: 1 +--- !u!114 &5188242911474563161 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9201234416432430894} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 42 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 115 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Menu +--- !u!1 &9205061911131900328 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5669322730281365547} + - component: {fileID: 6330203414776563373} + - component: {fileID: 2370923636127268067} + m_Layer: 5 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5669322730281365547 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9205061911131900328} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 8672739676909435217} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 30.2816, y: 30.281} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6330203414776563373 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9205061911131900328} + m_CullTransparentMesh: 1 +--- !u!114 &2370923636127268067 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9205061911131900328} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 4f305c7c25f0148cd8a3b2707827b5b7, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 diff --git a/Samples~/XR Device Simulator/XRInteractionSimulator/XR Interaction Simulator.prefab b/Samples~/XR Device Simulator/XRInteractionSimulator/XR Interaction Simulator.prefab new file mode 100644 index 00000000..d6c4510a --- /dev/null +++ b/Samples~/XR Device Simulator/XRInteractionSimulator/XR Interaction Simulator.prefab @@ -0,0 +1,1163 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &8135023674665499069 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8518324294302271954} + - component: {fileID: 6900676903622151380} + - component: {fileID: 3966192772413791964} + - component: {fileID: 4976647607938919449} + - component: {fileID: 9147200356447112767} + m_Layer: 0 + m_Name: XR Interaction Simulator + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8518324294302271954 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8135023674665499069} + serializedVersion: 2 + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &6900676903622151380 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8135023674665499069} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: da1bb8ac6d49b4bbe8d0a43005a26072, type: 3} + m_Name: + m_EditorClassIdentifier: + m_CameraTransform: {fileID: 0} + m_DeviceLifecycleManager: {fileID: 3966192772413791964} + m_HandExpressionManager: {fileID: 4976647607938919449} + m_InteractionSimulatorUI: {fileID: 8640641445779114434, guid: be0c86f67bf3f46659373b3776d9ecbb, type: 3} + m_HMDIsTracked: 1 + m_HMDTrackingState: 3 + m_LeftControllerIsTracked: 1 + m_LeftControllerTrackingState: 3 + m_RightControllerIsTracked: 1 + m_RightControllerTrackingState: 3 + m_LeftHandIsTracked: 1 + m_RightHandIsTracked: 1 + m_TranslateXInput: + m_InputSourceMode: 2 + m_InputAction: + m_Name: Translate X Input + m_Type: 0 + m_ExpectedControlType: Vector2 + m_Id: 5822c4b4-a664-465e-a057-233b967c1623 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReference: {fileID: -2435995061748527091, guid: 7f59cc19636f04d5cbbc64e77a20787f, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualValue: 0 + m_TranslateYInput: + m_InputSourceMode: 2 + m_InputAction: + m_Name: Translate Y Input + m_Type: 0 + m_ExpectedControlType: Vector2 + m_Id: 3f2f90b6-a0f8-45d2-ac53-519eebb2380b + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReference: {fileID: 4091624078112751379, guid: 7f59cc19636f04d5cbbc64e77a20787f, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualValue: 0 + m_TranslateZInput: + m_InputSourceMode: 2 + m_InputAction: + m_Name: Translate Z Input + m_Type: 0 + m_ExpectedControlType: Vector2 + m_Id: 235215a3-88db-45ef-ad35-3c87287d607f + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReference: {fileID: 8957443236229058949, guid: 7f59cc19636f04d5cbbc64e77a20787f, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualValue: 0 + m_ToggleManipulateLeftInput: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: fbcd679f-34f4-4f1e-a0ab-8b110215af1d + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: a5fd0c97-eb12-441a-9fe4-bf4015e633c5 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: 2547216639932606815, guid: 7f59cc19636f04d5cbbc64e77a20787f, type: 3} + m_InputActionReferenceValue: {fileID: 2547216639932606815, guid: 7f59cc19636f04d5cbbc64e77a20787f, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueWasCompletedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_ToggleManipulateRightInput: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: 5091c43b-ace3-44a9-8274-9bbbc1fadf05 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: 694232ca-9c8e-4597-bf46-dba2044986a4 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: 743384497930276301, guid: 7f59cc19636f04d5cbbc64e77a20787f, type: 3} + m_InputActionReferenceValue: {fileID: 743384497930276301, guid: 7f59cc19636f04d5cbbc64e77a20787f, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueWasCompletedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_LeftDeviceActionsInput: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: cf456fa7-8a90-48f6-b8f4-bc7c2cd85dc8 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: 253e215d-e20a-4724-b6bd-288d3f5e0f57 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: -1271653843002399469, guid: 7f59cc19636f04d5cbbc64e77a20787f, type: 3} + m_InputActionReferenceValue: {fileID: -1271653843002399469, guid: 7f59cc19636f04d5cbbc64e77a20787f, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueWasCompletedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_CycleDevicesInput: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: 16299362-8b97-40dc-b8e1-7090ccdc7269 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: 0eb8a0e1-277e-4d8a-bb9e-e1ab5d270d66 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: -7837977739890211585, guid: 7f59cc19636f04d5cbbc64e77a20787f, type: 3} + m_InputActionReferenceValue: {fileID: -7837977739890211585, guid: 7f59cc19636f04d5cbbc64e77a20787f, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueWasCompletedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_KeyboardRotationDeltaInput: + m_InputSourceMode: 2 + m_InputAction: + m_Name: Keyboard Rotation Delta Input + m_Type: 0 + m_ExpectedControlType: Vector2 + m_Id: 313a7293-06cb-444b-8d0f-2152e644f92b + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReference: {fileID: -1273072440521047205, guid: 7f59cc19636f04d5cbbc64e77a20787f, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualValue: {x: 0, y: 0} + m_ToggleMouseInput: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: 02a94c6e-2eea-46b6-b154-19b1c879557c + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: 32eab01f-072b-4664-89ad-f44bba74d6a1 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: -6780995177125596410, guid: 7f59cc19636f04d5cbbc64e77a20787f, type: 3} + m_InputActionReferenceValue: {fileID: -6780995177125596410, guid: 7f59cc19636f04d5cbbc64e77a20787f, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueWasCompletedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_MouseRotationDeltaInput: + m_InputSourceMode: 2 + m_InputAction: + m_Name: Mouse Rotation Delta Input + m_Type: 0 + m_ExpectedControlType: Vector2 + m_Id: 48cd5fb3-f69b-408c-9081-393875473ffb + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReference: {fileID: -5681291154727990353, guid: 7f59cc19636f04d5cbbc64e77a20787f, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualValue: {x: 0, y: 0} + m_MouseScrollInput: + m_InputSourceMode: 2 + m_InputAction: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: 4a9ad3d7-dd9f-4336-b560-f503d8d6fbd4 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReference: {fileID: 4546399164687744209, guid: 7f59cc19636f04d5cbbc64e77a20787f, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualValue: {x: 0, y: 0} + m_GripInput: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: dd9345f0-3f71-4a7e-ae89-14cbb98b4ae4 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: c35e6cf2-0f2f-454e-b41e-dd4f1df7424a + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: 5667446173830999989, guid: b6d5c44ebe3244b7692e81ae8265eb22, type: 3} + m_InputActionReferenceValue: {fileID: 5667446173830999989, guid: b6d5c44ebe3244b7692e81ae8265eb22, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueWasCompletedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_TriggerInput: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: dc1c3032-d44c-412b-ba14-de814dc8c5c7 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: 68d3beb5-6ab1-46f1-b4e7-604951a1ea5c + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: -2439264783773714294, guid: b6d5c44ebe3244b7692e81ae8265eb22, type: 3} + m_InputActionReferenceValue: {fileID: -2439264783773714294, guid: b6d5c44ebe3244b7692e81ae8265eb22, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueWasCompletedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_PrimaryButtonInput: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: 90585208-ec5a-48d6-a642-79e6e8f22a4c + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: af5f7b27-e80e-4497-89c3-877bd44c0361 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: -3599823989380923159, guid: b6d5c44ebe3244b7692e81ae8265eb22, type: 3} + m_InputActionReferenceValue: {fileID: -3599823989380923159, guid: b6d5c44ebe3244b7692e81ae8265eb22, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueWasCompletedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_SecondaryButtonInput: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: 4f260533-4b31-40c2-a69b-e5e4b2590136 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: 5bacaf1d-6070-4f42-b8aa-4a44d5927e1e + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: -8069514856583376848, guid: b6d5c44ebe3244b7692e81ae8265eb22, type: 3} + m_InputActionReferenceValue: {fileID: -8069514856583376848, guid: b6d5c44ebe3244b7692e81ae8265eb22, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueWasCompletedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_MenuInput: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: fdd7d9a8-94d2-44db-940b-35ef0eccfef2 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: a308ab2a-5b97-4dd7-bc4e-ff6f6423f7c7 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: 4116954447336496447, guid: b6d5c44ebe3244b7692e81ae8265eb22, type: 3} + m_InputActionReferenceValue: {fileID: 4116954447336496447, guid: b6d5c44ebe3244b7692e81ae8265eb22, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueWasCompletedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_Primary2DAxisClickInput: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: ce8c29a4-6244-4793-8d6b-79a07e2467fe + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: 21fdd06e-9f9d-4b18-acb6-1f586dfca3fe + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: 637922521265743415, guid: b6d5c44ebe3244b7692e81ae8265eb22, type: 3} + m_InputActionReferenceValue: {fileID: 637922521265743415, guid: b6d5c44ebe3244b7692e81ae8265eb22, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueWasCompletedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_Secondary2DAxisClickInput: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: cfcacab9-dd55-437f-a68f-bd84ee5c9662 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: 6b5011c4-d233-4e99-b140-ec8176900fad + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: -8358032100899166728, guid: b6d5c44ebe3244b7692e81ae8265eb22, type: 3} + m_InputActionReferenceValue: {fileID: -8358032100899166728, guid: b6d5c44ebe3244b7692e81ae8265eb22, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueWasCompletedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_Primary2DAxisTouchInput: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: 124a7090-19b3-4007-b281-0cd33eb158ae + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: 914f60e2-7ca5-485f-a814-71c797ec9888 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: 2883175194488637904, guid: b6d5c44ebe3244b7692e81ae8265eb22, type: 3} + m_InputActionReferenceValue: {fileID: 2883175194488637904, guid: b6d5c44ebe3244b7692e81ae8265eb22, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueWasCompletedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_Secondary2DAxisTouchInput: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: eb1c44e4-1460-4b5d-bdc7-8345e3f1e53f + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: 821bd71f-fe5f-48d9-9afc-14f5d263cd2e + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: -851591506940895311, guid: b6d5c44ebe3244b7692e81ae8265eb22, type: 3} + m_InputActionReferenceValue: {fileID: -851591506940895311, guid: b6d5c44ebe3244b7692e81ae8265eb22, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueWasCompletedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_PrimaryTouchInput: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: a197c50b-b303-4b3f-9d4d-5333500b0528 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: 4578d959-042f-4cd8-a8b6-884dab43e62e + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: -4201894270441249665, guid: b6d5c44ebe3244b7692e81ae8265eb22, type: 3} + m_InputActionReferenceValue: {fileID: -4201894270441249665, guid: b6d5c44ebe3244b7692e81ae8265eb22, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueWasCompletedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_SecondaryTouchInput: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: 338fb5cf-c6aa-4b81-9da3-7d3996fcdb89 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: 34586855-8a73-44f6-a31a-2bdff81c6ab6 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: 5188782311186578770, guid: b6d5c44ebe3244b7692e81ae8265eb22, type: 3} + m_InputActionReferenceValue: {fileID: 5188782311186578770, guid: b6d5c44ebe3244b7692e81ae8265eb22, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueWasCompletedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_XConstraintInput: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: a92fd368-7bb5-4fa2-b7dd-f43b91d232cb + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: 0f93b608-0210-43f7-b0f2-3349d306039c + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: -8086843181801629294, guid: 7f59cc19636f04d5cbbc64e77a20787f, type: 3} + m_InputActionReferenceValue: {fileID: -8086843181801629294, guid: 7f59cc19636f04d5cbbc64e77a20787f, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueWasCompletedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_YConstraintInput: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: 75790bd1-deb2-4985-9122-3fd945e90ec5 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: b4c034de-efd7-4d27-a503-4ab0c4586afc + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: 5691479700773754790, guid: 7f59cc19636f04d5cbbc64e77a20787f, type: 3} + m_InputActionReferenceValue: {fileID: 5691479700773754790, guid: 7f59cc19636f04d5cbbc64e77a20787f, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueWasCompletedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_ZConstraintInput: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: d8d4f135-2fff-4dc7-ac2a-4792bfba148e + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: 024d1062-74bf-417f-a5e9-fd3665f38937 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: 1644704167276153141, guid: 7f59cc19636f04d5cbbc64e77a20787f, type: 3} + m_InputActionReferenceValue: {fileID: 1644704167276153141, guid: 7f59cc19636f04d5cbbc64e77a20787f, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueWasCompletedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_ResetInput: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: 85cc1aaa-795f-4a5f-ac50-d7615529bba4 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: d2858175-cd7e-4675-beeb-e71c3ce67cbd + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: -2638007419058092452, guid: 7f59cc19636f04d5cbbc64e77a20787f, type: 3} + m_InputActionReferenceValue: {fileID: -2638007419058092452, guid: 7f59cc19636f04d5cbbc64e77a20787f, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueWasCompletedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_Axis2DInput: + m_InputSourceMode: 2 + m_InputAction: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: fd37527d-420f-4159-a0f6-7ee8dfac74f6 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReference: {fileID: 8275859971367427353, guid: b6d5c44ebe3244b7692e81ae8265eb22, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualValue: {x: 0, y: 0} + m_TogglePrimary2DAxisTargetInput: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: 5138cae7-03cb-47a0-b474-84c874b37249 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: 20719701-0f48-475b-823b-1d391892ecd7 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: -7682297331024740639, guid: 7f59cc19636f04d5cbbc64e77a20787f, type: 3} + m_InputActionReferenceValue: {fileID: -7682297331024740639, guid: 7f59cc19636f04d5cbbc64e77a20787f, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueWasCompletedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_ToggleSecondary2DAxisTargetInput: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: 3c1ff7f3-4e1f-423a-bb6b-a15a8ee667ff + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: 0215c07f-d61a-42bd-bb6c-f716c86b2fd5 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: 1155009490345466815, guid: 7f59cc19636f04d5cbbc64e77a20787f, type: 3} + m_InputActionReferenceValue: {fileID: 1155009490345466815, guid: 7f59cc19636f04d5cbbc64e77a20787f, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueWasCompletedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_CycleQuickActionInput: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: 91140a16-3bc9-493a-94f7-a0ea309ca778 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: 8fa3ed19-5761-4b9e-8068-a6f0b6658dfc + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: 3777898905585145322, guid: 7f59cc19636f04d5cbbc64e77a20787f, type: 3} + m_InputActionReferenceValue: {fileID: 3777898905585145322, guid: 7f59cc19636f04d5cbbc64e77a20787f, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueWasCompletedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_TogglePerformQuickActionInput: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: 13c1b3bf-c88f-4938-b142-cadb2584d0ee + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: 71a85489-41c7-4d8c-b7f4-76f96faf0fb8 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: -3450969811164232283, guid: 7f59cc19636f04d5cbbc64e77a20787f, type: 3} + m_InputActionReferenceValue: {fileID: -3450969811164232283, guid: 7f59cc19636f04d5cbbc64e77a20787f, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueWasCompletedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_ToggleManipulateHeadInput: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: a7828afb-d162-4b2e-82f9-b8eaddd37820 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: 12d9e889-0924-4752-83f8-9dbd53b19116 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: -3619485213038975404, guid: 7f59cc19636f04d5cbbc64e77a20787f, type: 3} + m_InputActionReferenceValue: {fileID: -3619485213038975404, guid: 7f59cc19636f04d5cbbc64e77a20787f, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueWasCompletedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_GripAmount: 1 + m_TriggerAmount: 1 + m_TranslateXSpeed: 0.2 + m_TranslateYSpeed: 0.2 + m_TranslateZSpeed: 0.2 + m_BodyTranslateMultiplier: 5 + m_RotateXSensitivity: 0.2 + m_RotateYSensitivity: 0.2 + m_MouseScrollRotateSensitivity: 0.05 + m_RotateYInvert: 0 + m_TranslateSpace: 1 + m_QuickActionControllerInputModes: 01000000020000000300000004000000 +--- !u!114 &3966192772413791964 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8135023674665499069} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2a798ede3f9ef495cb5b62f2a9896b2e, type: 3} + m_Name: + m_EditorClassIdentifier: + m_RemoveOtherHMDDevices: 1 + m_HandTrackingCapability: 1 +--- !u!114 &4976647607938919449 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8135023674665499069} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 18d5c629281874bc18cb5ead1d245f6a, type: 3} + m_Name: + m_EditorClassIdentifier: + m_SimulatedHandExpressions: + - m_Name: Poke + m_ToggleInput: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: 67459d21-4103-40e8-ba86-d898e89fade0 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: 329926d4-25cb-4366-ad3d-ca0e5db7726d + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: -5976510165261225158, guid: b72ab2a46d9094be38774d023beb4d34, type: 3} + m_InputActionReferenceValue: {fileID: -5976510165261225158, guid: b72ab2a46d9094be38774d023beb4d34, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueWasCompletedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_Capture: {fileID: 11400000, guid: 95c319715e9d2644da8ae09af8ccfee6, type: 2} + m_IsQuickAction: 1 + - m_Name: Pinch + m_ToggleInput: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: 7ab91dd1-6e51-4f9f-9cba-72167d459a3a + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: c5314228-c514-4378-a5db-a32f501c8459 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: -8306000708137014372, guid: b72ab2a46d9094be38774d023beb4d34, type: 3} + m_InputActionReferenceValue: {fileID: -8306000708137014372, guid: b72ab2a46d9094be38774d023beb4d34, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueWasCompletedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_Capture: {fileID: 11400000, guid: d6e15a52475c2564ca7d2977fdece24a, type: 2} + m_IsQuickAction: 1 + - m_Name: Grab + m_ToggleInput: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: a227dc4d-1738-4659-b714-bc223f4c5390 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: aef3415f-2df1-4a87-87e1-c58d10696474 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: -4373459253818063952, guid: b72ab2a46d9094be38774d023beb4d34, type: 3} + m_InputActionReferenceValue: {fileID: -4373459253818063952, guid: b72ab2a46d9094be38774d023beb4d34, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueWasCompletedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_Capture: {fileID: 11400000, guid: 3861c298d39c60c44b16920421444875, type: 2} + m_IsQuickAction: 1 + - m_Name: Thumb + m_ToggleInput: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: ce019abe-d3bd-456b-96e0-8d7b163bf17e + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: 03a70ded-ebb4-4f41-8e83-1a32aaacbddc + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: -741559036651486339, guid: b72ab2a46d9094be38774d023beb4d34, type: 3} + m_InputActionReferenceValue: {fileID: -741559036651486339, guid: b72ab2a46d9094be38774d023beb4d34, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueWasCompletedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_Capture: {fileID: 11400000, guid: 9d8c9c84da35a7c4c89efd57343c1df8, type: 2} + m_IsQuickAction: 0 + - m_Name: Open + m_ToggleInput: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: e2417513-5829-4bf3-90ef-24876c36a169 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: 0b108380-6860-474f-86c9-c140b42976d0 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: -9192331390769138535, guid: b72ab2a46d9094be38774d023beb4d34, type: 3} + m_InputActionReferenceValue: {fileID: -9192331390769138535, guid: b72ab2a46d9094be38774d023beb4d34, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueWasCompletedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_Capture: {fileID: 11400000, guid: 05293ab353dc8a747a36ed129311686d, type: 2} + m_IsQuickAction: 0 + - m_Name: Fist + m_ToggleInput: + m_InputSourceMode: 2 + m_InputActionPerformed: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: d625b666-df24-4952-889e-6242a8ffeb8e + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionValue: + m_Name: + m_Type: 0 + m_ExpectedControlType: + m_Id: e11a62f5-9de0-429d-86fe-48af9248b747 + m_Processors: + m_Interactions: + m_SingletonActionBindings: [] + m_Flags: 0 + m_InputActionReferencePerformed: {fileID: 6469712917552426222, guid: b72ab2a46d9094be38774d023beb4d34, type: 3} + m_InputActionReferenceValue: {fileID: 6469712917552426222, guid: b72ab2a46d9094be38774d023beb4d34, type: 3} + m_ObjectReferenceObject: {fileID: 0} + m_ManualPerformed: 0 + m_ManualValue: 0 + m_ManualQueuePerformed: 0 + m_ManualQueueWasPerformedThisFrame: 0 + m_ManualQueueWasCompletedThisFrame: 0 + m_ManualQueueValue: 0 + m_ManualQueueTargetFrame: 0 + m_Capture: {fileID: 11400000, guid: 2a7c8ca0feac7cc44a5c225164ef311d, type: 2} + m_IsQuickAction: 0 + m_RestingHandExpressionCapture: {fileID: 11400000, guid: 5be099e6e6012c244bb41881b6c0ea07, type: 2} +--- !u!114 &9147200356447112767 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8135023674665499069} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 017c5e3933235514c9520e1dace2a4b2, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ActionAssets: + - {fileID: -944628639613478452, guid: 7f59cc19636f04d5cbbc64e77a20787f, type: 3} + - {fileID: -944628639613478452, guid: b6d5c44ebe3244b7692e81ae8265eb22, type: 3} + - {fileID: -944628639613478452, guid: b72ab2a46d9094be38774d023beb4d34, type: 3} diff --git a/Samples~/XR Device Simulator/XRInteractionSimulator/XR Interaction Simulator.prefab.meta b/Samples~/XR Device Simulator/XRInteractionSimulator/XR Interaction Simulator.prefab.meta new file mode 100644 index 00000000..f48a26cb --- /dev/null +++ b/Samples~/XR Device Simulator/XRInteractionSimulator/XR Interaction Simulator.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 58d0a4ac86f2348deb02f3880c71378e +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/Editor/PackageScriptsTests.cs b/Tests/Editor/PackageScriptsTests.cs new file mode 100644 index 00000000..84afb111 --- /dev/null +++ b/Tests/Editor/PackageScriptsTests.cs @@ -0,0 +1,427 @@ +using System; +using System.Collections; +using System.Linq; +using System.Reflection; +using NUnit.Framework; +using Unity.XR.CoreUtils.Collections; +using UnityEngine; +using UnityEngine.TestTools; + +namespace UnityEditor.XR.Interaction.Toolkit.Editor.Tests +{ + /// + /// This class contains tests to help identify potential property and method accessibility issues and + /// potential namespace issues. It is left to the discretion of the developer to add any violations to + /// appropriate exception list or to address the violation in the script. + /// + [TestFixture] + class PackageScriptsTests + { + // Instructions to developers modifying exceptions lists: + // - Use "All" to apply to all package versions. + // - Use "3.0" or "3.1" etc. to apply the exception to a specific major.minor version. + // This is used for new internal properties added in a 3.x patch that should be changed to public in 3.y. + + static readonly (string, string)[] s_NamespaceExceptionList = + { + ("All", "UnityEditor.XR.Interaction.Toolkit.Utilities.EditorComponentLocatorUtility"), + }; + + static readonly (string, string)[] s_InternalPropertyExceptionList = + { + ("All", "Property UnityEngine.XR.Interaction.Toolkit.Filtering.XRTargetFilter.evaluators has { internal get; }."), + ("All", "Property UnityEngine.XR.Interaction.Toolkit.Filtering.XRTargetFilter.isProcessing has { internal get; private set; }."), + ("All", "Property UnityEngine.XR.Interaction.Toolkit.Filtering.XRTargetFilter.linkedInteractors has { internal get; }."), + ("All", "Property UnityEngine.XR.Interaction.Toolkit.Inputs.Interactions.SectorInteraction.pressPointOrDefault has { internal get; }."), + ("All", "Property UnityEngine.XR.Interaction.Toolkit.Interactors.XRInteractionGroup.hasRegisteredStartingMembers has { internal get; private set; }."), + ("All", "Property UnityEngine.XR.Interaction.Toolkit.Interactors.XRInteractionGroup.isRegisteredWithInteractionManager has { internal get; }."), + ("All", "Property UnityEngine.XR.Interaction.Toolkit.Transformers.XRDualGrabFreeTransformer.lastInteractorAttachPose has { internal get; private set; }."), + ("All", "Property UnityEngine.XR.Interaction.Toolkit.UI.TrackedDeviceEventData.pressWorldPosition has { internal get; internal set; }."), + }; + + static readonly (string, string)[] s_InternalMethodExceptionList = + { + ("All", "Method UnityEngine.XR.Interaction.Toolkit.AffordanceSystem.Theme.Audio.AudioAffordanceTheme.ValidateTheme has internal."), + ("All", "Method UnityEngine.XR.Interaction.Toolkit.AffordanceSystem.Theme.BaseAffordanceTheme`1.ValidateTheme has internal."), + ("All", "Method UnityEngine.XR.Interaction.Toolkit.AR.DragGesture.Reinitialize has internal."), + ("All", "Method UnityEngine.XR.Interaction.Toolkit.AR.Gesture`1.Cancel has internal."), + ("All", "Method UnityEngine.XR.Interaction.Toolkit.AR.Gesture`1.Reinitialize has internal."), + ("All", "Method UnityEngine.XR.Interaction.Toolkit.AR.Gesture`1.Update has internal."), + ("All", "Method UnityEngine.XR.Interaction.Toolkit.AR.PinchGesture.Reinitialize has internal."), + ("All", "Method UnityEngine.XR.Interaction.Toolkit.AR.TapGesture.Reinitialize has internal."), + ("All", "Method UnityEngine.XR.Interaction.Toolkit.AR.TwistGesture.Reinitialize has internal."), + ("All", "Method UnityEngine.XR.Interaction.Toolkit.AR.TwoFingerDragGesture.Reinitialize has internal."), + ("All", "Method UnityEngine.XR.Interaction.Toolkit.Filtering.XRTargetFilter.RegisterEvaluatorHandlers has internal."), + ("All", "Method UnityEngine.XR.Interaction.Toolkit.Filtering.XRTargetFilter.UnregisterEvaluatorHandlers has internal."), + ("All", "Method UnityEngine.XR.Interaction.Toolkit.Inputs.Simulation.SimulatedDeviceLifecycleManager.AddDevices has internal."), + ("All", "Method UnityEngine.XR.Interaction.Toolkit.Inputs.Simulation.SimulatedDeviceLifecycleManager.ApplyControllerState has internal."), + ("All", "Method UnityEngine.XR.Interaction.Toolkit.Inputs.Simulation.SimulatedDeviceLifecycleManager.ApplyHandState has internal."), + ("All", "Method UnityEngine.XR.Interaction.Toolkit.Inputs.Simulation.SimulatedDeviceLifecycleManager.ApplyHMDState has internal."), + ("All", "Method UnityEngine.XR.Interaction.Toolkit.Inputs.Simulation.SimulatedDeviceLifecycleManager.RemoveDevices has internal."), + ("All", "Method UnityEngine.XR.Interaction.Toolkit.Inputs.Simulation.SimulatedDeviceLifecycleManager.SwitchDeviceMode has internal."), + ("All", "Method UnityEngine.XR.Interaction.Toolkit.Interactors.Visuals.XRInteractorLineVisual.UpdateLineVisual has internal."), + ("All", "Method UnityEngine.XR.Interaction.Toolkit.Interactors.XRInteractionGroup.RemoveMissingMembersFromStartingOverridesMap has internal."), + ("All", "Method UnityEngine.XR.Interaction.Toolkit.Locomotion.Comfort.TunnelingVignetteController.PreviewInEditor has internal."), + ("All", "Method UnityEngine.XR.Interaction.Toolkit.Locomotion.LocomotionMediator.TryEndLocomotion has internal."), + ("All", "Method UnityEngine.XR.Interaction.Toolkit.Locomotion.LocomotionMediator.TryPrepareLocomotion has internal."), + ("All", "Method UnityEngine.XR.Interaction.Toolkit.Locomotion.LocomotionMediator.TryStartLocomotion has internal."), + ("All", "Method UnityEngine.XR.Interaction.Toolkit.Locomotion.LocomotionProvider.OnLocomotionEnd has internal."), + ("All", "Method UnityEngine.XR.Interaction.Toolkit.Locomotion.LocomotionProvider.OnLocomotionStart has internal."), + ("All", "Method UnityEngine.XR.Interaction.Toolkit.Transformers.ARTransformer.MigratePlaneClassifications has internal."), + ("All", "Method UnityEngine.XR.Interaction.Toolkit.XRControllerRecording.SetFrameDependentData has internal."), + }; + + static readonly (string, string)[] s_PrivatePropertyExceptionList = + { + ("All", "Property UnityEngine.XR.Interaction.Toolkit.Inputs.Simulation.XRDeviceSimulator.targetedDeviceInput has { private get; private set; }."), + ("All", "Property UnityEngine.XR.Interaction.Toolkit.Interactables.XRGrabInteractable.isTransformDirty has { private get; private set; }."), + }; + + static readonly (string, string)[] s_EditorExceptionList = + { + ("All", "Field UnityEditor.XR.Interaction.Toolkit.Locomotion.Movement.GrabMoveProviderEditor.m_Reference has private instead of protected."), + ("All", "Field UnityEditor.XR.Interaction.Toolkit.Locomotion.Movement.GrabMoveProviderEditor.m_SingletonActionBindings has private instead of protected."), + }; + + /// + /// major.minor version of com.unity.xr.interaction.toolkit. + /// + string m_MajorMinorVersion; + + [OneTimeSetUp] + public void SetUp() + { + var assembly = Assembly.Load("Unity.XR.Interaction.Toolkit"); + Assert.That(assembly, Is.Not.Null); + + PackageManager.PackageInfo packageInfo = PackageManager.PackageInfo.FindForAssembly(assembly); + Assert.That(packageInfo, Is.Not.Null); + + // Parse the major.minor version + Assert.That(packageInfo.version, Is.Not.Null); + Assert.That(packageInfo.version, Is.Not.Empty); + var secondDotIndex = packageInfo.version.IndexOf('.', packageInfo.version.IndexOf('.') + 1); + Assert.That(secondDotIndex, Is.GreaterThan(0)); + m_MajorMinorVersion = packageInfo.version.Substring(0, secondDotIndex); + } + + [UnityTest] + public IEnumerator NamespaceMatchesAssembly() + { + var outputList = new HashSetList(); + + PopulateWrongNamespaceTypes(Assembly.Load("Unity.XR.Interaction.Toolkit"), "UnityEngine.XR.Interaction.Toolkit", outputList); + PopulateWrongNamespaceTypes(Assembly.Load("Unity.XR.Interaction.Toolkit.Editor"), "UnityEditor.XR.Interaction.Toolkit", outputList); + + FilterExceptions(outputList, s_NamespaceExceptionList); + + Assert.That(outputList, Is.Empty, $"Contains {outputList.Count} incorrect namespaces that have not been excluded in {nameof(PackageScriptsTests)}.cs:\n" + string.Join("\n", outputList) + "\n"); + + yield return null; + } + + [UnityTest] + public IEnumerator LimitInternalProperties() + { + var outputList = new HashSetList(); + + PopulateInternalProperties(Assembly.Load("Unity.XR.Interaction.Toolkit"), outputList); + PopulateInternalProperties(Assembly.Load("Unity.XR.Interaction.Toolkit.Editor"), outputList); + + FilterExceptions(outputList, s_InternalPropertyExceptionList); + + Assert.That(outputList, Is.Empty, $"Contains {outputList.Count} internal properties that have not been excluded in {nameof(PackageScriptsTests)}.cs:\n" + string.Join("\n", outputList) + "\n"); + + yield return null; + } + + [UnityTest] + public IEnumerator LimitInternalMethods() + { + var outputList = new HashSetList(); + + PopulateInternalMethods(Assembly.Load("Unity.XR.Interaction.Toolkit"), outputList); + PopulateInternalMethods(Assembly.Load("Unity.XR.Interaction.Toolkit.Editor"), outputList); + + FilterExceptions(outputList, s_InternalMethodExceptionList); + + Assert.That(outputList, Is.Empty, $"Contains {outputList.Count} internal methods that have not been excluded in {nameof(PackageScriptsTests)}.cs:\n" + string.Join("\n", outputList) + "\n"); + + yield return null; + } + + [UnityTest] + public IEnumerator LimitPrivateProperties() + { + var outputList = new HashSetList(); + + PopulatePrivateGetSetProperties(Assembly.Load("Unity.XR.Interaction.Toolkit"), outputList); + PopulatePrivateGetSetProperties(Assembly.Load("Unity.XR.Interaction.Toolkit.Editor"), outputList); + + FilterExceptions(outputList, s_PrivatePropertyExceptionList); + + Assert.That(outputList, Is.Empty, $"Contains {outputList.Count} private properties that have not been excluded in {nameof(PackageScriptsTests)}.cs:\n" + string.Join("\n", outputList) + "\n"); + + yield return null; + } + + [UnityTest] + public IEnumerator EditorSerializedPropertyAndContentFieldsShouldBeProtected() + { + var outputList = new HashSetList(); + + PopulateWrongSerializedPropertyAndContentFields(Assembly.Load("Unity.XR.Interaction.Toolkit.Editor"), outputList); + + FilterExceptions(outputList, s_EditorExceptionList); + + Assert.That(outputList, Is.Empty, $"Contains {outputList.Count} non-protected SerializedProperty/GUIContent fields that have not been excluded in {nameof(PackageScriptsTests)}.cs:\n" + string.Join("\n", outputList) + "\n"); + + yield return null; + } + + static void PopulateWrongNamespaceTypes(Assembly assembly, string rootNamespace, HashSetList outputList) + { + if (assembly == null) + Assert.Fail($"Could not load assembly."); + + foreach (var type in assembly.GetTypes()) + { + if (type.FullName != null && type.Namespace != null) + { + if (!type.Namespace.StartsWith(rootNamespace)) + outputList.Add(type.FullName); + } + } + } + + static void PopulateInternalProperties(Assembly assembly, HashSetList outputList) + { + if (assembly == null) + Assert.Fail($"Could not load assembly."); + + var publicClasses = assembly.GetExportedTypes() + .Where(type => type.IsClass && type.IsPublic && !type.IsInterface) + .OrderBy(type => type.FullName) + .ToArray(); + + foreach (var type in publicClasses) + { + // Get all properties that have internal get and/or set methods. + // The main purpose of this test is for finding properties that should be public but are internal. + // The goal is to minimize the number of internal properties, so each should be evaluated and added + // to the exception list if it is determined that it should remain internal. + var properties = type.GetProperties(BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly) + .Where(property => property.PropertyType.IsPublic) + .Where(property => + property.GetMethod is { IsAssembly: true } || + property.SetMethod is { IsAssembly: true }) + .OrderBy(property => property.Name) + .ToArray(); + + foreach (var property in properties) + { + outputList.Add(GetStringOutput(type, property)); + } + } + } + + static void PopulateInternalMethods(Assembly assembly, HashSetList outputList) + { + if (assembly == null) + Assert.Fail($"Could not load assembly."); + + var publicClasses = assembly.GetExportedTypes() + .Where(type => type.IsClass && type.IsPublic && !type.IsInterface) + .OrderBy(type => type.FullName) + .ToArray(); + + foreach (var type in publicClasses) + { + // Get all methods that have internal protection. + // The main purpose of this test is for finding methods that should be public/protected/private protected but are internal. + // The goal is to minimize the number of internal methods, so each should be evaluated and added + // to the exception list if it is determined that it should remain internal. + var methods = type.GetMethods(BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly) + .Where(method => method.IsAssembly) + .Where(method => + !method.Name.StartsWith("add_") && + !method.Name.StartsWith("remove_") && + !method.Name.StartsWith("get_") && + !method.Name.StartsWith("set_") && + !method.Name.StartsWith("Internal") && + !method.Name.EndsWith("Internal")) + .OrderBy(method => method.Name) + .ToArray(); + + foreach (var method in methods) + { + outputList.Add(GetStringOutput(type, method)); + } + } + } + + static void PopulatePrivateGetSetProperties(Assembly assembly, HashSetList outputList) + { + if (assembly == null) + Assert.Fail($"Could not load assembly."); + + var publicClasses = assembly.GetExportedTypes() + .Where(type => type.IsClass && type.IsPublic && !type.IsInterface) + .OrderBy(type => type.FullName) + .ToArray(); + + foreach (var type in publicClasses) + { + // Get all properties that have both private get and set methods. + // The main purpose of this test is for finding properties that should be public but are private, + // especially those that are wrapping a SerializeField field that were introduced in patch versions. + // Exclude explicit interface implementation methods by checking !IsFinal. + var properties = type.GetProperties(BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly) + .Where(property => + property.GetMethod is { IsPrivate: true, IsFinal: false } && + property.SetMethod is { IsPrivate: true, IsFinal: false }) + .OrderBy(property => property.Name) + .ToArray(); + + foreach (var property in properties) + { + outputList.Add(GetStringOutput(type, property)); + } + } + } + + static void PopulateWrongSerializedPropertyAndContentFields(Assembly assembly, HashSetList outputList) + { + if (assembly == null) + Assert.Fail($"Could not load assembly."); + + var editorClasses = assembly.GetExportedTypes() + .Where(type => type.IsSubclassOf(typeof(UnityEditor.Editor))) + .OrderBy(type => type.FullName) + .ToArray(); + + foreach (var type in editorClasses) + { + // Skip if the type is Obsolete. + if (type.GetCustomAttribute() != null) + continue; + + // Get all SerializedProperty fields that are private or internal. + // The main purpose of this test is for finding fields that should be protected instead, + // especially those that were introduced in patch versions. + var fields = type.GetFields(BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly) + .Where(field => + (field.FieldType == typeof(SerializedProperty)) && + field is { IsPublic: false, IsFamily: false }) + .OrderBy(property => property.Name) + .ToArray(); + + foreach (var field in fields) + { + outputList.Add(GetStringOutput(type, field)); + } + + // Get all GUIContent fields in nested Contents classes that are private or internal. + var nestedTypes = type.GetNestedTypes(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.DeclaredOnly) + .ToArray(); + foreach (var nestedType in nestedTypes) + { + // Get the nested type's fields that are of type GUIContent. + var nestedFields = nestedType.GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.DeclaredOnly) + .Where(field => + field.FieldType == typeof(GUIContent) && + field is { IsPublic: false, IsFamily: false }) + .OrderBy(property => property.Name) + .ToArray(); + + foreach (var nestedField in nestedFields) + { + outputList.Add(GetStringOutput(nestedType, nestedField)); + } + } + } + } + + static string GetAccessibility(MethodBase info) + { + if (info.IsPublic) + return "public"; + if (info.IsFamily) + return "protected"; + if (info.IsPrivate) + return "private"; + if (info.IsAssembly) + return "internal"; + if (info.IsFamilyOrAssembly) + return "protected internal"; + if (info.IsFamilyAndAssembly) + return "private protected"; + return "unknown"; + } + + static string GetAccessibility(FieldInfo info) + { + if (info.IsPublic) + return "public"; + if (info.IsFamily) + return "protected"; + if (info.IsPrivate) + return "private"; + if (info.IsAssembly) + return "internal"; + if (info.IsFamilyOrAssembly) + return "protected internal"; + if (info.IsFamilyAndAssembly) + return "private protected"; + return "unknown"; + } + + static string GetStringOutput(Type type, PropertyInfo property) + { + if (property.GetMethod != null && property.SetMethod != null) + return $"Property {type.FullName}.{property.Name} has {{ {GetAccessibility(property.GetMethod)} get; {GetAccessibility(property.SetMethod)} set; }}."; + if (property.GetMethod != null) + return $"Property {type.FullName}.{property.Name} has {{ {GetAccessibility(property.GetMethod)} get; }}."; + if (property.SetMethod != null) + return $"Property {type.FullName}.{property.Name} has {{ {GetAccessibility(property.SetMethod)} set; }}."; + return null; + } + + static string GetStringOutput(Type type, FieldInfo field) + { + return $"Field {type.FullName}.{field.Name} has {GetAccessibility(field)} instead of protected."; + } + + static string GetStringOutput(Type type, MethodInfo method) + { + return $"Method {type.FullName}.{method.Name} has {GetAccessibility(method)}."; + } + + void FilterExceptions(HashSetList outputList, (string, string)[] exceptionList) + { + // Many types are not defined without these #if guards defined, so avoid + // failing the test due to "Stale exception" warnings due to the missing method on this platform. +#if ENABLE_VR || UNITY_GAMECORE + var hasStaleException = false; + foreach (var exception in exceptionList) + { + if (exception.Item1 == "All" || exception.Item1 == m_MajorMinorVersion) + { + // Ignore AR types for now since those are optionally included with AR Foundation, + // so this avoids failing the test when that package is not installed. + if (!outputList.Contains(exception.Item2) && !exception.Item2.Contains(".AR")) + { + Debug.LogWarning($"Stale exception not found in source list: {exception.Item2}"); + hasStaleException = true; + } + } + } + + Assert.That(hasStaleException, Is.False, "Stale exception not found in source list. See warnings."); +#endif + + outputList.ExceptWith(exceptionList.Where(e => e.Item1 == "All").Select(e => e.Item2)); + outputList.ExceptWith(exceptionList.Where(e => e.Item1 == m_MajorMinorVersion).Select(e => e.Item2)); + } + } +} diff --git a/Tests/Editor/PackageScriptsTests.cs.meta b/Tests/Editor/PackageScriptsTests.cs.meta new file mode 100644 index 00000000..49ce84ec --- /dev/null +++ b/Tests/Editor/PackageScriptsTests.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 89b3d05b7a20b4043b460a396c76241e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Tests/Runtime/LocomotionTests.cs b/Tests/Runtime/LocomotionTests.cs index 449ebc72..ff5c8244 100644 --- a/Tests/Runtime/LocomotionTests.cs +++ b/Tests/Runtime/LocomotionTests.cs @@ -7,6 +7,8 @@ using UnityEngine.XR.Interaction.Toolkit.Interactables; using UnityEngine.XR.Interaction.Toolkit.Interactors; using UnityEngine.XR.Interaction.Toolkit.Locomotion; +using UnityEngine.XR.Interaction.Toolkit.Locomotion.Gravity; +using UnityEngine.XR.Interaction.Toolkit.Locomotion.Jump; using UnityEngine.XR.Interaction.Toolkit.Locomotion.Teleportation; using UnityEngine.XR.Interaction.Toolkit.Locomotion.Turning; @@ -800,5 +802,48 @@ public IEnumerator SnapTurnAround() Assert.That(xrOrigin.transform.rotation.eulerAngles, Is.EqualTo(new Vector3(0f, 180f, 0f)).Using(Vector3ComparerWithEqualsOperator.Instance)); } + + [UnityTest] + public IEnumerator Jump() + { + var xrOrigin = TestUtilities.CreateXROrigin(); + var mediator = xrOrigin.gameObject.AddComponent(); + mediator.xrOrigin = xrOrigin; + + var gravityProvider = xrOrigin.gameObject.AddComponent(); + gravityProvider.mediator = mediator; + + var jumpProvider = xrOrigin.gameObject.AddComponent(); + jumpProvider.mediator = mediator; + jumpProvider.unlimitedInAirJumps = true; + + var initialHeight = xrOrigin.Origin.transform.position.y; + + jumpProvider.Jump(); + + yield return new WaitForFixedUpdate(); + yield return null; + + Assert.That(xrOrigin.Origin.transform.position.y, Is.GreaterThan(initialHeight)); + } + + [UnityTest] + public IEnumerator Gravity() + { + var xrOrigin = TestUtilities.CreateXROrigin(); + + var mediator = xrOrigin.gameObject.AddComponent(); + mediator.xrOrigin = xrOrigin; + + var gravityProvider = xrOrigin.gameObject.AddComponent(); + gravityProvider.mediator = mediator; + + var initialHeight = xrOrigin.Origin.transform.position.y; + + yield return new WaitForFixedUpdate(); + yield return null; + + Assert.That(xrOrigin.Origin.transform.position.y, Is.LessThan(initialHeight)); + } } } diff --git a/Tests/Runtime/RegistrationListTests.cs b/Tests/Runtime/RegistrationListTests.cs index 2afee857..c1d5a9d1 100644 --- a/Tests/Runtime/RegistrationListTests.cs +++ b/Tests/Runtime/RegistrationListTests.cs @@ -38,16 +38,25 @@ public void RegistrationListRegisterReturnsStatusChange(BaseRegistrationList re // Unregister B (without first calling Flush) to remove buffered add Assert.That(registrationList.Unregister("B"), Is.True); Assert.That(registrationList.IsRegistered("A"), Is.True); + Assert.That(registrationList.IsStillRegistered("A"), Is.True); Assert.That(registrationList.IsRegistered("B"), Is.False); Assert.That(registrationList.registeredSnapshot, Is.EqualTo(new[] { "A" })); Assert.That(registrationList.flushedCount, Is.EqualTo(1)); @@ -311,6 +328,7 @@ public void RegistrationListRemoveBufferedRemove(BaseRegistrationList re // Unregister A Assert.That(registrationList.Unregister("A"), Is.True); Assert.That(registrationList.IsRegistered("A"), Is.False); + Assert.That(registrationList.IsStillRegistered("A"), Is.False); Assert.That(registrationList.IsRegistered("B"), Is.False); Assert.That(registrationList.registeredSnapshot, Is.EqualTo(new[] { "A" })); Assert.That(registrationList.flushedCount, Is.EqualTo(0)); @@ -333,11 +351,13 @@ public void SmallRegistrationListCanDisableBufferChanges() Assert.That(registrationList.bufferChanges, Is.False); Assert.That(registrationList.registeredSnapshot.Contains("A"), Is.True); Assert.That(registrationList.IsRegistered("A"), Is.True); + Assert.That(registrationList.IsStillRegistered("A"), Is.True); // Register B immediately Assert.That(registrationList.Register("B"), Is.True); Assert.That(registrationList.registeredSnapshot.Contains("B"), Is.True); Assert.That(registrationList.IsRegistered("B"), Is.True); + Assert.That(registrationList.IsStillRegistered("B"), Is.True); // Unregister A immediately Assert.That(registrationList.Unregister("A"), Is.True); diff --git a/ValidationExceptions.json b/ValidationExceptions.json index 64856d84..bae12d2d 100644 --- a/ValidationExceptions.json +++ b/ValidationExceptions.json @@ -2,7 +2,7 @@ "ErrorExceptions": [ { "ValidationTest": "API Updater Configuration Validation", - "PackageVersion": "3.0.7" + "PackageVersion": "3.1.0-pre.1" } ], "WarningExceptions": [] diff --git a/package.json b/package.json index b708f020..43873793 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "com.unity.xr.interaction.toolkit", "displayName": "XR Interaction Toolkit", - "version": "3.0.7", + "version": "3.1.0-pre.1", "unity": "2021.3", "description": "A high-level, component-based, interaction system for creating VR and AR experiences. It provides a framework that makes 3D and UI interactions available from Unity input events. The core of this system is a set of base Interactor and Interactable components, and an Interaction Manager that ties these two types of components together. It also contains components that you can use for locomotion and drawing visuals.", "keywords": [ @@ -15,7 +15,7 @@ "com.unity.inputsystem": "1.8.1", "com.unity.mathematics": "1.2.6", "com.unity.ugui": "1.0.0", - "com.unity.xr.core-utils": "2.2.3", + "com.unity.xr.core-utils": "2.4.0", "com.unity.modules.audio": "1.0.0", "com.unity.modules.imgui": "1.0.0", "com.unity.modules.physics": "1.0.0", @@ -59,15 +59,15 @@ } ], "_upm": { - "changelog": "### Added\n- Added an extra gizmo to the XR Body Transformer to show locomotion collision constraints for the Character Controller. ([XRIT-181](https://issuetracker.unity3d.com/product/unity/issues/guid/XRIT-181))\n- Added an optional bypass for UI Toolkit events that may cause incorrect events to get sent to UI Toolkit elements such as scroll views. For more information see the manual page for [XRUIInputModule](xref:xri-ui-input-module). ([XRIT-203](https://issuetracker.unity3d.com/product/unity/issues/guid/XRIT-203))\n\n### Changed\n- Changed scripts to use Transform methods for getting or setting both position and rotation in a single method call to improve performance.\n\n### Fixed\n- Fixed regression introduced with version [3.0.6](#306---2024-10-15) so the XR Transform Stabilizer component allows empty Aim Target Object references. This fixes the Gaze Interactor ray to update correctly in the XR Origin (XR Rig) prefab.\n- Fixed issues with the near far interactor's attach controller where lateral motion would erroneously trigger z-motion, and z-motion would only trigger when moving the control parallel to the ground. ([XRIT-195](https://issuetracker.unity3d.com/product/unity/issues/guid/XRIT-195))\n- Fixed issue with `CurveInteractionCaster` and `XRRayInteractor` cone casting where trigger colliders would incorrectly block interactables. Conecasting now filters out trigger while it processes targets instead of after the raycast targets were identified." + "changelog": "### Added\n- Added the ability to trigger a 180° degree snap turn around on the Continuous Turn Provider directly instead of having to use a partially enabled Snap Turn Provider. Added properties to enable or disable left-right turning and turn around in the `ContinuousTurnProvider` to match the `SnapTurnProvider` options.\n- Added support for anchor manipulation from controller thumbstick input to the Near-Far Interactor GameObject. The Interaction Attach Controller now has additional properties when Use Manipulation Input is enabled for allowing rotation (horizontal and vertical) and translation along the selection line.\n- Added custom Inspector window for the Interaction Attach Controller.\n- Added `GravityProvider` to handle gravity instead of being applied with the move and grab providers.\n- Added `JumpProvider` to handle simple jumping functionality. This implements the added `IGravityController` interface.\n- Added ability to control whether gravity begins to apply or stays paused when releasing with the `ClimbProvider`.\n- Added a `SimulatedDeviceLifecycleManager` component that handles all the simulated devices, and works in tandem with simulator classes such as `XRDeviceSimulator`.\n- Added a `SimulatedHandExpressionManager` component that handles the simulated hand expressions, and works in tandem with simulator classes such as `XRDeviceSimulator`.\n- Added the new `XR Interaction Simulator` which provides a simplified interface for simulating XR interaction in the editor.\n- Added public properties that wrap serialized fields in some behaviors and their corresponding Editor classes (`CurveInteractionCaster`, `XRInteractorLineVisual`, `XRRayInteractor`, and `UIInputModule`).\n\n### Changed\n- Changed the `XRI Default Input Actions` in the Starter Assets sample to include a Jump Input Action.\n- Changed the XR Origin (XR Rig) prefab in the Starter Assets sample to include the `JumpProvider` and `GravityProvider` by default.\n- Changed some APIs used by the `XRPokeInteractor` for enabling the ability to poke UGUI canvases from `internal` to `public` to allow for custom interactor implementations. (Forward port from 2.6.0)\n- Changed Snap Turn Provider turn around behavior to only trigger once per turn around action. Repeat turns while the thumbstick is pushed in a direction will thus only apply to left or right.\n- Changed the XR Origin (XR Rig) prefab in the Starter Assets sample to enable turn around on the Continuous Turn Provider so that functionality is enabled by default if Smooth Turn Enabled is true on the Controller Input Action Manager.\n- Changed the Near-Far Interactor prefab in the Starter Assets sample to enable anchor manipulation (Translate and Horizontal Rotation).\n- Changed `ContinuousMoveProvider` to implement the `IGravityController` interface.\n- Changed `ContinuousMoveProvider` to handle falling movement differently than grounded movement.\n- Changed `ClimbProvider` to implement the `IGravityController` interface.\n- Changed `ClimbProvider` to zero out gravity accumulation while climbing by implementing the added `IGravityController` interface.\n- Changed `ClimbProvider` to no longer force unconstrained movement through collisions (see `forceUnconstrained` in `XROriginMovement`).\n- Changed scripts to improve performance of processing interaction strength (tagged `XRI.ProcessInteractionStrength` in Profiler).\n- Changed some internal methods to be public or protected (`AttachPointVelocityTracker.ResetVelocityTracking`, `CurveInteractionCaster.OnDrawGizmosSelected`, and `XRBodyTransformer.OnDrawGizmosSelected`).\n- Changed `com.unity.xr.core-utils` dependency from 2.2.3 to 2.4.0.\n\n### Deprecated\n- Deprecated `useGravity` from `ContinuousMoveProvider` and the abstract `ConstrainedMoveProvider` (`GrabMoveProvider` and `TwoHandedGrabMoveProvider`). This functionality has been replaced with the Gravity Provider component and its `useGravity` property.\n- Deprecated some nested types in `XRDeviceSimulator` and replaced them with either nested or unnested types within the `UnityEngine.XR.Interaction.Toolkit.Inputs.Simula" }, "upmCi": { - "footprint": "28085fff1f09249887a5e60f92e7577a83043172" + "footprint": "ac6a82cb49413d551b144d6d66e178c6986cb66f" }, - "documentationUrl": "https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit@3.0/manual/index.html", + "documentationUrl": "https://docs.unity3d.com/Packages/com.unity.xr.interaction.toolkit@3.1/manual/index.html", "repository": { "url": "https://github.com/Unity-Technologies/com.unity.xr.interaction.toolkit.git", "type": "git", - "revision": "3bd5819a6093e6f58286181f1bb7f177d60aa8b6" + "revision": "018d52d82b1db7c523ce1ea956acd0ce84d7de57" } }