From bcfcecc26b75ead8522f16af8cbff1eebd62b20a Mon Sep 17 00:00:00 2001 From: Nathan De Castro Date: Wed, 15 Mar 2017 19:23:57 +0000 Subject: [PATCH] Added colors on mic and STEAM VR SUPPORT --- Assembly-CSharp-Editor-firstpass.csproj | 21 +- Assembly-CSharp-Editor.csproj | 29 +- Assembly-CSharp-firstpass.csproj | 21 +- Assembly-CSharp.csproj | 128 +- .../Model/Villa/Materials/364.mat | 5 +- Assets/Prefabs/Ghost.prefab | 90 +- Assets/Prefabs/Player.prefab | 101 +- Assets/Prefabs/RipplePlane.prefab | 23 +- Assets/Prefabs/Waypoints.prefab | 658 +- Assets/Scripts/AI/AI.cs | 9 +- .../{PlayerSettings.cs => CurrentPlayer.cs} | 4 +- ...Settings.cs.meta => CurrentPlayer.cs.meta} | 0 Assets/Scripts/Tools/AudioManager.cs | 62 +- Assets/Scripts/Tools/EchoSound.cs | 69 - Assets/Scripts/Tools/GhostSound.cs | 56 + .../{EchoSound.cs.meta => GhostSound.cs.meta} | 4 +- Assets/Scripts/Tools/PlayerSound.cs | 34 + Assets/Scripts/Tools/PlayerSound.cs.meta | 12 + Assets/Scripts/Tools/RippleEffect.cs | 61 +- .../Scripts/FirstPersonController.cs | 206 +- Assets/SteamVR.meta | 9 + Assets/SteamVR/Editor.meta | 6 + Assets/SteamVR/Editor/SteamVR_Editor.cs | 127 + Assets/SteamVR/Editor/SteamVR_Editor.cs.meta | 9 + Assets/SteamVR/Editor/SteamVR_Preferences.cs | 48 + .../Editor/SteamVR_Preferences.cs.meta | 12 + .../Editor/SteamVR_RenderModelEditor.cs | 105 + .../Editor/SteamVR_RenderModelEditor.cs.meta | 12 + Assets/SteamVR/Editor/SteamVR_Settings.cs | 688 ++ .../SteamVR/Editor/SteamVR_Settings.cs.meta | 12 + Assets/SteamVR/Editor/SteamVR_SkyboxEditor.cs | 381 + .../Editor/SteamVR_SkyboxEditor.cs.meta | 12 + Assets/SteamVR/Editor/SteamVR_Update.cs | 170 + Assets/SteamVR/Editor/SteamVR_Update.cs.meta | 12 + Assets/SteamVR/Extras.meta | 9 + Assets/SteamVR/Extras/SteamVR_GazeTracker.cs | 88 + .../Extras/SteamVR_GazeTracker.cs.meta | 12 + Assets/SteamVR/Extras/SteamVR_LaserPointer.cs | 141 + .../Extras/SteamVR_LaserPointer.cs.meta | 12 + Assets/SteamVR/Extras/SteamVR_Teleporter.cs | 98 + .../SteamVR/Extras/SteamVR_Teleporter.cs.meta | 12 + Assets/SteamVR/Extras/SteamVR_TestIK.unity | 1852 +++++ .../SteamVR/Extras/SteamVR_TestIK.unity.meta | 8 + Assets/SteamVR/Extras/SteamVR_TestThrow.cs | 58 + .../SteamVR/Extras/SteamVR_TestThrow.cs.meta | 12 + Assets/SteamVR/Extras/SteamVR_TestThrow.unity | 2611 ++++++ .../Extras/SteamVR_TestThrow.unity.meta | 8 + .../Extras/SteamVR_TestTrackedCamera.cs | 84 + .../Extras/SteamVR_TestTrackedCamera.cs.meta | 12 + .../Extras/SteamVR_TestTrackedCamera.mat | 127 + .../Extras/SteamVR_TestTrackedCamera.mat.meta | 8 + .../Extras/SteamVR_TestTrackedCamera.unity | 749 ++ .../SteamVR_TestTrackedCamera.unity.meta | 8 + .../Extras/SteamVR_TrackedController.cs | 250 + .../Extras/SteamVR_TrackedController.cs.meta | 12 + Assets/SteamVR/InteractionSystem.meta | 9 + Assets/SteamVR/InteractionSystem/Core.meta | 9 + .../SteamVR/InteractionSystem/Core/Icons.meta | 9 + .../Core/Icons/vr_interaction_system.png | Bin 0 -> 14839 bytes .../Core/Icons/vr_interaction_system.png.meta | 59 + .../Core/Icons/vr_interaction_system_feet.png | Bin 0 -> 11011 bytes .../Icons/vr_interaction_system_feet.png.meta | 55 + .../Icons/vr_interaction_system_left_hand.png | Bin 0 -> 10034 bytes .../vr_interaction_system_left_hand.png.meta | 55 + ..._interaction_system_left_hand_question.png | Bin 0 -> 11809 bytes ...raction_system_left_hand_question.png.meta | 55 + .../vr_interaction_system_right_hand.png | Bin 0 -> 10163 bytes .../vr_interaction_system_right_hand.png.meta | 55 + ...interaction_system_right_hand_question.png | Bin 0 -> 11971 bytes ...action_system_right_hand_question.png.meta | 55 + .../vr_interaction_system_unknown_hand.png | Bin 0 -> 13315 bytes ...r_interaction_system_unknown_hand.png.meta | 55 + .../InteractionSystem/Core/Materials.meta | 9 + .../Core/Materials/FallbackHandIndicator.mat | 138 + .../Materials/FallbackHandIndicator.mat.meta | 8 + .../Core/Materials/HoverHighlight.mat | 182 + .../Core/Materials/HoverHighlight.mat.meta | 8 + .../Core/Materials/SeeThru.mat | 213 + .../Core/Materials/SeeThru.mat.meta | 8 + .../Core/Materials/SteamVRControllerModel.mat | 197 + .../Materials/SteamVRControllerModel.mat.meta | 8 + .../InteractionSystem/Core/Prefabs.meta | 9 + .../Core/Prefabs/BlankController.prefab | 111 + .../Core/Prefabs/BlankController.prefab.meta | 8 + .../Core/Prefabs/Player.prefab | 1446 ++++ .../Core/Prefabs/Player.prefab.meta | 8 + .../InteractionSystem/Core/Scripts.meta | 9 + .../Core/Scripts/BodyCollider.cs | 35 + .../Core/Scripts/BodyCollider.cs.meta | 12 + .../Core/Scripts/CircularDrive.cs | 529 ++ .../Core/Scripts/CircularDrive.cs.meta | 12 + .../Core/Scripts/ComplexThrowable.cs | 190 + .../Core/Scripts/ComplexThrowable.cs.meta | 12 + .../Core/Scripts/ControllerHoverHighlight.cs | 193 + .../Scripts/ControllerHoverHighlight.cs.meta | 12 + .../Core/Scripts/CustomEvents.cs | 28 + .../Core/Scripts/CustomEvents.cs.meta | 12 + .../InteractionSystem/Core/Scripts/DebugUI.cs | 48 + .../Core/Scripts/DebugUI.cs.meta | 12 + .../Core/Scripts/DestroyOnDetachedFromHand.cs | 22 + .../Scripts/DestroyOnDetachedFromHand.cs.meta | 12 + .../Scripts/DestroyOnParticleSystemDeath.cs | 36 + .../DestroyOnParticleSystemDeath.cs.meta | 12 + .../Core/Scripts/DestroyOnTriggerEnter.cs | 38 + .../Scripts/DestroyOnTriggerEnter.cs.meta | 12 + .../Core/Scripts/DistanceHaptics.cs | 42 + .../Core/Scripts/DistanceHaptics.cs.meta | 12 + .../Core/Scripts/DontDestroyOnLoad.cs | 21 + .../Core/Scripts/DontDestroyOnLoad.cs.meta | 9 + .../Core/Scripts/EnumFlags.cs | 32 + .../Core/Scripts/EnumFlags.cs.meta | 12 + .../Core/Scripts/FallbackCameraController.cs | 96 + .../Scripts/FallbackCameraController.cs.meta | 12 + .../InteractionSystem/Core/Scripts/Hand.cs | 915 +++ .../Core/Scripts/Hand.cs.meta | 12 + .../Core/Scripts/HapticRack.cs | 83 + .../Core/Scripts/HapticRack.cs.meta | 12 + .../Core/Scripts/HideOnHandFocusLost.cs | 21 + .../Core/Scripts/HideOnHandFocusLost.cs.meta | 12 + .../Core/Scripts/IgnoreHovering.cs | 17 + .../Core/Scripts/IgnoreHovering.cs.meta | 12 + .../Core/Scripts/InputModule.cs | 79 + .../Core/Scripts/InputModule.cs.meta | 12 + .../Core/Scripts/Interactable.cs | 43 + .../Core/Scripts/Interactable.cs.meta | 12 + .../Core/Scripts/InteractableButtonEvents.cs | 78 + .../Scripts/InteractableButtonEvents.cs.meta | 12 + .../Core/Scripts/InteractableHoverEvents.cs | 49 + .../Scripts/InteractableHoverEvents.cs.meta | 12 + .../Core/Scripts/ItemPackage.cs | 24 + .../Core/Scripts/ItemPackage.cs.meta | 12 + .../Core/Scripts/ItemPackageReference.cs | 17 + .../Core/Scripts/ItemPackageReference.cs.meta | 12 + .../Core/Scripts/ItemPackageSpawner.cs | 348 + .../Core/Scripts/ItemPackageSpawner.cs.meta | 12 + .../Core/Scripts/LinearAnimation.cs | 64 + .../Core/Scripts/LinearAnimation.cs.meta | 12 + .../Core/Scripts/LinearAnimator.cs | 59 + .../Core/Scripts/LinearAnimator.cs.meta | 12 + .../Core/Scripts/LinearAudioPitch.cs | 58 + .../Core/Scripts/LinearAudioPitch.cs.meta | 12 + .../Core/Scripts/LinearBlendshape.cs | 51 + .../Core/Scripts/LinearBlendshape.cs.meta | 12 + .../Core/Scripts/LinearDisplacement.cs | 41 + .../Core/Scripts/LinearDisplacement.cs.meta | 12 + .../Core/Scripts/LinearDrive.cs | 148 + .../Core/Scripts/LinearDrive.cs.meta | 12 + .../Core/Scripts/LinearMapping.cs | 17 + .../Core/Scripts/LinearMapping.cs.meta | 12 + .../Core/Scripts/PlaySound.cs | 216 + .../Core/Scripts/PlaySound.cs.meta | 9 + .../InteractionSystem/Core/Scripts/Player.cs | 406 + .../Core/Scripts/Player.cs.meta | 12 + .../InteractionSystem/Core/Scripts/SeeThru.cs | 151 + .../Core/Scripts/SeeThru.cs.meta | 13 + .../Core/Scripts/SleepOnAwake.cs | 25 + .../Core/Scripts/SleepOnAwake.cs.meta | 12 + .../Core/Scripts/SoundDeparent.cs | 38 + .../Core/Scripts/SoundDeparent.cs.meta | 12 + .../Core/Scripts/SoundPlayOneshot.cs | 75 + .../Core/Scripts/SoundPlayOneshot.cs.meta | 12 + ...SpawnAndAttachAfterControllerIsTracking.cs | 50 + ...AndAttachAfterControllerIsTracking.cs.meta | 12 + .../Core/Scripts/SpawnAndAttachToHand.cs | 37 + .../Core/Scripts/SpawnAndAttachToHand.cs.meta | 12 + .../Core/Scripts/SpawnRenderModel.cs | 166 + .../Core/Scripts/SpawnRenderModel.cs.meta | 12 + .../Core/Scripts/Throwable.cs | 258 + .../Core/Scripts/Throwable.cs.meta | 12 + .../Core/Scripts/UIElement.cs | 89 + .../Core/Scripts/UIElement.cs.meta | 12 + .../Core/Scripts/Unparent.cs | 40 + .../Core/Scripts/Unparent.cs.meta | 9 + .../InteractionSystem/Core/Scripts/Util.cs | 735 ++ .../Core/Scripts/Util.cs.meta | 9 + .../Core/Scripts/VelocityEstimator.cs | 162 + .../Core/Scripts/VelocityEstimator.cs.meta | 9 + .../InteractionSystem/Core/Shaders.meta | 9 + .../Core/Shaders/SeeThru.shader | 87 + .../Core/Shaders/SeeThru.shader.meta | 9 + .../Core/Shaders/Silhouette.shader | 173 + .../Core/Shaders/Silhouette.shader.meta | 9 + Assets/SteamVR/InteractionSystem/Hints.meta | 9 + .../InteractionSystem/Hints/Materials.meta | 9 + .../Hints/Materials/ControllerButtonHints.mat | 216 + .../Materials/ControllerButtonHints.mat.meta | 8 + .../Materials/ControllerTextHintAnchor.mat | 202 + .../ControllerTextHintAnchor.mat.meta | 8 + .../Materials/ControllerTextHintLine.mat | 205 + .../Materials/ControllerTextHintLine.mat.meta | 8 + .../InteractionSystem/Hints/Prefabs.meta | 9 + .../Hints/Prefabs/ControllerTextHint.prefab | 578 ++ .../Prefabs/ControllerTextHint.prefab.meta | 8 + .../InteractionSystem/Hints/Scripts.meta | 9 + .../Hints/Scripts/ControllerButtonHints.cs | 772 ++ .../Scripts/ControllerButtonHints.cs.meta | 14 + .../InteractionSystem/Hints/Shaders.meta | 9 + .../Shaders/ControllerButtonHints.shader | 137 + .../Shaders/ControllerButtonHints.shader.meta | 9 + .../InteractionSystem/Hints/Textures.meta | 9 + .../Hints/Textures/HintBackground.png | Bin 0 -> 165 bytes .../Hints/Textures/HintBackground.png.meta | 58 + .../InteractionSystem/InteractionSystem.pdf | Bin 0 -> 386343 bytes .../InteractionSystem.pdf.meta | 8 + Assets/SteamVR/InteractionSystem/Longbow.meta | 9 + .../InteractionSystem/Longbow/Animators.meta | 9 + .../LongbowAnimationController.controller | 67 + ...LongbowAnimationController.controller.meta | 8 + .../InteractionSystem/Longbow/Materials.meta | 9 + .../Longbow/Materials/ArcheryTargetWeeble.mat | 213 + .../Materials/ArcheryTargetWeeble.mat.meta | 5 + .../Longbow/Materials/Arrow.mat | 201 + .../Longbow/Materials/Arrow.mat.meta | 8 + .../Longbow/Materials/ArrowGlint.mat | 133 + .../Longbow/Materials/ArrowGlint.mat.meta | 8 + .../Longbow/Materials/BalloonColor.mat | 152 + .../Longbow/Materials/BalloonColor.mat.meta | 6 + .../Longbow/Materials/BalloonPop.mat | 133 + .../Longbow/Materials/BalloonPop.mat.meta | 8 + .../Longbow/Materials/BalloonPopLine.mat | 133 + .../Longbow/Materials/BalloonPopLine.mat.meta | 8 + .../Longbow/Materials/ItemPickupOutline.mat | 127 + .../Materials/ItemPickupOutline.mat.meta | 8 + .../Materials/ItemPickupOutlineThick.mat | 127 + .../Materials/ItemPickupOutlineThick.mat.meta | 8 + .../Longbow/Materials/Longbow.mat | 200 + .../Longbow/Materials/Longbow.mat.meta | 8 + .../Longbow/Materials/LongbowNotch.mat | 200 + .../Longbow/Materials/LongbowNotch.mat.meta | 8 + .../Longbow/Materials/LongbowString.mat | 200 + .../Longbow/Materials/LongbowString.mat.meta | 8 + .../Longbow/Materials/TorchFire.mat | 133 + .../Longbow/Materials/TorchFire.mat.meta | 8 + .../Longbow/Materials/TorchHead.mat | 127 + .../Longbow/Materials/TorchHead.mat.meta | 8 + .../Longbow/Materials/TorchShaft.mat | 127 + .../Longbow/Materials/TorchShaft.mat.meta | 8 + .../InteractionSystem/Longbow/Models.meta | 9 + .../Longbow/Models/Arrow.fbx | Bin 0 -> 69600 bytes .../Longbow/Models/Arrow.fbx.meta | 85 + .../Longbow/Models/Balloon.fbx | Bin 0 -> 67056 bytes .../Longbow/Models/Balloon.fbx.meta | 74 + .../Longbow/Models/Longbow.fbx | 5265 +++++++++++++ .../Longbow/Models/Longbow.fbx.meta | 205 + .../Longbow/PhysicMaterials.meta | 9 + .../ArcheryTargetPhysMaterial.physicMaterial | 16 + ...heryTargetPhysMaterial.physicMaterial.meta | 8 + .../InteractionSystem/Longbow/Prefabs.meta | 9 + .../Longbow/Prefabs/ArcheryWeeble.prefab | 4277 ++++++++++ .../Longbow/Prefabs/ArcheryWeeble.prefab.meta | 8 + .../Longbow/Prefabs/Arrow.prefab | 2995 +++++++ .../Longbow/Prefabs/Arrow.prefab.meta | 8 + .../Longbow/Prefabs/ArrowHand.prefab | 338 + .../Longbow/Prefabs/ArrowHand.prefab.meta | 8 + .../Longbow/Prefabs/Balloon.prefab | 317 + .../Longbow/Prefabs/Balloon.prefab.meta | 8 + .../Longbow/Prefabs/BalloonPop.prefab | 3887 +++++++++ .../Longbow/Prefabs/BalloonPop.prefab.meta | 5 + .../Longbow/Prefabs/BalloonPopNoSound.prefab | 3582 +++++++++ .../Prefabs/BalloonPopNoSound.prefab.meta | 8 + .../Longbow/Prefabs/BalloonSpawner.prefab | 357 + .../Prefabs/BalloonSpawner.prefab.meta | 5 + .../Longbow/Prefabs/FireSmall.prefab | 3753 +++++++++ .../Longbow/Prefabs/FireSmall.prefab.meta | 5 + .../Longbow/Prefabs/FireTiny.prefab | 3694 +++++++++ .../Longbow/Prefabs/FireTiny.prefab.meta | 5 + .../Longbow/Prefabs/FireWhip.prefab | 3590 +++++++++ .../Longbow/Prefabs/FireWhip.prefab.meta | 5 + .../Longbow/Prefabs/Longbow.prefab | 2044 +++++ .../Longbow/Prefabs/Longbow.prefab.meta | 8 + .../Longbow/Prefabs/LongbowItemPackage.prefab | 75 + .../Prefabs/LongbowItemPackage.prefab.meta | 8 + .../Longbow/Prefabs/LongbowOutline.prefab | 843 ++ .../Prefabs/LongbowOutline.prefab.meta | 8 + .../Longbow/Prefabs/LongbowPreview.prefab | 843 ++ .../Prefabs/LongbowPreview.prefab.meta | 5 + .../Longbow/Prefabs/Torch.prefab | 282 + .../Longbow/Prefabs/Torch.prefab.meta | 5 + .../InteractionSystem/Longbow/Scripts.meta | 9 + .../Longbow/Scripts/ArcheryTarget.cs | 81 + .../Longbow/Scripts/ArcheryTarget.cs.meta | 9 + .../Longbow/Scripts/Arrow.cs | 263 + .../Longbow/Scripts/Arrow.cs.meta | 12 + .../Longbow/Scripts/ArrowHand.cs | 297 + .../Longbow/Scripts/ArrowHand.cs.meta | 12 + .../Longbow/Scripts/ArrowheadRotation.cs | 22 + .../Longbow/Scripts/ArrowheadRotation.cs.meta | 12 + .../Longbow/Scripts/Balloon.cs | 222 + .../Longbow/Scripts/Balloon.cs.meta | 9 + .../Longbow/Scripts/BalloonColliders.cs | 87 + .../Longbow/Scripts/BalloonColliders.cs.meta | 12 + .../Longbow/Scripts/BalloonHapticBump.cs | 31 + .../Longbow/Scripts/BalloonHapticBump.cs.meta | 12 + .../Longbow/Scripts/BalloonSpawner.cs | 121 + .../Longbow/Scripts/BalloonSpawner.cs.meta | 9 + .../Longbow/Scripts/ExplosionWobble.cs | 25 + .../Longbow/Scripts/ExplosionWobble.cs.meta | 12 + .../Longbow/Scripts/FireSource.cs | 112 + .../Longbow/Scripts/FireSource.cs.meta | 9 + .../Longbow/Scripts/Longbow.cs | 442 ++ .../Longbow/Scripts/Longbow.cs.meta | 12 + .../Longbow/Scripts/SoundBowClick.cs | 39 + .../Longbow/Scripts/SoundBowClick.cs.meta | 12 + .../InteractionSystem/Longbow/Sounds.meta | 9 + .../Longbow/Sounds/ArrowAir01.wav | Bin 0 -> 52328 bytes .../Longbow/Sounds/ArrowAir01.wav.meta | 22 + .../Longbow/Sounds/ArrowAir02.wav | Bin 0 -> 63154 bytes .../Longbow/Sounds/ArrowAir02.wav.meta | 22 + .../Longbow/Sounds/ArrowAir03.wav | Bin 0 -> 46016 bytes .../Longbow/Sounds/ArrowAir03.wav.meta | 22 + .../Longbow/Sounds/ArrowAir04.wav | Bin 0 -> 88320 bytes .../Longbow/Sounds/ArrowAir04.wav.meta | 22 + .../Longbow/Sounds/ArrowAir05.wav | Bin 0 -> 68438 bytes .../Longbow/Sounds/ArrowAir05.wav.meta | 22 + .../Longbow/Sounds/ArrowAir06.wav | Bin 0 -> 76140 bytes .../Longbow/Sounds/ArrowAir06.wav.meta | 22 + .../Longbow/Sounds/ArrowAir07.wav | Bin 0 -> 53884 bytes .../Longbow/Sounds/ArrowAir07.wav.meta | 22 + .../Longbow/Sounds/ArrowAir08.wav | Bin 0 -> 53884 bytes .../Longbow/Sounds/ArrowAir08.wav.meta | 22 + .../Longbow/Sounds/ArrowAir09.wav | Bin 0 -> 60978 bytes .../Longbow/Sounds/ArrowAir09.wav.meta | 22 + .../Longbow/Sounds/ArrowFallGround01.wav | Bin 0 -> 74410 bytes .../Longbow/Sounds/ArrowFallGround01.wav.meta | 22 + .../Longbow/Sounds/ArrowFallGround02.wav | Bin 0 -> 97652 bytes .../Longbow/Sounds/ArrowFallGround02.wav.meta | 22 + .../Longbow/Sounds/ArrowFallGround03.wav | Bin 0 -> 93478 bytes .../Longbow/Sounds/ArrowFallGround03.wav.meta | 22 + .../Longbow/Sounds/ArrowFallGround04.wav | Bin 0 -> 88978 bytes .../Longbow/Sounds/ArrowFallGround04.wav.meta | 22 + .../Longbow/Sounds/ArrowFallGround05.wav | Bin 0 -> 94110 bytes .../Longbow/Sounds/ArrowFallGround05.wav.meta | 22 + .../Longbow/Sounds/ArrowFallGround06.wav | Bin 0 -> 91608 bytes .../Longbow/Sounds/ArrowFallGround06.wav.meta | 22 + .../Longbow/Sounds/ArrowFallGround07.wav | Bin 0 -> 103356 bytes .../Longbow/Sounds/ArrowFallGround07.wav.meta | 22 + .../Longbow/Sounds/ArrowFireLoop01.wav | Bin 0 -> 1138104 bytes .../Longbow/Sounds/ArrowFireLoop01.wav.meta | 21 + .../Longbow/Sounds/ArrowHit01.wav | Bin 0 -> 70914 bytes .../Longbow/Sounds/ArrowHit01.wav.meta | 22 + .../Longbow/Sounds/ArrowHit02.wav | Bin 0 -> 88320 bytes .../Longbow/Sounds/ArrowHit02.wav.meta | 22 + .../Longbow/Sounds/ArrowHit03.wav | Bin 0 -> 88320 bytes .../Longbow/Sounds/ArrowHit03.wav.meta | 22 + .../Longbow/Sounds/ArrowHit04.wav | Bin 0 -> 88320 bytes .../Longbow/Sounds/ArrowHit04.wav.meta | 22 + .../Longbow/Sounds/ArrowHit05.wav | Bin 0 -> 102924 bytes .../Longbow/Sounds/ArrowHit05.wav.meta | 22 + .../Longbow/Sounds/ArrowHit06.wav | Bin 0 -> 65204 bytes .../Longbow/Sounds/ArrowHit06.wav.meta | 22 + .../Longbow/Sounds/ArrowIgnite01.wav | Bin 0 -> 560556 bytes .../Longbow/Sounds/ArrowIgnite01.wav.meta | 21 + .../Longbow/Sounds/ArrowLaunchFire01.wav | Bin 0 -> 457964 bytes .../Longbow/Sounds/ArrowLaunchFire01.wav.meta | 21 + .../Longbow/Sounds/ArrowLaunchFire02.wav | Bin 0 -> 468164 bytes .../Longbow/Sounds/ArrowLaunchFire02.wav.meta | 21 + .../Longbow/Sounds/ArrowLaunchFire03.wav | Bin 0 -> 491680 bytes .../Longbow/Sounds/ArrowLaunchFire03.wav.meta | 21 + .../Longbow/Sounds/ArrowLaunchFire04.wav | Bin 0 -> 512612 bytes .../Longbow/Sounds/ArrowLaunchFire04.wav.meta | 21 + .../Longbow/Sounds/ArrowLaunchFire05.wav | Bin 0 -> 669892 bytes .../Longbow/Sounds/ArrowLaunchFire05.wav.meta | 21 + .../Longbow/Sounds/ArrowLaunchFire06.wav | Bin 0 -> 415010 bytes .../Longbow/Sounds/ArrowLaunchFire06.wav.meta | 21 + .../Longbow/Sounds/ArrowLaunchFire07.wav | Bin 0 -> 382144 bytes .../Longbow/Sounds/ArrowLaunchFire07.wav.meta | 21 + .../Longbow/Sounds/ArrowLaunchFire08.wav | Bin 0 -> 422578 bytes .../Longbow/Sounds/ArrowLaunchFire08.wav.meta | 21 + .../Longbow/Sounds/ArrowLaunchFire09.wav | Bin 0 -> 283224 bytes .../Longbow/Sounds/ArrowLaunchFire09.wav.meta | 21 + .../Longbow/Sounds/ArrowLaunchFire10.wav | Bin 0 -> 324836 bytes .../Longbow/Sounds/ArrowLaunchFire10.wav.meta | 21 + .../Longbow/Sounds/ArrowLaunchFire11.wav | Bin 0 -> 338696 bytes .../Longbow/Sounds/ArrowLaunchFire11.wav.meta | 21 + .../Longbow/Sounds/ArrowLaunchFire12.wav | Bin 0 -> 318488 bytes .../Longbow/Sounds/ArrowLaunchFire12.wav.meta | 21 + .../Longbow/Sounds/ArrowLaunchFire13.wav | Bin 0 -> 370420 bytes .../Longbow/Sounds/ArrowLaunchFire13.wav.meta | 21 + .../Longbow/Sounds/ArrowNock01.wav | Bin 0 -> 46954 bytes .../Longbow/Sounds/ArrowNock01.wav.meta | 22 + .../Longbow/Sounds/ArrowNock02.wav | Bin 0 -> 55304 bytes .../Longbow/Sounds/ArrowNock02.wav.meta | 22 + .../Longbow/Sounds/ArrowNock03.wav | Bin 0 -> 18500 bytes .../Longbow/Sounds/ArrowNock03.wav.meta | 22 + .../Longbow/Sounds/ArrowNock04.wav | Bin 0 -> 56492 bytes .../Longbow/Sounds/ArrowNock04.wav.meta | 22 + .../Longbow/Sounds/ArrowNock05.wav | Bin 0 -> 69020 bytes .../Longbow/Sounds/ArrowNock05.wav.meta | 22 + .../Longbow/Sounds/ArrowNock06.wav | Bin 0 -> 25204 bytes .../Longbow/Sounds/ArrowNock06.wav.meta | 22 + .../Longbow/Sounds/ArrowNock07.wav | Bin 0 -> 42690 bytes .../Longbow/Sounds/ArrowNock07.wav.meta | 22 + .../Longbow/Sounds/ArrowNock08.wav | Bin 0 -> 67062 bytes .../Longbow/Sounds/ArrowNock08.wav.meta | 22 + .../Longbow/Sounds/ArrowNock09.wav | Bin 0 -> 78556 bytes .../Longbow/Sounds/ArrowNock09.wav.meta | 22 + .../Longbow/Sounds/ArrowNock10.wav | Bin 0 -> 27446 bytes .../Longbow/Sounds/ArrowNock10.wav.meta | 22 + .../Longbow/Sounds/ArrowNock11.wav | Bin 0 -> 39994 bytes .../Longbow/Sounds/ArrowNock11.wav.meta | 22 + .../Longbow/Sounds/ArrowNock12.wav | Bin 0 -> 45068 bytes .../Longbow/Sounds/ArrowNock12.wav.meta | 22 + .../Longbow/Sounds/ArrowNock13.wav | Bin 0 -> 24796 bytes .../Longbow/Sounds/ArrowNock13.wav.meta | 22 + .../Longbow/Sounds/ArrowNock14.wav | Bin 0 -> 24058 bytes .../Longbow/Sounds/ArrowNock14.wav.meta | 22 + .../Longbow/Sounds/ArrowNock15.wav | Bin 0 -> 28382 bytes .../Longbow/Sounds/ArrowNock15.wav.meta | 22 + .../Longbow/Sounds/ArrowNock16.wav | Bin 0 -> 35614 bytes .../Longbow/Sounds/ArrowNock16.wav.meta | 22 + .../Longbow/Sounds/ArrowNock17.wav | Bin 0 -> 36024 bytes .../Longbow/Sounds/ArrowNock17.wav.meta | 22 + .../Longbow/Sounds/ArrowRelease01.wav | Bin 0 -> 112854 bytes .../Longbow/Sounds/ArrowRelease01.wav.meta | 22 + .../Longbow/Sounds/ArrowRelease02.wav | Bin 0 -> 79962 bytes .../Longbow/Sounds/ArrowRelease02.wav.meta | 22 + .../Longbow/Sounds/ArrowRelease03.wav | Bin 0 -> 117502 bytes .../Longbow/Sounds/ArrowRelease03.wav.meta | 22 + .../Longbow/Sounds/ArrowRelease04.wav | Bin 0 -> 132772 bytes .../Longbow/Sounds/ArrowRelease04.wav.meta | 22 + .../Longbow/Sounds/ArrowRelease05.wav | Bin 0 -> 156292 bytes .../Longbow/Sounds/ArrowRelease05.wav.meta | 22 + .../Longbow/Sounds/ArrowRelease06.wav | Bin 0 -> 113542 bytes .../Longbow/Sounds/ArrowRelease06.wav.meta | 22 + .../Longbow/Sounds/ArrowRelease07.wav | Bin 0 -> 85118 bytes .../Longbow/Sounds/ArrowRelease07.wav.meta | 22 + .../Longbow/Sounds/ArrowRelease08.wav | Bin 0 -> 118882 bytes .../Longbow/Sounds/ArrowRelease08.wav.meta | 22 + .../Longbow/Sounds/ArrowRelease09.wav | Bin 0 -> 135528 bytes .../Longbow/Sounds/ArrowRelease09.wav.meta | 22 + .../Longbow/Sounds/ArrowSpawn01.wav | Bin 0 -> 91496 bytes .../Longbow/Sounds/ArrowSpawn01.wav.meta | 22 + .../Longbow/Sounds/ArrowSpawn02.wav | Bin 0 -> 118100 bytes .../Longbow/Sounds/ArrowSpawn02.wav.meta | 22 + .../Longbow/Sounds/ArrowSpawn03.wav | Bin 0 -> 61884 bytes .../Longbow/Sounds/ArrowSpawn03.wav.meta | 22 + .../Longbow/Sounds/ArrowSpawn04.wav | Bin 0 -> 116554 bytes .../Longbow/Sounds/ArrowSpawn04.wav.meta | 22 + .../Longbow/Sounds/ArrowSpawn05.wav | Bin 0 -> 107668 bytes .../Longbow/Sounds/ArrowSpawn05.wav.meta | 22 + .../Longbow/Sounds/ArrowSpawn06.wav | Bin 0 -> 72016 bytes .../Longbow/Sounds/ArrowSpawn06.wav.meta | 22 + .../Longbow/Sounds/ArrowSpawn07.wav | Bin 0 -> 105458 bytes .../Longbow/Sounds/ArrowSpawn07.wav.meta | 22 + .../Longbow/Sounds/ArrowSpawn08.wav | Bin 0 -> 154336 bytes .../Longbow/Sounds/ArrowSpawn08.wav.meta | 22 + .../Longbow/Sounds/BalloonBounce01.wav | Bin 0 -> 34344 bytes .../Longbow/Sounds/BalloonBounce01.wav.meta | 22 + .../Longbow/Sounds/BalloonBounce02.wav | Bin 0 -> 37884 bytes .../Longbow/Sounds/BalloonBounce02.wav.meta | 22 + .../Longbow/Sounds/BalloonBounce03.wav | Bin 0 -> 32982 bytes .../Longbow/Sounds/BalloonBounce03.wav.meta | 22 + .../Longbow/Sounds/BalloonBounce04.wav | Bin 0 -> 42074 bytes .../Longbow/Sounds/BalloonBounce04.wav.meta | 22 + .../Longbow/Sounds/BalloonBounce05.wav | Bin 0 -> 46148 bytes .../Longbow/Sounds/BalloonBounce05.wav.meta | 22 + .../Longbow/Sounds/BalloonBounce07.wav | Bin 0 -> 47686 bytes .../Longbow/Sounds/BalloonBounce07.wav.meta | 22 + .../Longbow/Sounds/BalloonInflate01.wav | Bin 0 -> 143244 bytes .../Longbow/Sounds/BalloonInflate01.wav.meta | 22 + .../Longbow/Sounds/BalloonPop01.wav | Bin 0 -> 150448 bytes .../Longbow/Sounds/BalloonPop01.wav.meta | 22 + .../Longbow/Sounds/BalloonPop02.wav | Bin 0 -> 184900 bytes .../Longbow/Sounds/BalloonPop02.wav.meta | 22 + .../Longbow/Sounds/BalloonPop03.wav | Bin 0 -> 184900 bytes .../Longbow/Sounds/BalloonPop03.wav.meta | 22 + .../Longbow/Sounds/BalloonPop04.wav | Bin 0 -> 132762 bytes .../Longbow/Sounds/BalloonPop04.wav.meta | 22 + .../Longbow/Sounds/BalloonPop05.wav | Bin 0 -> 95196 bytes .../Longbow/Sounds/BalloonPop05.wav.meta | 22 + .../Longbow/Sounds/BalloonPop06.wav | Bin 0 -> 111246 bytes .../Longbow/Sounds/BalloonPop06.wav.meta | 22 + .../Longbow/Sounds/BalloonPop07.wav | Bin 0 -> 104424 bytes .../Longbow/Sounds/BalloonPop07.wav.meta | 22 + .../Longbow/Sounds/BalloonRubber01.wav | Bin 0 -> 324164 bytes .../Longbow/Sounds/BalloonRubber01.wav.meta | 22 + .../Longbow/Sounds/BalloonRubber02.wav | Bin 0 -> 264726 bytes .../Longbow/Sounds/BalloonRubber02.wav.meta | 22 + .../Longbow/Sounds/BalloonRubber03.wav | Bin 0 -> 499690 bytes .../Longbow/Sounds/BalloonRubber03.wav.meta | 22 + .../Longbow/Sounds/LongbowPullBack01.wav | Bin 0 -> 92240 bytes .../Longbow/Sounds/LongbowPullBack01.wav.meta | 22 + .../Longbow/Sounds/LongbowPullBack02.wav | Bin 0 -> 48962 bytes .../Longbow/Sounds/LongbowPullBack02.wav.meta | 22 + .../Longbow/Sounds/LongbowPullBack03.wav | Bin 0 -> 70602 bytes .../Longbow/Sounds/LongbowPullBack03.wav.meta | 22 + .../Longbow/Sounds/LongbowPullBack04.wav | Bin 0 -> 68720 bytes .../Longbow/Sounds/LongbowPullBack04.wav.meta | 22 + .../Longbow/Sounds/LongbowPullBack05.wav | Bin 0 -> 70602 bytes .../Longbow/Sounds/LongbowPullBack05.wav.meta | 22 + .../Longbow/Sounds/LongbowPullBack06.wav | Bin 0 -> 76246 bytes .../Longbow/Sounds/LongbowPullBack06.wav.meta | 22 + .../Longbow/Sounds/LongbowPullBack07.wav | Bin 0 -> 92240 bytes .../Longbow/Sounds/LongbowPullBack07.wav.meta | 22 + .../Longbow/Sounds/LongbowPullBack08.wav | Bin 0 -> 55548 bytes .../Longbow/Sounds/LongbowPullBack08.wav.meta | 22 + .../Longbow/Sounds/LongbowPullBack09.wav | Bin 0 -> 119250 bytes .../Longbow/Sounds/LongbowPullBack09.wav.meta | 22 + .../Longbow/Sounds/LongbowPullBack10.wav | Bin 0 -> 104552 bytes .../Longbow/Sounds/LongbowPullBack10.wav.meta | 22 + .../Longbow/Sounds/LongbowPullBack11.wav | Bin 0 -> 95196 bytes .../Longbow/Sounds/LongbowPullBack11.wav.meta | 22 + .../Longbow/Sounds/LongbowPullBack12.wav | Bin 0 -> 128354 bytes .../Longbow/Sounds/LongbowPullBack12.wav.meta | 22 + .../Longbow/Sounds/LongbowPullBack13.wav | Bin 0 -> 100930 bytes .../Longbow/Sounds/LongbowPullBack13.wav.meta | 22 + .../Longbow/Sounds/LongbowPullBack14.wav | Bin 0 -> 85482 bytes .../Longbow/Sounds/LongbowPullBack14.wav.meta | 22 + .../Longbow/Sounds/LongbowPullBack15.wav | Bin 0 -> 104998 bytes .../Longbow/Sounds/LongbowPullBack15.wav.meta | 22 + .../Longbow/Sounds/LongbowPullBack16.wav | Bin 0 -> 117244 bytes .../Longbow/Sounds/LongbowPullBack16.wav.meta | 22 + .../Sounds/LongbowPullBackclick_01.wav | Bin 0 -> 6778 bytes .../Sounds/LongbowPullBackclick_01.wav.meta | 22 + .../Longbow/Sounds/MasterLongbowMix.mixer | 96 + .../Sounds/MasterLongbowMix.mixer.meta | 8 + .../Longbow/Sounds/TorchFireLoop01.wav | Bin 0 -> 1591396 bytes .../Longbow/Sounds/TorchFireLoop01.wav.meta | 21 + .../Longbow/Sounds/TorchFireLoop02.wav | Bin 0 -> 1101272 bytes .../Longbow/Sounds/TorchFireLoop02.wav.meta | 22 + .../Longbow/Sounds/TorchFireLoop03.wav | Bin 0 -> 767736 bytes .../Longbow/Sounds/TorchFireLoop03.wav.meta | 22 + .../Longbow/Sounds/TorchFireLoop04.wav | Bin 0 -> 684946 bytes .../Longbow/Sounds/TorchFireLoop04.wav.meta | 22 + .../InteractionSystem/Longbow/Textures.meta | 9 + .../Longbow/Textures/ArcheryWeebleTarget.png | Bin 0 -> 97050 bytes .../Textures/ArcheryWeebleTarget.png.meta | 52 + .../Textures/ArrowAlbedoTransparency.tga | Bin 0 -> 4194348 bytes .../Textures/ArrowAlbedoTransparency.tga.meta | 57 + .../Textures/ArrowAmbientOcclusion.tga | Bin 0 -> 4194348 bytes .../Textures/ArrowAmbientOcclusion.tga.meta | 57 + .../Longbow/Textures/ArrowEmissive.psd | Bin 0 -> 3366349 bytes .../Longbow/Textures/ArrowEmissive.psd.meta | 58 + .../Longbow/Textures/ArrowGlint.png | Bin 0 -> 8951 bytes .../Longbow/Textures/ArrowGlint.png.meta | 59 + .../Textures/ArrowMetallicSmoothness.tga | Bin 0 -> 4194348 bytes .../Textures/ArrowMetallicSmoothness.tga.meta | 57 + .../Longbow/Textures/ArrowNormal.tga | Bin 0 -> 4194348 bytes .../Longbow/Textures/ArrowNormal.tga.meta | 57 + .../Longbow/Textures/BalloonColor.tga | Bin 0 -> 12582956 bytes .../Longbow/Textures/BalloonColor.tga.meta | 52 + .../Longbow/Textures/BalloonPop.png | Bin 0 -> 508 bytes .../Longbow/Textures/BalloonPop.png.meta | 59 + .../Longbow/Textures/BalloonPopLine.png | Bin 0 -> 233 bytes .../Longbow/Textures/BalloonPopLine.png.meta | 59 + .../Longbow/Textures/Longbow.psd | Bin 0 -> 12472020 bytes .../Longbow/Textures/Longbow.psd.meta | 56 + .../Longbow/Textures/TorchFire.png | Bin 0 -> 6978 bytes .../Longbow/Textures/TorchFire.png.meta | 59 + .../Readme_InteractionSystem.txt | 22 + .../Readme_InteractionSystem.txt.meta | 8 + Assets/SteamVR/InteractionSystem/Samples.meta | 9 + .../InteractionSystem/Samples/Animations.meta | 9 + .../Samples/Animations/BallAnimation.anim | 348 + .../Animations/BallAnimation.anim.meta | 8 + .../InteractionSystem/Samples/Animators.meta | 9 + .../BallAnimationController.controller | 70 + .../BallAnimationController.controller.meta | 8 + .../InteractionSystem/Samples/Materials.meta | 9 + .../Samples/Materials/Grey.mat | 127 + .../Samples/Materials/Grey.mat.meta | 8 + .../Samples/Materials/LightGreen.mat | 127 + .../Samples/Materials/LightGreen.mat.meta | 8 + .../Samples/Materials/ShinyWhite.mat | 127 + .../Samples/Materials/ShinyWhite.mat.meta | 8 + .../Materials/ShinyWhiteHighlighted.mat | 136 + .../Materials/ShinyWhiteHighlighted.mat.meta | 8 + .../Samples/Materials/ShinyYellow.mat | 127 + .../Samples/Materials/ShinyYellow.mat.meta | 8 + .../InteractionSystem/Samples/Prefabs.meta | 9 + .../Samples/Prefabs/ThrowableBall.prefab | 266 + .../Samples/Prefabs/ThrowableBall.prefab.meta | 8 + .../Samples/Prefabs/ThrowableCube.prefab | 266 + .../Samples/Prefabs/ThrowableCube.prefab.meta | 8 + .../InteractionSystem/Samples/Scenes.meta | 9 + .../Samples/Scenes/Interactions_Example.unity | 6987 +++++++++++++++++ .../Scenes/Interactions_Example.unity.meta | 8 + .../InteractionSystem/Samples/Scripts.meta | 9 + .../Samples/Scripts/ControllerHintsExample.cs | 115 + .../Scripts/ControllerHintsExample.cs.meta | 12 + .../Samples/Scripts/InteractableExample.cs | 129 + .../Scripts/InteractableExample.cs.meta | 12 + .../SteamVR/InteractionSystem/Teleport.meta | 9 + .../InteractionSystem/Teleport/Materials.meta | 9 + .../Materials/TeleportAreaHighlighted.mat | 204 + .../TeleportAreaHighlighted.mat.meta | 8 + .../TeleportAreaHighlightedBright.mat | 204 + .../TeleportAreaHighlightedBright.mat.meta | 8 + .../Materials/TeleportAreaHighlightedLow.mat | 204 + .../TeleportAreaHighlightedLow.mat.meta | 8 + .../Teleport/Materials/TeleportAreaLocked.mat | 218 + .../Materials/TeleportAreaLocked.mat.meta | 8 + .../Materials/TeleportAreaVisible.mat | 249 + .../Materials/TeleportAreaVisible.mat.meta | 8 + .../Materials/TeleportAreaVisibleBright.mat | 248 + .../TeleportAreaVisibleBright.mat.meta | 8 + .../Materials/TeleportAreaVisibleLow.mat | 249 + .../Materials/TeleportAreaVisibleLow.mat.meta | 8 + .../Teleport/Materials/TeleportPlaySpace.mat | 200 + .../Materials/TeleportPlaySpace.mat.meta | 8 + .../Materials/TeleportPlayspaceVisualize.mat | 147 + .../TeleportPlayspaceVisualize.mat.meta | 8 + .../Materials/TeleportPointHighlighted.mat | 128 + .../TeleportPointHighlighted.mat.meta | 8 + .../Materials/TeleportPointInvalid.mat | 197 + .../Materials/TeleportPointInvalid.mat.meta | 8 + .../Materials/TeleportPointLocked.mat | 128 + .../Materials/TeleportPointLocked.mat.meta | 8 + .../Teleport/Materials/TeleportPointText.mat | 121 + .../Materials/TeleportPointText.mat.meta | 8 + .../Materials/TeleportPointVisible.mat | 128 + .../Materials/TeleportPointVisible.mat.meta | 8 + .../Teleport/Materials/TeleportPointer.mat | 124 + .../Materials/TeleportPointer.mat.meta | 8 + .../InteractionSystem/Teleport/Models.meta | 9 + .../Teleport/Models/TeleportDestination.fbx | 506 ++ .../Models/TeleportDestination.fbx.meta | 89 + .../Models/TeleportDestinationInvalid.fbx | 415 + .../TeleportDestinationInvalid.fbx.meta | 76 + .../Teleport/Models/TeleportMarker.fbx | Bin 0 -> 63760 bytes .../Teleport/Models/TeleportMarker.fbx.meta | 238 + .../Models/TeleportPlayAreaPieces.fbx | 433 + .../Models/TeleportPlayAreaPieces.fbx.meta | 85 + .../InteractionSystem/Teleport/Prefabs.meta | 9 + .../Teleport/Prefabs/TeleportPoint.prefab | 603 ++ .../Prefabs/TeleportPoint.prefab.meta | 8 + .../Teleport/Prefabs/Teleporting.prefab | 1309 +++ .../Teleport/Prefabs/Teleporting.prefab.meta | 8 + .../InteractionSystem/Teleport/Scripts.meta | 9 + .../AllowTeleportWhileAttachedToHand.cs | 18 + .../AllowTeleportWhileAttachedToHand.cs.meta | 12 + .../Teleport/Scripts/ChaperoneInfo.cs | 87 + .../Teleport/Scripts/ChaperoneInfo.cs.meta | 12 + .../Teleport/Scripts/IgnoreTeleportTrace.cs | 17 + .../Scripts/IgnoreTeleportTrace.cs.meta | 12 + .../Teleport/Scripts/Teleport.cs | 1151 +++ .../Teleport/Scripts/Teleport.cs.meta | 12 + .../Teleport/Scripts/TeleportArc.cs | 307 + .../Teleport/Scripts/TeleportArc.cs.meta | 12 + .../Teleport/Scripts/TeleportArea.cs | 197 + .../Teleport/Scripts/TeleportArea.cs.meta | 12 + .../Teleport/Scripts/TeleportMarkerBase.cs | 57 + .../Scripts/TeleportMarkerBase.cs.meta | 12 + .../Teleport/Scripts/TeleportPoint.cs | 347 + .../Teleport/Scripts/TeleportPoint.cs.meta | 12 + .../InteractionSystem/Teleport/Shaders.meta | 9 + .../Teleport/Shaders/Highlight.shader | 129 + .../Teleport/Shaders/Highlight.shader.meta | 9 + .../InteractionSystem/Teleport/Sounds.meta | 9 + .../Teleport/Sounds/TeleportBadArea.wav | Bin 0 -> 88108 bytes .../Teleport/Sounds/TeleportBadArea.wav.meta | 22 + .../Teleport/Sounds/TeleportGo.wav | Bin 0 -> 326120 bytes .../Teleport/Sounds/TeleportGo.wav.meta | 22 + .../Teleport/Sounds/TeleportGoodArea.wav | Bin 0 -> 95480 bytes .../Teleport/Sounds/TeleportGoodArea.wav.meta | 22 + .../Teleport/Sounds/TeleportPointerLoop.wav | Bin 0 -> 95092 bytes .../Sounds/TeleportPointerLoop.wav.meta | 22 + .../Teleport/Sounds/TeleportPointerStart.wav | Bin 0 -> 95018 bytes .../Sounds/TeleportPointerStart.wav.meta | 22 + .../InteractionSystem/Teleport/Textures.meta | 9 + .../Textures/TeleportAreaPatternColor.tga | Bin 0 -> 27661 bytes .../TeleportAreaPatternColor.tga.meta | 57 + .../Teleport/Textures/TeleportMarker.psd | Bin 0 -> 259215 bytes .../Teleport/Textures/TeleportMarker.psd.meta | 56 + Assets/SteamVR/Materials.meta | 6 + Assets/SteamVR/Materials/workshop.mat | 25 + Assets/SteamVR/Materials/workshop.mat.meta | 5 + Assets/SteamVR/Plugins.meta | 9 + Assets/SteamVR/Plugins/openvr_api.cs | 4786 +++++++++++ Assets/SteamVR/Plugins/openvr_api.cs.meta | 12 + Assets/SteamVR/Prefabs.meta | 6 + Assets/SteamVR/Prefabs/[CameraRig].prefab | 530 ++ .../SteamVR/Prefabs/[CameraRig].prefab.meta | 5 + Assets/SteamVR/Prefabs/[Status].prefab | 223 + Assets/SteamVR/Prefabs/[Status].prefab.meta | 5 + Assets/SteamVR/Prefabs/[SteamVR].prefab | 120 + Assets/SteamVR/Prefabs/[SteamVR].prefab.meta | 8 + Assets/SteamVR/Resources.meta | 6 + .../SteamVR/Resources/SteamVR_AlphaOut.shader | 52 + .../Resources/SteamVR_AlphaOut.shader.meta | 9 + .../SteamVR/Resources/SteamVR_ClearAll.shader | 47 + .../Resources/SteamVR_ClearAll.shader.meta | 9 + .../SteamVR/Resources/SteamVR_ColorOut.shader | 52 + .../Resources/SteamVR_ColorOut.shader.meta | 9 + .../Resources/SteamVR_ExternalCamera.prefab | 114 + .../SteamVR_ExternalCamera.prefab.meta | 8 + Assets/SteamVR/Resources/SteamVR_Fade.shader | 32 + .../Resources/SteamVR_Fade.shader.meta | 9 + .../SteamVR_SphericalProjection.shader | 79 + .../SteamVR_SphericalProjection.shader.meta | 9 + Assets/SteamVR/Scenes.meta | 6 + Assets/SteamVR/Scenes/example.unity | 2897 +++++++ Assets/SteamVR/Scenes/example.unity.meta | 5 + Assets/SteamVR/Scripts.meta | 6 + Assets/SteamVR/Scripts/SteamVR.cs | 353 + Assets/SteamVR/Scripts/SteamVR.cs.meta | 9 + Assets/SteamVR/Scripts/SteamVR_Camera.cs | 277 + Assets/SteamVR/Scripts/SteamVR_Camera.cs.meta | 9 + Assets/SteamVR/Scripts/SteamVR_CameraFlip.cs | 18 + .../Scripts/SteamVR_CameraFlip.cs.meta | 12 + Assets/SteamVR/Scripts/SteamVR_CameraMask.cs | 18 + .../Scripts/SteamVR_CameraMask.cs.meta | 9 + Assets/SteamVR/Scripts/SteamVR_Controller.cs | 235 + .../Scripts/SteamVR_Controller.cs.meta | 12 + .../Scripts/SteamVR_ControllerManager.cs | 257 + .../Scripts/SteamVR_ControllerManager.cs.meta | 12 + Assets/SteamVR/Scripts/SteamVR_Ears.cs | 52 + Assets/SteamVR/Scripts/SteamVR_Ears.cs.meta | 12 + Assets/SteamVR/Scripts/SteamVR_Events.cs | 203 + Assets/SteamVR/Scripts/SteamVR_Events.cs.meta | 12 + .../SteamVR/Scripts/SteamVR_ExternalCamera.cs | 315 + .../Scripts/SteamVR_ExternalCamera.cs.meta | 12 + Assets/SteamVR/Scripts/SteamVR_Fade.cs | 128 + Assets/SteamVR/Scripts/SteamVR_Fade.cs.meta | 9 + Assets/SteamVR/Scripts/SteamVR_Frustum.cs | 151 + .../SteamVR/Scripts/SteamVR_Frustum.cs.meta | 12 + Assets/SteamVR/Scripts/SteamVR_GameView.cs | 18 + .../SteamVR/Scripts/SteamVR_GameView.cs.meta | 9 + Assets/SteamVR/Scripts/SteamVR_IK.cs | 170 + Assets/SteamVR/Scripts/SteamVR_IK.cs.meta | 12 + Assets/SteamVR/Scripts/SteamVR_LoadLevel.cs | 500 ++ .../SteamVR/Scripts/SteamVR_LoadLevel.cs.meta | 12 + Assets/SteamVR/Scripts/SteamVR_Menu.cs | 332 + Assets/SteamVR/Scripts/SteamVR_Menu.cs.meta | 9 + Assets/SteamVR/Scripts/SteamVR_Overlay.cs | 183 + .../SteamVR/Scripts/SteamVR_Overlay.cs.meta | 9 + Assets/SteamVR/Scripts/SteamVR_PlayArea.cs | 279 + .../SteamVR/Scripts/SteamVR_PlayArea.cs.meta | 12 + Assets/SteamVR/Scripts/SteamVR_Render.cs | 390 + Assets/SteamVR/Scripts/SteamVR_Render.cs.meta | 9 + Assets/SteamVR/Scripts/SteamVR_RenderModel.cs | 792 ++ .../Scripts/SteamVR_RenderModel.cs.meta | 9 + Assets/SteamVR/Scripts/SteamVR_Skybox.cs | 116 + Assets/SteamVR/Scripts/SteamVR_Skybox.cs.meta | 12 + .../Scripts/SteamVR_SphericalProjection.cs | 40 + .../SteamVR_SphericalProjection.cs.meta | 12 + Assets/SteamVR/Scripts/SteamVR_Stats.cs | 68 + Assets/SteamVR/Scripts/SteamVR_Stats.cs.meta | 9 + .../SteamVR/Scripts/SteamVR_TestController.cs | 132 + .../Scripts/SteamVR_TestController.cs.meta | 12 + .../SteamVR/Scripts/SteamVR_TrackedCamera.cs | 218 + .../Scripts/SteamVR_TrackedCamera.cs.meta | 12 + .../SteamVR/Scripts/SteamVR_TrackedObject.cs | 101 + .../Scripts/SteamVR_TrackedObject.cs.meta | 9 + Assets/SteamVR/Scripts/SteamVR_UpdatePoses.cs | 36 + .../Scripts/SteamVR_UpdatePoses.cs.meta | 12 + Assets/SteamVR/Scripts/SteamVR_Utils.cs | 597 ++ Assets/SteamVR/Scripts/SteamVR_Utils.cs.meta | 9 + Assets/SteamVR/Textures.meta | 6 + Assets/SteamVR/Textures/arrow.png | Bin 0 -> 5292 bytes Assets/SteamVR/Textures/arrow.png.meta | 52 + Assets/SteamVR/Textures/background.png | Bin 0 -> 11479 bytes Assets/SteamVR/Textures/background.png.meta | 52 + Assets/SteamVR/Textures/logo.png | Bin 0 -> 430238 bytes Assets/SteamVR/Textures/logo.png.meta | 53 + Assets/SteamVR/Textures/overlay.renderTexture | 24 + .../Textures/overlay.renderTexture.meta | 5 + Assets/SteamVR/Textures/workshop.png | Bin 0 -> 324451 bytes Assets/SteamVR/Textures/workshop.png.meta | 52 + Assets/SteamVR/quickstart.pdf | Bin 0 -> 968031 bytes Assets/SteamVR/quickstart.pdf.meta | 5 + Assets/SteamVR/readme.txt | 564 ++ Assets/SteamVR/readme.txt.meta | 5 + Assets/_Scenes/Start.unity | 3454 +++++--- Assets/_Scenes/Start/NavMesh.asset | 62 +- Assets/_Scenes/Start/NavMesh.asset.meta | 2 +- Library/AssetImportState | 2 +- Library/CurrentLayout.dwlt | Bin 44852 -> 46536 bytes Library/CurrentMaximizeLayout.dwlt | Bin 39484 -> 41140 bytes Library/InspectorExpandedItems.asset | Bin 5112 -> 5128 bytes Library/ProjectSettings.asset | 21 +- .../Assembly-CSharp-Editor.dll | Bin 35328 -> 61952 bytes .../Assembly-CSharp-Editor.dll.mdb | Bin 7544 -> 14892 bytes Library/ScriptAssemblies/Assembly-CSharp.dll | Bin 15872 -> 405504 bytes .../ScriptAssemblies/Assembly-CSharp.dll.mdb | Bin 6599 -> 134156 bytes .../ScriptAssemblies/Assembly-UnityScript.dll | Bin 13312 -> 13312 bytes .../Assembly-UnityScript.dll.mdb | Bin 3511 -> 3511 bytes .../ScriptAssemblies/BuiltinAssemblies.stamp | 2 - Library/ScriptMapper | Bin 14113 -> 14473 bytes .../0/010872b93fe24a33e854bc730763bcdd.bin | Bin 0 -> 2500 bytes .../0/01945c0b6bb6f4b1a1dbe63eb0f1ef95.bin | Bin 0 -> 2068 bytes .../0/04b756c7c00d419663f548f3b61dc437.bin | Bin 0 -> 2512 bytes .../0/0557700fc19485fccdf0a563d76cfdbc.bin | Bin 0 -> 488 bytes .../0/057753b6487a75e478befba199fbc811.bin | Bin 0 -> 4108 bytes .../0/07994389b23bd2b8cb0dc823812d8bae.bin | Bin 0 -> 7636 bytes .../0/0a5f7cd127c6a84d59daa3abedcf9524.bin | Bin 0 -> 2152 bytes .../0/0bc18df5585fa427e27ef62344a57b8b.bin | Bin 0 -> 7748 bytes .../0/0bc3c7c3f6021d0fe66daa5fd94f0146.bin | Bin 0 -> 896 bytes .../0/0c1bb3325aae6b408214a1b4f4bcaa1d.bin | Bin 0 -> 508 bytes .../0/0d1bf2d5964a3f457f48ee473dc05c34.bin | Bin 0 -> 2516 bytes .../0/0dfc6cdf38fb1674c75a75c17ecf831e.bin | Bin 0 -> 292 bytes .../1/105551054808bdc4ac3556ca4c9d8626.bin | Bin 0 -> 640 bytes .../1/10ce8ffe7bf6560e2aa9e50b6e1ff980.bin | Bin 0 -> 408 bytes .../1/1277b3c8e2630611ec7c17a2ddf9cbf4.bin | Bin 0 -> 1336 bytes .../1/16c55704c41c0539aa7fc79ca6e1a5ff.bin | Bin 0 -> 8204 bytes .../1/173707cef55073c8ac72a5c7796f3ed7.bin | Bin 0 -> 640 bytes .../1/1784c7df1b62cb051755f45e0a44ea23.bin | Bin 0 -> 900 bytes .../1/18b04582486cc0f3574fa12398359ae0.bin | Bin 0 -> 440 bytes .../1/18b42b9ab6881f24aa873af12962b67d.bin | Bin 0 -> 620 bytes .../1/1db3bc8ef1fd14cc5d7ce3fcf4489432.bin | Bin 0 -> 2948 bytes .../2/24325e768333ee6f2c8b37eef6719cef.bin | Bin 0 -> 2152 bytes .../2/257acdd47cfeee4d8e15109ff1c123c5.bin | Bin 0 -> 784 bytes .../2/2734cce25812b585ebef1605f7ecae67.bin | Bin 0 -> 2204 bytes .../2/2776e72401d8ce37c6da08833be0acac.bin | Bin 0 -> 432 bytes .../2/2889cb1145cabea912416a53a40204ef.bin | Bin 0 -> 2540 bytes .../2/29b61d8db24289e8dd457926d480d811.bin | Bin 0 -> 2304 bytes .../2/2c5a04f4966839838a7547ea82e67e98.bin | Bin 0 -> 3120 bytes .../2/2dac9244fbe9f3fd2046f8a5bb42b8d0.bin | Bin 0 -> 2744 bytes .../2/2efd2eb160e9c733bddbdccf306bd385.bin | Bin 0 -> 788 bytes .../2/2f74c5e61b5ba1609ef3f60bd15e7a77.bin | Bin 0 -> 2092 bytes .../2/2fa6a1ade4d412d6cf182560c1832572.bin | Bin 0 -> 828 bytes .../3/300868fd6978f344bdd7e4653d47fb16.bin | Bin 0 -> 1180 bytes .../3/31c8b71371bc2a0d642436d24efafa7a.bin | Bin 0 -> 944 bytes .../3/34a71143ee3f646c95b4f4c397ea7dbd.bin | Bin 0 -> 2152 bytes .../3/3699df2f42c62b354098eec5c2aa2659.bin | Bin 0 -> 372 bytes .../3/3a268b6ee30613d79db54a0ffc9014b3.bin | Bin 0 -> 540 bytes .../3/3b1f35bbd271d6dff99b096bfee1501b.bin | Bin 0 -> 588 bytes .../3/3db6adf81fb3361c05d850e32e96efb1.bin | Bin 0 -> 1288 bytes .../3/3f290e2e96f1cafc2320deb24a2c4522.bin | Bin 0 -> 372 bytes .../3/3fb93c1af9b039fa987f3abc2126fe07.bin | Bin 0 -> 288 bytes .../4/448f25f566a7b4e06ee8d1056f2766f4.bin | Bin 0 -> 956 bytes .../4/4a6526541dea7484e8947e73d501a7b8.bin | Bin 0 -> 972 bytes .../4/4aaf63c1f060cf0734055e288036bf19.bin | Bin 0 -> 2388 bytes .../4/4ca72c2652d656d48a5ca423206d514c.bin | Bin 0 -> 692 bytes .../4/4ea7365b6dd265539964fe6d9a76be97.bin | Bin 0 -> 784 bytes .../4/4f305316d61798a929632db23a841102.bin | Bin 0 -> 1476 bytes .../5/52e9a36054c66e862285a084ac384a09.bin | Bin 0 -> 432 bytes .../5/545fc95148752038ca3326df544b4e15.bin | Bin 0 -> 432 bytes .../5/580656ebcf76c6227a262a1077b6913a.bin | Bin 0 -> 956 bytes .../5/58183170fa4b97c9dac4be88480225c2.bin | Bin 0 -> 716 bytes .../5/5a44393fed96759621cb6802955926b0.bin | Bin 0 -> 300 bytes .../5/5c2ff926e7b4445f3b9dcb01938255ff.bin | Bin 0 -> 876 bytes .../5/5ff82b4570aa9d30f8b210e175ad52e6.bin | Bin 0 -> 692 bytes .../6/60e88c3c669b5ba2b03b3b978595d872.bin | Bin 0 -> 3404 bytes .../6/618325e8ab699a19ad19d11219d28699.bin | Bin 0 -> 692 bytes .../6/627486f11d3400ef278e6cd6b3bb0dce.bin | Bin 0 -> 660 bytes .../6/6431e1c3499dab0abe006749d7551d42.bin | Bin 0 -> 388 bytes .../6/653b62df8a9318c7fd29125e8d7f5cdc.bin | Bin 0 -> 8108 bytes .../6/65a42015ef8db1d9c3af45631c773f0d.bin | Bin 0 -> 264 bytes .../6/66ae4267ad2b10cfc713904ff1271181.bin | Bin 0 -> 4340 bytes .../6/672ce0f067250b0125df809fd5ad123d.bin | Bin 0 -> 620 bytes .../6/67b25d75340acaa306ef9767e82e410b.bin | Bin 0 -> 7448 bytes .../6/696c47e470ad3eb69013f7a6ed8a773e.bin | Bin 0 -> 1288 bytes .../6/6d0979a17fb433a48608d718ef7526fb.bin | Bin 0 -> 264 bytes .../6/6d80c14f37e30a6be99f93c075220195.bin | Bin 0 -> 2800 bytes .../6/6dbe3c8b79f9cd99d9e5c149775834dc.bin | Bin 0 -> 2068 bytes .../6/6e806fe482b10335a889638c9e1d9e59.bin | Bin 0 -> 892 bytes .../7/7281e7d14e70c357d67eaa397d3120fc.bin | Bin 0 -> 2580 bytes .../7/72ca62d1058d04dc1629d3a8f064e938.bin | Bin 0 -> 1572 bytes .../7/7444e96bdfb2d72260f4db15342dce24.bin | Bin 0 -> 480 bytes .../7/75834d2c911f34d9f1379d813e15841f.bin | Bin 0 -> 6044 bytes .../7/75eb8dcd3638abb80983c2b6a4678f7f.bin | Bin 0 -> 896 bytes .../7/78545b86d01b0f19ee03c49d7cffb0d4.bin | Bin 0 -> 2472 bytes .../7/7935546796d63355c13b4d1619b0306c.bin | Bin 0 -> 1288 bytes .../7/795deec2acf98a89d689e15f6e47ee49.bin | Bin 0 -> 2132 bytes .../7/7c4d4eb31036ba1841cf4bee1a96986f.bin | Bin 0 -> 6056 bytes .../7/7c7731c6f38dc8cf0a837f76a1d00762.bin | Bin 0 -> 2516 bytes .../8/805f4658c4dbf51df35d2d00e14e8ef2.bin | Bin 0 -> 488 bytes .../8/81a93c37db393b0228d7a6c4401612bb.bin | Bin 0 -> 5516 bytes .../8/82291f2f7ad5b365ddce67ee712a451f.bin | Bin 0 -> 2972 bytes .../8/82852b0c455c6c97b3b0e3cea47cf7a5.bin | Bin 0 -> 1064 bytes .../8/888271fdd986578ff98535a20a7d9518.bin | Bin 0 -> 2928 bytes .../8/8a1399fc0dd5120f30ad9e7d09407704.bin | Bin 0 -> 344 bytes .../8/8c3acaa519fbbb228a6d6729ce7af7c3.bin | Bin 0 -> 3060 bytes .../8/8cc5bc41a85fbfef29d4ce027f49d633.bin | Bin 0 -> 6624 bytes .../8/8ce4c716d46390139e2ad1aec36992ef.bin | Bin 0 -> 892 bytes .../8/8de48a5ea6456d8f1989b46a370fc20b.bin | Bin 0 -> 2552 bytes .../9/90eb9490e04e1e7d10acc47036b0f783.bin | Bin 0 -> 3492 bytes .../9/935b686b54292eaebb4652b481d37eab.bin | Bin 0 -> 2176 bytes .../9/93f2905a160463e2816bede7594793f5.bin | Bin 0 -> 3648 bytes .../9/9415bd295ca61bf99fa1804157cd2e15.bin | Bin 0 -> 408 bytes .../9/9578f75d49becdce4523dc96a6da136a.bin | Bin 0 -> 480 bytes .../9/97d95c1398e94879cf4d4930c2317e19.bin | Bin 0 -> 384 bytes .../9/99523feb5550e6bab45ecbf4408a0f28.bin | Bin 0 -> 2952 bytes .../a/a0509a735171b2be6eaacdccf9d4b231.bin | Bin 0 -> 6832 bytes .../a/a14c7e116c308e47856977fcd03ade9b.bin | Bin 0 -> 540 bytes .../a/a197facaf1d4130127c119d92e1b7506.bin | Bin 0 -> 2516 bytes .../a/a1e6559118c3f8df7f1de7a58938c10c.bin | Bin 0 -> 316 bytes .../a/a495bec9ea7d615c9f20911d9025bd15.bin | Bin 0 -> 692 bytes .../a/a745595dd4631babd3d96f901bd1d482.bin | Bin 0 -> 3312 bytes .../a/a7b585cdf5c34e925c1b0c1485b0c39c.bin | Bin 0 -> 784 bytes .../a/a8ac51a2057ac4f3f624dd01c311a806.bin | Bin 0 -> 2728 bytes .../a/a9b40f960f5ca74ce0e3e888348b8030.bin | Bin 0 -> 440 bytes .../a/aa53a2058d866be485784e27ada641d1.bin | Bin 0 -> 2772 bytes .../a/ab0b5ae9fb13e06fa3cfe7e3a3b49a30.bin | Bin 0 -> 7708 bytes .../a/ac1566c01a3bf0109603370f6d9842e3.bin | Bin 0 -> 2800 bytes .../a/ac6e34d8a1b9f983422d5d52a784f68d.bin | Bin 0 -> 540 bytes .../a/acab8c3b2f13ea34ba30c67fcc805d02.bin | Bin 0 -> 316 bytes .../a/acd3c1102868665bd952ccd197e14a3a.bin | Bin 0 -> 344 bytes .../a/acf1a2fe357cf496c9c4a6eccb794aee.bin | Bin 0 -> 2960 bytes .../a/af897cb11fdff3a859edf2a49270911f.bin | Bin 0 -> 1064 bytes .../a/af91e4ccbecc99ecc6c9a60d498c33fc.bin | Bin 0 -> 336 bytes .../b/b158a66d876a26357a526885884b898a.bin | Bin 0 -> 692 bytes .../b/b1877c79ee0dcc0b86b891987d38747c.bin | Bin 0 -> 3232 bytes .../b/b3b99ffdf55d9469322a846936af8957.bin | Bin 0 -> 1680 bytes .../b/b4b43d3b301d47a29dc52971c7126c55.bin | Bin 0 -> 3044 bytes .../b/b5c659d886f475a5e6d06d72c9bd9838.bin | Bin 0 -> 996 bytes .../b/b64361a277559ce94dc95cd1162d0df0.bin | Bin 0 -> 728 bytes .../b/b6662b04cc4c59874ee0e315f40c75cf.bin | Bin 0 -> 692 bytes .../b/b831757c31c7f8743c037b9957f278de.bin | Bin 0 -> 588 bytes .../b/bb35c51d79c566a3d39269f6d82a5257.bin | Bin 0 -> 3588 bytes .../c/c111f210ae2d8e4bc789c3c52a9e6f95.bin | Bin 0 -> 2196 bytes .../c/c629f6fe71e8c5778b37821ef55108cb.bin | Bin 0 -> 2972 bytes .../c/c81e2cbd5365a2ea8f7971f956e79e89.bin | Bin 0 -> 896 bytes .../c/c9fd24fa9e65da0b75a1ddf4cdb06587.bin | Bin 0 -> 292 bytes .../c/ca86e6413fde0bf557b407660e3cfc74.bin | Bin 0 -> 716 bytes .../c/cea7acd647551babe38edb9aa733eafa.bin | Bin 0 -> 716 bytes .../d/d02685cce0e745a77e2e152909d68d30.bin | Bin 0 -> 2068 bytes .../d/d33cbec211c83658cdd06aa56c401a0c.bin | Bin 0 -> 784 bytes .../d/d3991442088d33a4c4c8e9877e0662f9.bin | Bin 0 -> 2528 bytes .../d/d74bc46100fcc72fd77bd39cc626a486.bin | Bin 0 -> 2696 bytes .../d/db06217dbe0cfa4eed4e2e4d9e924e93.bin | Bin 0 -> 3516 bytes .../d/dccb71d1099ba5fbe143c64d358285da.bin | Bin 0 -> 7588 bytes .../d/df908d088a9b47582fc53e77e3dcc11e.bin | Bin 0 -> 828 bytes .../e/e005c173301c48a20823ea1b2a07bc80.bin | Bin 0 -> 4108 bytes .../e/e066d608eec9a6fdcbb693aa5a4cbfef.bin | Bin 0 -> 788 bytes .../e/e44e16060871711d2d2e4042e2236998.bin | Bin 0 -> 488 bytes .../e/e5f94b25ada4bc1f9ddf39c73aee8a97.bin | Bin 0 -> 336 bytes .../e/e8669a8c1319e75555ed06129c904512.bin | Bin 0 -> 3896 bytes .../e/e892a58b46e9a3d19d8ec595f4034067.bin | Bin 0 -> 2976 bytes .../e/e9bbdf27fd1a02e2d89c125ac13b6e59.bin | Bin 0 -> 784 bytes .../e/eabdb3ed37f7e9fd0446c1e53d88d7cd.bin | Bin 0 -> 896 bytes .../e/ec4a481f3ebbc3d72d114855f1409102.bin | Bin 0 -> 6700 bytes .../e/ec5e175cba5ea464598d6152c62887c1.bin | Bin 0 -> 716 bytes .../e/ee8188331ee53ffc6a9f60a661cb7946.bin | Bin 0 -> 944 bytes .../e/ef3ced79c7ac87dff4cc2921f0445761.bin | Bin 0 -> 1396 bytes .../f/f001eddb17125ef4afa207f462ffc30e.bin | Bin 0 -> 728 bytes .../f/f20fc526558edaeb3908f2bd23a78251.bin | Bin 0 -> 432 bytes .../f/f79cc3d39571a378f7e5d853f42b8c89.bin | Bin 0 -> 7640 bytes .../f/fa09be718d6818d2277643ead4c35b98.bin | Bin 0 -> 7656 bytes .../f/fe2b537e9dbe5cba555fd674dbb9e265.bin | Bin 0 -> 1968 bytes Library/assetDatabase3 | Bin 3618336 -> 3788604 bytes Library/expandedItems | Bin 4632 -> 4644 bytes .../00/00000000000000004000000000000000 | Bin 4325 -> 4325 bytes .../00/005ed5a6df2f5ff468efd6497d37fefa | Bin 0 -> 4276 bytes .../00/005ed5a6df2f5ff468efd6497d37fefa.info | Bin 0 -> 939 bytes .../01/012bb97850e84ad4c890dcab506009bc | Bin 0 -> 5145 bytes .../01/012bb97850e84ad4c890dcab506009bc.info | Bin 0 -> 802 bytes .../01/01c670ceb931d524b9a80b70652eb18b | Bin 0 -> 4300 bytes .../01/01c670ceb931d524b9a80b70652eb18b.info | Bin 0 -> 1306 bytes .../03/032fb1710098a1d47ad34d72e90f714a | Bin 0 -> 74980 bytes .../03/032fb1710098a1d47ad34d72e90f714a.info | Bin 0 -> 15678 bytes .../03/0339153ea7d8a9e4b8411691b9a95fdc | Bin 0 -> 4333 bytes .../03/0339153ea7d8a9e4b8411691b9a95fdc.info | Bin 0 -> 633 bytes .../03/03874d69177b2d54ba4eb2b4af03dbe9 | Bin 13517 -> 15497 bytes .../03/03889921b093f9047aa4cc9b216d6e03 | Bin 0 -> 4325 bytes .../03/03889921b093f9047aa4cc9b216d6e03.info | Bin 0 -> 628 bytes .../04/04d03a6e2ff64bf47911d08912140c31 | Bin 0 -> 43422 bytes .../04/04d03a6e2ff64bf47911d08912140c31.info | Bin 0 -> 658 bytes .../05/0584375ad2f33ef4da0b276de8507487 | Bin 0 -> 5105 bytes .../05/0584375ad2f33ef4da0b276de8507487.info | Bin 0 -> 790 bytes .../05/05a69997deb9f5944a894239434f00a9 | Bin 0 -> 4329 bytes .../05/05a69997deb9f5944a894239434f00a9.info | Bin 0 -> 631 bytes .../05/05ec5cf00ca181d45a42ba1870e148c3 | Bin 14405 -> 14045 bytes .../06/068e188dddb83fb489788207ff119e08 | Bin 0 -> 4333 bytes .../06/068e188dddb83fb489788207ff119e08.info | Bin 0 -> 631 bytes .../07/07052560d042e0e4ba61076ebb2e1b94 | Bin 0 -> 22380 bytes .../07/07052560d042e0e4ba61076ebb2e1b94.info | Bin 0 -> 5061 bytes .../07052560d042e0e4ba61076ebb2e1b94.resource | Bin 0 -> 324928 bytes .../07/07bcd4e0597eb0648b7a45624f2e0594 | Bin 0 -> 4292 bytes .../07/07bcd4e0597eb0648b7a45624f2e0594.info | Bin 0 -> 6440 bytes .../08/0811e240274b8ea4a8469e82b86747b4 | Bin 0 -> 8433 bytes .../08/0811e240274b8ea4a8469e82b86747b4.info | Bin 0 -> 665 bytes .../08/0858be1afe7ac384698e357be00d670f | Bin 0 -> 22376 bytes .../08/0858be1afe7ac384698e357be00d670f.info | Bin 0 -> 3664 bytes .../0858be1afe7ac384698e357be00d670f.resource | Bin 0 -> 85120 bytes .../09/09db43b3b77bf744287ba587fea02f8b | Bin 0 -> 1012992 bytes .../09/09db43b3b77bf744287ba587fea02f8b.info | Bin 0 -> 15624 bytes .../0a/0ae132d3c08907a4d931b3ed4debc646 | Bin 0 -> 4308 bytes .../0a/0ae132d3c08907a4d931b3ed4debc646.info | Bin 0 -> 10569 bytes .../0c/0c1cf10ea69e60e4f9eb8955749f88ec | Bin 0 -> 54406 bytes .../0c/0c1cf10ea69e60e4f9eb8955749f88ec.info | Bin 0 -> 663 bytes .../0d/0d18ca862d5d9b743b42348751798528 | Bin 0 -> 22364 bytes .../0d/0d18ca862d5d9b743b42348751798528.info | Bin 0 -> 4359 bytes .../0d18ca862d5d9b743b42348751798528.resource | Bin 0 -> 42784 bytes .../0d/0d1c592fd11196848aa69fc91bca521e | Bin 0 -> 22364 bytes .../0d/0d1c592fd11196848aa69fc91bca521e.info | Bin 0 -> 5061 bytes .../0d1c592fd11196848aa69fc91bca521e.resource | Bin 0 -> 184800 bytes .../0d/0d936163b5e9a5047b5e4ba5afaf5126 | Bin 0 -> 4337 bytes .../0d/0d936163b5e9a5047b5e4ba5afaf5126.info | Bin 0 -> 637 bytes .../0d/0da37da42cf3b044ea1267da7c0d1c3f | Bin 0 -> 708488 bytes .../0d/0da37da42cf3b044ea1267da7c0d1c3f.info | Bin 0 -> 4140 bytes .../0e/0e1c54b10ce72f640a29eecbfced2363 | Bin 0 -> 22376 bytes .../0e/0e1c54b10ce72f640a29eecbfced2363.info | Bin 0 -> 3405 bytes .../0e1c54b10ce72f640a29eecbfced2363.resource | Bin 0 -> 113536 bytes .../0e/0e220b97baa73db4fab6fba879e1b024 | Bin 0 -> 22364 bytes .../0e/0e220b97baa73db4fab6fba879e1b024.info | Bin 0 -> 2887 bytes .../0e220b97baa73db4fab6fba879e1b024.resource | Bin 0 -> 88320 bytes .../0e/0e4ff6f209abadf45b1c2403b1382cdf | Bin 0 -> 22376 bytes .../0e/0e4ff6f209abadf45b1c2403b1382cdf.info | Bin 0 -> 3043 bytes .../0e4ff6f209abadf45b1c2403b1382cdf.resource | Bin 0 -> 156288 bytes .../0e/0e96081d793e1994086123e2505bcc0e | Bin 0 -> 132308 bytes .../0e/0e96081d793e1994086123e2505bcc0e.info | Bin 0 -> 29035 bytes .../0f/0f21ac54ede2fb1488c5719b33f0122d | Bin 0 -> 22380 bytes .../0f/0f21ac54ede2fb1488c5719b33f0122d.info | Bin 0 -> 4615 bytes .../0f21ac54ede2fb1488c5719b33f0122d.resource | Bin 0 -> 318560 bytes .../10/10f8d33967163484ba2752d8764afe51 | Bin 0 -> 22364 bytes .../10/10f8d33967163484ba2752d8764afe51.info | Bin 0 -> 6082 bytes .../10f8d33967163484ba2752d8764afe51.resource | Bin 0 -> 107744 bytes .../11/11b050e661ec0cf48a289a7266451e91 | Bin 0 -> 4308 bytes .../11/11b050e661ec0cf48a289a7266451e91.info | Bin 0 -> 2369 bytes .../12/124a48a5a1579224481a3f34686d56e4 | Bin 0 -> 4345 bytes .../12/124a48a5a1579224481a3f34686d56e4.info | Bin 0 -> 8845 bytes .../12/128eba63f6457ff41a65fbae1979778e | Bin 0 -> 22380 bytes .../12/128eba63f6457ff41a65fbae1979778e.info | Bin 0 -> 4252 bytes .../128eba63f6457ff41a65fbae1979778e.resource | Bin 0 -> 103424 bytes .../13/1375c26e5558daa48ae7ab8a8117cbe1 | Bin 0 -> 4325 bytes .../13/1375c26e5558daa48ae7ab8a8117cbe1.info | Bin 0 -> 628 bytes .../13/13a43e992568b8e48b4bd489b9d96f40 | Bin 0 -> 7029 bytes .../13/13a43e992568b8e48b4bd489b9d96f40.info | Bin 0 -> 641 bytes .../13/13d876e5d485004448f3e7b57eece9ab | Bin 0 -> 5497 bytes .../13/13d876e5d485004448f3e7b57eece9ab.info | Bin 0 -> 808 bytes .../14/140bd0e59d9bee94f9f0284c9eef5b32 | Bin 0 -> 4300 bytes .../14/140bd0e59d9bee94f9f0284c9eef5b32.info | Bin 0 -> 2370 bytes .../14/1459d94e0a5b7af4a8a3fa067ae575e9 | Bin 0 -> 4305 bytes .../14/1459d94e0a5b7af4a8a3fa067ae575e9.info | Bin 0 -> 608 bytes .../14/14d8c2eed68260f4d82a70201f2f19eb | Bin 0 -> 22376 bytes .../14/14d8c2eed68260f4d82a70201f2f19eb.info | Bin 0 -> 3122 bytes .../14d8c2eed68260f4d82a70201f2f19eb.resource | Bin 0 -> 118880 bytes .../15/15041afb62e0f4f4382863e73ff1eeb5 | Bin 0 -> 4333 bytes .../15/15041afb62e0f4f4382863e73ff1eeb5.info | Bin 0 -> 631 bytes .../17/1731d642c0b250b48bb8cdfb153d9792 | Bin 0 -> 5505 bytes .../17/1731d642c0b250b48bb8cdfb153d9792.info | Bin 0 -> 790 bytes .../17/1762632d09b8d184b80f483612ffb5f8 | Bin 0 -> 22364 bytes .../17/1762632d09b8d184b80f483612ffb5f8.info | Bin 0 -> 4962 bytes .../1762632d09b8d184b80f483612ffb5f8.resource | Bin 0 -> 154432 bytes .../18/18ca642fc8ed05d4c8c6063b48440d0b | Bin 0 -> 22364 bytes .../18/18ca642fc8ed05d4c8c6063b48440d0b.info | Bin 0 -> 4921 bytes .../18ca642fc8ed05d4c8c6063b48440d0b.resource | Bin 0 -> 184800 bytes .../19/1958d9dc4683f204793b607c688da2d7 | Bin 0 -> 22380 bytes .../19/1958d9dc4683f204793b607c688da2d7.info | Bin 0 -> 6462 bytes .../1958d9dc4683f204793b607c688da2d7.resource | Bin 0 -> 70688 bytes .../1a/1a125d9df683e2a49b12babced273360 | Bin 0 -> 11289 bytes .../1a/1a125d9df683e2a49b12babced273360.info | Bin 0 -> 781 bytes .../1a/1ab2780fe1da2544b86a1020e5f638e2 | Bin 0 -> 4313 bytes .../1a/1ab2780fe1da2544b86a1020e5f638e2.info | Bin 0 -> 616 bytes .../1a/1acda2a2584a8fb4683ea56799b27fa0 | Bin 0 -> 74984 bytes .../1a/1acda2a2584a8fb4683ea56799b27fa0.info | Bin 0 -> 14552 bytes .../1b/1b7c76f85bf1034498fefaa3ec8e600f | Bin 0 -> 22380 bytes .../1b/1b7c76f85bf1034498fefaa3ec8e600f.info | Bin 0 -> 6351 bytes .../1b7c76f85bf1034498fefaa3ec8e600f.resource | Bin 0 -> 68800 bytes .../1c/1c0f168f6c6fc724682cb52006182fae | Bin 0 -> 1407548 bytes .../1c/1c0f168f6c6fc724682cb52006182fae.info | Bin 0 -> 19448 bytes .../1c/1c7547f24e8b4864d87d59903b1f8c40 | Bin 0 -> 4301 bytes .../1c/1c7547f24e8b4864d87d59903b1f8c40.info | Bin 0 -> 602 bytes .../1d/1dfef04d7ab9ced4093c828025f5bf06 | Bin 0 -> 22364 bytes .../1d/1dfef04d7ab9ced4093c828025f5bf06.info | Bin 0 -> 2872 bytes .../1dfef04d7ab9ced4093c828025f5bf06.resource | Bin 0 -> 69088 bytes .../1f/1f0522eaef74d984591c060d05a095c8 | Bin 0 -> 11021 bytes .../1f/1f0522eaef74d984591c060d05a095c8.info | Bin 0 -> 647 bytes .../1f/1f32883eed859804dbb0c5fedac91496 | Bin 0 -> 20913 bytes .../1f/1f32883eed859804dbb0c5fedac91496.info | Bin 0 -> 793 bytes .../1f/1fcf8377413b60c44afff7b2e4efd8f7 | Bin 0 -> 4325 bytes .../1f/1fcf8377413b60c44afff7b2e4efd8f7.info | Bin 0 -> 623 bytes .../20/202a6e24b48d1684398409c47161adcb | Bin 0 -> 14921 bytes .../20/202a6e24b48d1684398409c47161adcb.info | Bin 0 -> 772 bytes .../21/210c1550425ed90419d73be09bde0486 | Bin 0 -> 14900 bytes .../21/210c1550425ed90419d73be09bde0486.info | Bin 0 -> 2953 bytes .../22/220813dc74ddc714fa8b1db1e6416e27 | Bin 0 -> 22376 bytes .../22/220813dc74ddc714fa8b1db1e6416e27.info | Bin 0 -> 2883 bytes .../220813dc74ddc714fa8b1db1e6416e27.resource | Bin 0 -> 132768 bytes .../23/23003f298f14cc24d9ff3988966f6292 | Bin 0 -> 22376 bytes .../23/23003f298f14cc24d9ff3988966f6292.info | Bin 0 -> 6370 bytes .../23003f298f14cc24d9ff3988966f6292.resource | Bin 0 -> 324256 bytes .../23/23932eb1f1528d34786ffa3381cb5922 | Bin 0 -> 22380 bytes .../23/23932eb1f1528d34786ffa3381cb5922.info | Bin 0 -> 4766 bytes .../23932eb1f1528d34786ffa3381cb5922.resource | Bin 0 -> 95200 bytes .../24/247c8212baa2086498cbea8e56777e78.info | Bin 15280 -> 12120 bytes .../24/24c7d7d77dd0d2a4b8e1ad129b170ee3 | Bin 0 -> 7593 bytes .../24/24c7d7d77dd0d2a4b8e1ad129b170ee3.info | Bin 0 -> 652 bytes .../24/24e73955ba8338f41a24cd3aea0285a6 | Bin 0 -> 4300 bytes .../24/24e73955ba8338f41a24cd3aea0285a6.info | Bin 0 -> 11000 bytes .../25/255333d57084e4e46b3d948279746a47 | Bin 0 -> 4268 bytes .../25/255333d57084e4e46b3d948279746a47.info | Bin 0 -> 1755 bytes .../25/25bc1e9c1d9042d4781cb174093aaaed | Bin 0 -> 4300 bytes .../25/25bc1e9c1d9042d4781cb174093aaaed.info | Bin 0 -> 1222 bytes .../27/274ae687a94e2444b85ce2bcf56c1df3 | Bin 0 -> 4317 bytes .../27/274ae687a94e2444b85ce2bcf56c1df3.info | Bin 0 -> 617 bytes .../27/27f3faef5a63db84c9cbac06e94ab7b3 | Bin 0 -> 74984 bytes .../27/27f3faef5a63db84c9cbac06e94ab7b3.info | Bin 0 -> 14558 bytes .../29/29abf75f7265ccb45b799eac4ab0ca94 | Bin 0 -> 5813 bytes .../29/29abf75f7265ccb45b799eac4ab0ca94.info | Bin 0 -> 655 bytes .../29/29e3e4511966ba94d8ba0b98c6c62f82 | Bin 0 -> 33917 bytes .../29/29e3e4511966ba94d8ba0b98c6c62f82.info | Bin 0 -> 766 bytes .../2a/2ad1e469d4e3e04489f9a36419f1a4f8 | Bin 0 -> 8045 bytes .../2a/2ad1e469d4e3e04489f9a36419f1a4f8.info | Bin 0 -> 635 bytes .../2c/2c93df0cf367b8941a8c03c309134408 | Bin 0 -> 22376 bytes .../2c/2c93df0cf367b8941a8c03c309134408.info | Bin 0 -> 2933 bytes .../2c93df0cf367b8941a8c03c309134408.resource | Bin 0 -> 685024 bytes .../2d/2d01d8c885250364bac66a45791f02e1 | Bin 0 -> 4300 bytes .../2d/2d01d8c885250364bac66a45791f02e1.info | Bin 0 -> 3638 bytes .../2d/2db89a771043d7b4eb9d26622f6b97c7 | Bin 0 -> 22928 bytes .../2d/2db89a771043d7b4eb9d26622f6b97c7.info | Bin 0 -> 5437 bytes .../2e/2ec0e14254efe4040b7ae3a0da46d5a6 | Bin 0 -> 22376 bytes .../2e/2ec0e14254efe4040b7ae3a0da46d5a6.info | Bin 0 -> 3600 bytes .../2ec0e14254efe4040b7ae3a0da46d5a6.resource | Bin 0 -> 37952 bytes .../2f/2f105d731b4539940bf471aeb837ac94 | Bin 0 -> 4325 bytes .../2f/2f105d731b4539940bf471aeb837ac94.info | Bin 0 -> 624 bytes .../2f/2f4c3e904395a784199b9a0e3166fd96 | Bin 0 -> 4325 bytes .../2f/2f4c3e904395a784199b9a0e3166fd96.info | Bin 0 -> 628 bytes .../2f/2f4d6eb6d012eea4991c7a63f81fd083 | Bin 0 -> 22364 bytes .../2f/2f4d6eb6d012eea4991c7a63f81fd083.info | Bin 0 -> 5406 bytes .../2f4d6eb6d012eea4991c7a63f81fd083.resource | Bin 0 -> 132672 bytes .../2f/2f800f3498cfcb94a8f6a5f8553d8aef | Bin 0 -> 22364 bytes .../2f/2f800f3498cfcb94a8f6a5f8553d8aef.info | Bin 0 -> 3238 bytes .../2f800f3498cfcb94a8f6a5f8553d8aef.resource | Bin 0 -> 53888 bytes .../30/30032368544f1a341976db391b260507 | Bin 0 -> 17961 bytes .../30/30032368544f1a341976db391b260507.info | Bin 0 -> 778 bytes .../30/30dfcd9dafb9bea459e0b03505e418a1 | Bin 0 -> 4317 bytes .../30/30dfcd9dafb9bea459e0b03505e418a1.info | Bin 0 -> 618 bytes .../32/32c1c9a5bbab2e54280027c0ecaf42db | Bin 0 -> 6241 bytes .../32/32c1c9a5bbab2e54280027c0ecaf42db.info | Bin 0 -> 802 bytes .../36/36f326ccef0fe5546befe26be5ba337f | Bin 0 -> 22364 bytes .../36/36f326ccef0fe5546befe26be5ba337f.info | Bin 0 -> 4145 bytes .../36f326ccef0fe5546befe26be5ba337f.resource | Bin 0 -> 18592 bytes .../37/37b6eb5cae1aaba4086f32bccf0cb47f | Bin 0 -> 22364 bytes .../37/37b6eb5cae1aaba4086f32bccf0cb47f.info | Bin 0 -> 3788 bytes .../37b6eb5cae1aaba4086f32bccf0cb47f.resource | Bin 0 -> 27520 bytes .../38/380bbbca09a806c4c8607dd111d9ed8f | Bin 0 -> 4292 bytes .../38/380bbbca09a806c4c8607dd111d9ed8f.info | Bin 0 -> 5531 bytes .../38/38392bbe7ae2c464daae1fe24a1147c1 | Bin 0 -> 4337 bytes .../38/38392bbe7ae2c464daae1fe24a1147c1.info | Bin 0 -> 634 bytes .../3945477939724e24aa27f23a96506610} | Bin 6389 -> 5293 bytes .../39/3945477939724e24aa27f23a96506610.info | Bin 0 -> 630 bytes .../39/39bd76f2a1f5f3d4fa65ddb1d3c4e978 | Bin 0 -> 4325 bytes .../39/39bd76f2a1f5f3d4fa65ddb1d3c4e978.info | Bin 0 -> 630 bytes .../39/39cd38d16e194ab47ae7ae092c5f9e07 | Bin 0 -> 22376 bytes .../39/39cd38d16e194ab47ae7ae092c5f9e07.info | Bin 0 -> 3933 bytes .../39cd38d16e194ab47ae7ae092c5f9e07.resource | Bin 0 -> 33056 bytes .../39/39d2fc39182c11e4bba4ed719d778c0e | Bin 0 -> 22380 bytes .../39/39d2fc39182c11e4bba4ed719d778c0e.info | Bin 0 -> 4556 bytes .../39d2fc39182c11e4bba4ed719d778c0e.resource | Bin 0 -> 512704 bytes .../3b/3bad6fb5cb07dd44b88e0e1857e222be | Bin 0 -> 22364 bytes .../3b/3bad6fb5cb07dd44b88e0e1857e222be.info | Bin 0 -> 3464 bytes .../3bad6fb5cb07dd44b88e0e1857e222be.resource | Bin 0 -> 35712 bytes .../3b/3bbb445147c574240a8b87a1193788b5 | Bin 0 -> 4292 bytes .../3b/3bbb445147c574240a8b87a1193788b5.info | Bin 0 -> 1151 bytes .../3c/3c433e134e4719444b65bf064a77e22e | Bin 0 -> 4308 bytes .../3c/3c433e134e4719444b65bf064a77e22e.info | Bin 0 -> 7643 bytes .../3d/3d938759d8b7a414988ec3261fb5265d | Bin 0 -> 4300 bytes .../3d/3d938759d8b7a414988ec3261fb5265d.info | Bin 0 -> 9992 bytes .../3e/3e2543c4beea3eb4e9ea1e02a4bc2df2 | Bin 0 -> 4301 bytes .../3e/3e2543c4beea3eb4e9ea1e02a4bc2df2.info | Bin 0 -> 604 bytes .../3e/3eefe61359ea80b469796e4eebb3c81b | Bin 0 -> 22376 bytes .../3e/3eefe61359ea80b469796e4eebb3c81b.info | Bin 0 -> 5136 bytes .../3eefe61359ea80b469796e4eebb3c81b.resource | Bin 0 -> 1138176 bytes .../3f/3f39fc63a93686e4a8e9168ee73f24d9 | Bin 0 -> 4300 bytes .../3f/3f39fc63a93686e4a8e9168ee73f24d9.info | Bin 0 -> 652 bytes .../3f/3f5766a8b67794141ac19c1a51d27083 | Bin 0 -> 4300 bytes .../3f/3f5766a8b67794141ac19c1a51d27083.info | Bin 0 -> 11546 bytes .../40/406981998f1234442a4f2eb50cfe07e1 | Bin 0 -> 4300 bytes .../40/406981998f1234442a4f2eb50cfe07e1.info | Bin 0 -> 5194 bytes .../40/40af2f692be87864ba388a27fcac9ed8 | Bin 0 -> 4305 bytes .../40/40af2f692be87864ba388a27fcac9ed8.info | Bin 0 -> 608 bytes .../40/40c8cba0bc8712e4ead8747ee58dd141 | Bin 0 -> 4300 bytes .../40/40c8cba0bc8712e4ead8747ee58dd141.info | Bin 0 -> 654 bytes .../40/40fa752affdc6cf45a47396764154085 | Bin 0 -> 4300 bytes .../40/40fa752affdc6cf45a47396764154085.info | Bin 0 -> 6641 bytes .../41/417e639b66cd3a24e9c5312be99ce3bd | Bin 0 -> 4308 bytes .../41/417e639b66cd3a24e9c5312be99ce3bd.info | Bin 0 -> 6493 bytes .../41/4188a37a2f8da3b4084af4e3ee9b6a31 | Bin 0 -> 22364 bytes .../41/4188a37a2f8da3b4084af4e3ee9b6a31.info | Bin 0 -> 5094 bytes .../4188a37a2f8da3b4084af4e3ee9b6a31.resource | Bin 0 -> 61952 bytes .../42/425031c746a6df44aa1dfdb17c2b8b45 | Bin 0 -> 4308 bytes .../42/425031c746a6df44aa1dfdb17c2b8b45.info | Bin 0 -> 6797 bytes .../42/427c3f6e73f47194b8f02cdf53023b15 | Bin 0 -> 10816 bytes .../42/427c3f6e73f47194b8f02cdf53023b15.info | Bin 0 -> 2852 bytes .../42/429a484b95998f84eaa98fa068caa5e9 | Bin 0 -> 10685 bytes .../42/429a484b95998f84eaa98fa068caa5e9.info | Bin 0 -> 778 bytes .../43/43b10deca54ca524c8cd9a0fcb622325 | Bin 0 -> 44570 bytes .../43/43b10deca54ca524c8cd9a0fcb622325.info | Bin 0 -> 691 bytes .../43/43e53a985809f0949b9a42cc2a6888c9 | Bin 0 -> 14773 bytes .../43/43e53a985809f0949b9a42cc2a6888c9.info | Bin 0 -> 808 bytes .../44/44a536d7fede4b140b3647935ea8c8fa | Bin 0 -> 4337 bytes .../44/44a536d7fede4b140b3647935ea8c8fa.info | Bin 0 -> 634 bytes .../44/44cb57742f235524189e5d8af1c4f3cc | Bin 0 -> 11481 bytes .../44/44cb57742f235524189e5d8af1c4f3cc.info | Bin 0 -> 641 bytes .../45/452b45a02bfe51243a19acb7251c865b | Bin 0 -> 4337 bytes .../45/452b45a02bfe51243a19acb7251c865b.info | Bin 0 -> 634 bytes .../45/456569c675d05804d94bbf510b956cbe | Bin 0 -> 708504 bytes .../45/456569c675d05804d94bbf510b956cbe.info | Bin 0 -> 21609 bytes .../46/465e24e196f24c3498bbd20246f9f1ca | Bin 0 -> 22376 bytes .../46/465e24e196f24c3498bbd20246f9f1ca.info | Bin 0 -> 4944 bytes .../465e24e196f24c3498bbd20246f9f1ca.resource | Bin 0 -> 34432 bytes .../46/46bb1e3e014c28740ae8c96427da5270 | Bin 0 -> 22380 bytes .../46/46bb1e3e014c28740ae8c96427da5270.info | Bin 0 -> 3693 bytes .../46bb1e3e014c28740ae8c96427da5270.resource | Bin 0 -> 97728 bytes .../46/46f8e9e70f68ee3418ad85992778c116 | Bin 0 -> 4949 bytes .../46/46f8e9e70f68ee3418ad85992778c116.info | Bin 0 -> 793 bytes .../46/46fe9e0b23166454c8cb73040321d78c | Bin 0 -> 9881 bytes .../46/46fe9e0b23166454c8cb73040321d78c.info | Bin 0 -> 644 bytes .../47/47b5e90896f0e004c85bebd26e6057e2 | Bin 0 -> 22380 bytes .../47/47b5e90896f0e004c85bebd26e6057e2.info | Bin 0 -> 1812 bytes .../47b5e90896f0e004c85bebd26e6057e2.resource | Bin 0 -> 95136 bytes .../48/48e7e7e907cb4de4e89ebb5f2ecb5674 | Bin 0 -> 22380 bytes .../48/48e7e7e907cb4de4e89ebb5f2ecb5674.info | Bin 0 -> 4967 bytes .../48e7e7e907cb4de4e89ebb5f2ecb5674.resource | Bin 0 -> 100864 bytes .../49/49a60120b932b59409171f5ff611b639 | Bin 0 -> 6217 bytes .../49/49a60120b932b59409171f5ff611b639.info | Bin 0 -> 799 bytes .../49/49a86c1078ce4314b9c4224560e031b9 | Bin 0 -> 5757 bytes .../49/49a86c1078ce4314b9c4224560e031b9.info | Bin 0 -> 635 bytes .../4b/4b6669fb4e4df9c48926f02b694be9d1 | Bin 0 -> 4333 bytes .../4b/4b6669fb4e4df9c48926f02b694be9d1.info | Bin 0 -> 631 bytes .../4b/4bb527c4eb5b08c44b8d24a14a6ab3ce | Bin 0 -> 22380 bytes .../4b/4bb527c4eb5b08c44b8d24a14a6ab3ce.info | Bin 0 -> 5128 bytes .../4bb527c4eb5b08c44b8d24a14a6ab3ce.resource | Bin 0 -> 458048 bytes .../4c/4cab18f37a1da964ba73601017942665 | Bin 0 -> 4333 bytes .../4c/4cab18f37a1da964ba73601017942665.info | Bin 0 -> 632 bytes .../4d/4d1c07a6449b0ca439ee6fac5f6f7d83 | Bin 0 -> 5061 bytes .../4d/4d1c07a6449b0ca439ee6fac5f6f7d83.info | Bin 0 -> 805 bytes .../4d/4d23d5e2668be9f4b893c46b3802077f | Bin 0 -> 22380 bytes .../4d/4d23d5e2668be9f4b893c46b3802077f.info | Bin 0 -> 3790 bytes .../4d23d5e2668be9f4b893c46b3802077f.resource | Bin 0 -> 117152 bytes .../4d/4d293c8e162f3874b982baadd71153d2 | Bin 0 -> 4276 bytes .../4d/4d293c8e162f3874b982baadd71153d2.info | Bin 0 -> 2103 bytes .../4e/4e2e74504a83fbd438147cfda37cf3d0 | Bin 0 -> 22376 bytes .../4e/4e2e74504a83fbd438147cfda37cf3d0.info | Bin 0 -> 2276 bytes .../4e2e74504a83fbd438147cfda37cf3d0.resource | Bin 0 -> 95584 bytes .../4f/4f35fa249b5008c44ac2998be6f82d4d | Bin 0 -> 4268 bytes .../4f/4f35fa249b5008c44ac2998be6f82d4d.info | Bin 0 -> 619 bytes .../4f/4fee3982c922af44babfca8a11dffaca | Bin 0 -> 22364 bytes .../4f/4fee3982c922af44babfca8a11dffaca.info | Bin 0 -> 4067 bytes .../4fee3982c922af44babfca8a11dffaca.resource | Bin 0 -> 40064 bytes .../50/501eb8b744f73714fbe7dbdd5e3ef66e | Bin 0 -> 7061 bytes .../50/501eb8b744f73714fbe7dbdd5e3ef66e.info | Bin 0 -> 655 bytes .../50/50ed5a5fe7b652a46a0b6f6dadc9a050 | Bin 11293 -> 11165 bytes .../51/510c6e0b8b5c948458c2b4bc3de5a637 | Bin 0 -> 4308 bytes .../51/510c6e0b8b5c948458c2b4bc3de5a637.info | Bin 0 -> 8816 bytes .../51/51747ad9fd4c5564e873dbae5171e257 | Bin 0 -> 22380 bytes .../51/51747ad9fd4c5564e873dbae5171e257.info | Bin 0 -> 5871 bytes .../51747ad9fd4c5564e873dbae5171e257.resource | Bin 0 -> 92320 bytes .../51/518ba9936d20b554f98e8472b29da0b5 | Bin 0 -> 22380 bytes .../51/518ba9936d20b554f98e8472b29da0b5.info | Bin 0 -> 5444 bytes .../518ba9936d20b554f98e8472b29da0b5.resource | Bin 0 -> 382240 bytes .../52/5240357a2468cdc4291b266bee3cb9b9 | Bin 0 -> 5165 bytes .../52/5240357a2468cdc4291b266bee3cb9b9.info | Bin 0 -> 829 bytes .../52/526033aedfcd8fa4893bd857ca331979 | Bin 0 -> 22364 bytes .../52/526033aedfcd8fa4893bd857ca331979.info | Bin 0 -> 3644 bytes .../526033aedfcd8fa4893bd857ca331979.resource | Bin 0 -> 68448 bytes .../53/53cd2ef2dd3d5d64e96af4420220d1d2 | Bin 0 -> 6961 bytes .../53/53cd2ef2dd3d5d64e96af4420220d1d2.info | Bin 0 -> 781 bytes .../55/554ae4ff7aa47c0478d95d78e6a9be6b | Bin 0 -> 22364 bytes .../55/554ae4ff7aa47c0478d95d78e6a9be6b.info | Bin 0 -> 4207 bytes .../554ae4ff7aa47c0478d95d78e6a9be6b.resource | Bin 0 -> 47040 bytes .../55/55da3adbb5d30254c97687991608dda0 | Bin 0 -> 11785 bytes .../55/55da3adbb5d30254c97687991608dda0.info | Bin 0 -> 662 bytes .../56/56377e28a47008245871ca7b435044c4 | Bin 0 -> 65308 bytes .../56/56377e28a47008245871ca7b435044c4.info | Bin 0 -> 11095 bytes .../56/5697c26ee2ef0c848996640f6a3d3432 | Bin 0 -> 14500 bytes .../56/5697c26ee2ef0c848996640f6a3d3432.info | Bin 0 -> 3807 bytes .../57/57468e6cbae21894fa42c90413c294ff | Bin 0 -> 4985 bytes .../57/57468e6cbae21894fa42c90413c294ff.info | Bin 0 -> 814 bytes .../57/57d4c0e09fe27de44a83d11d4f4969c7 | Bin 0 -> 4316 bytes .../57/57d4c0e09fe27de44a83d11d4f4969c7.info | Bin 0 -> 685 bytes .../58/5828f252c3c228f4b931f66c21e525c4 | Bin 0 -> 4901 bytes .../58/5828f252c3c228f4b931f66c21e525c4.info | Bin 0 -> 653 bytes .../58/5890e3cad70bea64d91aef9145ba3454 | Bin 0 -> 28509 bytes .../58/5890e3cad70bea64d91aef9145ba3454.info | Bin 0 -> 656 bytes .../59/5930d7d2e705ea74ca30ee6652eb4571 | Bin 0 -> 22380 bytes .../59/5930d7d2e705ea74ca30ee6652eb4571.info | Bin 0 -> 3669 bytes .../5930d7d2e705ea74ca30ee6652eb4571.resource | Bin 0 -> 85408 bytes .../5a/5a3622562855c9a40a14846ffdc8bfe4 | Bin 0 -> 5717 bytes .../5a/5a3622562855c9a40a14846ffdc8bfe4.info | Bin 0 -> 802 bytes .../5a/5ae009a233e5930428d03c07d819d7c8 | Bin 4849 -> 4845 bytes .../5a/5ae009a233e5930428d03c07d819d7c8.info | Bin 641 -> 638 bytes .../5b/5ba22c80948c94e44a82b9fd1b3abd0d | Bin 0 -> 7569 bytes .../5b/5ba22c80948c94e44a82b9fd1b3abd0d.info | Bin 0 -> 640 bytes .../5b/5be56a64c3c6c434eb746320e06a27ac | Bin 0 -> 4300 bytes .../5b/5be56a64c3c6c434eb746320e06a27ac.info | Bin 0 -> 8115 bytes .../5d/5dea26c1298d78149af149b8bd73ff63 | Bin 0 -> 22376 bytes .../5d/5dea26c1298d78149af149b8bd73ff63.info | Bin 0 -> 3469 bytes .../5dea26c1298d78149af149b8bd73ff63.resource | Bin 0 -> 112864 bytes .../5d/5dff85aa6aacb32469945a41190eadf8 | Bin 0 -> 22380 bytes .../5d/5dff85aa6aacb32469945a41190eadf8.info | Bin 0 -> 2473 bytes .../5dff85aa6aacb32469945a41190eadf8.resource | Bin 0 -> 74496 bytes .../5f/5f0129f65bc822d429cfad1b63fb9db4 | Bin 0 -> 4308 bytes .../5f/5f0129f65bc822d429cfad1b63fb9db4.info | Bin 0 -> 6432 bytes .../5f/5f3294e06115d0047a2ac7659a11b168 | Bin 0 -> 5197 bytes .../5f/5f3294e06115d0047a2ac7659a11b168.info | Bin 0 -> 790 bytes .../5f/5f649883aab635740a41d91edf1080a4 | Bin 0 -> 4316 bytes .../5f/5f649883aab635740a41d91edf1080a4.info | Bin 0 -> 7744 bytes .../5f/5fa42bb9e52706a42b8a1eaf0b54326a | Bin 0 -> 4300 bytes .../5f/5fa42bb9e52706a42b8a1eaf0b54326a.info | Bin 0 -> 13413 bytes .../60/6043f3be9a21bd74281f9770463bea00 | Bin 0 -> 7173 bytes .../60/6043f3be9a21bd74281f9770463bea00.info | Bin 0 -> 826 bytes .../61/616519d6531cad84cbd01281cc9742e0 | Bin 0 -> 2805636 bytes .../61/616519d6531cad84cbd01281cc9742e0.info | Bin 0 -> 7527 bytes .../61/61f4796ee4f00314e8d8b1ad39a78c28 | Bin 0 -> 4301 bytes .../61/61f4796ee4f00314e8d8b1ad39a78c28.info | Bin 0 -> 602 bytes .../62/62bdcbc5f3d6b3f43844cc7b849f0448 | Bin 0 -> 22364 bytes .../62/62bdcbc5f3d6b3f43844cc7b849f0448.info | Bin 0 -> 3002 bytes .../62bdcbc5f3d6b3f43844cc7b849f0448.resource | Bin 0 -> 60992 bytes .../63/6337aa7e7823eee43af8ffe676935e74 | Bin 0 -> 44678 bytes .../63/6337aa7e7823eee43af8ffe676935e74.info | Bin 0 -> 654 bytes .../63/634b98c3ef8bc6d4f834f80a4613a4a4 | Bin 0 -> 5809 bytes .../63/634b98c3ef8bc6d4f834f80a4613a4a4.info | Bin 0 -> 796 bytes .../63/63bf984cc50332446bc0517a4813d447 | Bin 0 -> 22380 bytes .../63/63bf984cc50332446bc0517a4813d447.info | Bin 0 -> 5628 bytes .../63bf984cc50332446bc0517a4813d447.resource | Bin 0 -> 491776 bytes .../65/652445d40bda96847993b3a366b80b34 | Bin 0 -> 22380 bytes .../65/652445d40bda96847993b3a366b80b34.info | Bin 0 -> 3592 bytes .../652445d40bda96847993b3a366b80b34.resource | Bin 0 -> 669984 bytes .../65/6596adb54aab23a40abe01461d35a26f | Bin 0 -> 4325 bytes .../65/6596adb54aab23a40abe01461d35a26f.info | Bin 0 -> 630 bytes .../65/65ef702aaa09d3f46a75659678b1a711 | Bin 0 -> 5837 bytes .../65/65ef702aaa09d3f46a75659678b1a711.info | Bin 0 -> 799 bytes .../66/667230ade3b20b641a0ba08bdfd760fc | Bin 0 -> 6813 bytes .../66/667230ade3b20b641a0ba08bdfd760fc.info | Bin 0 -> 805 bytes .../67/6729a932de5127b419aacfd9be7dde0d | Bin 0 -> 4308 bytes .../67/6729a932de5127b419aacfd9be7dde0d.info | Bin 0 -> 12286 bytes .../67/67867a20919f7db45a2e7034fda1c28e | Bin 0 -> 7521 bytes .../67/67867a20919f7db45a2e7034fda1c28e.info | Bin 0 -> 673 bytes .../67/6789d499b24f8964c8bb06e21008e546 | Bin 0 -> 75000 bytes .../67/6789d499b24f8964c8bb06e21008e546.info | Bin 0 -> 16379 bytes .../67/67c31797bbf07114eb2d50aa3ae184e9 | Bin 0 -> 4292 bytes .../67/67c31797bbf07114eb2d50aa3ae184e9.info | Bin 0 -> 10866 bytes .../68/6820d5b6e4c56b748b1afe3f5d550ee7 | Bin 0 -> 22376 bytes .../68/6820d5b6e4c56b748b1afe3f5d550ee7.info | Bin 0 -> 4750 bytes .../6820d5b6e4c56b748b1afe3f5d550ee7.resource | Bin 0 -> 1101344 bytes .../69/6948c755e9613734dbac166d770c8e3e | Bin 0 -> 6649 bytes .../69/6948c755e9613734dbac166d770c8e3e.info | Bin 0 -> 826 bytes .../69/69cad530c565c714491a326c21accb90 | Bin 0 -> 5401 bytes .../69/69cad530c565c714491a326c21accb90.info | Bin 0 -> 838 bytes .../6a/6a2a42a4396b3ec4fbe844a811b77445 | Bin 0 -> 22364 bytes .../6a/6a2a42a4396b3ec4fbe844a811b77445.info | Bin 0 -> 3449 bytes .../6a2a42a4396b3ec4fbe844a811b77445.resource | Bin 0 -> 24864 bytes .../6a/6ad167161b0bf8e4d9c038db358e0a28 | Bin 0 -> 5973 bytes .../6a/6ad167161b0bf8e4d9c038db358e0a28.info | Bin 0 -> 871 bytes .../6a/6ad90a1b9664a154592fabedc7cef551 | Bin 0 -> 22364 bytes .../6a/6ad90a1b9664a154592fabedc7cef551.info | Bin 0 -> 3550 bytes .../6ad90a1b9664a154592fabedc7cef551.resource | Bin 0 -> 67136 bytes .../6b/6b259143c09ffc447ad059e5b8d8cf89 | Bin 0 -> 4284 bytes .../6b/6b259143c09ffc447ad059e5b8d8cf89.info | Bin 0 -> 967 bytes .../6b/6bca9ccf900ccc84c887d783321d27e2 | Bin 0 -> 11441 bytes .../6b/6bca9ccf900ccc84c887d783321d27e2.info | Bin 0 -> 641 bytes .../6d/6d60d25020af6fb4f8d436244db7cc4b | Bin 0 -> 4325 bytes .../6d/6d60d25020af6fb4f8d436244db7cc4b.info | Bin 0 -> 627 bytes .../6e/6e0f456570268ff49a58a019080ee045 | Bin 0 -> 49404 bytes .../6e/6e0f456570268ff49a58a019080ee045.info | Bin 0 -> 9765 bytes .../6e/6e8b24558e6899742b276a1b6c480de1 | Bin 0 -> 4308 bytes .../6e/6e8b24558e6899742b276a1b6c480de1.info | Bin 0 -> 1229 bytes .../6e/6e984feb46a04284e8c6ce4ebfd791d0 | Bin 0 -> 22364 bytes .../6e/6e984feb46a04284e8c6ce4ebfd791d0.info | Bin 0 -> 3564 bytes .../6e984feb46a04284e8c6ce4ebfd791d0.resource | Bin 0 -> 65216 bytes .../6f/6f3bba2c36dd79242b3157dbcd876bf2 | Bin 0 -> 5465 bytes .../6f/6f3bba2c36dd79242b3157dbcd876bf2.info | Bin 0 -> 775 bytes .../6f/6fa11a15b6830ea40808c51f7a5f0a4e | Bin 0 -> 4325 bytes .../6f/6fa11a15b6830ea40808c51f7a5f0a4e.info | Bin 0 -> 630 bytes .../6f/6fdc84052ddcc024c9c9bafadc8c591e | Bin 0 -> 22364 bytes .../6f/6fdc84052ddcc024c9c9bafadc8c591e.info | Bin 0 -> 4403 bytes .../6fdc84052ddcc024c9c9bafadc8c591e.resource | Bin 0 -> 118176 bytes .../71/7113854dded09be418cf3be1158d444c | Bin 0 -> 22388 bytes .../71/7113854dded09be418cf3be1158d444c.info | Bin 0 -> 2326 bytes .../7113854dded09be418cf3be1158d444c.resource | Bin 0 -> 95136 bytes .../71/712cd3a70a5a1da41a6594aac6a97abe | Bin 0 -> 4268 bytes .../71/712cd3a70a5a1da41a6594aac6a97abe.info | Bin 0 -> 18585 bytes .../71/716aaae09f0c5774a972f0bacd5e5e22 | Bin 0 -> 22380 bytes .../71/716aaae09f0c5774a972f0bacd5e5e22.info | Bin 0 -> 4431 bytes .../716aaae09f0c5774a972f0bacd5e5e22.resource | Bin 0 -> 468256 bytes .../73/7346a42905a29b347b1f492e8ad7b49f | Bin 0 -> 13033 bytes .../73/7346a42905a29b347b1f492e8ad7b49f.info | Bin 0 -> 673 bytes .../73/737a6618d669e4740862cd8ddf59e793 | Bin 0 -> 22376 bytes .../73/737a6618d669e4740862cd8ddf59e793.info | Bin 0 -> 2802 bytes .../737a6618d669e4740862cd8ddf59e793.resource | Bin 0 -> 42144 bytes .../73/73a0556bda803bf4e898751dcfcf21a8 | Bin 0 -> 8897 bytes .../73/73a0556bda803bf4e898751dcfcf21a8.info | Bin 0 -> 640 bytes .../73/73ac470d3d909d645a6c89a4664b6849 | Bin 0 -> 4300 bytes .../73/73ac470d3d909d645a6c89a4664b6849.info | Bin 0 -> 1311 bytes .../74/74068c08db651d34f81de9affa61f55d | Bin 0 -> 22364 bytes .../74/74068c08db651d34f81de9affa61f55d.info | Bin 0 -> 3081 bytes .../74068c08db651d34f81de9affa61f55d.resource | Bin 0 -> 70912 bytes .../74/747254780f5d81b40b16acac3b8f9585 | Bin 0 -> 22364 bytes .../74/747254780f5d81b40b16acac3b8f9585.info | Bin 0 -> 4918 bytes .../747254780f5d81b40b16acac3b8f9585.resource | Bin 0 -> 95264 bytes .../75/75bd1350b322bc149ad4b79c719cb687 | Bin 0 -> 4308 bytes .../75/75bd1350b322bc149ad4b79c719cb687.info | Bin 0 -> 8216 bytes .../77/771a37fff499d604b9560d415e371d5e | Bin 0 -> 5352 bytes .../77/771a37fff499d604b9560d415e371d5e.info | Bin 0 -> 656 bytes .../77/77a23888f82e2ab4c8bc825f20235e1e | Bin 0 -> 4325 bytes .../77/77a23888f82e2ab4c8bc825f20235e1e.info | Bin 0 -> 627 bytes .../77/77b322b27d7d39f4d91e479d19065d50 | Bin 0 -> 74996 bytes .../77/77b322b27d7d39f4d91e479d19065d50.info | Bin 0 -> 17189 bytes .../78/783750eec4c41da428b7651515146d14 | Bin 0 -> 8981 bytes .../78/783750eec4c41da428b7651515146d14.info | Bin 0 -> 805 bytes .../78/787d7485aa6482341a9f55fa37fb84f1 | Bin 0 -> 51014 bytes .../78/787d7485aa6482341a9f55fa37fb84f1.info | Bin 0 -> 664 bytes .../79/7916cbf0a83b8494f960b9e88aa45a90 | Bin 0 -> 22376 bytes .../79/7916cbf0a83b8494f960b9e88aa45a90.info | Bin 0 -> 6064 bytes .../7916cbf0a83b8494f960b9e88aa45a90.resource | Bin 0 -> 264800 bytes .../79/79e7ef0af37bbcb40ab89c4cc2481018 | Bin 0 -> 8221 bytes .../79/79e7ef0af37bbcb40ab89c4cc2481018.info | Bin 0 -> 823 bytes .../79/79ebbc9a70ee4734b9a0eda82f28fd5f | Bin 0 -> 6189 bytes .../79/79ebbc9a70ee4734b9a0eda82f28fd5f.info | Bin 0 -> 627 bytes .../7a/7a135b1a2cb9c8f488d4dd00c55ab283 | Bin 0 -> 4300 bytes .../7a/7a135b1a2cb9c8f488d4dd00c55ab283.info | Bin 0 -> 4536 bytes .../7a/7a1b97ffbdbef1d44aa8aab723f05560 | Bin 0 -> 22364 bytes .../7a/7a1b97ffbdbef1d44aa8aab723f05560.info | Bin 0 -> 4694 bytes .../7a1b97ffbdbef1d44aa8aab723f05560.resource | Bin 0 -> 104512 bytes .../7a/7aaf325fc9c2739499d94017488bd120 | Bin 0 -> 4337 bytes .../7a/7aaf325fc9c2739499d94017488bd120.info | Bin 0 -> 635 bytes .../7a/7ae8d8155c5f0df4b8948d4fa4fb14c5 | Bin 0 -> 22376 bytes .../7a/7ae8d8155c5f0df4b8948d4fa4fb14c5.info | Bin 0 -> 3299 bytes .../7ae8d8155c5f0df4b8948d4fa4fb14c5.resource | Bin 0 -> 46240 bytes .../7b/7b939e5e799d98a469f594828ebab52e | Bin 0 -> 4300 bytes .../7b/7b939e5e799d98a469f594828ebab52e.info | Bin 0 -> 11120 bytes .../7b/7b9d6636c126a33489ada91fd402f036 | Bin 0 -> 22380 bytes .../7b/7b9d6636c126a33489ada91fd402f036.info | Bin 0 -> 4298 bytes .../7b9d6636c126a33489ada91fd402f036.resource | Bin 0 -> 104928 bytes .../7b/7ba84888c9d4c504cb752a3904551a6c | Bin 0 -> 5425 bytes .../7b/7ba84888c9d4c504cb752a3904551a6c.info | Bin 0 -> 817 bytes .../7b/7bd88445e5dcec94284b355818ef7d87 | Bin 0 -> 1407568 bytes .../7b/7bd88445e5dcec94284b355818ef7d87.info | Bin 0 -> 8997 bytes .../7d/7d623a50b67320940b97e93e31d0a21b | Bin 0 -> 8973 bytes .../7d/7d623a50b67320940b97e93e31d0a21b.info | Bin 0 -> 873 bytes .../7d/7da32a16da5a37d49b11e79aa0e9b773 | Bin 7841 -> 8533 bytes .../7e/7e90f10e44a186a49a00679d068515ed | Bin 0 -> 4300 bytes .../7e/7e90f10e44a186a49a00679d068515ed.info | Bin 0 -> 8198 bytes .../7f/7f08f06256ab27b4cb9eb0b41831a69f | Bin 0 -> 4308 bytes .../7f/7f08f06256ab27b4cb9eb0b41831a69f.info | Bin 0 -> 7568 bytes .../7f/7f4097fabec5d2b4da2b861750319952 | Bin 0 -> 5793 bytes .../7f/7f4097fabec5d2b4da2b861750319952.info | Bin 0 -> 680 bytes .../7f/7f632b7ba3e0d004899c46e9d8261c81 | Bin 0 -> 22380 bytes .../7f/7f632b7ba3e0d004899c46e9d8261c81.info | Bin 0 -> 5617 bytes .../7f632b7ba3e0d004899c46e9d8261c81.resource | Bin 0 -> 128352 bytes .../7f/7fae0ddab09ac324c85494471274d6a4 | Bin 0 -> 15625 bytes .../7fae0ddab09ac324c85494471274d6a4.info} | Bin 624 -> 620 bytes .../7f/7fb811b0ffe615b4dbf1d5e6ced385fd | Bin 0 -> 4353 bytes .../7f/7fb811b0ffe615b4dbf1d5e6ced385fd.info | Bin 0 -> 653 bytes .../7f/7fe1fef3cfad86946b3a549d6934330b | Bin 0 -> 4300 bytes .../7f/7fe1fef3cfad86946b3a549d6934330b.info | Bin 0 -> 10383 bytes .../80/80087fbbf7bf93a46bb4aea276b19568 | Bin 0 -> 17805 bytes .../80/80087fbbf7bf93a46bb4aea276b19568.info | Bin 0 -> 658 bytes .../80/80a6bae7122d17d4c9243b982a652788 | Bin 0 -> 4300 bytes .../80/80a6bae7122d17d4c9243b982a652788.info | Bin 0 -> 9311 bytes .../81/817521c5973e4ee45905ee97df3c38ad | Bin 0 -> 6689 bytes .../81/817521c5973e4ee45905ee97df3c38ad.info | Bin 0 -> 784 bytes .../81/81fc1450441aca64e8cc1a0e14b1aa77 | Bin 0 -> 4292 bytes .../81/81fc1450441aca64e8cc1a0e14b1aa77.info | Bin 0 -> 1584 bytes .../84/84a4f15a3179f1d4993aded11f4d0232 | Bin 0 -> 9009 bytes .../84/84a4f15a3179f1d4993aded11f4d0232.info | Bin 0 -> 794 bytes .../87/87bd4f8add9797748ab450ca4852a9e1 | Bin 0 -> 708504 bytes .../87/87bd4f8add9797748ab450ca4852a9e1.info | Bin 0 -> 10340 bytes .../88/88a2ccbdad9948c45b28f5e63902705b | Bin 0 -> 5385 bytes .../88/88a2ccbdad9948c45b28f5e63902705b.info | Bin 0 -> 781 bytes .../89/891b9c1d17e50204a85ebdf71b6670f5 | Bin 0 -> 22376 bytes .../89/891b9c1d17e50204a85ebdf71b6670f5.info | Bin 0 -> 3595 bytes .../891b9c1d17e50204a85ebdf71b6670f5.resource | Bin 0 -> 47776 bytes .../8a/8a95f5613a17c0f4db5b93318e947568 | Bin 0 -> 22392 bytes .../8a/8a95f5613a17c0f4db5b93318e947568.info | Bin 0 -> 2833 bytes .../8a95f5613a17c0f4db5b93318e947568.resource | Bin 0 -> 6848 bytes .../8a/8ad10a5377ae04748b1455a7184c6971 | Bin 0 -> 4337 bytes .../8a/8ad10a5377ae04748b1455a7184c6971.info | Bin 0 -> 636 bytes .../8b/8b18b36a995ecb04599f35c2741be8d5 | Bin 0 -> 7041 bytes .../8b/8b18b36a995ecb04599f35c2741be8d5.info | Bin 0 -> 673 bytes .../8b/8b486a7fc7f4490409fb152cfaaaea36 | Bin 0 -> 1407536 bytes .../8b/8b486a7fc7f4490409fb152cfaaaea36.info | Bin 0 -> 15019 bytes .../8b/8bb563c4e716d2c4181e187d9be248db | Bin 0 -> 8713 bytes .../8b/8bb563c4e716d2c4181e187d9be248db.info | Bin 0 -> 814 bytes .../8c/8c0fbd56181ea0843b1596b4cb0e5498 | Bin 0 -> 86300 bytes .../8c/8c0fbd56181ea0843b1596b4cb0e5498.info | Bin 0 -> 11941 bytes .../8c/8c3faa610c019764a81eb8497109e2d4 | Bin 0 -> 5961 bytes .../8c/8c3faa610c019764a81eb8497109e2d4.info | Bin 0 -> 638 bytes .../8c/8c81a27fd18a29444be92481fe681f4b | Bin 0 -> 8689 bytes .../8c/8c81a27fd18a29444be92481fe681f4b.info | Bin 0 -> 787 bytes .../8c/8ca2cc563cc33f542a5d9f8f661184ba | Bin 0 -> 8945 bytes .../8c/8ca2cc563cc33f542a5d9f8f661184ba.info | Bin 0 -> 826 bytes .../8d/8d26b9eddedb33d48be044bb268a57c7 | Bin 0 -> 205061 bytes .../8d/8d26b9eddedb33d48be044bb268a57c7.info | Bin 0 -> 629 bytes .../8e/8e13c6e5a21aeea4db3c25ef0e529308 | Bin 0 -> 4292 bytes .../8e/8e13c6e5a21aeea4db3c25ef0e529308.info | Bin 0 -> 963 bytes .../8f/8f094810949516a41a720a40a87d29cc | Bin 0 -> 22364 bytes .../8f/8f094810949516a41a720a40a87d29cc.info | Bin 0 -> 3617 bytes .../8f094810949516a41a720a40a87d29cc.resource | Bin 0 -> 78624 bytes .../8f/8f511b02628aaca43be0aecee58c1b71 | Bin 0 -> 4325 bytes .../8f/8f511b02628aaca43be0aecee58c1b71.info | Bin 0 -> 628 bytes .../90/90173f9e9e795f74ca97ccc52fe410cd | Bin 0 -> 75012 bytes .../90/90173f9e9e795f74ca97ccc52fe410cd.info | Bin 0 -> 16454 bytes .../91/918ee1b51fd32d748a66d520586569ba | Bin 0 -> 22364 bytes .../91/918ee1b51fd32d748a66d520586569ba.info | Bin 0 -> 3962 bytes .../918ee1b51fd32d748a66d520586569ba.resource | Bin 0 -> 52320 bytes .../92/921837a5408991d429e86efc66f8be6b | Bin 0 -> 4292 bytes .../92/921837a5408991d429e86efc66f8be6b.info | Bin 0 -> 17976 bytes .../94/9471d2206e57ca246a4bf982f3c29c8f | Bin 0 -> 4300 bytes .../94/9471d2206e57ca246a4bf982f3c29c8f.info | Bin 0 -> 1274 bytes .../95/95096f29d1ddcd647ace66f3641d42f5 | Bin 0 -> 4300 bytes .../95/95096f29d1ddcd647ace66f3641d42f5.info | Bin 0 -> 1608 bytes .../95/95cdcc94cf9ba8348b4384b840e4c54c | Bin 0 -> 4325 bytes .../95/95cdcc94cf9ba8348b4384b840e4c54c.info | Bin 0 -> 629 bytes .../95/95ced3c408cd93048b111626535a8b3f | Bin 0 -> 22380 bytes .../95/95ced3c408cd93048b111626535a8b3f.info | Bin 0 -> 4450 bytes .../95ced3c408cd93048b111626535a8b3f.resource | Bin 0 -> 283296 bytes .../98/98a3ad29136d5c04f8a025adf1cbd704 | Bin 0 -> 4308 bytes .../98/98a3ad29136d5c04f8a025adf1cbd704.info | Bin 0 -> 661 bytes .../99/99ee8d48ccf36264e9d9a72baa681249 | Bin 0 -> 4284 bytes .../99/99ee8d48ccf36264e9d9a72baa681249.info | Bin 0 -> 2360 bytes .../9a/9ad392a45efa3b14bbcc169371974cd7 | Bin 0 -> 22380 bytes .../9a/9ad392a45efa3b14bbcc169371974cd7.info | Bin 0 -> 2686 bytes .../9ad392a45efa3b14bbcc169371974cd7.resource | Bin 0 -> 91680 bytes .../9d/9d2dddaae5c812841accc43e4da1fccd | Bin 0 -> 4300 bytes .../9d/9d2dddaae5c812841accc43e4da1fccd.info | Bin 0 -> 1608 bytes .../9e/9e995e61de69d8647ae2b2d65eceab3f | Bin 0 -> 4308 bytes .../9e/9e995e61de69d8647ae2b2d65eceab3f.info | Bin 0 -> 2457 bytes .../9f/9f884441bea153347be721454dc13716 | Bin 0 -> 42986 bytes .../9f/9f884441bea153347be721454dc13716.info | Bin 0 -> 646 bytes .../9f/9fb3fe54664b917489646492ee8c4993 | Bin 0 -> 8733 bytes .../9f/9fb3fe54664b917489646492ee8c4993.info | Bin 0 -> 802 bytes .../9f/9fff76eb68ad4c44b87be9e2ca168a80 | Bin 0 -> 4292 bytes .../9f/9fff76eb68ad4c44b87be9e2ca168a80.info | Bin 0 -> 3525 bytes .../a0/a043c731a29ecd745a9270fbf002ee68 | Bin 0 -> 13277 bytes .../a0/a043c731a29ecd745a9270fbf002ee68.info | Bin 0 -> 791 bytes .../a1/a1313a5fd0b97df4798c301e337a1eb8 | Bin 0 -> 4308 bytes .../a1/a1313a5fd0b97df4798c301e337a1eb8.info | Bin 0 -> 2443 bytes .../a2/a2300d431cc9116478ccc8bb42061072 | Bin 0 -> 4329 bytes .../a2/a2300d431cc9116478ccc8bb42061072.info | Bin 0 -> 632 bytes .../a2/a24f92749a872c94d993c87f9ad3a53e | Bin 0 -> 22380 bytes .../a2/a24f92749a872c94d993c87f9ad3a53e.info | Bin 0 -> 4341 bytes .../a24f92749a872c94d993c87f9ad3a53e.resource | Bin 0 -> 422656 bytes .../a3/a34de06929382804eb01e06cd6e8decf | Bin 0 -> 4316 bytes .../a3/a34de06929382804eb01e06cd6e8decf.info | Bin 0 -> 679 bytes .../a4/a41945a8549c580408301691c2fd374e | Bin 0 -> 4308 bytes .../a4/a41945a8549c580408301691c2fd374e.info | Bin 0 -> 974 bytes .../a4/a4939542f83f4e84f8604e20bce42eba | Bin 0 -> 4325 bytes .../a4/a4939542f83f4e84f8604e20bce42eba.info | Bin 0 -> 627 bytes .../a4/a4acc435c26639c4fac0c4358c455259 | Bin 0 -> 4325 bytes .../a4/a4acc435c26639c4fac0c4358c455259.info | Bin 0 -> 630 bytes .../a5/a51c3dbd81ecb6741b7a2c5b06dbcb2e | Bin 0 -> 32564 bytes .../a5/a51c3dbd81ecb6741b7a2c5b06dbcb2e.info | Bin 0 -> 602 bytes .../a5/a57cd5c56c9d75c4ba0ee9fbc6e1d8df | Bin 0 -> 4203688 bytes .../a5/a57cd5c56c9d75c4ba0ee9fbc6e1d8df.info | Bin 0 -> 17548 bytes .../a5/a58fa4585fefc5043a66e30d7b6b9e70 | Bin 0 -> 22376 bytes .../a5/a58fa4585fefc5043a66e30d7b6b9e70.info | Bin 0 -> 3915 bytes .../a58fa4585fefc5043a66e30d7b6b9e70.resource | Bin 0 -> 767808 bytes .../a5/a5a6a70209b6e6345bfe18b02314a54e | Bin 0 -> 20685 bytes .../a5/a5a6a70209b6e6345bfe18b02314a54e.info | Bin 0 -> 650 bytes .../a5/a5b684916cfe6804985d74652a2af09f | Bin 0 -> 4300 bytes .../a5/a5b684916cfe6804985d74652a2af09f.info | Bin 0 -> 970 bytes .../a6/a6990c59ffac7cf4b87f644ab4782007 | Bin 0 -> 4292 bytes .../a6/a6990c59ffac7cf4b87f644ab4782007.info | Bin 0 -> 1272 bytes .../a8/a8aded2ee3b41f04eaad3a7b9f35e37f | Bin 0 -> 22380 bytes .../a8/a8aded2ee3b41f04eaad3a7b9f35e37f.info | Bin 0 -> 4887 bytes .../a8aded2ee3b41f04eaad3a7b9f35e37f.resource | Bin 0 -> 119264 bytes .../a8/a8cac5516702311429fe7478ff4d7d05 | Bin 0 -> 4308 bytes .../a8/a8cac5516702311429fe7478ff4d7d05.info | Bin 0 -> 7450 bytes .../aa/aa14911b4b4eb894085dfe426f46ba98 | Bin 0 -> 22380 bytes .../aa/aa14911b4b4eb894085dfe426f46ba98.info | Bin 0 -> 3602 bytes .../aa14911b4b4eb894085dfe426f46ba98.resource | Bin 0 -> 104544 bytes .../aa/aa9e211c83b607f479bd7772eb56a98c | Bin 0 -> 22376 bytes .../aa/aa9e211c83b607f479bd7772eb56a98c.info | Bin 0 -> 2405 bytes .../aa9e211c83b607f479bd7772eb56a98c.resource | Bin 0 -> 88224 bytes .../ab/ab9d0c5c3fa27b34685e9b70737e281a | Bin 0 -> 22364 bytes .../ab/ab9d0c5c3fa27b34685e9b70737e281a.info | Bin 0 -> 5420 bytes .../ab9d0c5c3fa27b34685e9b70737e281a.resource | Bin 0 -> 24128 bytes .../ab/abf6d945eaf1e3448b2c5264c0b1be0f | Bin 0 -> 96820 bytes .../ab/abf6d945eaf1e3448b2c5264c0b1be0f.info | Bin 0 -> 3210 bytes .../ab/abfc00e0350ad744083849e2d7ae06ee | Bin 0 -> 4301 bytes .../ab/abfc00e0350ad744083849e2d7ae06ee.info | Bin 0 -> 606 bytes .../ad/ad77666522338cf49ba83b80b25e6476 | Bin 0 -> 9681 bytes .../ad/ad77666522338cf49ba83b80b25e6476.info | Bin 0 -> 802 bytes .../ad/adaa56b2d3d8ca548a8467326825e514 | Bin 0 -> 22364 bytes .../ad/adaa56b2d3d8ca548a8467326825e514.info | Bin 0 -> 3035 bytes .../adaa56b2d3d8ca548a8467326825e514.resource | Bin 0 -> 88320 bytes .../ad/adcc31e02dc74204c80c632b9844b681 | Bin 0 -> 22364 bytes .../ad/adcc31e02dc74204c80c632b9844b681.info | Bin 0 -> 3712 bytes .../adcc31e02dc74204c80c632b9844b681.resource | Bin 0 -> 88320 bytes .../af/affe8420ea98e6140b81dcb49af842a6.info | Bin 11970 -> 11818 bytes .../b0/b0b65ac2add33d04b9c6485a060c240a | Bin 0 -> 5601840 bytes .../b0/b0b65ac2add33d04b9c6485a060c240a.info | Bin 0 -> 9077 bytes .../b2/b2a747d8f314a8449a70c1fb1807f8dd | Bin 0 -> 4301 bytes .../b2/b2a747d8f314a8449a70c1fb1807f8dd.info | Bin 0 -> 604 bytes .../b2/b2d1785fa0c551e408b6c94398847b76 | Bin 0 -> 9573 bytes .../b2/b2d1785fa0c551e408b6c94398847b76.info | Bin 0 -> 644 bytes .../b3/b3fead7919d6f9647b424650b5603c1b | Bin 4268 -> 4268 bytes .../b5/b508660da1369664ea4fe1f9987c2150 | Bin 0 -> 22380 bytes .../b5/b508660da1369664ea4fe1f9987c2150.info | Bin 0 -> 5870 bytes .../b508660da1369664ea4fe1f9987c2150.resource | Bin 0 -> 92320 bytes .../b5/b5c78ec7a0919a445ad9472465dc95e3 | Bin 0 -> 4325 bytes .../b5/b5c78ec7a0919a445ad9472465dc95e3.info | Bin 0 -> 628 bytes .../b6/b61cd59d8f02e454186a61a5f55c21b9 | Bin 0 -> 5385 bytes .../b6/b61cd59d8f02e454186a61a5f55c21b9.info | Bin 0 -> 656 bytes .../b6/b6fb03c27a50bde4c90aa0b2d201eab7 | Bin 0 -> 38760 bytes .../b6/b6fb03c27a50bde4c90aa0b2d201eab7.info | Bin 0 -> 4794 bytes .../b6fb03c27a50bde4c90aa0b2d201eab7.resource | Bin 0 -> 1591424 bytes .../b8/b8d4cc6cf300b3e4bb1411c4e041030c | Bin 0 -> 5133 bytes .../b8/b8d4cc6cf300b3e4bb1411c4e041030c.info | Bin 0 -> 854 bytes .../b9/b93b6a877adcbf94c89a9d6e0c0e844d | Bin 0 -> 5657 bytes .../b9/b93b6a877adcbf94c89a9d6e0c0e844d.info | Bin 0 -> 790 bytes .../b9/b93fe5c516cf6ed4b9153ec790f856e2 | Bin 0 -> 25816 bytes .../b9/b93fe5c516cf6ed4b9153ec790f856e2.info | Bin 0 -> 12502 bytes .../b9/b9d299b8c6aa86242bec9a060f7e2d81 | Bin 0 -> 4300 bytes .../b9/b9d299b8c6aa86242bec9a060f7e2d81.info | Bin 0 -> 970 bytes .../ba/ba42448c9a2fa44409034eead650b5f4 | Bin 0 -> 5425 bytes .../ba/ba42448c9a2fa44409034eead650b5f4.info | Bin 0 -> 778 bytes .../bb/bb00cc87e146a414fbf2c4d3c0d31151 | Bin 0 -> 1057964 bytes .../bb/bb00cc87e146a414fbf2c4d3c0d31151.info | Bin 0 -> 3767 bytes .../bb/bb07dbf09f9933e49b22c82d8428c53b | Bin 0 -> 5805 bytes .../bb/bb07dbf09f9933e49b22c82d8428c53b.info | Bin 0 -> 802 bytes .../bb/bb185b9d56707b64d8cd03434503252d | Bin 0 -> 22364 bytes .../bb/bb185b9d56707b64d8cd03434503252d.info | Bin 0 -> 4482 bytes .../bb185b9d56707b64d8cd03434503252d.resource | Bin 0 -> 111328 bytes .../bb/bb1994a9358f0dc4782fe7535a9b384c | Bin 0 -> 22380 bytes .../bb/bb1994a9358f0dc4782fe7535a9b384c.info | Bin 0 -> 6464 bytes .../bb1994a9358f0dc4782fe7535a9b384c.resource | Bin 0 -> 49056 bytes .../bb/bb97952d1445b40449dfcb823c3d4eec.info | Bin 8002 -> 5826 bytes .../bb/bbecae3d442b2b0478f2e6a2afc24059 | Bin 0 -> 4325 bytes .../bb/bbecae3d442b2b0478f2e6a2afc24059.info | Bin 0 -> 628 bytes .../bd/bd2dd58615e1ced41ae3178451fab370 | Bin 0 -> 4317 bytes .../bd/bd2dd58615e1ced41ae3178451fab370.info | Bin 0 -> 622 bytes .../be/be3c3a084f7b29b4880b42b4cfbf4d8f | Bin 0 -> 20233 bytes .../be/be3c3a084f7b29b4880b42b4cfbf4d8f.info | Bin 0 -> 638 bytes .../be/be96d45fe21847a4a805d408a8015c84 | Bin 0 -> 4865 bytes .../be/be96d45fe21847a4a805d408a8015c84.info | Bin 0 -> 647 bytes .../be/beefd4b7702d5874994c17328dc55b24 | Bin 0 -> 22364 bytes .../be/beefd4b7702d5874994c17328dc55b24.info | Bin 0 -> 3248 bytes .../beefd4b7702d5874994c17328dc55b24.resource | Bin 0 -> 102944 bytes .../c0/c0a7e5755749589449042302049a9748 | Bin 0 -> 22364 bytes .../c0/c0a7e5755749589449042302049a9748.info | Bin 0 -> 5809 bytes .../c0a7e5755749589449042302049a9748.resource | Bin 0 -> 72096 bytes .../c1/c1eded52540dd0a4988d5d4d76382da9 | Bin 0 -> 43326 bytes .../c1/c1eded52540dd0a4988d5d4d76382da9.info | Bin 0 -> 658 bytes .../c2/c2b473f54caf2504ba276643282bc0ab | Bin 0 -> 22376 bytes .../c2/c2b473f54caf2504ba276643282bc0ab.info | Bin 0 -> 3099 bytes .../c2b473f54caf2504ba276643282bc0ab.resource | Bin 0 -> 135520 bytes .../c3/c33af0785775d7548b22541da37936fe | Bin 0 -> 4301 bytes .../c3/c33af0785775d7548b22541da37936fe.info | Bin 0 -> 602 bytes .../c3/c360cf037a4ff3f4cb643392da004156 | Bin 0 -> 4341 bytes .../c3/c360cf037a4ff3f4cb643392da004156.info | Bin 0 -> 646 bytes .../c4/c4153b26428ccf041950b92c057812a3 | Bin 0 -> 5741 bytes .../c4/c4153b26428ccf041950b92c057812a3.info | Bin 0 -> 823 bytes .../c4/c4212c0047b94924e8982fea80fb6547 | Bin 0 -> 22376 bytes .../c4/c4212c0047b94924e8982fea80fb6547.info | Bin 0 -> 2756 bytes .../c4212c0047b94924e8982fea80fb6547.resource | Bin 0 -> 117504 bytes .../c4/c424271f5a0b34042978648f19f2da8b | Bin 0 -> 22380 bytes .../c4/c424271f5a0b34042978648f19f2da8b.info | Bin 0 -> 4469 bytes .../c424271f5a0b34042978648f19f2da8b.resource | Bin 0 -> 55616 bytes .../c4/c4a7b02e27e148a47b782f8cd5cb598d | Bin 0 -> 53116 bytes .../c4/c4a7b02e27e148a47b782f8cd5cb598d.info | Bin 0 -> 7602 bytes .../c5/c509d5711dc2cc346be2763cd92383ca | Bin 0 -> 4332 bytes .../c5/c509d5711dc2cc346be2763cd92383ca.info | Bin 0 -> 695 bytes .../c6/c6bc348d47e14444f9ca466d8cf06d46 | Bin 0 -> 6001 bytes .../c6/c6bc348d47e14444f9ca466d8cf06d46.info | Bin 0 -> 812 bytes .../c7/c7aaa47f2514a5141970781d595e76a9 | Bin 0 -> 26676 bytes .../c7/c7aaa47f2514a5141970781d595e76a9.info | Bin 0 -> 8300 bytes .../c8/c848d318c783da14d920cdb75f1ee7ac | Bin 0 -> 22380 bytes .../c8/c848d318c783da14d920cdb75f1ee7ac.info | Bin 0 -> 3614 bytes .../c848d318c783da14d920cdb75f1ee7ac.resource | Bin 0 -> 93568 bytes .../c8/c8941a9f98c35d84cb19a5e044467de9 | Bin 0 -> 4321 bytes .../c8/c8941a9f98c35d84cb19a5e044467de9.info | Bin 0 -> 624 bytes .../c9/c9b9c3bb824daba4b9cb39713cd412a6 | Bin 0 -> 22380 bytes .../c9/c9b9c3bb824daba4b9cb39713cd412a6.info | Bin 0 -> 5142 bytes .../c9b9c3bb824daba4b9cb39713cd412a6.resource | Bin 0 -> 370496 bytes .../c9/c9da270df5147d24597cc106058c1fa7 | Bin 0 -> 13137 bytes .../c9/c9da270df5147d24597cc106058c1fa7.info | Bin 0 -> 665 bytes .../c9/c9e05292e0d62b542ac5bba92674a86d | Bin 0 -> 6593 bytes .../c9/c9e05292e0d62b542ac5bba92674a86d.info | Bin 0 -> 787 bytes .../c9/c9e412f243fb49340bea515981cab351 | Bin 0 -> 22380 bytes .../c9/c9e412f243fb49340bea515981cab351.info | Bin 0 -> 5121 bytes .../c9e412f243fb49340bea515981cab351.resource | Bin 0 -> 338784 bytes .../c9/c9f83db71b9a6764abf964ab7679f035 | Bin 0 -> 5409 bytes .../c9/c9f83db71b9a6764abf964ab7679f035.info | Bin 0 -> 787 bytes .../ca/ca0f976ff76b04644a1332f3be4f344b | Bin 0 -> 22364 bytes .../ca/ca0f976ff76b04644a1332f3be4f344b.info | Bin 0 -> 5460 bytes .../ca0f976ff76b04644a1332f3be4f344b.resource | Bin 0 -> 116640 bytes .../cb/cb0cd73b74d6f884bab13a472f547100 | Bin 0 -> 22380 bytes .../cb/cb0cd73b74d6f884bab13a472f547100.info | Bin 0 -> 3374 bytes .../cb0cd73b74d6f884bab13a472f547100.resource | Bin 0 -> 89056 bytes .../cb/cb68230ab01aab448b476ae3c84ee521 | Bin 0 -> 22380 bytes .../cb/cb68230ab01aab448b476ae3c84ee521.info | Bin 0 -> 5944 bytes .../cb68230ab01aab448b476ae3c84ee521.resource | Bin 0 -> 76320 bytes .../cc/cc1b8e5b8c3365a49b0274fb637151d6 | Bin 0 -> 7497 bytes .../cc/cc1b8e5b8c3365a49b0274fb637151d6.info | Bin 0 -> 799 bytes .../ce/cef9a0102c9fe0c4fad4ebcf9ec72a45 | Bin 0 -> 22364 bytes .../ce/cef9a0102c9fe0c4fad4ebcf9ec72a45.info | Bin 0 -> 3033 bytes .../cef9a0102c9fe0c4fad4ebcf9ec72a45.resource | Bin 0 -> 88320 bytes .../d0/d0e46826514d4ee4e93a6ed1e3066f9f.info | Bin 15803 -> 2747 bytes .../d1/d1a38babac376b7418f11ad0254a0cf2 | Bin 0 -> 4325 bytes .../d1/d1a38babac376b7418f11ad0254a0cf2.info | Bin 0 -> 630 bytes .../d2/d2244eee8a3a4784fb40d1123ff69301 | Bin 0 -> 27717 bytes .../d2/d2244eee8a3a4784fb40d1123ff69301.info | Bin 0 -> 646 bytes .../d2/d27732ffed6c52840bb268571f66913e | Bin 0 -> 22380 bytes .../d2/d27732ffed6c52840bb268571f66913e.info | Bin 0 -> 5156 bytes .../d27732ffed6c52840bb268571f66913e.resource | Bin 0 -> 70688 bytes .../d3/d37c2cf88f7c59f4c8cf5d3812568143 | Bin 0 -> 6349 bytes .../d3/d37c2cf88f7c59f4c8cf5d3812568143.info | Bin 0 -> 662 bytes .../d4/d410d7126dd411c4ea651fc94eae9202 | Bin 0 -> 4300 bytes .../d4/d410d7126dd411c4ea651fc94eae9202.info | Bin 0 -> 1290 bytes .../d4/d4dbb95c6efc21548ac6d079a65a2d50 | Bin 0 -> 23885 bytes .../d4/d4dbb95c6efc21548ac6d079a65a2d50.info | Bin 0 -> 766 bytes .../d4/d4e8a839a7c5b7e4580c59e305fb5f01 | Bin 0 -> 8753 bytes .../d4/d4e8a839a7c5b7e4580c59e305fb5f01.info | Bin 0 -> 658 bytes .../d5/d520699ed41daaf48b924d994ac87378 | Bin 0 -> 12485 bytes .../d5/d520699ed41daaf48b924d994ac87378.info | Bin 0 -> 772 bytes .../d5/d53053a416c413d40ae35d3b3d2c8277 | Bin 0 -> 22364 bytes .../d5/d53053a416c413d40ae35d3b3d2c8277.info | Bin 0 -> 3467 bytes .../d53053a416c413d40ae35d3b3d2c8277.resource | Bin 0 -> 63168 bytes .../d5/d5aa741aac337e14398adda80505bf9c | Bin 0 -> 22364 bytes .../d5/d5aa741aac337e14398adda80505bf9c.info | Bin 0 -> 3315 bytes .../d5aa741aac337e14398adda80505bf9c.resource | Bin 0 -> 56576 bytes .../d8/d85480da87762944399dab6c99985eef | Bin 0 -> 13001 bytes .../d8/d85480da87762944399dab6c99985eef.info | Bin 0 -> 784 bytes .../d8/d88af1b1098a33a42bc43c910c864102 | Bin 0 -> 4301 bytes .../d8/d88af1b1098a33a42bc43c910c864102.info | Bin 0 -> 604 bytes .../d9/d9dcf2a12e0c2094b96357dfd35811ba.info | Bin 3939 -> 3870 bytes .../da/da25bb0dccfd3894181fc5e84714cd17 | Bin 0 -> 43478 bytes .../da/da25bb0dccfd3894181fc5e84714cd17.info | Bin 0 -> 658 bytes .../da/da7243059d8ed744abfe851fd03f8405 | Bin 0 -> 22380 bytes .../da/da7243059d8ed744abfe851fd03f8405.info | Bin 0 -> 3552 bytes .../da7243059d8ed744abfe851fd03f8405.resource | Bin 0 -> 94208 bytes .../da/daf28736fcb032a44b7a5c1fd0a27b15 | Bin 0 -> 4292 bytes .../da/daf28736fcb032a44b7a5c1fd0a27b15.info | Bin 0 -> 950 bytes .../db/dbf37170840828344ae352756e49a99a | Bin 0 -> 22376 bytes .../db/dbf37170840828344ae352756e49a99a.info | Bin 0 -> 5736 bytes .../dbf37170840828344ae352756e49a99a.resource | Bin 0 -> 499776 bytes .../dc/dc06161b6d97feb419f45f03b62e14b9 | Bin 0 -> 4292 bytes .../dc/dc06161b6d97feb419f45f03b62e14b9.info | Bin 0 -> 3073 bytes .../dc/dc121f192dd724945a1998a9c1f1727d | Bin 0 -> 5605 bytes .../dc/dc121f192dd724945a1998a9c1f1727d.info | Bin 0 -> 796 bytes .../dc/dc3be917a80086a48b97933694257f09 | Bin 0 -> 4957 bytes .../dc/dc3be917a80086a48b97933694257f09.info | Bin 0 -> 815 bytes .../dd/dd90b53139ec2fb4697f0cf3dceac679 | Bin 0 -> 22364 bytes .../dd/dd90b53139ec2fb4697f0cf3dceac679.info | Bin 0 -> 3647 bytes .../dd90b53139ec2fb4697f0cf3dceac679.resource | Bin 0 -> 25280 bytes .../dd/ddcfb4cc21e043948b5a84afe22d90f0 | Bin 0 -> 22376 bytes .../dd/ddcfb4cc21e043948b5a84afe22d90f0.info | Bin 0 -> 4400 bytes .../ddcfb4cc21e043948b5a84afe22d90f0.resource | Bin 0 -> 143264 bytes .../dd/dde0cb3ddafcf014a8c42e805de893e8 | Bin 0 -> 22364 bytes .../dd/dde0cb3ddafcf014a8c42e805de893e8.info | Bin 0 -> 3298 bytes .../dde0cb3ddafcf014a8c42e805de893e8.resource | Bin 0 -> 55392 bytes .../de/de053fb214897cc439db35fc0361a282 | Bin 0 -> 48614 bytes .../de/de053fb214897cc439db35fc0361a282.info | Bin 0 -> 697 bytes .../df/dfd9b0fa043e3fc43821c159432a045c | Bin 0 -> 22364 bytes .../df/dfd9b0fa043e3fc43821c159432a045c.info | Bin 0 -> 3228 bytes .../dfd9b0fa043e3fc43821c159432a045c.resource | Bin 0 -> 45152 bytes .../e0/e0135c95e70592e4fac2f29e7b78abcf | Bin 0 -> 13745 bytes .../e0/e0135c95e70592e4fac2f29e7b78abcf.info | Bin 0 -> 797 bytes .../e0/e070196015a41bc419ea9e03ba170df5 | Bin 0 -> 4316 bytes .../e0/e070196015a41bc419ea9e03ba170df5.info | Bin 0 -> 3228 bytes .../e0/e0b086fbb874df143b6ac8f53cea5424 | Bin 0 -> 4300 bytes .../e0/e0b086fbb874df143b6ac8f53cea5424.info | Bin 0 -> 8839 bytes .../e1/e1c0e3b33fba81e4f854a8bc367fc1d7 | Bin 0 -> 4337 bytes .../e1/e1c0e3b33fba81e4f854a8bc367fc1d7.info | Bin 0 -> 634 bytes .../e3/e3148a98a2496e64cb8712177bbcde71 | Bin 0 -> 22364 bytes .../e3/e3148a98a2496e64cb8712177bbcde71.info | Bin 0 -> 3363 bytes .../e3148a98a2496e64cb8712177bbcde71.resource | Bin 0 -> 76160 bytes .../e3/e3b47c2980b93bc48844a54641dab5b8 | Bin 0 -> 11989 bytes .../e3/e3b47c2980b93bc48844a54641dab5b8.info | Bin 0 -> 674 bytes .../e3/e3b77830391f10343929883b18f4d5ae | Bin 0 -> 4369 bytes .../e3/e3b77830391f10343929883b18f4d5ae.info | Bin 0 -> 669 bytes .../e4/e45d903a97eada14bbd5177c2da9703d | Bin 0 -> 38760 bytes .../e4/e45d903a97eada14bbd5177c2da9703d.info | Bin 0 -> 4061 bytes .../e45d903a97eada14bbd5177c2da9703d.resource | Bin 0 -> 560576 bytes .../e4/e4c4a2a27a81a8047ab1987a441abb3e | Bin 0 -> 4333 bytes .../e4/e4c4a2a27a81a8047ab1987a441abb3e.info | Bin 0 -> 631 bytes .../e5/e5d8794b03b325e4eb7f26642c221012 | Bin 0 -> 4325 bytes .../e5/e5d8794b03b325e4eb7f26642c221012.info | Bin 0 -> 629 bytes .../e6/e61c6399d5478fc4bbfbdb7ccc35cca1 | Bin 0 -> 58948 bytes .../e6/e61c6399d5478fc4bbfbdb7ccc35cca1.info | Bin 0 -> 9147 bytes .../e6/e694f124da5bfd84d97e67e8c2719420 | Bin 0 -> 1231196 bytes .../e6/e694f124da5bfd84d97e67e8c2719420.info | Bin 0 -> 10790 bytes .../e7/e7afc8c74d1f73b458705e0b946292a0 | Bin 0 -> 12597 bytes .../e7/e7afc8c74d1f73b458705e0b946292a0.info | Bin 0 -> 635 bytes .../e7/e7e681076fb2fad47bed246936de90bf | Bin 0 -> 4313 bytes .../e7/e7e681076fb2fad47bed246936de90bf.info | Bin 0 -> 8813 bytes .../e9/e979227f3384fac4b8ca0b3550bf005c | Bin 0 -> 14985 bytes .../e9/e979227f3384fac4b8ca0b3550bf005c.info | Bin 0 -> 641 bytes .../e9/e9befd794befe7540ad040be41dba757 | Bin 0 -> 38748 bytes .../e9/e9befd794befe7540ad040be41dba757.info | Bin 0 -> 5013 bytes .../e9befd794befe7540ad040be41dba757.resource | Bin 0 -> 326336 bytes .../ea/ea1001a6626353541ab4d4b39f4c3569 | Bin 0 -> 28181 bytes .../ea/ea1001a6626353541ab4d4b39f4c3569.info | Bin 0 -> 931 bytes .../ea/ea22dba3baf2ecc4d886bf2444444228 | Bin 0 -> 9361 bytes .../ea/ea22dba3baf2ecc4d886bf2444444228.info | Bin 0 -> 629 bytes .../ea/eafd8df4914b6054db2b36a3aa4b4830 | Bin 0 -> 22364 bytes .../ea/eafd8df4914b6054db2b36a3aa4b4830.info | Bin 0 -> 3522 bytes .../eafd8df4914b6054db2b36a3aa4b4830.resource | Bin 0 -> 53888 bytes .../eb/eb6d6653511aff5409d0827d4e3b79ea | Bin 0 -> 5105 bytes .../eb/eb6d6653511aff5409d0827d4e3b79ea.info | Bin 0 -> 811 bytes .../eb/ebc38d834b57e9d4d992de0a5470615a | Bin 0 -> 96864 bytes .../eb/ebc38d834b57e9d4d992de0a5470615a.info | Bin 0 -> 3737 bytes .../eb/ebcc975aa3c1d5240936c86b600ca2a5 | Bin 0 -> 7077 bytes .../eb/ebcc975aa3c1d5240936c86b600ca2a5.info | Bin 0 -> 797 bytes .../eb/ebf848d63ce32d047a0acbc338e35371 | Bin 0 -> 22364 bytes .../eb/ebf848d63ce32d047a0acbc338e35371.info | Bin 0 -> 3623 bytes .../ebf848d63ce32d047a0acbc338e35371.resource | Bin 0 -> 105536 bytes .../ec/ec3dc73cf20a842438065d10e72e1b14 | Bin 0 -> 4316 bytes .../ec/ec3dc73cf20a842438065d10e72e1b14.info | Bin 0 -> 6228 bytes .../ec/ec82b6ce2e2435444a434107cddceb0b | Bin 0 -> 5357 bytes .../ec/ec82b6ce2e2435444a434107cddceb0b.info | Bin 0 -> 808 bytes .../ec/ece81cacdab36d745962207a515820a1 | Bin 0 -> 22364 bytes .../ec/ece81cacdab36d745962207a515820a1.info | Bin 0 -> 4273 bytes .../ece81cacdab36d745962207a515820a1.resource | Bin 0 -> 36096 bytes .../ee/ee2359d7e6460d4449d8b8c70d3045b4 | Bin 0 -> 4317 bytes .../ee/ee2359d7e6460d4449d8b8c70d3045b4.info | Bin 0 -> 622 bytes .../ef/ef8622c6f07c11e47aae43d93e8e076a.info | Bin 9974 -> 9771 bytes .../ef/efee776e88902a74684c56ce2962678f | Bin 0 -> 22364 bytes .../ef/efee776e88902a74684c56ce2962678f.info | Bin 0 -> 3361 bytes .../efee776e88902a74684c56ce2962678f.resource | Bin 0 -> 46016 bytes .../f1/f195fe0cc42f49241a3c7521a19fa350 | Bin 0 -> 5125 bytes .../f1/f195fe0cc42f49241a3c7521a19fa350.info | Bin 0 -> 808 bytes .../f1/f1f5f898fbfdb80478825ce9b01fe8ae | Bin 0 -> 4292 bytes .../f1/f1f5f898fbfdb80478825ce9b01fe8ae.info | Bin 0 -> 1273 bytes .../f2/f260935093f73f241bfaa1578e5e5506 | Bin 0 -> 39133 bytes .../f2/f260935093f73f241bfaa1578e5e5506.info | Bin 0 -> 782 bytes .../f2/f2d37238fea5a8c4a86c80912b379030 | Bin 0 -> 4316 bytes .../f2/f2d37238fea5a8c4a86c80912b379030.info | Bin 0 -> 7398 bytes .../f2/f2f2850d002f14a47bff32fdf73df53e | Bin 0 -> 6305 bytes .../f2/f2f2850d002f14a47bff32fdf73df53e.info | Bin 0 -> 796 bytes .../f3/f3004e0c0e5df074abcb3548fd812bfc | Bin 0 -> 4300 bytes .../f3/f3004e0c0e5df074abcb3548fd812bfc.info | Bin 0 -> 3208 bytes .../f3/f33ccd07f9433f44f8c5430938b168ac | Bin 0 -> 358992 bytes .../f3/f33ccd07f9433f44f8c5430938b168ac.info | Bin 0 -> 4098 bytes .../f4/f469358269d38b143b9f7bc2d6b57a29 | Bin 0 -> 22380 bytes .../f4/f469358269d38b143b9f7bc2d6b57a29.info | Bin 0 -> 5705 bytes .../f469358269d38b143b9f7bc2d6b57a29.resource | Bin 0 -> 415104 bytes .../f4/f4a03a51c550b92478a559cf694ce118 | Bin 0 -> 5381 bytes .../f4/f4a03a51c550b92478a559cf694ce118.info | Bin 0 -> 814 bytes .../f5/f53662f45a4454944a06629fec9c941e | Bin 0 -> 5449 bytes .../f5/f53662f45a4454944a06629fec9c941e.info | Bin 0 -> 793 bytes .../f5/f5a1be5da1c87864582d778e52de4e9b | Bin 0 -> 5005 bytes .../f5/f5a1be5da1c87864582d778e52de4e9b.info | Bin 0 -> 796 bytes .../f5/f5be45115742b07478e21c85fcc233ec | Bin 0 -> 4885 bytes .../f5/f5be45115742b07478e21c85fcc233ec.info | Bin 0 -> 653 bytes .../f6/f6802bd638faedf4dbe4a57c1f222991 | Bin 0 -> 4308 bytes .../f6/f6802bd638faedf4dbe4a57c1f222991.info | Bin 0 -> 7248 bytes .../f6/f6870f0d62f5a624aabbd4e3e7bff65f | Bin 0 -> 22364 bytes .../f6/f6870f0d62f5a624aabbd4e3e7bff65f.info | Bin 0 -> 4077 bytes .../f6870f0d62f5a624aabbd4e3e7bff65f.resource | Bin 0 -> 28480 bytes .../f7/f71819766ca687246a2150260bcfc1c5 | Bin 0 -> 4308 bytes .../f7/f71819766ca687246a2150260bcfc1c5.info | Bin 0 -> 9144 bytes .../f7/f7c5046ea350a2c4b898e99dbca46c22 | Bin 0 -> 22364 bytes .../f7/f7c5046ea350a2c4b898e99dbca46c22.info | Bin 0 -> 6916 bytes .../f7c5046ea350a2c4b898e99dbca46c22.resource | Bin 0 -> 91584 bytes .../f7/f7cd62d595c763c428123f260c78b711 | Bin 0 -> 4292 bytes .../f7/f7cd62d595c763c428123f260c78b711.info | Bin 0 -> 17741 bytes .../f8/f855134cdd14ab54fa2838027b3eec2f | Bin 0 -> 4308 bytes .../f8/f855134cdd14ab54fa2838027b3eec2f.info | Bin 0 -> 8589 bytes .../f8/f86ab2e727cd09f43849955c5b35f490 | Bin 0 -> 6897 bytes .../f8/f86ab2e727cd09f43849955c5b35f490.info | Bin 0 -> 787 bytes .../f9/f9c6e0c408020c341b3c329ec30355a1 | Bin 0 -> 13809 bytes .../f9/f9c6e0c408020c341b3c329ec30355a1.info | Bin 0 -> 653 bytes .../f9/f9d368eac27f70740bed52d36e0070d8 | Bin 0 -> 22376 bytes .../f9/f9d368eac27f70740bed52d36e0070d8.info | Bin 0 -> 3710 bytes .../f9d368eac27f70740bed52d36e0070d8.resource | Bin 0 -> 79968 bytes .../fa/fa05b1dac59aa764184da0aba83b2bf9 | Bin 0 -> 4308 bytes .../fa/fa05b1dac59aa764184da0aba83b2bf9.info | Bin 0 -> 7564 bytes .../fb/fb710a001890d9a44bb74a8ce4f20cc0 | Bin 0 -> 4300 bytes .../fb/fb710a001890d9a44bb74a8ce4f20cc0.info | Bin 0 -> 5827 bytes .../fd/fdcbdcd5e7d71594bb123666b2bcb779 | Bin 0 -> 22364 bytes .../fd/fdcbdcd5e7d71594bb123666b2bcb779.info | Bin 0 -> 4986 bytes .../fdcbdcd5e7d71594bb123666b2bcb779.resource | Bin 0 -> 150336 bytes .../fe/fe244a154e37eac40a5ecc62b91e6f4f | Bin 0 -> 4293 bytes .../fe/fe244a154e37eac40a5ecc62b91e6f4f.info | Bin 0 -> 596 bytes .../ff/ff4f36585e15b1942827390ff1a92502 | Bin 0 -> 6281 bytes .../ff/ff4f36585e15b1942827390ff1a92502.info | Bin 0 -> 649 bytes .../ff/ffefbea063cab884ca33e5a449e5c22c | Bin 0 -> 12741 bytes .../ff/ffefbea063cab884ca33e5a449e5c22c.info | Bin 0 -> 781 bytes ...hadercompiler-UnityShaderCompiler.exe0.log | 190 + Listen.sln | 8 +- Listen.userprefs | 7 +- ProjectSettings/ProjectSettings.asset | 21 +- 1859 files changed, 101626 insertions(+), 1941 deletions(-) rename Assets/Scripts/Effects/{PlayerSettings.cs => CurrentPlayer.cs} (80%) rename Assets/Scripts/Effects/{PlayerSettings.cs.meta => CurrentPlayer.cs.meta} (100%) delete mode 100644 Assets/Scripts/Tools/EchoSound.cs create mode 100644 Assets/Scripts/Tools/GhostSound.cs rename Assets/Scripts/Tools/{EchoSound.cs.meta => GhostSound.cs.meta} (76%) create mode 100644 Assets/Scripts/Tools/PlayerSound.cs create mode 100644 Assets/Scripts/Tools/PlayerSound.cs.meta create mode 100644 Assets/SteamVR.meta create mode 100644 Assets/SteamVR/Editor.meta create mode 100644 Assets/SteamVR/Editor/SteamVR_Editor.cs create mode 100644 Assets/SteamVR/Editor/SteamVR_Editor.cs.meta create mode 100644 Assets/SteamVR/Editor/SteamVR_Preferences.cs create mode 100644 Assets/SteamVR/Editor/SteamVR_Preferences.cs.meta create mode 100644 Assets/SteamVR/Editor/SteamVR_RenderModelEditor.cs create mode 100644 Assets/SteamVR/Editor/SteamVR_RenderModelEditor.cs.meta create mode 100644 Assets/SteamVR/Editor/SteamVR_Settings.cs create mode 100644 Assets/SteamVR/Editor/SteamVR_Settings.cs.meta create mode 100644 Assets/SteamVR/Editor/SteamVR_SkyboxEditor.cs create mode 100644 Assets/SteamVR/Editor/SteamVR_SkyboxEditor.cs.meta create mode 100644 Assets/SteamVR/Editor/SteamVR_Update.cs create mode 100644 Assets/SteamVR/Editor/SteamVR_Update.cs.meta create mode 100644 Assets/SteamVR/Extras.meta create mode 100644 Assets/SteamVR/Extras/SteamVR_GazeTracker.cs create mode 100644 Assets/SteamVR/Extras/SteamVR_GazeTracker.cs.meta create mode 100644 Assets/SteamVR/Extras/SteamVR_LaserPointer.cs create mode 100644 Assets/SteamVR/Extras/SteamVR_LaserPointer.cs.meta create mode 100644 Assets/SteamVR/Extras/SteamVR_Teleporter.cs create mode 100644 Assets/SteamVR/Extras/SteamVR_Teleporter.cs.meta create mode 100644 Assets/SteamVR/Extras/SteamVR_TestIK.unity create mode 100644 Assets/SteamVR/Extras/SteamVR_TestIK.unity.meta create mode 100644 Assets/SteamVR/Extras/SteamVR_TestThrow.cs create mode 100644 Assets/SteamVR/Extras/SteamVR_TestThrow.cs.meta create mode 100644 Assets/SteamVR/Extras/SteamVR_TestThrow.unity create mode 100644 Assets/SteamVR/Extras/SteamVR_TestThrow.unity.meta create mode 100644 Assets/SteamVR/Extras/SteamVR_TestTrackedCamera.cs create mode 100644 Assets/SteamVR/Extras/SteamVR_TestTrackedCamera.cs.meta create mode 100644 Assets/SteamVR/Extras/SteamVR_TestTrackedCamera.mat create mode 100644 Assets/SteamVR/Extras/SteamVR_TestTrackedCamera.mat.meta create mode 100644 Assets/SteamVR/Extras/SteamVR_TestTrackedCamera.unity create mode 100644 Assets/SteamVR/Extras/SteamVR_TestTrackedCamera.unity.meta create mode 100644 Assets/SteamVR/Extras/SteamVR_TrackedController.cs create mode 100644 Assets/SteamVR/Extras/SteamVR_TrackedController.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Icons.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system.png create mode 100644 Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system.png.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_feet.png create mode 100644 Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_feet.png.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_left_hand.png create mode 100644 Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_left_hand.png.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_left_hand_question.png create mode 100644 Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_left_hand_question.png.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_right_hand.png create mode 100644 Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_right_hand.png.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_right_hand_question.png create mode 100644 Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_right_hand_question.png.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_unknown_hand.png create mode 100644 Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_unknown_hand.png.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Materials.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Materials/FallbackHandIndicator.mat create mode 100644 Assets/SteamVR/InteractionSystem/Core/Materials/FallbackHandIndicator.mat.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Materials/HoverHighlight.mat create mode 100644 Assets/SteamVR/InteractionSystem/Core/Materials/HoverHighlight.mat.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Materials/SeeThru.mat create mode 100644 Assets/SteamVR/InteractionSystem/Core/Materials/SeeThru.mat.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Materials/SteamVRControllerModel.mat create mode 100644 Assets/SteamVR/InteractionSystem/Core/Materials/SteamVRControllerModel.mat.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Prefabs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Prefabs/BlankController.prefab create mode 100644 Assets/SteamVR/InteractionSystem/Core/Prefabs/BlankController.prefab.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Prefabs/Player.prefab create mode 100644 Assets/SteamVR/InteractionSystem/Core/Prefabs/Player.prefab.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/BodyCollider.cs create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/BodyCollider.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/CircularDrive.cs create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/CircularDrive.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/ComplexThrowable.cs create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/ComplexThrowable.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/ControllerHoverHighlight.cs create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/ControllerHoverHighlight.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/CustomEvents.cs create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/CustomEvents.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/DebugUI.cs create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/DebugUI.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/DestroyOnDetachedFromHand.cs create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/DestroyOnDetachedFromHand.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/DestroyOnParticleSystemDeath.cs create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/DestroyOnParticleSystemDeath.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/DestroyOnTriggerEnter.cs create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/DestroyOnTriggerEnter.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/DistanceHaptics.cs create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/DistanceHaptics.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/DontDestroyOnLoad.cs create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/DontDestroyOnLoad.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/EnumFlags.cs create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/EnumFlags.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/FallbackCameraController.cs create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/FallbackCameraController.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/Hand.cs create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/Hand.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/HapticRack.cs create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/HapticRack.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/HideOnHandFocusLost.cs create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/HideOnHandFocusLost.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/IgnoreHovering.cs create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/IgnoreHovering.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/InputModule.cs create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/InputModule.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/Interactable.cs create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/Interactable.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/InteractableButtonEvents.cs create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/InteractableButtonEvents.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/InteractableHoverEvents.cs create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/InteractableHoverEvents.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/ItemPackage.cs create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/ItemPackage.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/ItemPackageReference.cs create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/ItemPackageReference.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/ItemPackageSpawner.cs create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/ItemPackageSpawner.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/LinearAnimation.cs create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/LinearAnimation.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/LinearAnimator.cs create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/LinearAnimator.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/LinearAudioPitch.cs create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/LinearAudioPitch.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/LinearBlendshape.cs create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/LinearBlendshape.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/LinearDisplacement.cs create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/LinearDisplacement.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/LinearDrive.cs create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/LinearDrive.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/LinearMapping.cs create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/LinearMapping.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/PlaySound.cs create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/PlaySound.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/Player.cs create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/Player.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/SeeThru.cs create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/SeeThru.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/SleepOnAwake.cs create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/SleepOnAwake.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/SoundDeparent.cs create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/SoundDeparent.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/SoundPlayOneshot.cs create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/SoundPlayOneshot.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/SpawnAndAttachAfterControllerIsTracking.cs create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/SpawnAndAttachAfterControllerIsTracking.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/SpawnAndAttachToHand.cs create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/SpawnAndAttachToHand.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/SpawnRenderModel.cs create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/SpawnRenderModel.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/Throwable.cs create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/Throwable.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/UIElement.cs create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/UIElement.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/Unparent.cs create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/Unparent.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/Util.cs create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/Util.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/VelocityEstimator.cs create mode 100644 Assets/SteamVR/InteractionSystem/Core/Scripts/VelocityEstimator.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Shaders.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Shaders/SeeThru.shader create mode 100644 Assets/SteamVR/InteractionSystem/Core/Shaders/SeeThru.shader.meta create mode 100644 Assets/SteamVR/InteractionSystem/Core/Shaders/Silhouette.shader create mode 100644 Assets/SteamVR/InteractionSystem/Core/Shaders/Silhouette.shader.meta create mode 100644 Assets/SteamVR/InteractionSystem/Hints.meta create mode 100644 Assets/SteamVR/InteractionSystem/Hints/Materials.meta create mode 100644 Assets/SteamVR/InteractionSystem/Hints/Materials/ControllerButtonHints.mat create mode 100644 Assets/SteamVR/InteractionSystem/Hints/Materials/ControllerButtonHints.mat.meta create mode 100644 Assets/SteamVR/InteractionSystem/Hints/Materials/ControllerTextHintAnchor.mat create mode 100644 Assets/SteamVR/InteractionSystem/Hints/Materials/ControllerTextHintAnchor.mat.meta create mode 100644 Assets/SteamVR/InteractionSystem/Hints/Materials/ControllerTextHintLine.mat create mode 100644 Assets/SteamVR/InteractionSystem/Hints/Materials/ControllerTextHintLine.mat.meta create mode 100644 Assets/SteamVR/InteractionSystem/Hints/Prefabs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Hints/Prefabs/ControllerTextHint.prefab create mode 100644 Assets/SteamVR/InteractionSystem/Hints/Prefabs/ControllerTextHint.prefab.meta create mode 100644 Assets/SteamVR/InteractionSystem/Hints/Scripts.meta create mode 100644 Assets/SteamVR/InteractionSystem/Hints/Scripts/ControllerButtonHints.cs create mode 100644 Assets/SteamVR/InteractionSystem/Hints/Scripts/ControllerButtonHints.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Hints/Shaders.meta create mode 100644 Assets/SteamVR/InteractionSystem/Hints/Shaders/ControllerButtonHints.shader create mode 100644 Assets/SteamVR/InteractionSystem/Hints/Shaders/ControllerButtonHints.shader.meta create mode 100644 Assets/SteamVR/InteractionSystem/Hints/Textures.meta create mode 100644 Assets/SteamVR/InteractionSystem/Hints/Textures/HintBackground.png create mode 100644 Assets/SteamVR/InteractionSystem/Hints/Textures/HintBackground.png.meta create mode 100644 Assets/SteamVR/InteractionSystem/InteractionSystem.pdf create mode 100644 Assets/SteamVR/InteractionSystem/InteractionSystem.pdf.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Animators.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Animators/LongbowAnimationController.controller create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Animators/LongbowAnimationController.controller.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Materials.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Materials/ArcheryTargetWeeble.mat create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Materials/ArcheryTargetWeeble.mat.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Materials/Arrow.mat create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Materials/Arrow.mat.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Materials/ArrowGlint.mat create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Materials/ArrowGlint.mat.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Materials/BalloonColor.mat create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Materials/BalloonColor.mat.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Materials/BalloonPop.mat create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Materials/BalloonPop.mat.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Materials/BalloonPopLine.mat create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Materials/BalloonPopLine.mat.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Materials/ItemPickupOutline.mat create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Materials/ItemPickupOutline.mat.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Materials/ItemPickupOutlineThick.mat create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Materials/ItemPickupOutlineThick.mat.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Materials/Longbow.mat create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Materials/Longbow.mat.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Materials/LongbowNotch.mat create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Materials/LongbowNotch.mat.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Materials/LongbowString.mat create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Materials/LongbowString.mat.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Materials/TorchFire.mat create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Materials/TorchFire.mat.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Materials/TorchHead.mat create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Materials/TorchHead.mat.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Materials/TorchShaft.mat create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Materials/TorchShaft.mat.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Models.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Models/Arrow.fbx create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Models/Arrow.fbx.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Models/Balloon.fbx create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Models/Balloon.fbx.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Models/Longbow.fbx create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Models/Longbow.fbx.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/PhysicMaterials.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/PhysicMaterials/ArcheryTargetPhysMaterial.physicMaterial create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/PhysicMaterials/ArcheryTargetPhysMaterial.physicMaterial.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Prefabs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Prefabs/ArcheryWeeble.prefab create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Prefabs/ArcheryWeeble.prefab.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Prefabs/Arrow.prefab create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Prefabs/Arrow.prefab.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Prefabs/ArrowHand.prefab create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Prefabs/ArrowHand.prefab.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Prefabs/Balloon.prefab create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Prefabs/Balloon.prefab.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Prefabs/BalloonPop.prefab create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Prefabs/BalloonPop.prefab.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Prefabs/BalloonPopNoSound.prefab create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Prefabs/BalloonPopNoSound.prefab.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Prefabs/BalloonSpawner.prefab create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Prefabs/BalloonSpawner.prefab.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Prefabs/FireSmall.prefab create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Prefabs/FireSmall.prefab.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Prefabs/FireTiny.prefab create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Prefabs/FireTiny.prefab.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Prefabs/FireWhip.prefab create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Prefabs/FireWhip.prefab.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Prefabs/Longbow.prefab create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Prefabs/Longbow.prefab.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Prefabs/LongbowItemPackage.prefab create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Prefabs/LongbowItemPackage.prefab.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Prefabs/LongbowOutline.prefab create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Prefabs/LongbowOutline.prefab.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Prefabs/LongbowPreview.prefab create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Prefabs/LongbowPreview.prefab.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Prefabs/Torch.prefab create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Prefabs/Torch.prefab.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Scripts.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Scripts/ArcheryTarget.cs create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Scripts/ArcheryTarget.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Scripts/Arrow.cs create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Scripts/Arrow.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Scripts/ArrowHand.cs create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Scripts/ArrowHand.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Scripts/ArrowheadRotation.cs create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Scripts/ArrowheadRotation.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Scripts/Balloon.cs create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Scripts/Balloon.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Scripts/BalloonColliders.cs create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Scripts/BalloonColliders.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Scripts/BalloonHapticBump.cs create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Scripts/BalloonHapticBump.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Scripts/BalloonSpawner.cs create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Scripts/BalloonSpawner.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Scripts/ExplosionWobble.cs create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Scripts/ExplosionWobble.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Scripts/FireSource.cs create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Scripts/FireSource.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Scripts/Longbow.cs create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Scripts/Longbow.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Scripts/SoundBowClick.cs create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Scripts/SoundBowClick.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowAir01.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowAir01.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowAir02.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowAir02.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowAir03.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowAir03.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowAir04.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowAir04.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowAir05.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowAir05.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowAir06.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowAir06.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowAir07.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowAir07.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowAir08.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowAir08.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowAir09.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowAir09.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowFallGround01.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowFallGround01.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowFallGround02.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowFallGround02.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowFallGround03.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowFallGround03.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowFallGround04.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowFallGround04.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowFallGround05.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowFallGround05.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowFallGround06.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowFallGround06.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowFallGround07.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowFallGround07.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowFireLoop01.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowFireLoop01.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowHit01.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowHit01.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowHit02.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowHit02.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowHit03.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowHit03.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowHit04.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowHit04.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowHit05.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowHit05.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowHit06.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowHit06.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowIgnite01.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowIgnite01.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowLaunchFire01.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowLaunchFire01.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowLaunchFire02.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowLaunchFire02.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowLaunchFire03.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowLaunchFire03.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowLaunchFire04.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowLaunchFire04.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowLaunchFire05.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowLaunchFire05.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowLaunchFire06.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowLaunchFire06.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowLaunchFire07.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowLaunchFire07.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowLaunchFire08.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowLaunchFire08.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowLaunchFire09.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowLaunchFire09.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowLaunchFire10.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowLaunchFire10.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowLaunchFire11.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowLaunchFire11.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowLaunchFire12.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowLaunchFire12.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowLaunchFire13.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowLaunchFire13.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowNock01.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowNock01.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowNock02.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowNock02.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowNock03.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowNock03.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowNock04.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowNock04.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowNock05.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowNock05.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowNock06.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowNock06.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowNock07.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowNock07.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowNock08.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowNock08.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowNock09.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowNock09.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowNock10.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowNock10.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowNock11.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowNock11.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowNock12.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowNock12.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowNock13.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowNock13.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowNock14.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowNock14.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowNock15.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowNock15.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowNock16.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowNock16.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowNock17.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowNock17.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowRelease01.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowRelease01.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowRelease02.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowRelease02.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowRelease03.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowRelease03.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowRelease04.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowRelease04.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowRelease05.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowRelease05.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowRelease06.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowRelease06.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowRelease07.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowRelease07.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowRelease08.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowRelease08.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowRelease09.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowRelease09.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowSpawn01.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowSpawn01.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowSpawn02.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowSpawn02.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowSpawn03.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowSpawn03.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowSpawn04.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowSpawn04.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowSpawn05.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowSpawn05.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowSpawn06.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowSpawn06.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowSpawn07.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowSpawn07.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowSpawn08.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/ArrowSpawn08.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/BalloonBounce01.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/BalloonBounce01.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/BalloonBounce02.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/BalloonBounce02.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/BalloonBounce03.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/BalloonBounce03.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/BalloonBounce04.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/BalloonBounce04.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/BalloonBounce05.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/BalloonBounce05.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/BalloonBounce07.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/BalloonBounce07.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/BalloonInflate01.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/BalloonInflate01.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/BalloonPop01.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/BalloonPop01.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/BalloonPop02.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/BalloonPop02.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/BalloonPop03.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/BalloonPop03.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/BalloonPop04.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/BalloonPop04.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/BalloonPop05.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/BalloonPop05.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/BalloonPop06.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/BalloonPop06.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/BalloonPop07.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/BalloonPop07.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/BalloonRubber01.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/BalloonRubber01.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/BalloonRubber02.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/BalloonRubber02.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/BalloonRubber03.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/BalloonRubber03.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/LongbowPullBack01.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/LongbowPullBack01.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/LongbowPullBack02.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/LongbowPullBack02.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/LongbowPullBack03.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/LongbowPullBack03.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/LongbowPullBack04.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/LongbowPullBack04.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/LongbowPullBack05.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/LongbowPullBack05.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/LongbowPullBack06.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/LongbowPullBack06.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/LongbowPullBack07.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/LongbowPullBack07.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/LongbowPullBack08.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/LongbowPullBack08.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/LongbowPullBack09.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/LongbowPullBack09.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/LongbowPullBack10.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/LongbowPullBack10.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/LongbowPullBack11.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/LongbowPullBack11.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/LongbowPullBack12.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/LongbowPullBack12.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/LongbowPullBack13.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/LongbowPullBack13.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/LongbowPullBack14.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/LongbowPullBack14.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/LongbowPullBack15.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/LongbowPullBack15.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/LongbowPullBack16.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/LongbowPullBack16.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/LongbowPullBackclick_01.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/LongbowPullBackclick_01.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/MasterLongbowMix.mixer create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/MasterLongbowMix.mixer.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/TorchFireLoop01.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/TorchFireLoop01.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/TorchFireLoop02.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/TorchFireLoop02.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/TorchFireLoop03.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/TorchFireLoop03.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/TorchFireLoop04.wav create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Sounds/TorchFireLoop04.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Textures.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Textures/ArcheryWeebleTarget.png create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Textures/ArcheryWeebleTarget.png.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Textures/ArrowAlbedoTransparency.tga create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Textures/ArrowAlbedoTransparency.tga.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Textures/ArrowAmbientOcclusion.tga create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Textures/ArrowAmbientOcclusion.tga.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Textures/ArrowEmissive.psd create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Textures/ArrowEmissive.psd.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Textures/ArrowGlint.png create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Textures/ArrowGlint.png.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Textures/ArrowMetallicSmoothness.tga create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Textures/ArrowMetallicSmoothness.tga.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Textures/ArrowNormal.tga create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Textures/ArrowNormal.tga.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Textures/BalloonColor.tga create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Textures/BalloonColor.tga.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Textures/BalloonPop.png create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Textures/BalloonPop.png.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Textures/BalloonPopLine.png create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Textures/BalloonPopLine.png.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Textures/Longbow.psd create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Textures/Longbow.psd.meta create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Textures/TorchFire.png create mode 100644 Assets/SteamVR/InteractionSystem/Longbow/Textures/TorchFire.png.meta create mode 100644 Assets/SteamVR/InteractionSystem/Readme_InteractionSystem.txt create mode 100644 Assets/SteamVR/InteractionSystem/Readme_InteractionSystem.txt.meta create mode 100644 Assets/SteamVR/InteractionSystem/Samples.meta create mode 100644 Assets/SteamVR/InteractionSystem/Samples/Animations.meta create mode 100644 Assets/SteamVR/InteractionSystem/Samples/Animations/BallAnimation.anim create mode 100644 Assets/SteamVR/InteractionSystem/Samples/Animations/BallAnimation.anim.meta create mode 100644 Assets/SteamVR/InteractionSystem/Samples/Animators.meta create mode 100644 Assets/SteamVR/InteractionSystem/Samples/Animators/BallAnimationController.controller create mode 100644 Assets/SteamVR/InteractionSystem/Samples/Animators/BallAnimationController.controller.meta create mode 100644 Assets/SteamVR/InteractionSystem/Samples/Materials.meta create mode 100644 Assets/SteamVR/InteractionSystem/Samples/Materials/Grey.mat create mode 100644 Assets/SteamVR/InteractionSystem/Samples/Materials/Grey.mat.meta create mode 100644 Assets/SteamVR/InteractionSystem/Samples/Materials/LightGreen.mat create mode 100644 Assets/SteamVR/InteractionSystem/Samples/Materials/LightGreen.mat.meta create mode 100644 Assets/SteamVR/InteractionSystem/Samples/Materials/ShinyWhite.mat create mode 100644 Assets/SteamVR/InteractionSystem/Samples/Materials/ShinyWhite.mat.meta create mode 100644 Assets/SteamVR/InteractionSystem/Samples/Materials/ShinyWhiteHighlighted.mat create mode 100644 Assets/SteamVR/InteractionSystem/Samples/Materials/ShinyWhiteHighlighted.mat.meta create mode 100644 Assets/SteamVR/InteractionSystem/Samples/Materials/ShinyYellow.mat create mode 100644 Assets/SteamVR/InteractionSystem/Samples/Materials/ShinyYellow.mat.meta create mode 100644 Assets/SteamVR/InteractionSystem/Samples/Prefabs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Samples/Prefabs/ThrowableBall.prefab create mode 100644 Assets/SteamVR/InteractionSystem/Samples/Prefabs/ThrowableBall.prefab.meta create mode 100644 Assets/SteamVR/InteractionSystem/Samples/Prefabs/ThrowableCube.prefab create mode 100644 Assets/SteamVR/InteractionSystem/Samples/Prefabs/ThrowableCube.prefab.meta create mode 100644 Assets/SteamVR/InteractionSystem/Samples/Scenes.meta create mode 100644 Assets/SteamVR/InteractionSystem/Samples/Scenes/Interactions_Example.unity create mode 100644 Assets/SteamVR/InteractionSystem/Samples/Scenes/Interactions_Example.unity.meta create mode 100644 Assets/SteamVR/InteractionSystem/Samples/Scripts.meta create mode 100644 Assets/SteamVR/InteractionSystem/Samples/Scripts/ControllerHintsExample.cs create mode 100644 Assets/SteamVR/InteractionSystem/Samples/Scripts/ControllerHintsExample.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Samples/Scripts/InteractableExample.cs create mode 100644 Assets/SteamVR/InteractionSystem/Samples/Scripts/InteractableExample.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Teleport.meta create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Materials.meta create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Materials/TeleportAreaHighlighted.mat create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Materials/TeleportAreaHighlighted.mat.meta create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Materials/TeleportAreaHighlightedBright.mat create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Materials/TeleportAreaHighlightedBright.mat.meta create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Materials/TeleportAreaHighlightedLow.mat create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Materials/TeleportAreaHighlightedLow.mat.meta create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Materials/TeleportAreaLocked.mat create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Materials/TeleportAreaLocked.mat.meta create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Materials/TeleportAreaVisible.mat create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Materials/TeleportAreaVisible.mat.meta create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Materials/TeleportAreaVisibleBright.mat create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Materials/TeleportAreaVisibleBright.mat.meta create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Materials/TeleportAreaVisibleLow.mat create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Materials/TeleportAreaVisibleLow.mat.meta create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Materials/TeleportPlaySpace.mat create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Materials/TeleportPlaySpace.mat.meta create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Materials/TeleportPlayspaceVisualize.mat create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Materials/TeleportPlayspaceVisualize.mat.meta create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Materials/TeleportPointHighlighted.mat create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Materials/TeleportPointHighlighted.mat.meta create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Materials/TeleportPointInvalid.mat create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Materials/TeleportPointInvalid.mat.meta create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Materials/TeleportPointLocked.mat create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Materials/TeleportPointLocked.mat.meta create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Materials/TeleportPointText.mat create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Materials/TeleportPointText.mat.meta create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Materials/TeleportPointVisible.mat create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Materials/TeleportPointVisible.mat.meta create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Materials/TeleportPointer.mat create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Materials/TeleportPointer.mat.meta create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Models.meta create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Models/TeleportDestination.fbx create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Models/TeleportDestination.fbx.meta create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Models/TeleportDestinationInvalid.fbx create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Models/TeleportDestinationInvalid.fbx.meta create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Models/TeleportMarker.fbx create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Models/TeleportMarker.fbx.meta create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Models/TeleportPlayAreaPieces.fbx create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Models/TeleportPlayAreaPieces.fbx.meta create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Prefabs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Prefabs/TeleportPoint.prefab create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Prefabs/TeleportPoint.prefab.meta create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Prefabs/Teleporting.prefab create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Prefabs/Teleporting.prefab.meta create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Scripts.meta create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Scripts/AllowTeleportWhileAttachedToHand.cs create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Scripts/AllowTeleportWhileAttachedToHand.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Scripts/ChaperoneInfo.cs create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Scripts/ChaperoneInfo.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Scripts/IgnoreTeleportTrace.cs create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Scripts/IgnoreTeleportTrace.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Scripts/Teleport.cs create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Scripts/Teleport.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Scripts/TeleportArc.cs create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Scripts/TeleportArc.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Scripts/TeleportArea.cs create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Scripts/TeleportArea.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Scripts/TeleportMarkerBase.cs create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Scripts/TeleportMarkerBase.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Scripts/TeleportPoint.cs create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Scripts/TeleportPoint.cs.meta create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Shaders.meta create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Shaders/Highlight.shader create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Shaders/Highlight.shader.meta create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Sounds.meta create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Sounds/TeleportBadArea.wav create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Sounds/TeleportBadArea.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Sounds/TeleportGo.wav create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Sounds/TeleportGo.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Sounds/TeleportGoodArea.wav create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Sounds/TeleportGoodArea.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Sounds/TeleportPointerLoop.wav create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Sounds/TeleportPointerLoop.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Sounds/TeleportPointerStart.wav create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Sounds/TeleportPointerStart.wav.meta create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Textures.meta create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Textures/TeleportAreaPatternColor.tga create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Textures/TeleportAreaPatternColor.tga.meta create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Textures/TeleportMarker.psd create mode 100644 Assets/SteamVR/InteractionSystem/Teleport/Textures/TeleportMarker.psd.meta create mode 100644 Assets/SteamVR/Materials.meta create mode 100644 Assets/SteamVR/Materials/workshop.mat create mode 100644 Assets/SteamVR/Materials/workshop.mat.meta create mode 100644 Assets/SteamVR/Plugins.meta create mode 100644 Assets/SteamVR/Plugins/openvr_api.cs create mode 100644 Assets/SteamVR/Plugins/openvr_api.cs.meta create mode 100644 Assets/SteamVR/Prefabs.meta create mode 100644 Assets/SteamVR/Prefabs/[CameraRig].prefab create mode 100644 Assets/SteamVR/Prefabs/[CameraRig].prefab.meta create mode 100644 Assets/SteamVR/Prefabs/[Status].prefab create mode 100644 Assets/SteamVR/Prefabs/[Status].prefab.meta create mode 100644 Assets/SteamVR/Prefabs/[SteamVR].prefab create mode 100644 Assets/SteamVR/Prefabs/[SteamVR].prefab.meta create mode 100644 Assets/SteamVR/Resources.meta create mode 100644 Assets/SteamVR/Resources/SteamVR_AlphaOut.shader create mode 100644 Assets/SteamVR/Resources/SteamVR_AlphaOut.shader.meta create mode 100644 Assets/SteamVR/Resources/SteamVR_ClearAll.shader create mode 100644 Assets/SteamVR/Resources/SteamVR_ClearAll.shader.meta create mode 100644 Assets/SteamVR/Resources/SteamVR_ColorOut.shader create mode 100644 Assets/SteamVR/Resources/SteamVR_ColorOut.shader.meta create mode 100644 Assets/SteamVR/Resources/SteamVR_ExternalCamera.prefab create mode 100644 Assets/SteamVR/Resources/SteamVR_ExternalCamera.prefab.meta create mode 100644 Assets/SteamVR/Resources/SteamVR_Fade.shader create mode 100644 Assets/SteamVR/Resources/SteamVR_Fade.shader.meta create mode 100644 Assets/SteamVR/Resources/SteamVR_SphericalProjection.shader create mode 100644 Assets/SteamVR/Resources/SteamVR_SphericalProjection.shader.meta create mode 100644 Assets/SteamVR/Scenes.meta create mode 100644 Assets/SteamVR/Scenes/example.unity create mode 100644 Assets/SteamVR/Scenes/example.unity.meta create mode 100644 Assets/SteamVR/Scripts.meta create mode 100644 Assets/SteamVR/Scripts/SteamVR.cs create mode 100644 Assets/SteamVR/Scripts/SteamVR.cs.meta create mode 100644 Assets/SteamVR/Scripts/SteamVR_Camera.cs create mode 100644 Assets/SteamVR/Scripts/SteamVR_Camera.cs.meta create mode 100644 Assets/SteamVR/Scripts/SteamVR_CameraFlip.cs create mode 100644 Assets/SteamVR/Scripts/SteamVR_CameraFlip.cs.meta create mode 100644 Assets/SteamVR/Scripts/SteamVR_CameraMask.cs create mode 100644 Assets/SteamVR/Scripts/SteamVR_CameraMask.cs.meta create mode 100644 Assets/SteamVR/Scripts/SteamVR_Controller.cs create mode 100644 Assets/SteamVR/Scripts/SteamVR_Controller.cs.meta create mode 100644 Assets/SteamVR/Scripts/SteamVR_ControllerManager.cs create mode 100644 Assets/SteamVR/Scripts/SteamVR_ControllerManager.cs.meta create mode 100644 Assets/SteamVR/Scripts/SteamVR_Ears.cs create mode 100644 Assets/SteamVR/Scripts/SteamVR_Ears.cs.meta create mode 100644 Assets/SteamVR/Scripts/SteamVR_Events.cs create mode 100644 Assets/SteamVR/Scripts/SteamVR_Events.cs.meta create mode 100644 Assets/SteamVR/Scripts/SteamVR_ExternalCamera.cs create mode 100644 Assets/SteamVR/Scripts/SteamVR_ExternalCamera.cs.meta create mode 100644 Assets/SteamVR/Scripts/SteamVR_Fade.cs create mode 100644 Assets/SteamVR/Scripts/SteamVR_Fade.cs.meta create mode 100644 Assets/SteamVR/Scripts/SteamVR_Frustum.cs create mode 100644 Assets/SteamVR/Scripts/SteamVR_Frustum.cs.meta create mode 100644 Assets/SteamVR/Scripts/SteamVR_GameView.cs create mode 100644 Assets/SteamVR/Scripts/SteamVR_GameView.cs.meta create mode 100644 Assets/SteamVR/Scripts/SteamVR_IK.cs create mode 100644 Assets/SteamVR/Scripts/SteamVR_IK.cs.meta create mode 100644 Assets/SteamVR/Scripts/SteamVR_LoadLevel.cs create mode 100644 Assets/SteamVR/Scripts/SteamVR_LoadLevel.cs.meta create mode 100644 Assets/SteamVR/Scripts/SteamVR_Menu.cs create mode 100644 Assets/SteamVR/Scripts/SteamVR_Menu.cs.meta create mode 100644 Assets/SteamVR/Scripts/SteamVR_Overlay.cs create mode 100644 Assets/SteamVR/Scripts/SteamVR_Overlay.cs.meta create mode 100644 Assets/SteamVR/Scripts/SteamVR_PlayArea.cs create mode 100644 Assets/SteamVR/Scripts/SteamVR_PlayArea.cs.meta create mode 100644 Assets/SteamVR/Scripts/SteamVR_Render.cs create mode 100644 Assets/SteamVR/Scripts/SteamVR_Render.cs.meta create mode 100644 Assets/SteamVR/Scripts/SteamVR_RenderModel.cs create mode 100644 Assets/SteamVR/Scripts/SteamVR_RenderModel.cs.meta create mode 100644 Assets/SteamVR/Scripts/SteamVR_Skybox.cs create mode 100644 Assets/SteamVR/Scripts/SteamVR_Skybox.cs.meta create mode 100644 Assets/SteamVR/Scripts/SteamVR_SphericalProjection.cs create mode 100644 Assets/SteamVR/Scripts/SteamVR_SphericalProjection.cs.meta create mode 100644 Assets/SteamVR/Scripts/SteamVR_Stats.cs create mode 100644 Assets/SteamVR/Scripts/SteamVR_Stats.cs.meta create mode 100644 Assets/SteamVR/Scripts/SteamVR_TestController.cs create mode 100644 Assets/SteamVR/Scripts/SteamVR_TestController.cs.meta create mode 100644 Assets/SteamVR/Scripts/SteamVR_TrackedCamera.cs create mode 100644 Assets/SteamVR/Scripts/SteamVR_TrackedCamera.cs.meta create mode 100644 Assets/SteamVR/Scripts/SteamVR_TrackedObject.cs create mode 100644 Assets/SteamVR/Scripts/SteamVR_TrackedObject.cs.meta create mode 100644 Assets/SteamVR/Scripts/SteamVR_UpdatePoses.cs create mode 100644 Assets/SteamVR/Scripts/SteamVR_UpdatePoses.cs.meta create mode 100644 Assets/SteamVR/Scripts/SteamVR_Utils.cs create mode 100644 Assets/SteamVR/Scripts/SteamVR_Utils.cs.meta create mode 100644 Assets/SteamVR/Textures.meta create mode 100644 Assets/SteamVR/Textures/arrow.png create mode 100644 Assets/SteamVR/Textures/arrow.png.meta create mode 100644 Assets/SteamVR/Textures/background.png create mode 100644 Assets/SteamVR/Textures/background.png.meta create mode 100644 Assets/SteamVR/Textures/logo.png create mode 100644 Assets/SteamVR/Textures/logo.png.meta create mode 100644 Assets/SteamVR/Textures/overlay.renderTexture create mode 100644 Assets/SteamVR/Textures/overlay.renderTexture.meta create mode 100644 Assets/SteamVR/Textures/workshop.png create mode 100644 Assets/SteamVR/Textures/workshop.png.meta create mode 100644 Assets/SteamVR/quickstart.pdf create mode 100644 Assets/SteamVR/quickstart.pdf.meta create mode 100644 Assets/SteamVR/readme.txt create mode 100644 Assets/SteamVR/readme.txt.meta delete mode 100644 Library/ScriptAssemblies/BuiltinAssemblies.stamp create mode 100644 Library/ShaderCache/0/010872b93fe24a33e854bc730763bcdd.bin create mode 100644 Library/ShaderCache/0/01945c0b6bb6f4b1a1dbe63eb0f1ef95.bin create mode 100644 Library/ShaderCache/0/04b756c7c00d419663f548f3b61dc437.bin create mode 100644 Library/ShaderCache/0/0557700fc19485fccdf0a563d76cfdbc.bin create mode 100644 Library/ShaderCache/0/057753b6487a75e478befba199fbc811.bin create mode 100644 Library/ShaderCache/0/07994389b23bd2b8cb0dc823812d8bae.bin create mode 100644 Library/ShaderCache/0/0a5f7cd127c6a84d59daa3abedcf9524.bin create mode 100644 Library/ShaderCache/0/0bc18df5585fa427e27ef62344a57b8b.bin create mode 100644 Library/ShaderCache/0/0bc3c7c3f6021d0fe66daa5fd94f0146.bin create mode 100644 Library/ShaderCache/0/0c1bb3325aae6b408214a1b4f4bcaa1d.bin create mode 100644 Library/ShaderCache/0/0d1bf2d5964a3f457f48ee473dc05c34.bin create mode 100644 Library/ShaderCache/0/0dfc6cdf38fb1674c75a75c17ecf831e.bin create mode 100644 Library/ShaderCache/1/105551054808bdc4ac3556ca4c9d8626.bin create mode 100644 Library/ShaderCache/1/10ce8ffe7bf6560e2aa9e50b6e1ff980.bin create mode 100644 Library/ShaderCache/1/1277b3c8e2630611ec7c17a2ddf9cbf4.bin create mode 100644 Library/ShaderCache/1/16c55704c41c0539aa7fc79ca6e1a5ff.bin create mode 100644 Library/ShaderCache/1/173707cef55073c8ac72a5c7796f3ed7.bin create mode 100644 Library/ShaderCache/1/1784c7df1b62cb051755f45e0a44ea23.bin create mode 100644 Library/ShaderCache/1/18b04582486cc0f3574fa12398359ae0.bin create mode 100644 Library/ShaderCache/1/18b42b9ab6881f24aa873af12962b67d.bin create mode 100644 Library/ShaderCache/1/1db3bc8ef1fd14cc5d7ce3fcf4489432.bin create mode 100644 Library/ShaderCache/2/24325e768333ee6f2c8b37eef6719cef.bin create mode 100644 Library/ShaderCache/2/257acdd47cfeee4d8e15109ff1c123c5.bin create mode 100644 Library/ShaderCache/2/2734cce25812b585ebef1605f7ecae67.bin create mode 100644 Library/ShaderCache/2/2776e72401d8ce37c6da08833be0acac.bin create mode 100644 Library/ShaderCache/2/2889cb1145cabea912416a53a40204ef.bin create mode 100644 Library/ShaderCache/2/29b61d8db24289e8dd457926d480d811.bin create mode 100644 Library/ShaderCache/2/2c5a04f4966839838a7547ea82e67e98.bin create mode 100644 Library/ShaderCache/2/2dac9244fbe9f3fd2046f8a5bb42b8d0.bin create mode 100644 Library/ShaderCache/2/2efd2eb160e9c733bddbdccf306bd385.bin create mode 100644 Library/ShaderCache/2/2f74c5e61b5ba1609ef3f60bd15e7a77.bin create mode 100644 Library/ShaderCache/2/2fa6a1ade4d412d6cf182560c1832572.bin create mode 100644 Library/ShaderCache/3/300868fd6978f344bdd7e4653d47fb16.bin create mode 100644 Library/ShaderCache/3/31c8b71371bc2a0d642436d24efafa7a.bin create mode 100644 Library/ShaderCache/3/34a71143ee3f646c95b4f4c397ea7dbd.bin create mode 100644 Library/ShaderCache/3/3699df2f42c62b354098eec5c2aa2659.bin create mode 100644 Library/ShaderCache/3/3a268b6ee30613d79db54a0ffc9014b3.bin create mode 100644 Library/ShaderCache/3/3b1f35bbd271d6dff99b096bfee1501b.bin create mode 100644 Library/ShaderCache/3/3db6adf81fb3361c05d850e32e96efb1.bin create mode 100644 Library/ShaderCache/3/3f290e2e96f1cafc2320deb24a2c4522.bin create mode 100644 Library/ShaderCache/3/3fb93c1af9b039fa987f3abc2126fe07.bin create mode 100644 Library/ShaderCache/4/448f25f566a7b4e06ee8d1056f2766f4.bin create mode 100644 Library/ShaderCache/4/4a6526541dea7484e8947e73d501a7b8.bin create mode 100644 Library/ShaderCache/4/4aaf63c1f060cf0734055e288036bf19.bin create mode 100644 Library/ShaderCache/4/4ca72c2652d656d48a5ca423206d514c.bin create mode 100644 Library/ShaderCache/4/4ea7365b6dd265539964fe6d9a76be97.bin create mode 100644 Library/ShaderCache/4/4f305316d61798a929632db23a841102.bin create mode 100644 Library/ShaderCache/5/52e9a36054c66e862285a084ac384a09.bin create mode 100644 Library/ShaderCache/5/545fc95148752038ca3326df544b4e15.bin create mode 100644 Library/ShaderCache/5/580656ebcf76c6227a262a1077b6913a.bin create mode 100644 Library/ShaderCache/5/58183170fa4b97c9dac4be88480225c2.bin create mode 100644 Library/ShaderCache/5/5a44393fed96759621cb6802955926b0.bin create mode 100644 Library/ShaderCache/5/5c2ff926e7b4445f3b9dcb01938255ff.bin create mode 100644 Library/ShaderCache/5/5ff82b4570aa9d30f8b210e175ad52e6.bin create mode 100644 Library/ShaderCache/6/60e88c3c669b5ba2b03b3b978595d872.bin create mode 100644 Library/ShaderCache/6/618325e8ab699a19ad19d11219d28699.bin create mode 100644 Library/ShaderCache/6/627486f11d3400ef278e6cd6b3bb0dce.bin create mode 100644 Library/ShaderCache/6/6431e1c3499dab0abe006749d7551d42.bin create mode 100644 Library/ShaderCache/6/653b62df8a9318c7fd29125e8d7f5cdc.bin create mode 100644 Library/ShaderCache/6/65a42015ef8db1d9c3af45631c773f0d.bin create mode 100644 Library/ShaderCache/6/66ae4267ad2b10cfc713904ff1271181.bin create mode 100644 Library/ShaderCache/6/672ce0f067250b0125df809fd5ad123d.bin create mode 100644 Library/ShaderCache/6/67b25d75340acaa306ef9767e82e410b.bin create mode 100644 Library/ShaderCache/6/696c47e470ad3eb69013f7a6ed8a773e.bin create mode 100644 Library/ShaderCache/6/6d0979a17fb433a48608d718ef7526fb.bin create mode 100644 Library/ShaderCache/6/6d80c14f37e30a6be99f93c075220195.bin create mode 100644 Library/ShaderCache/6/6dbe3c8b79f9cd99d9e5c149775834dc.bin create mode 100644 Library/ShaderCache/6/6e806fe482b10335a889638c9e1d9e59.bin create mode 100644 Library/ShaderCache/7/7281e7d14e70c357d67eaa397d3120fc.bin create mode 100644 Library/ShaderCache/7/72ca62d1058d04dc1629d3a8f064e938.bin create mode 100644 Library/ShaderCache/7/7444e96bdfb2d72260f4db15342dce24.bin create mode 100644 Library/ShaderCache/7/75834d2c911f34d9f1379d813e15841f.bin create mode 100644 Library/ShaderCache/7/75eb8dcd3638abb80983c2b6a4678f7f.bin create mode 100644 Library/ShaderCache/7/78545b86d01b0f19ee03c49d7cffb0d4.bin create mode 100644 Library/ShaderCache/7/7935546796d63355c13b4d1619b0306c.bin create mode 100644 Library/ShaderCache/7/795deec2acf98a89d689e15f6e47ee49.bin create mode 100644 Library/ShaderCache/7/7c4d4eb31036ba1841cf4bee1a96986f.bin create mode 100644 Library/ShaderCache/7/7c7731c6f38dc8cf0a837f76a1d00762.bin create mode 100644 Library/ShaderCache/8/805f4658c4dbf51df35d2d00e14e8ef2.bin create mode 100644 Library/ShaderCache/8/81a93c37db393b0228d7a6c4401612bb.bin create mode 100644 Library/ShaderCache/8/82291f2f7ad5b365ddce67ee712a451f.bin create mode 100644 Library/ShaderCache/8/82852b0c455c6c97b3b0e3cea47cf7a5.bin create mode 100644 Library/ShaderCache/8/888271fdd986578ff98535a20a7d9518.bin create mode 100644 Library/ShaderCache/8/8a1399fc0dd5120f30ad9e7d09407704.bin create mode 100644 Library/ShaderCache/8/8c3acaa519fbbb228a6d6729ce7af7c3.bin create mode 100644 Library/ShaderCache/8/8cc5bc41a85fbfef29d4ce027f49d633.bin create mode 100644 Library/ShaderCache/8/8ce4c716d46390139e2ad1aec36992ef.bin create mode 100644 Library/ShaderCache/8/8de48a5ea6456d8f1989b46a370fc20b.bin create mode 100644 Library/ShaderCache/9/90eb9490e04e1e7d10acc47036b0f783.bin create mode 100644 Library/ShaderCache/9/935b686b54292eaebb4652b481d37eab.bin create mode 100644 Library/ShaderCache/9/93f2905a160463e2816bede7594793f5.bin create mode 100644 Library/ShaderCache/9/9415bd295ca61bf99fa1804157cd2e15.bin create mode 100644 Library/ShaderCache/9/9578f75d49becdce4523dc96a6da136a.bin create mode 100644 Library/ShaderCache/9/97d95c1398e94879cf4d4930c2317e19.bin create mode 100644 Library/ShaderCache/9/99523feb5550e6bab45ecbf4408a0f28.bin create mode 100644 Library/ShaderCache/a/a0509a735171b2be6eaacdccf9d4b231.bin create mode 100644 Library/ShaderCache/a/a14c7e116c308e47856977fcd03ade9b.bin create mode 100644 Library/ShaderCache/a/a197facaf1d4130127c119d92e1b7506.bin create mode 100644 Library/ShaderCache/a/a1e6559118c3f8df7f1de7a58938c10c.bin create mode 100644 Library/ShaderCache/a/a495bec9ea7d615c9f20911d9025bd15.bin create mode 100644 Library/ShaderCache/a/a745595dd4631babd3d96f901bd1d482.bin create mode 100644 Library/ShaderCache/a/a7b585cdf5c34e925c1b0c1485b0c39c.bin create mode 100644 Library/ShaderCache/a/a8ac51a2057ac4f3f624dd01c311a806.bin create mode 100644 Library/ShaderCache/a/a9b40f960f5ca74ce0e3e888348b8030.bin create mode 100644 Library/ShaderCache/a/aa53a2058d866be485784e27ada641d1.bin create mode 100644 Library/ShaderCache/a/ab0b5ae9fb13e06fa3cfe7e3a3b49a30.bin create mode 100644 Library/ShaderCache/a/ac1566c01a3bf0109603370f6d9842e3.bin create mode 100644 Library/ShaderCache/a/ac6e34d8a1b9f983422d5d52a784f68d.bin create mode 100644 Library/ShaderCache/a/acab8c3b2f13ea34ba30c67fcc805d02.bin create mode 100644 Library/ShaderCache/a/acd3c1102868665bd952ccd197e14a3a.bin create mode 100644 Library/ShaderCache/a/acf1a2fe357cf496c9c4a6eccb794aee.bin create mode 100644 Library/ShaderCache/a/af897cb11fdff3a859edf2a49270911f.bin create mode 100644 Library/ShaderCache/a/af91e4ccbecc99ecc6c9a60d498c33fc.bin create mode 100644 Library/ShaderCache/b/b158a66d876a26357a526885884b898a.bin create mode 100644 Library/ShaderCache/b/b1877c79ee0dcc0b86b891987d38747c.bin create mode 100644 Library/ShaderCache/b/b3b99ffdf55d9469322a846936af8957.bin create mode 100644 Library/ShaderCache/b/b4b43d3b301d47a29dc52971c7126c55.bin create mode 100644 Library/ShaderCache/b/b5c659d886f475a5e6d06d72c9bd9838.bin create mode 100644 Library/ShaderCache/b/b64361a277559ce94dc95cd1162d0df0.bin create mode 100644 Library/ShaderCache/b/b6662b04cc4c59874ee0e315f40c75cf.bin create mode 100644 Library/ShaderCache/b/b831757c31c7f8743c037b9957f278de.bin create mode 100644 Library/ShaderCache/b/bb35c51d79c566a3d39269f6d82a5257.bin create mode 100644 Library/ShaderCache/c/c111f210ae2d8e4bc789c3c52a9e6f95.bin create mode 100644 Library/ShaderCache/c/c629f6fe71e8c5778b37821ef55108cb.bin create mode 100644 Library/ShaderCache/c/c81e2cbd5365a2ea8f7971f956e79e89.bin create mode 100644 Library/ShaderCache/c/c9fd24fa9e65da0b75a1ddf4cdb06587.bin create mode 100644 Library/ShaderCache/c/ca86e6413fde0bf557b407660e3cfc74.bin create mode 100644 Library/ShaderCache/c/cea7acd647551babe38edb9aa733eafa.bin create mode 100644 Library/ShaderCache/d/d02685cce0e745a77e2e152909d68d30.bin create mode 100644 Library/ShaderCache/d/d33cbec211c83658cdd06aa56c401a0c.bin create mode 100644 Library/ShaderCache/d/d3991442088d33a4c4c8e9877e0662f9.bin create mode 100644 Library/ShaderCache/d/d74bc46100fcc72fd77bd39cc626a486.bin create mode 100644 Library/ShaderCache/d/db06217dbe0cfa4eed4e2e4d9e924e93.bin create mode 100644 Library/ShaderCache/d/dccb71d1099ba5fbe143c64d358285da.bin create mode 100644 Library/ShaderCache/d/df908d088a9b47582fc53e77e3dcc11e.bin create mode 100644 Library/ShaderCache/e/e005c173301c48a20823ea1b2a07bc80.bin create mode 100644 Library/ShaderCache/e/e066d608eec9a6fdcbb693aa5a4cbfef.bin create mode 100644 Library/ShaderCache/e/e44e16060871711d2d2e4042e2236998.bin create mode 100644 Library/ShaderCache/e/e5f94b25ada4bc1f9ddf39c73aee8a97.bin create mode 100644 Library/ShaderCache/e/e8669a8c1319e75555ed06129c904512.bin create mode 100644 Library/ShaderCache/e/e892a58b46e9a3d19d8ec595f4034067.bin create mode 100644 Library/ShaderCache/e/e9bbdf27fd1a02e2d89c125ac13b6e59.bin create mode 100644 Library/ShaderCache/e/eabdb3ed37f7e9fd0446c1e53d88d7cd.bin create mode 100644 Library/ShaderCache/e/ec4a481f3ebbc3d72d114855f1409102.bin create mode 100644 Library/ShaderCache/e/ec5e175cba5ea464598d6152c62887c1.bin create mode 100644 Library/ShaderCache/e/ee8188331ee53ffc6a9f60a661cb7946.bin create mode 100644 Library/ShaderCache/e/ef3ced79c7ac87dff4cc2921f0445761.bin create mode 100644 Library/ShaderCache/f/f001eddb17125ef4afa207f462ffc30e.bin create mode 100644 Library/ShaderCache/f/f20fc526558edaeb3908f2bd23a78251.bin create mode 100644 Library/ShaderCache/f/f79cc3d39571a378f7e5d853f42b8c89.bin create mode 100644 Library/ShaderCache/f/fa09be718d6818d2277643ead4c35b98.bin create mode 100644 Library/ShaderCache/f/fe2b537e9dbe5cba555fd674dbb9e265.bin create mode 100644 Library/metadata/00/005ed5a6df2f5ff468efd6497d37fefa create mode 100644 Library/metadata/00/005ed5a6df2f5ff468efd6497d37fefa.info create mode 100644 Library/metadata/01/012bb97850e84ad4c890dcab506009bc create mode 100644 Library/metadata/01/012bb97850e84ad4c890dcab506009bc.info create mode 100644 Library/metadata/01/01c670ceb931d524b9a80b70652eb18b create mode 100644 Library/metadata/01/01c670ceb931d524b9a80b70652eb18b.info create mode 100644 Library/metadata/03/032fb1710098a1d47ad34d72e90f714a create mode 100644 Library/metadata/03/032fb1710098a1d47ad34d72e90f714a.info create mode 100644 Library/metadata/03/0339153ea7d8a9e4b8411691b9a95fdc create mode 100644 Library/metadata/03/0339153ea7d8a9e4b8411691b9a95fdc.info create mode 100644 Library/metadata/03/03889921b093f9047aa4cc9b216d6e03 create mode 100644 Library/metadata/03/03889921b093f9047aa4cc9b216d6e03.info create mode 100644 Library/metadata/04/04d03a6e2ff64bf47911d08912140c31 create mode 100644 Library/metadata/04/04d03a6e2ff64bf47911d08912140c31.info create mode 100644 Library/metadata/05/0584375ad2f33ef4da0b276de8507487 create mode 100644 Library/metadata/05/0584375ad2f33ef4da0b276de8507487.info create mode 100644 Library/metadata/05/05a69997deb9f5944a894239434f00a9 create mode 100644 Library/metadata/05/05a69997deb9f5944a894239434f00a9.info create mode 100644 Library/metadata/06/068e188dddb83fb489788207ff119e08 create mode 100644 Library/metadata/06/068e188dddb83fb489788207ff119e08.info create mode 100644 Library/metadata/07/07052560d042e0e4ba61076ebb2e1b94 create mode 100644 Library/metadata/07/07052560d042e0e4ba61076ebb2e1b94.info create mode 100644 Library/metadata/07/07052560d042e0e4ba61076ebb2e1b94.resource create mode 100644 Library/metadata/07/07bcd4e0597eb0648b7a45624f2e0594 create mode 100644 Library/metadata/07/07bcd4e0597eb0648b7a45624f2e0594.info create mode 100644 Library/metadata/08/0811e240274b8ea4a8469e82b86747b4 create mode 100644 Library/metadata/08/0811e240274b8ea4a8469e82b86747b4.info create mode 100644 Library/metadata/08/0858be1afe7ac384698e357be00d670f create mode 100644 Library/metadata/08/0858be1afe7ac384698e357be00d670f.info create mode 100644 Library/metadata/08/0858be1afe7ac384698e357be00d670f.resource create mode 100644 Library/metadata/09/09db43b3b77bf744287ba587fea02f8b create mode 100644 Library/metadata/09/09db43b3b77bf744287ba587fea02f8b.info create mode 100644 Library/metadata/0a/0ae132d3c08907a4d931b3ed4debc646 create mode 100644 Library/metadata/0a/0ae132d3c08907a4d931b3ed4debc646.info create mode 100644 Library/metadata/0c/0c1cf10ea69e60e4f9eb8955749f88ec create mode 100644 Library/metadata/0c/0c1cf10ea69e60e4f9eb8955749f88ec.info create mode 100644 Library/metadata/0d/0d18ca862d5d9b743b42348751798528 create mode 100644 Library/metadata/0d/0d18ca862d5d9b743b42348751798528.info create mode 100644 Library/metadata/0d/0d18ca862d5d9b743b42348751798528.resource create mode 100644 Library/metadata/0d/0d1c592fd11196848aa69fc91bca521e create mode 100644 Library/metadata/0d/0d1c592fd11196848aa69fc91bca521e.info create mode 100644 Library/metadata/0d/0d1c592fd11196848aa69fc91bca521e.resource create mode 100644 Library/metadata/0d/0d936163b5e9a5047b5e4ba5afaf5126 create mode 100644 Library/metadata/0d/0d936163b5e9a5047b5e4ba5afaf5126.info create mode 100644 Library/metadata/0d/0da37da42cf3b044ea1267da7c0d1c3f create mode 100644 Library/metadata/0d/0da37da42cf3b044ea1267da7c0d1c3f.info create mode 100644 Library/metadata/0e/0e1c54b10ce72f640a29eecbfced2363 create mode 100644 Library/metadata/0e/0e1c54b10ce72f640a29eecbfced2363.info create mode 100644 Library/metadata/0e/0e1c54b10ce72f640a29eecbfced2363.resource create mode 100644 Library/metadata/0e/0e220b97baa73db4fab6fba879e1b024 create mode 100644 Library/metadata/0e/0e220b97baa73db4fab6fba879e1b024.info create mode 100644 Library/metadata/0e/0e220b97baa73db4fab6fba879e1b024.resource create mode 100644 Library/metadata/0e/0e4ff6f209abadf45b1c2403b1382cdf create mode 100644 Library/metadata/0e/0e4ff6f209abadf45b1c2403b1382cdf.info create mode 100644 Library/metadata/0e/0e4ff6f209abadf45b1c2403b1382cdf.resource create mode 100644 Library/metadata/0e/0e96081d793e1994086123e2505bcc0e create mode 100644 Library/metadata/0e/0e96081d793e1994086123e2505bcc0e.info create mode 100644 Library/metadata/0f/0f21ac54ede2fb1488c5719b33f0122d create mode 100644 Library/metadata/0f/0f21ac54ede2fb1488c5719b33f0122d.info create mode 100644 Library/metadata/0f/0f21ac54ede2fb1488c5719b33f0122d.resource create mode 100644 Library/metadata/10/10f8d33967163484ba2752d8764afe51 create mode 100644 Library/metadata/10/10f8d33967163484ba2752d8764afe51.info create mode 100644 Library/metadata/10/10f8d33967163484ba2752d8764afe51.resource create mode 100644 Library/metadata/11/11b050e661ec0cf48a289a7266451e91 create mode 100644 Library/metadata/11/11b050e661ec0cf48a289a7266451e91.info create mode 100644 Library/metadata/12/124a48a5a1579224481a3f34686d56e4 create mode 100644 Library/metadata/12/124a48a5a1579224481a3f34686d56e4.info create mode 100644 Library/metadata/12/128eba63f6457ff41a65fbae1979778e create mode 100644 Library/metadata/12/128eba63f6457ff41a65fbae1979778e.info create mode 100644 Library/metadata/12/128eba63f6457ff41a65fbae1979778e.resource create mode 100644 Library/metadata/13/1375c26e5558daa48ae7ab8a8117cbe1 create mode 100644 Library/metadata/13/1375c26e5558daa48ae7ab8a8117cbe1.info create mode 100644 Library/metadata/13/13a43e992568b8e48b4bd489b9d96f40 create mode 100644 Library/metadata/13/13a43e992568b8e48b4bd489b9d96f40.info create mode 100644 Library/metadata/13/13d876e5d485004448f3e7b57eece9ab create mode 100644 Library/metadata/13/13d876e5d485004448f3e7b57eece9ab.info create mode 100644 Library/metadata/14/140bd0e59d9bee94f9f0284c9eef5b32 create mode 100644 Library/metadata/14/140bd0e59d9bee94f9f0284c9eef5b32.info create mode 100644 Library/metadata/14/1459d94e0a5b7af4a8a3fa067ae575e9 create mode 100644 Library/metadata/14/1459d94e0a5b7af4a8a3fa067ae575e9.info create mode 100644 Library/metadata/14/14d8c2eed68260f4d82a70201f2f19eb create mode 100644 Library/metadata/14/14d8c2eed68260f4d82a70201f2f19eb.info create mode 100644 Library/metadata/14/14d8c2eed68260f4d82a70201f2f19eb.resource create mode 100644 Library/metadata/15/15041afb62e0f4f4382863e73ff1eeb5 create mode 100644 Library/metadata/15/15041afb62e0f4f4382863e73ff1eeb5.info create mode 100644 Library/metadata/17/1731d642c0b250b48bb8cdfb153d9792 create mode 100644 Library/metadata/17/1731d642c0b250b48bb8cdfb153d9792.info create mode 100644 Library/metadata/17/1762632d09b8d184b80f483612ffb5f8 create mode 100644 Library/metadata/17/1762632d09b8d184b80f483612ffb5f8.info create mode 100644 Library/metadata/17/1762632d09b8d184b80f483612ffb5f8.resource create mode 100644 Library/metadata/18/18ca642fc8ed05d4c8c6063b48440d0b create mode 100644 Library/metadata/18/18ca642fc8ed05d4c8c6063b48440d0b.info create mode 100644 Library/metadata/18/18ca642fc8ed05d4c8c6063b48440d0b.resource create mode 100644 Library/metadata/19/1958d9dc4683f204793b607c688da2d7 create mode 100644 Library/metadata/19/1958d9dc4683f204793b607c688da2d7.info create mode 100644 Library/metadata/19/1958d9dc4683f204793b607c688da2d7.resource create mode 100644 Library/metadata/1a/1a125d9df683e2a49b12babced273360 create mode 100644 Library/metadata/1a/1a125d9df683e2a49b12babced273360.info create mode 100644 Library/metadata/1a/1ab2780fe1da2544b86a1020e5f638e2 create mode 100644 Library/metadata/1a/1ab2780fe1da2544b86a1020e5f638e2.info create mode 100644 Library/metadata/1a/1acda2a2584a8fb4683ea56799b27fa0 create mode 100644 Library/metadata/1a/1acda2a2584a8fb4683ea56799b27fa0.info create mode 100644 Library/metadata/1b/1b7c76f85bf1034498fefaa3ec8e600f create mode 100644 Library/metadata/1b/1b7c76f85bf1034498fefaa3ec8e600f.info create mode 100644 Library/metadata/1b/1b7c76f85bf1034498fefaa3ec8e600f.resource create mode 100644 Library/metadata/1c/1c0f168f6c6fc724682cb52006182fae create mode 100644 Library/metadata/1c/1c0f168f6c6fc724682cb52006182fae.info create mode 100644 Library/metadata/1c/1c7547f24e8b4864d87d59903b1f8c40 create mode 100644 Library/metadata/1c/1c7547f24e8b4864d87d59903b1f8c40.info create mode 100644 Library/metadata/1d/1dfef04d7ab9ced4093c828025f5bf06 create mode 100644 Library/metadata/1d/1dfef04d7ab9ced4093c828025f5bf06.info create mode 100644 Library/metadata/1d/1dfef04d7ab9ced4093c828025f5bf06.resource create mode 100644 Library/metadata/1f/1f0522eaef74d984591c060d05a095c8 create mode 100644 Library/metadata/1f/1f0522eaef74d984591c060d05a095c8.info create mode 100644 Library/metadata/1f/1f32883eed859804dbb0c5fedac91496 create mode 100644 Library/metadata/1f/1f32883eed859804dbb0c5fedac91496.info create mode 100644 Library/metadata/1f/1fcf8377413b60c44afff7b2e4efd8f7 create mode 100644 Library/metadata/1f/1fcf8377413b60c44afff7b2e4efd8f7.info create mode 100644 Library/metadata/20/202a6e24b48d1684398409c47161adcb create mode 100644 Library/metadata/20/202a6e24b48d1684398409c47161adcb.info create mode 100644 Library/metadata/21/210c1550425ed90419d73be09bde0486 create mode 100644 Library/metadata/21/210c1550425ed90419d73be09bde0486.info create mode 100644 Library/metadata/22/220813dc74ddc714fa8b1db1e6416e27 create mode 100644 Library/metadata/22/220813dc74ddc714fa8b1db1e6416e27.info create mode 100644 Library/metadata/22/220813dc74ddc714fa8b1db1e6416e27.resource create mode 100644 Library/metadata/23/23003f298f14cc24d9ff3988966f6292 create mode 100644 Library/metadata/23/23003f298f14cc24d9ff3988966f6292.info create mode 100644 Library/metadata/23/23003f298f14cc24d9ff3988966f6292.resource create mode 100644 Library/metadata/23/23932eb1f1528d34786ffa3381cb5922 create mode 100644 Library/metadata/23/23932eb1f1528d34786ffa3381cb5922.info create mode 100644 Library/metadata/23/23932eb1f1528d34786ffa3381cb5922.resource create mode 100644 Library/metadata/24/24c7d7d77dd0d2a4b8e1ad129b170ee3 create mode 100644 Library/metadata/24/24c7d7d77dd0d2a4b8e1ad129b170ee3.info create mode 100644 Library/metadata/24/24e73955ba8338f41a24cd3aea0285a6 create mode 100644 Library/metadata/24/24e73955ba8338f41a24cd3aea0285a6.info create mode 100644 Library/metadata/25/255333d57084e4e46b3d948279746a47 create mode 100644 Library/metadata/25/255333d57084e4e46b3d948279746a47.info create mode 100644 Library/metadata/25/25bc1e9c1d9042d4781cb174093aaaed create mode 100644 Library/metadata/25/25bc1e9c1d9042d4781cb174093aaaed.info create mode 100644 Library/metadata/27/274ae687a94e2444b85ce2bcf56c1df3 create mode 100644 Library/metadata/27/274ae687a94e2444b85ce2bcf56c1df3.info create mode 100644 Library/metadata/27/27f3faef5a63db84c9cbac06e94ab7b3 create mode 100644 Library/metadata/27/27f3faef5a63db84c9cbac06e94ab7b3.info create mode 100644 Library/metadata/29/29abf75f7265ccb45b799eac4ab0ca94 create mode 100644 Library/metadata/29/29abf75f7265ccb45b799eac4ab0ca94.info create mode 100644 Library/metadata/29/29e3e4511966ba94d8ba0b98c6c62f82 create mode 100644 Library/metadata/29/29e3e4511966ba94d8ba0b98c6c62f82.info create mode 100644 Library/metadata/2a/2ad1e469d4e3e04489f9a36419f1a4f8 create mode 100644 Library/metadata/2a/2ad1e469d4e3e04489f9a36419f1a4f8.info create mode 100644 Library/metadata/2c/2c93df0cf367b8941a8c03c309134408 create mode 100644 Library/metadata/2c/2c93df0cf367b8941a8c03c309134408.info create mode 100644 Library/metadata/2c/2c93df0cf367b8941a8c03c309134408.resource create mode 100644 Library/metadata/2d/2d01d8c885250364bac66a45791f02e1 create mode 100644 Library/metadata/2d/2d01d8c885250364bac66a45791f02e1.info create mode 100644 Library/metadata/2d/2db89a771043d7b4eb9d26622f6b97c7 create mode 100644 Library/metadata/2d/2db89a771043d7b4eb9d26622f6b97c7.info create mode 100644 Library/metadata/2e/2ec0e14254efe4040b7ae3a0da46d5a6 create mode 100644 Library/metadata/2e/2ec0e14254efe4040b7ae3a0da46d5a6.info create mode 100644 Library/metadata/2e/2ec0e14254efe4040b7ae3a0da46d5a6.resource create mode 100644 Library/metadata/2f/2f105d731b4539940bf471aeb837ac94 create mode 100644 Library/metadata/2f/2f105d731b4539940bf471aeb837ac94.info create mode 100644 Library/metadata/2f/2f4c3e904395a784199b9a0e3166fd96 create mode 100644 Library/metadata/2f/2f4c3e904395a784199b9a0e3166fd96.info create mode 100644 Library/metadata/2f/2f4d6eb6d012eea4991c7a63f81fd083 create mode 100644 Library/metadata/2f/2f4d6eb6d012eea4991c7a63f81fd083.info create mode 100644 Library/metadata/2f/2f4d6eb6d012eea4991c7a63f81fd083.resource create mode 100644 Library/metadata/2f/2f800f3498cfcb94a8f6a5f8553d8aef create mode 100644 Library/metadata/2f/2f800f3498cfcb94a8f6a5f8553d8aef.info create mode 100644 Library/metadata/2f/2f800f3498cfcb94a8f6a5f8553d8aef.resource create mode 100644 Library/metadata/30/30032368544f1a341976db391b260507 create mode 100644 Library/metadata/30/30032368544f1a341976db391b260507.info create mode 100644 Library/metadata/30/30dfcd9dafb9bea459e0b03505e418a1 create mode 100644 Library/metadata/30/30dfcd9dafb9bea459e0b03505e418a1.info create mode 100644 Library/metadata/32/32c1c9a5bbab2e54280027c0ecaf42db create mode 100644 Library/metadata/32/32c1c9a5bbab2e54280027c0ecaf42db.info create mode 100644 Library/metadata/36/36f326ccef0fe5546befe26be5ba337f create mode 100644 Library/metadata/36/36f326ccef0fe5546befe26be5ba337f.info create mode 100644 Library/metadata/36/36f326ccef0fe5546befe26be5ba337f.resource create mode 100644 Library/metadata/37/37b6eb5cae1aaba4086f32bccf0cb47f create mode 100644 Library/metadata/37/37b6eb5cae1aaba4086f32bccf0cb47f.info create mode 100644 Library/metadata/37/37b6eb5cae1aaba4086f32bccf0cb47f.resource create mode 100644 Library/metadata/38/380bbbca09a806c4c8607dd111d9ed8f create mode 100644 Library/metadata/38/380bbbca09a806c4c8607dd111d9ed8f.info create mode 100644 Library/metadata/38/38392bbe7ae2c464daae1fe24a1147c1 create mode 100644 Library/metadata/38/38392bbe7ae2c464daae1fe24a1147c1.info rename Library/metadata/{6d/6d89b34a475517c4889f6e9e2c54cb52 => 39/3945477939724e24aa27f23a96506610} (63%) create mode 100644 Library/metadata/39/3945477939724e24aa27f23a96506610.info create mode 100644 Library/metadata/39/39bd76f2a1f5f3d4fa65ddb1d3c4e978 create mode 100644 Library/metadata/39/39bd76f2a1f5f3d4fa65ddb1d3c4e978.info create mode 100644 Library/metadata/39/39cd38d16e194ab47ae7ae092c5f9e07 create mode 100644 Library/metadata/39/39cd38d16e194ab47ae7ae092c5f9e07.info create mode 100644 Library/metadata/39/39cd38d16e194ab47ae7ae092c5f9e07.resource create mode 100644 Library/metadata/39/39d2fc39182c11e4bba4ed719d778c0e create mode 100644 Library/metadata/39/39d2fc39182c11e4bba4ed719d778c0e.info create mode 100644 Library/metadata/39/39d2fc39182c11e4bba4ed719d778c0e.resource create mode 100644 Library/metadata/3b/3bad6fb5cb07dd44b88e0e1857e222be create mode 100644 Library/metadata/3b/3bad6fb5cb07dd44b88e0e1857e222be.info create mode 100644 Library/metadata/3b/3bad6fb5cb07dd44b88e0e1857e222be.resource create mode 100644 Library/metadata/3b/3bbb445147c574240a8b87a1193788b5 create mode 100644 Library/metadata/3b/3bbb445147c574240a8b87a1193788b5.info create mode 100644 Library/metadata/3c/3c433e134e4719444b65bf064a77e22e create mode 100644 Library/metadata/3c/3c433e134e4719444b65bf064a77e22e.info create mode 100644 Library/metadata/3d/3d938759d8b7a414988ec3261fb5265d create mode 100644 Library/metadata/3d/3d938759d8b7a414988ec3261fb5265d.info create mode 100644 Library/metadata/3e/3e2543c4beea3eb4e9ea1e02a4bc2df2 create mode 100644 Library/metadata/3e/3e2543c4beea3eb4e9ea1e02a4bc2df2.info create mode 100644 Library/metadata/3e/3eefe61359ea80b469796e4eebb3c81b create mode 100644 Library/metadata/3e/3eefe61359ea80b469796e4eebb3c81b.info create mode 100644 Library/metadata/3e/3eefe61359ea80b469796e4eebb3c81b.resource create mode 100644 Library/metadata/3f/3f39fc63a93686e4a8e9168ee73f24d9 create mode 100644 Library/metadata/3f/3f39fc63a93686e4a8e9168ee73f24d9.info create mode 100644 Library/metadata/3f/3f5766a8b67794141ac19c1a51d27083 create mode 100644 Library/metadata/3f/3f5766a8b67794141ac19c1a51d27083.info create mode 100644 Library/metadata/40/406981998f1234442a4f2eb50cfe07e1 create mode 100644 Library/metadata/40/406981998f1234442a4f2eb50cfe07e1.info create mode 100644 Library/metadata/40/40af2f692be87864ba388a27fcac9ed8 create mode 100644 Library/metadata/40/40af2f692be87864ba388a27fcac9ed8.info create mode 100644 Library/metadata/40/40c8cba0bc8712e4ead8747ee58dd141 create mode 100644 Library/metadata/40/40c8cba0bc8712e4ead8747ee58dd141.info create mode 100644 Library/metadata/40/40fa752affdc6cf45a47396764154085 create mode 100644 Library/metadata/40/40fa752affdc6cf45a47396764154085.info create mode 100644 Library/metadata/41/417e639b66cd3a24e9c5312be99ce3bd create mode 100644 Library/metadata/41/417e639b66cd3a24e9c5312be99ce3bd.info create mode 100644 Library/metadata/41/4188a37a2f8da3b4084af4e3ee9b6a31 create mode 100644 Library/metadata/41/4188a37a2f8da3b4084af4e3ee9b6a31.info create mode 100644 Library/metadata/41/4188a37a2f8da3b4084af4e3ee9b6a31.resource create mode 100644 Library/metadata/42/425031c746a6df44aa1dfdb17c2b8b45 create mode 100644 Library/metadata/42/425031c746a6df44aa1dfdb17c2b8b45.info create mode 100644 Library/metadata/42/427c3f6e73f47194b8f02cdf53023b15 create mode 100644 Library/metadata/42/427c3f6e73f47194b8f02cdf53023b15.info create mode 100644 Library/metadata/42/429a484b95998f84eaa98fa068caa5e9 create mode 100644 Library/metadata/42/429a484b95998f84eaa98fa068caa5e9.info create mode 100644 Library/metadata/43/43b10deca54ca524c8cd9a0fcb622325 create mode 100644 Library/metadata/43/43b10deca54ca524c8cd9a0fcb622325.info create mode 100644 Library/metadata/43/43e53a985809f0949b9a42cc2a6888c9 create mode 100644 Library/metadata/43/43e53a985809f0949b9a42cc2a6888c9.info create mode 100644 Library/metadata/44/44a536d7fede4b140b3647935ea8c8fa create mode 100644 Library/metadata/44/44a536d7fede4b140b3647935ea8c8fa.info create mode 100644 Library/metadata/44/44cb57742f235524189e5d8af1c4f3cc create mode 100644 Library/metadata/44/44cb57742f235524189e5d8af1c4f3cc.info create mode 100644 Library/metadata/45/452b45a02bfe51243a19acb7251c865b create mode 100644 Library/metadata/45/452b45a02bfe51243a19acb7251c865b.info create mode 100644 Library/metadata/45/456569c675d05804d94bbf510b956cbe create mode 100644 Library/metadata/45/456569c675d05804d94bbf510b956cbe.info create mode 100644 Library/metadata/46/465e24e196f24c3498bbd20246f9f1ca create mode 100644 Library/metadata/46/465e24e196f24c3498bbd20246f9f1ca.info create mode 100644 Library/metadata/46/465e24e196f24c3498bbd20246f9f1ca.resource create mode 100644 Library/metadata/46/46bb1e3e014c28740ae8c96427da5270 create mode 100644 Library/metadata/46/46bb1e3e014c28740ae8c96427da5270.info create mode 100644 Library/metadata/46/46bb1e3e014c28740ae8c96427da5270.resource create mode 100644 Library/metadata/46/46f8e9e70f68ee3418ad85992778c116 create mode 100644 Library/metadata/46/46f8e9e70f68ee3418ad85992778c116.info create mode 100644 Library/metadata/46/46fe9e0b23166454c8cb73040321d78c create mode 100644 Library/metadata/46/46fe9e0b23166454c8cb73040321d78c.info create mode 100644 Library/metadata/47/47b5e90896f0e004c85bebd26e6057e2 create mode 100644 Library/metadata/47/47b5e90896f0e004c85bebd26e6057e2.info create mode 100644 Library/metadata/47/47b5e90896f0e004c85bebd26e6057e2.resource create mode 100644 Library/metadata/48/48e7e7e907cb4de4e89ebb5f2ecb5674 create mode 100644 Library/metadata/48/48e7e7e907cb4de4e89ebb5f2ecb5674.info create mode 100644 Library/metadata/48/48e7e7e907cb4de4e89ebb5f2ecb5674.resource create mode 100644 Library/metadata/49/49a60120b932b59409171f5ff611b639 create mode 100644 Library/metadata/49/49a60120b932b59409171f5ff611b639.info create mode 100644 Library/metadata/49/49a86c1078ce4314b9c4224560e031b9 create mode 100644 Library/metadata/49/49a86c1078ce4314b9c4224560e031b9.info create mode 100644 Library/metadata/4b/4b6669fb4e4df9c48926f02b694be9d1 create mode 100644 Library/metadata/4b/4b6669fb4e4df9c48926f02b694be9d1.info create mode 100644 Library/metadata/4b/4bb527c4eb5b08c44b8d24a14a6ab3ce create mode 100644 Library/metadata/4b/4bb527c4eb5b08c44b8d24a14a6ab3ce.info create mode 100644 Library/metadata/4b/4bb527c4eb5b08c44b8d24a14a6ab3ce.resource create mode 100644 Library/metadata/4c/4cab18f37a1da964ba73601017942665 create mode 100644 Library/metadata/4c/4cab18f37a1da964ba73601017942665.info create mode 100644 Library/metadata/4d/4d1c07a6449b0ca439ee6fac5f6f7d83 create mode 100644 Library/metadata/4d/4d1c07a6449b0ca439ee6fac5f6f7d83.info create mode 100644 Library/metadata/4d/4d23d5e2668be9f4b893c46b3802077f create mode 100644 Library/metadata/4d/4d23d5e2668be9f4b893c46b3802077f.info create mode 100644 Library/metadata/4d/4d23d5e2668be9f4b893c46b3802077f.resource create mode 100644 Library/metadata/4d/4d293c8e162f3874b982baadd71153d2 create mode 100644 Library/metadata/4d/4d293c8e162f3874b982baadd71153d2.info create mode 100644 Library/metadata/4e/4e2e74504a83fbd438147cfda37cf3d0 create mode 100644 Library/metadata/4e/4e2e74504a83fbd438147cfda37cf3d0.info create mode 100644 Library/metadata/4e/4e2e74504a83fbd438147cfda37cf3d0.resource create mode 100644 Library/metadata/4f/4f35fa249b5008c44ac2998be6f82d4d create mode 100644 Library/metadata/4f/4f35fa249b5008c44ac2998be6f82d4d.info create mode 100644 Library/metadata/4f/4fee3982c922af44babfca8a11dffaca create mode 100644 Library/metadata/4f/4fee3982c922af44babfca8a11dffaca.info create mode 100644 Library/metadata/4f/4fee3982c922af44babfca8a11dffaca.resource create mode 100644 Library/metadata/50/501eb8b744f73714fbe7dbdd5e3ef66e create mode 100644 Library/metadata/50/501eb8b744f73714fbe7dbdd5e3ef66e.info create mode 100644 Library/metadata/51/510c6e0b8b5c948458c2b4bc3de5a637 create mode 100644 Library/metadata/51/510c6e0b8b5c948458c2b4bc3de5a637.info create mode 100644 Library/metadata/51/51747ad9fd4c5564e873dbae5171e257 create mode 100644 Library/metadata/51/51747ad9fd4c5564e873dbae5171e257.info create mode 100644 Library/metadata/51/51747ad9fd4c5564e873dbae5171e257.resource create mode 100644 Library/metadata/51/518ba9936d20b554f98e8472b29da0b5 create mode 100644 Library/metadata/51/518ba9936d20b554f98e8472b29da0b5.info create mode 100644 Library/metadata/51/518ba9936d20b554f98e8472b29da0b5.resource create mode 100644 Library/metadata/52/5240357a2468cdc4291b266bee3cb9b9 create mode 100644 Library/metadata/52/5240357a2468cdc4291b266bee3cb9b9.info create mode 100644 Library/metadata/52/526033aedfcd8fa4893bd857ca331979 create mode 100644 Library/metadata/52/526033aedfcd8fa4893bd857ca331979.info create mode 100644 Library/metadata/52/526033aedfcd8fa4893bd857ca331979.resource create mode 100644 Library/metadata/53/53cd2ef2dd3d5d64e96af4420220d1d2 create mode 100644 Library/metadata/53/53cd2ef2dd3d5d64e96af4420220d1d2.info create mode 100644 Library/metadata/55/554ae4ff7aa47c0478d95d78e6a9be6b create mode 100644 Library/metadata/55/554ae4ff7aa47c0478d95d78e6a9be6b.info create mode 100644 Library/metadata/55/554ae4ff7aa47c0478d95d78e6a9be6b.resource create mode 100644 Library/metadata/55/55da3adbb5d30254c97687991608dda0 create mode 100644 Library/metadata/55/55da3adbb5d30254c97687991608dda0.info create mode 100644 Library/metadata/56/56377e28a47008245871ca7b435044c4 create mode 100644 Library/metadata/56/56377e28a47008245871ca7b435044c4.info create mode 100644 Library/metadata/56/5697c26ee2ef0c848996640f6a3d3432 create mode 100644 Library/metadata/56/5697c26ee2ef0c848996640f6a3d3432.info create mode 100644 Library/metadata/57/57468e6cbae21894fa42c90413c294ff create mode 100644 Library/metadata/57/57468e6cbae21894fa42c90413c294ff.info create mode 100644 Library/metadata/57/57d4c0e09fe27de44a83d11d4f4969c7 create mode 100644 Library/metadata/57/57d4c0e09fe27de44a83d11d4f4969c7.info create mode 100644 Library/metadata/58/5828f252c3c228f4b931f66c21e525c4 create mode 100644 Library/metadata/58/5828f252c3c228f4b931f66c21e525c4.info create mode 100644 Library/metadata/58/5890e3cad70bea64d91aef9145ba3454 create mode 100644 Library/metadata/58/5890e3cad70bea64d91aef9145ba3454.info create mode 100644 Library/metadata/59/5930d7d2e705ea74ca30ee6652eb4571 create mode 100644 Library/metadata/59/5930d7d2e705ea74ca30ee6652eb4571.info create mode 100644 Library/metadata/59/5930d7d2e705ea74ca30ee6652eb4571.resource create mode 100644 Library/metadata/5a/5a3622562855c9a40a14846ffdc8bfe4 create mode 100644 Library/metadata/5a/5a3622562855c9a40a14846ffdc8bfe4.info create mode 100644 Library/metadata/5b/5ba22c80948c94e44a82b9fd1b3abd0d create mode 100644 Library/metadata/5b/5ba22c80948c94e44a82b9fd1b3abd0d.info create mode 100644 Library/metadata/5b/5be56a64c3c6c434eb746320e06a27ac create mode 100644 Library/metadata/5b/5be56a64c3c6c434eb746320e06a27ac.info create mode 100644 Library/metadata/5d/5dea26c1298d78149af149b8bd73ff63 create mode 100644 Library/metadata/5d/5dea26c1298d78149af149b8bd73ff63.info create mode 100644 Library/metadata/5d/5dea26c1298d78149af149b8bd73ff63.resource create mode 100644 Library/metadata/5d/5dff85aa6aacb32469945a41190eadf8 create mode 100644 Library/metadata/5d/5dff85aa6aacb32469945a41190eadf8.info create mode 100644 Library/metadata/5d/5dff85aa6aacb32469945a41190eadf8.resource create mode 100644 Library/metadata/5f/5f0129f65bc822d429cfad1b63fb9db4 create mode 100644 Library/metadata/5f/5f0129f65bc822d429cfad1b63fb9db4.info create mode 100644 Library/metadata/5f/5f3294e06115d0047a2ac7659a11b168 create mode 100644 Library/metadata/5f/5f3294e06115d0047a2ac7659a11b168.info create mode 100644 Library/metadata/5f/5f649883aab635740a41d91edf1080a4 create mode 100644 Library/metadata/5f/5f649883aab635740a41d91edf1080a4.info create mode 100644 Library/metadata/5f/5fa42bb9e52706a42b8a1eaf0b54326a create mode 100644 Library/metadata/5f/5fa42bb9e52706a42b8a1eaf0b54326a.info create mode 100644 Library/metadata/60/6043f3be9a21bd74281f9770463bea00 create mode 100644 Library/metadata/60/6043f3be9a21bd74281f9770463bea00.info create mode 100644 Library/metadata/61/616519d6531cad84cbd01281cc9742e0 create mode 100644 Library/metadata/61/616519d6531cad84cbd01281cc9742e0.info create mode 100644 Library/metadata/61/61f4796ee4f00314e8d8b1ad39a78c28 create mode 100644 Library/metadata/61/61f4796ee4f00314e8d8b1ad39a78c28.info create mode 100644 Library/metadata/62/62bdcbc5f3d6b3f43844cc7b849f0448 create mode 100644 Library/metadata/62/62bdcbc5f3d6b3f43844cc7b849f0448.info create mode 100644 Library/metadata/62/62bdcbc5f3d6b3f43844cc7b849f0448.resource create mode 100644 Library/metadata/63/6337aa7e7823eee43af8ffe676935e74 create mode 100644 Library/metadata/63/6337aa7e7823eee43af8ffe676935e74.info create mode 100644 Library/metadata/63/634b98c3ef8bc6d4f834f80a4613a4a4 create mode 100644 Library/metadata/63/634b98c3ef8bc6d4f834f80a4613a4a4.info create mode 100644 Library/metadata/63/63bf984cc50332446bc0517a4813d447 create mode 100644 Library/metadata/63/63bf984cc50332446bc0517a4813d447.info create mode 100644 Library/metadata/63/63bf984cc50332446bc0517a4813d447.resource create mode 100644 Library/metadata/65/652445d40bda96847993b3a366b80b34 create mode 100644 Library/metadata/65/652445d40bda96847993b3a366b80b34.info create mode 100644 Library/metadata/65/652445d40bda96847993b3a366b80b34.resource create mode 100644 Library/metadata/65/6596adb54aab23a40abe01461d35a26f create mode 100644 Library/metadata/65/6596adb54aab23a40abe01461d35a26f.info create mode 100644 Library/metadata/65/65ef702aaa09d3f46a75659678b1a711 create mode 100644 Library/metadata/65/65ef702aaa09d3f46a75659678b1a711.info create mode 100644 Library/metadata/66/667230ade3b20b641a0ba08bdfd760fc create mode 100644 Library/metadata/66/667230ade3b20b641a0ba08bdfd760fc.info create mode 100644 Library/metadata/67/6729a932de5127b419aacfd9be7dde0d create mode 100644 Library/metadata/67/6729a932de5127b419aacfd9be7dde0d.info create mode 100644 Library/metadata/67/67867a20919f7db45a2e7034fda1c28e create mode 100644 Library/metadata/67/67867a20919f7db45a2e7034fda1c28e.info create mode 100644 Library/metadata/67/6789d499b24f8964c8bb06e21008e546 create mode 100644 Library/metadata/67/6789d499b24f8964c8bb06e21008e546.info create mode 100644 Library/metadata/67/67c31797bbf07114eb2d50aa3ae184e9 create mode 100644 Library/metadata/67/67c31797bbf07114eb2d50aa3ae184e9.info create mode 100644 Library/metadata/68/6820d5b6e4c56b748b1afe3f5d550ee7 create mode 100644 Library/metadata/68/6820d5b6e4c56b748b1afe3f5d550ee7.info create mode 100644 Library/metadata/68/6820d5b6e4c56b748b1afe3f5d550ee7.resource create mode 100644 Library/metadata/69/6948c755e9613734dbac166d770c8e3e create mode 100644 Library/metadata/69/6948c755e9613734dbac166d770c8e3e.info create mode 100644 Library/metadata/69/69cad530c565c714491a326c21accb90 create mode 100644 Library/metadata/69/69cad530c565c714491a326c21accb90.info create mode 100644 Library/metadata/6a/6a2a42a4396b3ec4fbe844a811b77445 create mode 100644 Library/metadata/6a/6a2a42a4396b3ec4fbe844a811b77445.info create mode 100644 Library/metadata/6a/6a2a42a4396b3ec4fbe844a811b77445.resource create mode 100644 Library/metadata/6a/6ad167161b0bf8e4d9c038db358e0a28 create mode 100644 Library/metadata/6a/6ad167161b0bf8e4d9c038db358e0a28.info create mode 100644 Library/metadata/6a/6ad90a1b9664a154592fabedc7cef551 create mode 100644 Library/metadata/6a/6ad90a1b9664a154592fabedc7cef551.info create mode 100644 Library/metadata/6a/6ad90a1b9664a154592fabedc7cef551.resource create mode 100644 Library/metadata/6b/6b259143c09ffc447ad059e5b8d8cf89 create mode 100644 Library/metadata/6b/6b259143c09ffc447ad059e5b8d8cf89.info create mode 100644 Library/metadata/6b/6bca9ccf900ccc84c887d783321d27e2 create mode 100644 Library/metadata/6b/6bca9ccf900ccc84c887d783321d27e2.info create mode 100644 Library/metadata/6d/6d60d25020af6fb4f8d436244db7cc4b create mode 100644 Library/metadata/6d/6d60d25020af6fb4f8d436244db7cc4b.info create mode 100644 Library/metadata/6e/6e0f456570268ff49a58a019080ee045 create mode 100644 Library/metadata/6e/6e0f456570268ff49a58a019080ee045.info create mode 100644 Library/metadata/6e/6e8b24558e6899742b276a1b6c480de1 create mode 100644 Library/metadata/6e/6e8b24558e6899742b276a1b6c480de1.info create mode 100644 Library/metadata/6e/6e984feb46a04284e8c6ce4ebfd791d0 create mode 100644 Library/metadata/6e/6e984feb46a04284e8c6ce4ebfd791d0.info create mode 100644 Library/metadata/6e/6e984feb46a04284e8c6ce4ebfd791d0.resource create mode 100644 Library/metadata/6f/6f3bba2c36dd79242b3157dbcd876bf2 create mode 100644 Library/metadata/6f/6f3bba2c36dd79242b3157dbcd876bf2.info create mode 100644 Library/metadata/6f/6fa11a15b6830ea40808c51f7a5f0a4e create mode 100644 Library/metadata/6f/6fa11a15b6830ea40808c51f7a5f0a4e.info create mode 100644 Library/metadata/6f/6fdc84052ddcc024c9c9bafadc8c591e create mode 100644 Library/metadata/6f/6fdc84052ddcc024c9c9bafadc8c591e.info create mode 100644 Library/metadata/6f/6fdc84052ddcc024c9c9bafadc8c591e.resource create mode 100644 Library/metadata/71/7113854dded09be418cf3be1158d444c create mode 100644 Library/metadata/71/7113854dded09be418cf3be1158d444c.info create mode 100644 Library/metadata/71/7113854dded09be418cf3be1158d444c.resource create mode 100644 Library/metadata/71/712cd3a70a5a1da41a6594aac6a97abe create mode 100644 Library/metadata/71/712cd3a70a5a1da41a6594aac6a97abe.info create mode 100644 Library/metadata/71/716aaae09f0c5774a972f0bacd5e5e22 create mode 100644 Library/metadata/71/716aaae09f0c5774a972f0bacd5e5e22.info create mode 100644 Library/metadata/71/716aaae09f0c5774a972f0bacd5e5e22.resource create mode 100644 Library/metadata/73/7346a42905a29b347b1f492e8ad7b49f create mode 100644 Library/metadata/73/7346a42905a29b347b1f492e8ad7b49f.info create mode 100644 Library/metadata/73/737a6618d669e4740862cd8ddf59e793 create mode 100644 Library/metadata/73/737a6618d669e4740862cd8ddf59e793.info create mode 100644 Library/metadata/73/737a6618d669e4740862cd8ddf59e793.resource create mode 100644 Library/metadata/73/73a0556bda803bf4e898751dcfcf21a8 create mode 100644 Library/metadata/73/73a0556bda803bf4e898751dcfcf21a8.info create mode 100644 Library/metadata/73/73ac470d3d909d645a6c89a4664b6849 create mode 100644 Library/metadata/73/73ac470d3d909d645a6c89a4664b6849.info create mode 100644 Library/metadata/74/74068c08db651d34f81de9affa61f55d create mode 100644 Library/metadata/74/74068c08db651d34f81de9affa61f55d.info create mode 100644 Library/metadata/74/74068c08db651d34f81de9affa61f55d.resource create mode 100644 Library/metadata/74/747254780f5d81b40b16acac3b8f9585 create mode 100644 Library/metadata/74/747254780f5d81b40b16acac3b8f9585.info create mode 100644 Library/metadata/74/747254780f5d81b40b16acac3b8f9585.resource create mode 100644 Library/metadata/75/75bd1350b322bc149ad4b79c719cb687 create mode 100644 Library/metadata/75/75bd1350b322bc149ad4b79c719cb687.info create mode 100644 Library/metadata/77/771a37fff499d604b9560d415e371d5e create mode 100644 Library/metadata/77/771a37fff499d604b9560d415e371d5e.info create mode 100644 Library/metadata/77/77a23888f82e2ab4c8bc825f20235e1e create mode 100644 Library/metadata/77/77a23888f82e2ab4c8bc825f20235e1e.info create mode 100644 Library/metadata/77/77b322b27d7d39f4d91e479d19065d50 create mode 100644 Library/metadata/77/77b322b27d7d39f4d91e479d19065d50.info create mode 100644 Library/metadata/78/783750eec4c41da428b7651515146d14 create mode 100644 Library/metadata/78/783750eec4c41da428b7651515146d14.info create mode 100644 Library/metadata/78/787d7485aa6482341a9f55fa37fb84f1 create mode 100644 Library/metadata/78/787d7485aa6482341a9f55fa37fb84f1.info create mode 100644 Library/metadata/79/7916cbf0a83b8494f960b9e88aa45a90 create mode 100644 Library/metadata/79/7916cbf0a83b8494f960b9e88aa45a90.info create mode 100644 Library/metadata/79/7916cbf0a83b8494f960b9e88aa45a90.resource create mode 100644 Library/metadata/79/79e7ef0af37bbcb40ab89c4cc2481018 create mode 100644 Library/metadata/79/79e7ef0af37bbcb40ab89c4cc2481018.info create mode 100644 Library/metadata/79/79ebbc9a70ee4734b9a0eda82f28fd5f create mode 100644 Library/metadata/79/79ebbc9a70ee4734b9a0eda82f28fd5f.info create mode 100644 Library/metadata/7a/7a135b1a2cb9c8f488d4dd00c55ab283 create mode 100644 Library/metadata/7a/7a135b1a2cb9c8f488d4dd00c55ab283.info create mode 100644 Library/metadata/7a/7a1b97ffbdbef1d44aa8aab723f05560 create mode 100644 Library/metadata/7a/7a1b97ffbdbef1d44aa8aab723f05560.info create mode 100644 Library/metadata/7a/7a1b97ffbdbef1d44aa8aab723f05560.resource create mode 100644 Library/metadata/7a/7aaf325fc9c2739499d94017488bd120 create mode 100644 Library/metadata/7a/7aaf325fc9c2739499d94017488bd120.info create mode 100644 Library/metadata/7a/7ae8d8155c5f0df4b8948d4fa4fb14c5 create mode 100644 Library/metadata/7a/7ae8d8155c5f0df4b8948d4fa4fb14c5.info create mode 100644 Library/metadata/7a/7ae8d8155c5f0df4b8948d4fa4fb14c5.resource create mode 100644 Library/metadata/7b/7b939e5e799d98a469f594828ebab52e create mode 100644 Library/metadata/7b/7b939e5e799d98a469f594828ebab52e.info create mode 100644 Library/metadata/7b/7b9d6636c126a33489ada91fd402f036 create mode 100644 Library/metadata/7b/7b9d6636c126a33489ada91fd402f036.info create mode 100644 Library/metadata/7b/7b9d6636c126a33489ada91fd402f036.resource create mode 100644 Library/metadata/7b/7ba84888c9d4c504cb752a3904551a6c create mode 100644 Library/metadata/7b/7ba84888c9d4c504cb752a3904551a6c.info create mode 100644 Library/metadata/7b/7bd88445e5dcec94284b355818ef7d87 create mode 100644 Library/metadata/7b/7bd88445e5dcec94284b355818ef7d87.info create mode 100644 Library/metadata/7d/7d623a50b67320940b97e93e31d0a21b create mode 100644 Library/metadata/7d/7d623a50b67320940b97e93e31d0a21b.info create mode 100644 Library/metadata/7e/7e90f10e44a186a49a00679d068515ed create mode 100644 Library/metadata/7e/7e90f10e44a186a49a00679d068515ed.info create mode 100644 Library/metadata/7f/7f08f06256ab27b4cb9eb0b41831a69f create mode 100644 Library/metadata/7f/7f08f06256ab27b4cb9eb0b41831a69f.info create mode 100644 Library/metadata/7f/7f4097fabec5d2b4da2b861750319952 create mode 100644 Library/metadata/7f/7f4097fabec5d2b4da2b861750319952.info create mode 100644 Library/metadata/7f/7f632b7ba3e0d004899c46e9d8261c81 create mode 100644 Library/metadata/7f/7f632b7ba3e0d004899c46e9d8261c81.info create mode 100644 Library/metadata/7f/7f632b7ba3e0d004899c46e9d8261c81.resource create mode 100644 Library/metadata/7f/7fae0ddab09ac324c85494471274d6a4 rename Library/metadata/{6d/6d89b34a475517c4889f6e9e2c54cb52.info => 7f/7fae0ddab09ac324c85494471274d6a4.info} (74%) create mode 100644 Library/metadata/7f/7fb811b0ffe615b4dbf1d5e6ced385fd create mode 100644 Library/metadata/7f/7fb811b0ffe615b4dbf1d5e6ced385fd.info create mode 100644 Library/metadata/7f/7fe1fef3cfad86946b3a549d6934330b create mode 100644 Library/metadata/7f/7fe1fef3cfad86946b3a549d6934330b.info create mode 100644 Library/metadata/80/80087fbbf7bf93a46bb4aea276b19568 create mode 100644 Library/metadata/80/80087fbbf7bf93a46bb4aea276b19568.info create mode 100644 Library/metadata/80/80a6bae7122d17d4c9243b982a652788 create mode 100644 Library/metadata/80/80a6bae7122d17d4c9243b982a652788.info create mode 100644 Library/metadata/81/817521c5973e4ee45905ee97df3c38ad create mode 100644 Library/metadata/81/817521c5973e4ee45905ee97df3c38ad.info create mode 100644 Library/metadata/81/81fc1450441aca64e8cc1a0e14b1aa77 create mode 100644 Library/metadata/81/81fc1450441aca64e8cc1a0e14b1aa77.info create mode 100644 Library/metadata/84/84a4f15a3179f1d4993aded11f4d0232 create mode 100644 Library/metadata/84/84a4f15a3179f1d4993aded11f4d0232.info create mode 100644 Library/metadata/87/87bd4f8add9797748ab450ca4852a9e1 create mode 100644 Library/metadata/87/87bd4f8add9797748ab450ca4852a9e1.info create mode 100644 Library/metadata/88/88a2ccbdad9948c45b28f5e63902705b create mode 100644 Library/metadata/88/88a2ccbdad9948c45b28f5e63902705b.info create mode 100644 Library/metadata/89/891b9c1d17e50204a85ebdf71b6670f5 create mode 100644 Library/metadata/89/891b9c1d17e50204a85ebdf71b6670f5.info create mode 100644 Library/metadata/89/891b9c1d17e50204a85ebdf71b6670f5.resource create mode 100644 Library/metadata/8a/8a95f5613a17c0f4db5b93318e947568 create mode 100644 Library/metadata/8a/8a95f5613a17c0f4db5b93318e947568.info create mode 100644 Library/metadata/8a/8a95f5613a17c0f4db5b93318e947568.resource create mode 100644 Library/metadata/8a/8ad10a5377ae04748b1455a7184c6971 create mode 100644 Library/metadata/8a/8ad10a5377ae04748b1455a7184c6971.info create mode 100644 Library/metadata/8b/8b18b36a995ecb04599f35c2741be8d5 create mode 100644 Library/metadata/8b/8b18b36a995ecb04599f35c2741be8d5.info create mode 100644 Library/metadata/8b/8b486a7fc7f4490409fb152cfaaaea36 create mode 100644 Library/metadata/8b/8b486a7fc7f4490409fb152cfaaaea36.info create mode 100644 Library/metadata/8b/8bb563c4e716d2c4181e187d9be248db create mode 100644 Library/metadata/8b/8bb563c4e716d2c4181e187d9be248db.info create mode 100644 Library/metadata/8c/8c0fbd56181ea0843b1596b4cb0e5498 create mode 100644 Library/metadata/8c/8c0fbd56181ea0843b1596b4cb0e5498.info create mode 100644 Library/metadata/8c/8c3faa610c019764a81eb8497109e2d4 create mode 100644 Library/metadata/8c/8c3faa610c019764a81eb8497109e2d4.info create mode 100644 Library/metadata/8c/8c81a27fd18a29444be92481fe681f4b create mode 100644 Library/metadata/8c/8c81a27fd18a29444be92481fe681f4b.info create mode 100644 Library/metadata/8c/8ca2cc563cc33f542a5d9f8f661184ba create mode 100644 Library/metadata/8c/8ca2cc563cc33f542a5d9f8f661184ba.info create mode 100644 Library/metadata/8d/8d26b9eddedb33d48be044bb268a57c7 create mode 100644 Library/metadata/8d/8d26b9eddedb33d48be044bb268a57c7.info create mode 100644 Library/metadata/8e/8e13c6e5a21aeea4db3c25ef0e529308 create mode 100644 Library/metadata/8e/8e13c6e5a21aeea4db3c25ef0e529308.info create mode 100644 Library/metadata/8f/8f094810949516a41a720a40a87d29cc create mode 100644 Library/metadata/8f/8f094810949516a41a720a40a87d29cc.info create mode 100644 Library/metadata/8f/8f094810949516a41a720a40a87d29cc.resource create mode 100644 Library/metadata/8f/8f511b02628aaca43be0aecee58c1b71 create mode 100644 Library/metadata/8f/8f511b02628aaca43be0aecee58c1b71.info create mode 100644 Library/metadata/90/90173f9e9e795f74ca97ccc52fe410cd create mode 100644 Library/metadata/90/90173f9e9e795f74ca97ccc52fe410cd.info create mode 100644 Library/metadata/91/918ee1b51fd32d748a66d520586569ba create mode 100644 Library/metadata/91/918ee1b51fd32d748a66d520586569ba.info create mode 100644 Library/metadata/91/918ee1b51fd32d748a66d520586569ba.resource create mode 100644 Library/metadata/92/921837a5408991d429e86efc66f8be6b create mode 100644 Library/metadata/92/921837a5408991d429e86efc66f8be6b.info create mode 100644 Library/metadata/94/9471d2206e57ca246a4bf982f3c29c8f create mode 100644 Library/metadata/94/9471d2206e57ca246a4bf982f3c29c8f.info create mode 100644 Library/metadata/95/95096f29d1ddcd647ace66f3641d42f5 create mode 100644 Library/metadata/95/95096f29d1ddcd647ace66f3641d42f5.info create mode 100644 Library/metadata/95/95cdcc94cf9ba8348b4384b840e4c54c create mode 100644 Library/metadata/95/95cdcc94cf9ba8348b4384b840e4c54c.info create mode 100644 Library/metadata/95/95ced3c408cd93048b111626535a8b3f create mode 100644 Library/metadata/95/95ced3c408cd93048b111626535a8b3f.info create mode 100644 Library/metadata/95/95ced3c408cd93048b111626535a8b3f.resource create mode 100644 Library/metadata/98/98a3ad29136d5c04f8a025adf1cbd704 create mode 100644 Library/metadata/98/98a3ad29136d5c04f8a025adf1cbd704.info create mode 100644 Library/metadata/99/99ee8d48ccf36264e9d9a72baa681249 create mode 100644 Library/metadata/99/99ee8d48ccf36264e9d9a72baa681249.info create mode 100644 Library/metadata/9a/9ad392a45efa3b14bbcc169371974cd7 create mode 100644 Library/metadata/9a/9ad392a45efa3b14bbcc169371974cd7.info create mode 100644 Library/metadata/9a/9ad392a45efa3b14bbcc169371974cd7.resource create mode 100644 Library/metadata/9d/9d2dddaae5c812841accc43e4da1fccd create mode 100644 Library/metadata/9d/9d2dddaae5c812841accc43e4da1fccd.info create mode 100644 Library/metadata/9e/9e995e61de69d8647ae2b2d65eceab3f create mode 100644 Library/metadata/9e/9e995e61de69d8647ae2b2d65eceab3f.info create mode 100644 Library/metadata/9f/9f884441bea153347be721454dc13716 create mode 100644 Library/metadata/9f/9f884441bea153347be721454dc13716.info create mode 100644 Library/metadata/9f/9fb3fe54664b917489646492ee8c4993 create mode 100644 Library/metadata/9f/9fb3fe54664b917489646492ee8c4993.info create mode 100644 Library/metadata/9f/9fff76eb68ad4c44b87be9e2ca168a80 create mode 100644 Library/metadata/9f/9fff76eb68ad4c44b87be9e2ca168a80.info create mode 100644 Library/metadata/a0/a043c731a29ecd745a9270fbf002ee68 create mode 100644 Library/metadata/a0/a043c731a29ecd745a9270fbf002ee68.info create mode 100644 Library/metadata/a1/a1313a5fd0b97df4798c301e337a1eb8 create mode 100644 Library/metadata/a1/a1313a5fd0b97df4798c301e337a1eb8.info create mode 100644 Library/metadata/a2/a2300d431cc9116478ccc8bb42061072 create mode 100644 Library/metadata/a2/a2300d431cc9116478ccc8bb42061072.info create mode 100644 Library/metadata/a2/a24f92749a872c94d993c87f9ad3a53e create mode 100644 Library/metadata/a2/a24f92749a872c94d993c87f9ad3a53e.info create mode 100644 Library/metadata/a2/a24f92749a872c94d993c87f9ad3a53e.resource create mode 100644 Library/metadata/a3/a34de06929382804eb01e06cd6e8decf create mode 100644 Library/metadata/a3/a34de06929382804eb01e06cd6e8decf.info create mode 100644 Library/metadata/a4/a41945a8549c580408301691c2fd374e create mode 100644 Library/metadata/a4/a41945a8549c580408301691c2fd374e.info create mode 100644 Library/metadata/a4/a4939542f83f4e84f8604e20bce42eba create mode 100644 Library/metadata/a4/a4939542f83f4e84f8604e20bce42eba.info create mode 100644 Library/metadata/a4/a4acc435c26639c4fac0c4358c455259 create mode 100644 Library/metadata/a4/a4acc435c26639c4fac0c4358c455259.info create mode 100644 Library/metadata/a5/a51c3dbd81ecb6741b7a2c5b06dbcb2e create mode 100644 Library/metadata/a5/a51c3dbd81ecb6741b7a2c5b06dbcb2e.info create mode 100644 Library/metadata/a5/a57cd5c56c9d75c4ba0ee9fbc6e1d8df create mode 100644 Library/metadata/a5/a57cd5c56c9d75c4ba0ee9fbc6e1d8df.info create mode 100644 Library/metadata/a5/a58fa4585fefc5043a66e30d7b6b9e70 create mode 100644 Library/metadata/a5/a58fa4585fefc5043a66e30d7b6b9e70.info create mode 100644 Library/metadata/a5/a58fa4585fefc5043a66e30d7b6b9e70.resource create mode 100644 Library/metadata/a5/a5a6a70209b6e6345bfe18b02314a54e create mode 100644 Library/metadata/a5/a5a6a70209b6e6345bfe18b02314a54e.info create mode 100644 Library/metadata/a5/a5b684916cfe6804985d74652a2af09f create mode 100644 Library/metadata/a5/a5b684916cfe6804985d74652a2af09f.info create mode 100644 Library/metadata/a6/a6990c59ffac7cf4b87f644ab4782007 create mode 100644 Library/metadata/a6/a6990c59ffac7cf4b87f644ab4782007.info create mode 100644 Library/metadata/a8/a8aded2ee3b41f04eaad3a7b9f35e37f create mode 100644 Library/metadata/a8/a8aded2ee3b41f04eaad3a7b9f35e37f.info create mode 100644 Library/metadata/a8/a8aded2ee3b41f04eaad3a7b9f35e37f.resource create mode 100644 Library/metadata/a8/a8cac5516702311429fe7478ff4d7d05 create mode 100644 Library/metadata/a8/a8cac5516702311429fe7478ff4d7d05.info create mode 100644 Library/metadata/aa/aa14911b4b4eb894085dfe426f46ba98 create mode 100644 Library/metadata/aa/aa14911b4b4eb894085dfe426f46ba98.info create mode 100644 Library/metadata/aa/aa14911b4b4eb894085dfe426f46ba98.resource create mode 100644 Library/metadata/aa/aa9e211c83b607f479bd7772eb56a98c create mode 100644 Library/metadata/aa/aa9e211c83b607f479bd7772eb56a98c.info create mode 100644 Library/metadata/aa/aa9e211c83b607f479bd7772eb56a98c.resource create mode 100644 Library/metadata/ab/ab9d0c5c3fa27b34685e9b70737e281a create mode 100644 Library/metadata/ab/ab9d0c5c3fa27b34685e9b70737e281a.info create mode 100644 Library/metadata/ab/ab9d0c5c3fa27b34685e9b70737e281a.resource create mode 100644 Library/metadata/ab/abf6d945eaf1e3448b2c5264c0b1be0f create mode 100644 Library/metadata/ab/abf6d945eaf1e3448b2c5264c0b1be0f.info create mode 100644 Library/metadata/ab/abfc00e0350ad744083849e2d7ae06ee create mode 100644 Library/metadata/ab/abfc00e0350ad744083849e2d7ae06ee.info create mode 100644 Library/metadata/ad/ad77666522338cf49ba83b80b25e6476 create mode 100644 Library/metadata/ad/ad77666522338cf49ba83b80b25e6476.info create mode 100644 Library/metadata/ad/adaa56b2d3d8ca548a8467326825e514 create mode 100644 Library/metadata/ad/adaa56b2d3d8ca548a8467326825e514.info create mode 100644 Library/metadata/ad/adaa56b2d3d8ca548a8467326825e514.resource create mode 100644 Library/metadata/ad/adcc31e02dc74204c80c632b9844b681 create mode 100644 Library/metadata/ad/adcc31e02dc74204c80c632b9844b681.info create mode 100644 Library/metadata/ad/adcc31e02dc74204c80c632b9844b681.resource create mode 100644 Library/metadata/b0/b0b65ac2add33d04b9c6485a060c240a create mode 100644 Library/metadata/b0/b0b65ac2add33d04b9c6485a060c240a.info create mode 100644 Library/metadata/b2/b2a747d8f314a8449a70c1fb1807f8dd create mode 100644 Library/metadata/b2/b2a747d8f314a8449a70c1fb1807f8dd.info create mode 100644 Library/metadata/b2/b2d1785fa0c551e408b6c94398847b76 create mode 100644 Library/metadata/b2/b2d1785fa0c551e408b6c94398847b76.info create mode 100644 Library/metadata/b5/b508660da1369664ea4fe1f9987c2150 create mode 100644 Library/metadata/b5/b508660da1369664ea4fe1f9987c2150.info create mode 100644 Library/metadata/b5/b508660da1369664ea4fe1f9987c2150.resource create mode 100644 Library/metadata/b5/b5c78ec7a0919a445ad9472465dc95e3 create mode 100644 Library/metadata/b5/b5c78ec7a0919a445ad9472465dc95e3.info create mode 100644 Library/metadata/b6/b61cd59d8f02e454186a61a5f55c21b9 create mode 100644 Library/metadata/b6/b61cd59d8f02e454186a61a5f55c21b9.info create mode 100644 Library/metadata/b6/b6fb03c27a50bde4c90aa0b2d201eab7 create mode 100644 Library/metadata/b6/b6fb03c27a50bde4c90aa0b2d201eab7.info create mode 100644 Library/metadata/b6/b6fb03c27a50bde4c90aa0b2d201eab7.resource create mode 100644 Library/metadata/b8/b8d4cc6cf300b3e4bb1411c4e041030c create mode 100644 Library/metadata/b8/b8d4cc6cf300b3e4bb1411c4e041030c.info create mode 100644 Library/metadata/b9/b93b6a877adcbf94c89a9d6e0c0e844d create mode 100644 Library/metadata/b9/b93b6a877adcbf94c89a9d6e0c0e844d.info create mode 100644 Library/metadata/b9/b93fe5c516cf6ed4b9153ec790f856e2 create mode 100644 Library/metadata/b9/b93fe5c516cf6ed4b9153ec790f856e2.info create mode 100644 Library/metadata/b9/b9d299b8c6aa86242bec9a060f7e2d81 create mode 100644 Library/metadata/b9/b9d299b8c6aa86242bec9a060f7e2d81.info create mode 100644 Library/metadata/ba/ba42448c9a2fa44409034eead650b5f4 create mode 100644 Library/metadata/ba/ba42448c9a2fa44409034eead650b5f4.info create mode 100644 Library/metadata/bb/bb00cc87e146a414fbf2c4d3c0d31151 create mode 100644 Library/metadata/bb/bb00cc87e146a414fbf2c4d3c0d31151.info create mode 100644 Library/metadata/bb/bb07dbf09f9933e49b22c82d8428c53b create mode 100644 Library/metadata/bb/bb07dbf09f9933e49b22c82d8428c53b.info create mode 100644 Library/metadata/bb/bb185b9d56707b64d8cd03434503252d create mode 100644 Library/metadata/bb/bb185b9d56707b64d8cd03434503252d.info create mode 100644 Library/metadata/bb/bb185b9d56707b64d8cd03434503252d.resource create mode 100644 Library/metadata/bb/bb1994a9358f0dc4782fe7535a9b384c create mode 100644 Library/metadata/bb/bb1994a9358f0dc4782fe7535a9b384c.info create mode 100644 Library/metadata/bb/bb1994a9358f0dc4782fe7535a9b384c.resource create mode 100644 Library/metadata/bb/bbecae3d442b2b0478f2e6a2afc24059 create mode 100644 Library/metadata/bb/bbecae3d442b2b0478f2e6a2afc24059.info create mode 100644 Library/metadata/bd/bd2dd58615e1ced41ae3178451fab370 create mode 100644 Library/metadata/bd/bd2dd58615e1ced41ae3178451fab370.info create mode 100644 Library/metadata/be/be3c3a084f7b29b4880b42b4cfbf4d8f create mode 100644 Library/metadata/be/be3c3a084f7b29b4880b42b4cfbf4d8f.info create mode 100644 Library/metadata/be/be96d45fe21847a4a805d408a8015c84 create mode 100644 Library/metadata/be/be96d45fe21847a4a805d408a8015c84.info create mode 100644 Library/metadata/be/beefd4b7702d5874994c17328dc55b24 create mode 100644 Library/metadata/be/beefd4b7702d5874994c17328dc55b24.info create mode 100644 Library/metadata/be/beefd4b7702d5874994c17328dc55b24.resource create mode 100644 Library/metadata/c0/c0a7e5755749589449042302049a9748 create mode 100644 Library/metadata/c0/c0a7e5755749589449042302049a9748.info create mode 100644 Library/metadata/c0/c0a7e5755749589449042302049a9748.resource create mode 100644 Library/metadata/c1/c1eded52540dd0a4988d5d4d76382da9 create mode 100644 Library/metadata/c1/c1eded52540dd0a4988d5d4d76382da9.info create mode 100644 Library/metadata/c2/c2b473f54caf2504ba276643282bc0ab create mode 100644 Library/metadata/c2/c2b473f54caf2504ba276643282bc0ab.info create mode 100644 Library/metadata/c2/c2b473f54caf2504ba276643282bc0ab.resource create mode 100644 Library/metadata/c3/c33af0785775d7548b22541da37936fe create mode 100644 Library/metadata/c3/c33af0785775d7548b22541da37936fe.info create mode 100644 Library/metadata/c3/c360cf037a4ff3f4cb643392da004156 create mode 100644 Library/metadata/c3/c360cf037a4ff3f4cb643392da004156.info create mode 100644 Library/metadata/c4/c4153b26428ccf041950b92c057812a3 create mode 100644 Library/metadata/c4/c4153b26428ccf041950b92c057812a3.info create mode 100644 Library/metadata/c4/c4212c0047b94924e8982fea80fb6547 create mode 100644 Library/metadata/c4/c4212c0047b94924e8982fea80fb6547.info create mode 100644 Library/metadata/c4/c4212c0047b94924e8982fea80fb6547.resource create mode 100644 Library/metadata/c4/c424271f5a0b34042978648f19f2da8b create mode 100644 Library/metadata/c4/c424271f5a0b34042978648f19f2da8b.info create mode 100644 Library/metadata/c4/c424271f5a0b34042978648f19f2da8b.resource create mode 100644 Library/metadata/c4/c4a7b02e27e148a47b782f8cd5cb598d create mode 100644 Library/metadata/c4/c4a7b02e27e148a47b782f8cd5cb598d.info create mode 100644 Library/metadata/c5/c509d5711dc2cc346be2763cd92383ca create mode 100644 Library/metadata/c5/c509d5711dc2cc346be2763cd92383ca.info create mode 100644 Library/metadata/c6/c6bc348d47e14444f9ca466d8cf06d46 create mode 100644 Library/metadata/c6/c6bc348d47e14444f9ca466d8cf06d46.info create mode 100644 Library/metadata/c7/c7aaa47f2514a5141970781d595e76a9 create mode 100644 Library/metadata/c7/c7aaa47f2514a5141970781d595e76a9.info create mode 100644 Library/metadata/c8/c848d318c783da14d920cdb75f1ee7ac create mode 100644 Library/metadata/c8/c848d318c783da14d920cdb75f1ee7ac.info create mode 100644 Library/metadata/c8/c848d318c783da14d920cdb75f1ee7ac.resource create mode 100644 Library/metadata/c8/c8941a9f98c35d84cb19a5e044467de9 create mode 100644 Library/metadata/c8/c8941a9f98c35d84cb19a5e044467de9.info create mode 100644 Library/metadata/c9/c9b9c3bb824daba4b9cb39713cd412a6 create mode 100644 Library/metadata/c9/c9b9c3bb824daba4b9cb39713cd412a6.info create mode 100644 Library/metadata/c9/c9b9c3bb824daba4b9cb39713cd412a6.resource create mode 100644 Library/metadata/c9/c9da270df5147d24597cc106058c1fa7 create mode 100644 Library/metadata/c9/c9da270df5147d24597cc106058c1fa7.info create mode 100644 Library/metadata/c9/c9e05292e0d62b542ac5bba92674a86d create mode 100644 Library/metadata/c9/c9e05292e0d62b542ac5bba92674a86d.info create mode 100644 Library/metadata/c9/c9e412f243fb49340bea515981cab351 create mode 100644 Library/metadata/c9/c9e412f243fb49340bea515981cab351.info create mode 100644 Library/metadata/c9/c9e412f243fb49340bea515981cab351.resource create mode 100644 Library/metadata/c9/c9f83db71b9a6764abf964ab7679f035 create mode 100644 Library/metadata/c9/c9f83db71b9a6764abf964ab7679f035.info create mode 100644 Library/metadata/ca/ca0f976ff76b04644a1332f3be4f344b create mode 100644 Library/metadata/ca/ca0f976ff76b04644a1332f3be4f344b.info create mode 100644 Library/metadata/ca/ca0f976ff76b04644a1332f3be4f344b.resource create mode 100644 Library/metadata/cb/cb0cd73b74d6f884bab13a472f547100 create mode 100644 Library/metadata/cb/cb0cd73b74d6f884bab13a472f547100.info create mode 100644 Library/metadata/cb/cb0cd73b74d6f884bab13a472f547100.resource create mode 100644 Library/metadata/cb/cb68230ab01aab448b476ae3c84ee521 create mode 100644 Library/metadata/cb/cb68230ab01aab448b476ae3c84ee521.info create mode 100644 Library/metadata/cb/cb68230ab01aab448b476ae3c84ee521.resource create mode 100644 Library/metadata/cc/cc1b8e5b8c3365a49b0274fb637151d6 create mode 100644 Library/metadata/cc/cc1b8e5b8c3365a49b0274fb637151d6.info create mode 100644 Library/metadata/ce/cef9a0102c9fe0c4fad4ebcf9ec72a45 create mode 100644 Library/metadata/ce/cef9a0102c9fe0c4fad4ebcf9ec72a45.info create mode 100644 Library/metadata/ce/cef9a0102c9fe0c4fad4ebcf9ec72a45.resource create mode 100644 Library/metadata/d1/d1a38babac376b7418f11ad0254a0cf2 create mode 100644 Library/metadata/d1/d1a38babac376b7418f11ad0254a0cf2.info create mode 100644 Library/metadata/d2/d2244eee8a3a4784fb40d1123ff69301 create mode 100644 Library/metadata/d2/d2244eee8a3a4784fb40d1123ff69301.info create mode 100644 Library/metadata/d2/d27732ffed6c52840bb268571f66913e create mode 100644 Library/metadata/d2/d27732ffed6c52840bb268571f66913e.info create mode 100644 Library/metadata/d2/d27732ffed6c52840bb268571f66913e.resource create mode 100644 Library/metadata/d3/d37c2cf88f7c59f4c8cf5d3812568143 create mode 100644 Library/metadata/d3/d37c2cf88f7c59f4c8cf5d3812568143.info create mode 100644 Library/metadata/d4/d410d7126dd411c4ea651fc94eae9202 create mode 100644 Library/metadata/d4/d410d7126dd411c4ea651fc94eae9202.info create mode 100644 Library/metadata/d4/d4dbb95c6efc21548ac6d079a65a2d50 create mode 100644 Library/metadata/d4/d4dbb95c6efc21548ac6d079a65a2d50.info create mode 100644 Library/metadata/d4/d4e8a839a7c5b7e4580c59e305fb5f01 create mode 100644 Library/metadata/d4/d4e8a839a7c5b7e4580c59e305fb5f01.info create mode 100644 Library/metadata/d5/d520699ed41daaf48b924d994ac87378 create mode 100644 Library/metadata/d5/d520699ed41daaf48b924d994ac87378.info create mode 100644 Library/metadata/d5/d53053a416c413d40ae35d3b3d2c8277 create mode 100644 Library/metadata/d5/d53053a416c413d40ae35d3b3d2c8277.info create mode 100644 Library/metadata/d5/d53053a416c413d40ae35d3b3d2c8277.resource create mode 100644 Library/metadata/d5/d5aa741aac337e14398adda80505bf9c create mode 100644 Library/metadata/d5/d5aa741aac337e14398adda80505bf9c.info create mode 100644 Library/metadata/d5/d5aa741aac337e14398adda80505bf9c.resource create mode 100644 Library/metadata/d8/d85480da87762944399dab6c99985eef create mode 100644 Library/metadata/d8/d85480da87762944399dab6c99985eef.info create mode 100644 Library/metadata/d8/d88af1b1098a33a42bc43c910c864102 create mode 100644 Library/metadata/d8/d88af1b1098a33a42bc43c910c864102.info create mode 100644 Library/metadata/da/da25bb0dccfd3894181fc5e84714cd17 create mode 100644 Library/metadata/da/da25bb0dccfd3894181fc5e84714cd17.info create mode 100644 Library/metadata/da/da7243059d8ed744abfe851fd03f8405 create mode 100644 Library/metadata/da/da7243059d8ed744abfe851fd03f8405.info create mode 100644 Library/metadata/da/da7243059d8ed744abfe851fd03f8405.resource create mode 100644 Library/metadata/da/daf28736fcb032a44b7a5c1fd0a27b15 create mode 100644 Library/metadata/da/daf28736fcb032a44b7a5c1fd0a27b15.info create mode 100644 Library/metadata/db/dbf37170840828344ae352756e49a99a create mode 100644 Library/metadata/db/dbf37170840828344ae352756e49a99a.info create mode 100644 Library/metadata/db/dbf37170840828344ae352756e49a99a.resource create mode 100644 Library/metadata/dc/dc06161b6d97feb419f45f03b62e14b9 create mode 100644 Library/metadata/dc/dc06161b6d97feb419f45f03b62e14b9.info create mode 100644 Library/metadata/dc/dc121f192dd724945a1998a9c1f1727d create mode 100644 Library/metadata/dc/dc121f192dd724945a1998a9c1f1727d.info create mode 100644 Library/metadata/dc/dc3be917a80086a48b97933694257f09 create mode 100644 Library/metadata/dc/dc3be917a80086a48b97933694257f09.info create mode 100644 Library/metadata/dd/dd90b53139ec2fb4697f0cf3dceac679 create mode 100644 Library/metadata/dd/dd90b53139ec2fb4697f0cf3dceac679.info create mode 100644 Library/metadata/dd/dd90b53139ec2fb4697f0cf3dceac679.resource create mode 100644 Library/metadata/dd/ddcfb4cc21e043948b5a84afe22d90f0 create mode 100644 Library/metadata/dd/ddcfb4cc21e043948b5a84afe22d90f0.info create mode 100644 Library/metadata/dd/ddcfb4cc21e043948b5a84afe22d90f0.resource create mode 100644 Library/metadata/dd/dde0cb3ddafcf014a8c42e805de893e8 create mode 100644 Library/metadata/dd/dde0cb3ddafcf014a8c42e805de893e8.info create mode 100644 Library/metadata/dd/dde0cb3ddafcf014a8c42e805de893e8.resource create mode 100644 Library/metadata/de/de053fb214897cc439db35fc0361a282 create mode 100644 Library/metadata/de/de053fb214897cc439db35fc0361a282.info create mode 100644 Library/metadata/df/dfd9b0fa043e3fc43821c159432a045c create mode 100644 Library/metadata/df/dfd9b0fa043e3fc43821c159432a045c.info create mode 100644 Library/metadata/df/dfd9b0fa043e3fc43821c159432a045c.resource create mode 100644 Library/metadata/e0/e0135c95e70592e4fac2f29e7b78abcf create mode 100644 Library/metadata/e0/e0135c95e70592e4fac2f29e7b78abcf.info create mode 100644 Library/metadata/e0/e070196015a41bc419ea9e03ba170df5 create mode 100644 Library/metadata/e0/e070196015a41bc419ea9e03ba170df5.info create mode 100644 Library/metadata/e0/e0b086fbb874df143b6ac8f53cea5424 create mode 100644 Library/metadata/e0/e0b086fbb874df143b6ac8f53cea5424.info create mode 100644 Library/metadata/e1/e1c0e3b33fba81e4f854a8bc367fc1d7 create mode 100644 Library/metadata/e1/e1c0e3b33fba81e4f854a8bc367fc1d7.info create mode 100644 Library/metadata/e3/e3148a98a2496e64cb8712177bbcde71 create mode 100644 Library/metadata/e3/e3148a98a2496e64cb8712177bbcde71.info create mode 100644 Library/metadata/e3/e3148a98a2496e64cb8712177bbcde71.resource create mode 100644 Library/metadata/e3/e3b47c2980b93bc48844a54641dab5b8 create mode 100644 Library/metadata/e3/e3b47c2980b93bc48844a54641dab5b8.info create mode 100644 Library/metadata/e3/e3b77830391f10343929883b18f4d5ae create mode 100644 Library/metadata/e3/e3b77830391f10343929883b18f4d5ae.info create mode 100644 Library/metadata/e4/e45d903a97eada14bbd5177c2da9703d create mode 100644 Library/metadata/e4/e45d903a97eada14bbd5177c2da9703d.info create mode 100644 Library/metadata/e4/e45d903a97eada14bbd5177c2da9703d.resource create mode 100644 Library/metadata/e4/e4c4a2a27a81a8047ab1987a441abb3e create mode 100644 Library/metadata/e4/e4c4a2a27a81a8047ab1987a441abb3e.info create mode 100644 Library/metadata/e5/e5d8794b03b325e4eb7f26642c221012 create mode 100644 Library/metadata/e5/e5d8794b03b325e4eb7f26642c221012.info create mode 100644 Library/metadata/e6/e61c6399d5478fc4bbfbdb7ccc35cca1 create mode 100644 Library/metadata/e6/e61c6399d5478fc4bbfbdb7ccc35cca1.info create mode 100644 Library/metadata/e6/e694f124da5bfd84d97e67e8c2719420 create mode 100644 Library/metadata/e6/e694f124da5bfd84d97e67e8c2719420.info create mode 100644 Library/metadata/e7/e7afc8c74d1f73b458705e0b946292a0 create mode 100644 Library/metadata/e7/e7afc8c74d1f73b458705e0b946292a0.info create mode 100644 Library/metadata/e7/e7e681076fb2fad47bed246936de90bf create mode 100644 Library/metadata/e7/e7e681076fb2fad47bed246936de90bf.info create mode 100644 Library/metadata/e9/e979227f3384fac4b8ca0b3550bf005c create mode 100644 Library/metadata/e9/e979227f3384fac4b8ca0b3550bf005c.info create mode 100644 Library/metadata/e9/e9befd794befe7540ad040be41dba757 create mode 100644 Library/metadata/e9/e9befd794befe7540ad040be41dba757.info create mode 100644 Library/metadata/e9/e9befd794befe7540ad040be41dba757.resource create mode 100644 Library/metadata/ea/ea1001a6626353541ab4d4b39f4c3569 create mode 100644 Library/metadata/ea/ea1001a6626353541ab4d4b39f4c3569.info create mode 100644 Library/metadata/ea/ea22dba3baf2ecc4d886bf2444444228 create mode 100644 Library/metadata/ea/ea22dba3baf2ecc4d886bf2444444228.info create mode 100644 Library/metadata/ea/eafd8df4914b6054db2b36a3aa4b4830 create mode 100644 Library/metadata/ea/eafd8df4914b6054db2b36a3aa4b4830.info create mode 100644 Library/metadata/ea/eafd8df4914b6054db2b36a3aa4b4830.resource create mode 100644 Library/metadata/eb/eb6d6653511aff5409d0827d4e3b79ea create mode 100644 Library/metadata/eb/eb6d6653511aff5409d0827d4e3b79ea.info create mode 100644 Library/metadata/eb/ebc38d834b57e9d4d992de0a5470615a create mode 100644 Library/metadata/eb/ebc38d834b57e9d4d992de0a5470615a.info create mode 100644 Library/metadata/eb/ebcc975aa3c1d5240936c86b600ca2a5 create mode 100644 Library/metadata/eb/ebcc975aa3c1d5240936c86b600ca2a5.info create mode 100644 Library/metadata/eb/ebf848d63ce32d047a0acbc338e35371 create mode 100644 Library/metadata/eb/ebf848d63ce32d047a0acbc338e35371.info create mode 100644 Library/metadata/eb/ebf848d63ce32d047a0acbc338e35371.resource create mode 100644 Library/metadata/ec/ec3dc73cf20a842438065d10e72e1b14 create mode 100644 Library/metadata/ec/ec3dc73cf20a842438065d10e72e1b14.info create mode 100644 Library/metadata/ec/ec82b6ce2e2435444a434107cddceb0b create mode 100644 Library/metadata/ec/ec82b6ce2e2435444a434107cddceb0b.info create mode 100644 Library/metadata/ec/ece81cacdab36d745962207a515820a1 create mode 100644 Library/metadata/ec/ece81cacdab36d745962207a515820a1.info create mode 100644 Library/metadata/ec/ece81cacdab36d745962207a515820a1.resource create mode 100644 Library/metadata/ee/ee2359d7e6460d4449d8b8c70d3045b4 create mode 100644 Library/metadata/ee/ee2359d7e6460d4449d8b8c70d3045b4.info create mode 100644 Library/metadata/ef/efee776e88902a74684c56ce2962678f create mode 100644 Library/metadata/ef/efee776e88902a74684c56ce2962678f.info create mode 100644 Library/metadata/ef/efee776e88902a74684c56ce2962678f.resource create mode 100644 Library/metadata/f1/f195fe0cc42f49241a3c7521a19fa350 create mode 100644 Library/metadata/f1/f195fe0cc42f49241a3c7521a19fa350.info create mode 100644 Library/metadata/f1/f1f5f898fbfdb80478825ce9b01fe8ae create mode 100644 Library/metadata/f1/f1f5f898fbfdb80478825ce9b01fe8ae.info create mode 100644 Library/metadata/f2/f260935093f73f241bfaa1578e5e5506 create mode 100644 Library/metadata/f2/f260935093f73f241bfaa1578e5e5506.info create mode 100644 Library/metadata/f2/f2d37238fea5a8c4a86c80912b379030 create mode 100644 Library/metadata/f2/f2d37238fea5a8c4a86c80912b379030.info create mode 100644 Library/metadata/f2/f2f2850d002f14a47bff32fdf73df53e create mode 100644 Library/metadata/f2/f2f2850d002f14a47bff32fdf73df53e.info create mode 100644 Library/metadata/f3/f3004e0c0e5df074abcb3548fd812bfc create mode 100644 Library/metadata/f3/f3004e0c0e5df074abcb3548fd812bfc.info create mode 100644 Library/metadata/f3/f33ccd07f9433f44f8c5430938b168ac create mode 100644 Library/metadata/f3/f33ccd07f9433f44f8c5430938b168ac.info create mode 100644 Library/metadata/f4/f469358269d38b143b9f7bc2d6b57a29 create mode 100644 Library/metadata/f4/f469358269d38b143b9f7bc2d6b57a29.info create mode 100644 Library/metadata/f4/f469358269d38b143b9f7bc2d6b57a29.resource create mode 100644 Library/metadata/f4/f4a03a51c550b92478a559cf694ce118 create mode 100644 Library/metadata/f4/f4a03a51c550b92478a559cf694ce118.info create mode 100644 Library/metadata/f5/f53662f45a4454944a06629fec9c941e create mode 100644 Library/metadata/f5/f53662f45a4454944a06629fec9c941e.info create mode 100644 Library/metadata/f5/f5a1be5da1c87864582d778e52de4e9b create mode 100644 Library/metadata/f5/f5a1be5da1c87864582d778e52de4e9b.info create mode 100644 Library/metadata/f5/f5be45115742b07478e21c85fcc233ec create mode 100644 Library/metadata/f5/f5be45115742b07478e21c85fcc233ec.info create mode 100644 Library/metadata/f6/f6802bd638faedf4dbe4a57c1f222991 create mode 100644 Library/metadata/f6/f6802bd638faedf4dbe4a57c1f222991.info create mode 100644 Library/metadata/f6/f6870f0d62f5a624aabbd4e3e7bff65f create mode 100644 Library/metadata/f6/f6870f0d62f5a624aabbd4e3e7bff65f.info create mode 100644 Library/metadata/f6/f6870f0d62f5a624aabbd4e3e7bff65f.resource create mode 100644 Library/metadata/f7/f71819766ca687246a2150260bcfc1c5 create mode 100644 Library/metadata/f7/f71819766ca687246a2150260bcfc1c5.info create mode 100644 Library/metadata/f7/f7c5046ea350a2c4b898e99dbca46c22 create mode 100644 Library/metadata/f7/f7c5046ea350a2c4b898e99dbca46c22.info create mode 100644 Library/metadata/f7/f7c5046ea350a2c4b898e99dbca46c22.resource create mode 100644 Library/metadata/f7/f7cd62d595c763c428123f260c78b711 create mode 100644 Library/metadata/f7/f7cd62d595c763c428123f260c78b711.info create mode 100644 Library/metadata/f8/f855134cdd14ab54fa2838027b3eec2f create mode 100644 Library/metadata/f8/f855134cdd14ab54fa2838027b3eec2f.info create mode 100644 Library/metadata/f8/f86ab2e727cd09f43849955c5b35f490 create mode 100644 Library/metadata/f8/f86ab2e727cd09f43849955c5b35f490.info create mode 100644 Library/metadata/f9/f9c6e0c408020c341b3c329ec30355a1 create mode 100644 Library/metadata/f9/f9c6e0c408020c341b3c329ec30355a1.info create mode 100644 Library/metadata/f9/f9d368eac27f70740bed52d36e0070d8 create mode 100644 Library/metadata/f9/f9d368eac27f70740bed52d36e0070d8.info create mode 100644 Library/metadata/f9/f9d368eac27f70740bed52d36e0070d8.resource create mode 100644 Library/metadata/fa/fa05b1dac59aa764184da0aba83b2bf9 create mode 100644 Library/metadata/fa/fa05b1dac59aa764184da0aba83b2bf9.info create mode 100644 Library/metadata/fb/fb710a001890d9a44bb74a8ce4f20cc0 create mode 100644 Library/metadata/fb/fb710a001890d9a44bb74a8ce4f20cc0.info create mode 100644 Library/metadata/fd/fdcbdcd5e7d71594bb123666b2bcb779 create mode 100644 Library/metadata/fd/fdcbdcd5e7d71594bb123666b2bcb779.info create mode 100644 Library/metadata/fd/fdcbdcd5e7d71594bb123666b2bcb779.resource create mode 100644 Library/metadata/fe/fe244a154e37eac40a5ecc62b91e6f4f create mode 100644 Library/metadata/fe/fe244a154e37eac40a5ecc62b91e6f4f.info create mode 100644 Library/metadata/ff/ff4f36585e15b1942827390ff1a92502 create mode 100644 Library/metadata/ff/ff4f36585e15b1942827390ff1a92502.info create mode 100644 Library/metadata/ff/ffefbea063cab884ca33e5a449e5c22c create mode 100644 Library/metadata/ff/ffefbea063cab884ca33e5a449e5c22c.info diff --git a/Assembly-CSharp-Editor-firstpass.csproj b/Assembly-CSharp-Editor-firstpass.csproj index b46bb919..2ebc6a64 100644 --- a/Assembly-CSharp-Editor-firstpass.csproj +++ b/Assembly-CSharp-Editor-firstpass.csproj @@ -13,7 +13,8 @@ v3.5 512 Assets - + default + true full @@ -23,7 +24,8 @@ prompt 4 0169 - + default + pdbonly true @@ -31,7 +33,8 @@ prompt 4 0169 - + default + @@ -66,12 +69,15 @@ + + + @@ -87,6 +93,7 @@ + @@ -127,20 +134,27 @@ + + + + + + + C:/Program Files/Unity/Editor/Data/UnityExtensions/Unity/Advertisements/Editor/UnityEditor.Advertisements.dll @@ -209,5 +223,4 @@ --> - diff --git a/Assembly-CSharp-Editor.csproj b/Assembly-CSharp-Editor.csproj index c243c856..e8e551f3 100644 --- a/Assembly-CSharp-Editor.csproj +++ b/Assembly-CSharp-Editor.csproj @@ -13,7 +13,8 @@ v3.5 512 Assets - + default + true full @@ -23,7 +24,8 @@ prompt 4 0169 - + default + pdbonly true @@ -31,7 +33,8 @@ prompt 4 0169 - + default + @@ -49,18 +52,27 @@ + + + + + + + + + @@ -76,6 +88,7 @@ + @@ -116,20 +129,27 @@ + + + + + + + C:/Users/yuki/Documents/Work/Listen/Library/ScriptAssemblies/Assembly-UnityScript.dll @@ -192,6 +212,8 @@ {AE6F01BE-C035-8190-5EA0-F4E015BA1AA5} Assembly-CSharp-firstpass + + {5387FFB3-27F8-102A-A952-46EE5E594FD5} Assembly-CSharp {FC5182C2-BC2C-59E8-06A2-46F98E721705} Assembly-CSharp-Editor-firstpass @@ -203,5 +225,4 @@ --> - diff --git a/Assembly-CSharp-firstpass.csproj b/Assembly-CSharp-firstpass.csproj index 0738dd2c..0adbf3db 100644 --- a/Assembly-CSharp-firstpass.csproj +++ b/Assembly-CSharp-firstpass.csproj @@ -13,7 +13,8 @@ v3.5 512 Assets - + default + true full @@ -23,7 +24,8 @@ prompt 4 0169 - + default + pdbonly true @@ -31,7 +33,8 @@ prompt 4 0169 - + default + @@ -129,12 +132,15 @@ + + + @@ -150,6 +156,7 @@ + @@ -190,20 +197,27 @@ + + + + + + + C:/Program Files/Unity/Editor/Data/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll @@ -232,5 +246,4 @@ --> - diff --git a/Assembly-CSharp.csproj b/Assembly-CSharp.csproj index 1d2a0218..b45564d8 100644 --- a/Assembly-CSharp.csproj +++ b/Assembly-CSharp.csproj @@ -13,7 +13,8 @@ v3.5 512 Assets - + default + true full @@ -23,7 +24,8 @@ prompt 4 0169 - + default + pdbonly true @@ -31,7 +33,8 @@ prompt 4 0169 - + default + @@ -47,33 +50,139 @@ - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -89,6 +198,7 @@ + @@ -129,20 +239,27 @@ + + + + + + + C:/Program Files/Unity/Editor/Data/UnityExtensions/Unity/GUISystem/UnityEngine.UI.dll @@ -175,5 +292,4 @@ --> - diff --git a/Assets/Other Sources/Model/Villa/Materials/364.mat b/Assets/Other Sources/Model/Villa/Materials/364.mat index 13118fac..ddce9232 100644 --- a/Assets/Other Sources/Model/Villa/Materials/364.mat +++ b/Assets/Other Sources/Model/Villa/Materials/364.mat @@ -7,7 +7,7 @@ Material: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_Name: 364 - m_Shader: {fileID: 4800000, guid: d84268709d11078d11005b9844295342, type: 3} + m_Shader: {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} m_ShaderKeywords: _EMISSION m_LightmapFlags: 1 m_CustomRenderQueue: -1 @@ -76,6 +76,9 @@ Material: m_Scale: {x: 1, y: 1} m_Offset: {x: 0, y: 0} m_Floats: + - first: + name: PixelSnap + second: 0 - first: name: _BumpScale second: 1 diff --git a/Assets/Prefabs/Ghost.prefab b/Assets/Prefabs/Ghost.prefab index bd4583d3..9437d635 100644 --- a/Assets/Prefabs/Ghost.prefab +++ b/Assets/Prefabs/Ghost.prefab @@ -27,6 +27,7 @@ GameObject: - component: {fileID: 82000012976939498} - component: {fileID: 82000010922806032} - component: {fileID: 82000013290971388} + - component: {fileID: 114838686985166722} m_Layer: 0 m_Name: Ghost m_TagString: Untagged @@ -102,6 +103,22 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 0 +--- !u!1 &1669678746726288 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4842668221249178} + - component: {fileID: 108596312021666624} + m_Layer: 0 + m_Name: Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 --- !u!1 &1886355899794438 GameObject: m_ObjectHideFlags: 1 @@ -138,12 +155,13 @@ Transform: m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1000010762658480} m_LocalRotation: {x: -0, y: 0.6908623, z: -0, w: -0.7229864} - m_LocalPosition: {x: 5.76, y: 4.005, z: 22.74} - m_LocalScale: {x: 1.0000005, y: 0.59158, z: 0.8022204} + m_LocalPosition: {x: 8.14, y: 4.005, z: 9.12} + m_LocalScale: {x: 1.3441427, y: 0.79516745, z: 1.0782981} m_Children: - {fileID: 4000012182433452} - {fileID: 4069329736314968} - {fileID: 4628400691595010} + - {fileID: 4842668221249178} m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 272.603, z: 0} @@ -201,6 +219,19 @@ Transform: m_Father: {fileID: 4000012700653776} m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4842668221249178 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1669678746726288} + m_LocalRotation: {x: 0.7071065, y: -0, z: 0.00000008940697, w: 0.7071072} + m_LocalPosition: {x: 0, y: 14.7, z: -0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 4000012700653776} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 90.00001, y: 0, z: 0} --- !u!23 &23000010900546874 MeshRenderer: m_ObjectHideFlags: 1 @@ -671,6 +702,40 @@ Light: m_BounceIntensity: 1 m_ShadowRadius: 0 m_ShadowAngle: 0 +--- !u!108 &108596312021666624 +Light: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1669678746726288} + m_Enabled: 1 + serializedVersion: 7 + m_Type: 0 + m_Color: {r: 0.63235295, g: 0.04184689, b: 0.04184689, a: 0.628} + m_Intensity: 8 + m_Range: 33.26 + m_SpotAngle: 1 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 1.21 + m_NearPlane: 0.1 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_Lightmapping: 4 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1.57 + m_ShadowRadius: 0 + m_ShadowAngle: 0 --- !u!108 &108685435077919030 Light: m_ObjectHideFlags: 1 @@ -722,9 +787,28 @@ MonoBehaviour: flashlight: {fileID: 108000013300980190} patrol_speed: 3 chase_speed: 6 - proximity: 2 + proximity: 2.5 waypoints: {fileID: 0} ghost_awarness: 15 +--- !u!114 &114838686985166722 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1000010762658480} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 79ebbc9a70ee4734b9a0eda82f28fd5f, type: 3} + m_Name: + m_EditorClassIdentifier: + light_self: {fileID: 108596312021666624} + made_noise: 0 + vector_down: {x: 0, y: 0, z: 0} + echo_max_range: 60 + echo_speed: 20 + light_current_angle: 0 + echo_reset: 0 + echo_fading_speed: 0.5 --- !u!135 &135552667418263772 SphereCollider: m_ObjectHideFlags: 1 diff --git a/Assets/Prefabs/Player.prefab b/Assets/Prefabs/Player.prefab index c9bc6894..4d861ac1 100644 --- a/Assets/Prefabs/Player.prefab +++ b/Assets/Prefabs/Player.prefab @@ -59,7 +59,7 @@ GameObject: - component: {fileID: 82012098038847686} - component: {fileID: 82269793099157692} - component: {fileID: 114863510807630850} - - component: {fileID: 114404764361238434} + - component: {fileID: 114890217478736866} m_Layer: 0 m_Name: Player m_TagString: Player @@ -78,8 +78,9 @@ GameObject: - component: {fileID: 20493602537478348} - component: {fileID: 81884392836796258} - component: {fileID: 124936683717410776} + - component: {fileID: 114758404455892460} m_Layer: 0 - m_Name: FirstPersonCharacter + m_Name: Camera m_TagString: MainCamera m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -92,7 +93,7 @@ Transform: m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1570473908633350} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0.8, z: 0} + m_LocalPosition: {x: 0, y: 1.431, z: 1.558} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 4794239916332596} @@ -104,13 +105,13 @@ Transform: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1047928545124464} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalRotation: {x: 0.70710576, y: -0, z: -0, w: 0.70710784} + m_LocalPosition: {x: 0, y: 5.91, z: -0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 4794239916332596} m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_LocalEulerAnglesHint: {x: 90.00001, y: 0, z: 0} --- !u!4 &4416115632800526 Transform: m_ObjectHideFlags: 1 @@ -131,8 +132,8 @@ Transform: m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1474138143022610} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0.99, y: 4.25, z: -15.75} - m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalPosition: {x: -10.53, y: 4.683, z: -26.04} + m_LocalScale: {x: 1.3441421, y: 1.8644489, z: 1.344142} m_Children: - {fileID: 4049897176489880} - {fileID: 4416115632800526} @@ -180,7 +181,7 @@ MeshRenderer: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1219036196861082} - m_Enabled: 1 + m_Enabled: 0 m_CastShadows: 1 m_ReceiveShadows: 1 m_MotionVectors: 1 @@ -402,50 +403,61 @@ Light: m_GameObject: {fileID: 1047928545124464} m_Enabled: 1 serializedVersion: 7 - m_Type: 2 - m_Color: {r: 0, g: 0.6648071, b: 0.83823526, a: 1} - m_Intensity: 1 - m_Range: 1 - m_SpotAngle: 30 + m_Type: 0 + m_Color: {r: 0.0041630664, g: 0.2638518, b: 0.5661765, a: 0.628} + m_Intensity: 8 + m_Range: 93.96 + m_SpotAngle: 65.1 m_CookieSize: 10 m_Shadows: - m_Type: 0 + m_Type: 2 m_Resolution: -1 m_CustomResolution: -1 m_Strength: 1 m_Bias: 0.05 - m_NormalBias: 0.4 - m_NearPlane: 0.2 + m_NormalBias: 1.21 + m_NearPlane: 0.1 m_Cookie: {fileID: 0} m_DrawHalo: 0 m_Flare: {fileID: 0} - m_RenderMode: 0 + m_RenderMode: 1 m_CullingMask: serializedVersion: 2 m_Bits: 4294967295 m_Lightmapping: 4 m_AreaSize: {x: 1, y: 1} - m_BounceIntensity: 1 + m_BounceIntensity: 1.57 m_ShadowRadius: 0 m_ShadowAngle: 0 ---- !u!114 &114404764361238434 +--- !u!114 &114758404455892460 MonoBehaviour: m_ObjectHideFlags: 1 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1474138143022610} - m_Enabled: 1 + m_GameObject: {fileID: 1570473908633350} + m_Enabled: 0 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 6d89b34a475517c4889f6e9e2c54cb52, type: 3} + m_Script: {fileID: 11500000, guid: bd70d448b18cfbc46af26466f752332c, type: 3} m_Name: m_EditorClassIdentifier: - light_distance: {fileID: 0} - echo_max_range: 60 - echo_speed: 1 - echo_current_range: 1 - echo_current_intensity: 4 - echo_fading_speed: 0.1 - spec_data_intensity: 100 + visualizeFocus: 0 + focalLength: 10 + focalSize: 0.05 + aperture: 0.5 + focalTransform: {fileID: 0} + maxBlurSize: 2 + highResolution: 0 + blurType: 0 + blurSampleCount: 2 + nearBlur: 0 + foregroundOverlap: 1 + dofHdrShader: {fileID: 0} + dx11BokehShader: {fileID: 0} + dx11BokehThreshold: 0.5 + dx11SpawnHeuristic: 0.0875 + dx11BokehTexture: {fileID: 0} + dx11BokehScale: 1.2 + dx11BokehIntensity: 2.5 --- !u!114 &114863510807630850 MonoBehaviour: m_ObjectHideFlags: 1 @@ -458,6 +470,19 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: player: {fileID: 1474138143022610} + walking: 0 +--- !u!114 &114890217478736866 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1474138143022610} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3945477939724e24aa27f23a96506610, type: 3} + m_Name: + m_EditorClassIdentifier: + use_mic: 1 --- !u!114 &114896306908862068 MonoBehaviour: m_ObjectHideFlags: 1 @@ -470,12 +495,12 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: m_IsWalking: 1 - m_WalkSpeed: 3 + m_WalkSpeed: 2.2 m_RunSpeed: 5 - m_RunstepLenghten: 0.7 - m_JumpSpeed: 10 - m_StickToGroundForce: 5 - m_GravityMultiplier: 2 + m_RunstepLenghten: 0.663 + m_JumpSpeed: 2.04 + m_StickToGroundForce: 0.01 + m_GravityMultiplier: 1 m_MouseLook: XSensitivity: 2 YSensitivity: 2 @@ -485,7 +510,7 @@ MonoBehaviour: smooth: 0 smoothTime: 5 lockCursor: 1 - m_UseFovKick: 1 + m_UseFovKick: 0 m_FovKick: Camera: {fileID: 0} originalFov: 0 @@ -510,7 +535,7 @@ MonoBehaviour: m_PreInfinity: 2 m_PostInfinity: 2 m_RotationOrder: 4 - m_UseHeadBob: 1 + m_UseHeadBob: 0 m_HeadBob: HorizontalBobRange: 0.1 VerticalBobRange: 0.1 @@ -554,7 +579,7 @@ MonoBehaviour: m_JumpBob: BobDuration: 0.2 BobAmount: 0.1 - m_StepInterval: 5 + m_StepInterval: 2 m_FootstepSounds: - {fileID: 8300000, guid: 42e65e088b3f4374e851b8dbd38f3df9, type: 3} - {fileID: 8300000, guid: 8bc94ec6ed537e743b481638bdcd503d, type: 3} diff --git a/Assets/Prefabs/RipplePlane.prefab b/Assets/Prefabs/RipplePlane.prefab index d5aca80b..c063aece 100644 --- a/Assets/Prefabs/RipplePlane.prefab +++ b/Assets/Prefabs/RipplePlane.prefab @@ -28,7 +28,7 @@ GameObject: m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 + m_StaticEditorFlags: 40 m_IsActive: 1 --- !u!1 &1442283449938976 GameObject: @@ -83,8 +83,8 @@ Transform: m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1442283449938976} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalPosition: {x: 0, y: -1.23, z: 0} + m_LocalScale: {x: 1.4, y: 1.4, z: 1.4} m_Children: - {fileID: 4313402667231618} - {fileID: 4153247922995512} @@ -99,7 +99,7 @@ Transform: m_GameObject: {fileID: 1848741542752952} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 3.1, z: 0} - m_LocalScale: {x: 5, y: 1, z: 5} + m_LocalScale: {x: 5.0254054, y: 1.0050792, z: 5.025395} m_Children: [] m_Father: {fileID: 4188753986315464} m_RootOrder: 0 @@ -117,7 +117,7 @@ MeshRenderer: m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_Materials: - - {fileID: 2100000, guid: e64eba570d1b4904da9857d94cc0433e, type: 2} + - {fileID: 2100000, guid: affe8420ea98e6140b81dcb49af842a6, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -142,9 +142,9 @@ MeshRenderer: m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1848741542752952} m_Enabled: 0 - m_CastShadows: 1 + m_CastShadows: 0 m_ReceiveShadows: 1 - m_MotionVectors: 1 + m_MotionVectors: 2 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_Materials: @@ -219,8 +219,11 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 03874d69177b2d54ba4eb2b4af03dbe9, type: 3} m_Name: m_EditorClassIdentifier: - dampner: 0.99 - maxWaveHeight: 3 - splashForce: 300 + dampner: 0.96 + wave_force_max: 200 + wave_height_max: 0.4 + update_rate: 5 + mic_threshold: 20 + spread_bit_shift: 1 cols: 128 rows: 128 diff --git a/Assets/Prefabs/Waypoints.prefab b/Assets/Prefabs/Waypoints.prefab index c2ce3a5b..ad13ba5c 100644 --- a/Assets/Prefabs/Waypoints.prefab +++ b/Assets/Prefabs/Waypoints.prefab @@ -29,114 +29,6 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!1 &1000010451310172 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - serializedVersion: 5 - m_Component: - - component: {fileID: 4000010224345850} - - component: {fileID: 33000013627460822} - - component: {fileID: 135000010671932678} - - component: {fileID: 23000011023053444} - m_Layer: 0 - m_Name: waypoint (1) - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!1 &1000010926074054 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - serializedVersion: 5 - m_Component: - - component: {fileID: 4000010087616080} - - component: {fileID: 33000011785648822} - - component: {fileID: 135000012063113006} - - component: {fileID: 23000011969851788} - m_Layer: 0 - m_Name: waypoint (5) - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!1 &1000011093593298 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - serializedVersion: 5 - m_Component: - - component: {fileID: 4000011853569564} - - component: {fileID: 33000012513150746} - - component: {fileID: 135000012387328462} - - component: {fileID: 23000012127744278} - m_Layer: 0 - m_Name: waypoint (9) - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!1 &1000011525310432 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - serializedVersion: 5 - m_Component: - - component: {fileID: 4000012960664432} - - component: {fileID: 33000012009096564} - - component: {fileID: 135000012203994238} - - component: {fileID: 23000012646306148} - m_Layer: 0 - m_Name: waypoint (2) - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!1 &1000012231533174 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - serializedVersion: 5 - m_Component: - - component: {fileID: 4000011808466246} - - component: {fileID: 33000011532270148} - - component: {fileID: 135000011239088174} - - component: {fileID: 23000012053339612} - m_Layer: 0 - m_Name: waypoint (4) - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!1 &1000012851992960 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - serializedVersion: 5 - m_Component: - - component: {fileID: 4000011969841548} - - component: {fileID: 33000012363631994} - - component: {fileID: 135000012421887900} - - component: {fileID: 23000011738939096} - m_Layer: 0 - m_Name: waypoint (6) - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 --- !u!1 &1000013389986086 GameObject: m_ObjectHideFlags: 0 @@ -152,81 +44,6 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!1 &1000014156410884 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - serializedVersion: 5 - m_Component: - - component: {fileID: 4000010092652572} - - component: {fileID: 33000010807823896} - - component: {fileID: 135000011058025344} - - component: {fileID: 23000012403778260} - m_Layer: 0 - m_Name: waypoint (8) - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!1 &1000014201300368 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - serializedVersion: 5 - m_Component: - - component: {fileID: 4000011935358378} - - component: {fileID: 33000010650498934} - - component: {fileID: 135000011449940696} - - component: {fileID: 23000011120957060} - m_Layer: 0 - m_Name: waypoint (7) - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &4000010087616080 -Transform: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1000010926074054} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -27, y: 3.85, z: 14.5} - m_LocalScale: {x: 0.5357632, y: 0.53576386, z: 0.53576386} - m_Children: [] - m_Father: {fileID: 4000013667792572} - m_RootOrder: 4 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!4 &4000010092652572 -Transform: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1000014156410884} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -18.344, y: 3.85, z: 22.047} - m_LocalScale: {x: 0.5357632, y: 0.53576386, z: 0.53576386} - m_Children: [] - m_Father: {fileID: 4000013667792572} - m_RootOrder: 7 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!4 &4000010224345850 -Transform: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1000010451310172} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -57.854, y: 3.85, z: 6.3963} - m_LocalScale: {x: 0.5357632, y: 0.53576386, z: 0.53576386} - m_Children: [] - m_Father: {fileID: 4000013667792572} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!4 &4000010414390506 Transform: m_ObjectHideFlags: 1 @@ -234,77 +51,12 @@ Transform: m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1000010081106018} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: -1.3, y: 3.85, z: 9} + m_LocalPosition: {x: 62.52, y: 3.85, z: 28.31} m_LocalScale: {x: 0.5357632, y: 0.53576386, z: 0.53576386} m_Children: [] m_Father: {fileID: 4000013667792572} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!4 &4000011808466246 -Transform: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1000012231533174} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 25.4, y: 3.85, z: -10.6} - m_LocalScale: {x: 0.5357632, y: 0.53576386, z: 0.53576386} - m_Children: [] - m_Father: {fileID: 4000013667792572} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!4 &4000011853569564 -Transform: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1000011093593298} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -3.1, y: 3.85, z: -23} - m_LocalScale: {x: 0.5357604, y: 0.53576016, z: 0.53576016} - m_Children: [] - m_Father: {fileID: 4000013667792572} - m_RootOrder: 8 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!4 &4000011935358378 -Transform: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1000014201300368} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -18.7, y: 3.85, z: -40.3} - m_LocalScale: {x: 0.5357632, y: 0.53576386, z: 0.53576386} - m_Children: [] - m_Father: {fileID: 4000013667792572} - m_RootOrder: 6 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!4 &4000011969841548 -Transform: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1000012851992960} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -37.907, y: 3.85, z: -42.939} - m_LocalScale: {x: 0.5357632, y: 0.53576386, z: 0.53576386} - m_Children: [] - m_Father: {fileID: 4000013667792572} - m_RootOrder: 5 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!4 &4000012960664432 -Transform: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1000011525310432} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 9.6, y: 3.85, z: 46.4} - m_LocalScale: {x: 0.5357632, y: 0.53576386, z: 0.53576386} - m_Children: [] - m_Father: {fileID: 4000013667792572} - m_RootOrder: 2 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!4 &4000013667792572 Transform: m_ObjectHideFlags: 1 @@ -316,172 +68,9 @@ Transform: m_LocalScale: {x: 0.34771878, y: 0.3477188, z: 0.3477188} m_Children: - {fileID: 4000010414390506} - - {fileID: 4000010224345850} - - {fileID: 4000012960664432} - - {fileID: 4000011808466246} - - {fileID: 4000010087616080} - - {fileID: 4000011969841548} - - {fileID: 4000011935358378} - - {fileID: 4000010092652572} - - {fileID: 4000011853569564} m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &23000011023053444 -MeshRenderer: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1000010451310172} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_Materials: - - {fileID: 2100000, guid: d8633da296e840548b2a8591a25d0633, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingOrder: 0 ---- !u!23 &23000011120957060 -MeshRenderer: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1000014201300368} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_Materials: - - {fileID: 2100000, guid: d8633da296e840548b2a8591a25d0633, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingOrder: 0 ---- !u!23 &23000011738939096 -MeshRenderer: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1000012851992960} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_Materials: - - {fileID: 2100000, guid: d8633da296e840548b2a8591a25d0633, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingOrder: 0 ---- !u!23 &23000011969851788 -MeshRenderer: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1000010926074054} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_Materials: - - {fileID: 2100000, guid: d8633da296e840548b2a8591a25d0633, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingOrder: 0 ---- !u!23 &23000012053339612 -MeshRenderer: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1000012231533174} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_Materials: - - {fileID: 2100000, guid: d8633da296e840548b2a8591a25d0633, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingOrder: 0 --- !u!23 &23000012097525566 MeshRenderer: m_ObjectHideFlags: 1 @@ -513,113 +102,6 @@ MeshRenderer: m_LightmapParameters: {fileID: 0} m_SortingLayerID: 0 m_SortingOrder: 0 ---- !u!23 &23000012127744278 -MeshRenderer: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1000011093593298} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_Materials: - - {fileID: 2100000, guid: d8633da296e840548b2a8591a25d0633, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingOrder: 0 ---- !u!23 &23000012403778260 -MeshRenderer: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1000014156410884} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_Materials: - - {fileID: 2100000, guid: d8633da296e840548b2a8591a25d0633, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingOrder: 0 ---- !u!23 &23000012646306148 -MeshRenderer: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1000011525310432} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_Materials: - - {fileID: 2100000, guid: d8633da296e840548b2a8591a25d0633, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_PreserveUVs: 1 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingOrder: 0 ---- !u!33 &33000010650498934 -MeshFilter: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1000014201300368} - m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} ---- !u!33 &33000010807823896 -MeshFilter: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1000014156410884} - m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} --- !u!33 &33000011184894490 MeshFilter: m_ObjectHideFlags: 1 @@ -627,144 +109,6 @@ MeshFilter: m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1000010081106018} m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} ---- !u!33 &33000011532270148 -MeshFilter: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1000012231533174} - m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} ---- !u!33 &33000011785648822 -MeshFilter: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1000010926074054} - m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} ---- !u!33 &33000012009096564 -MeshFilter: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1000011525310432} - m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} ---- !u!33 &33000012363631994 -MeshFilter: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1000012851992960} - m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} ---- !u!33 &33000012513150746 -MeshFilter: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1000011093593298} - m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} ---- !u!33 &33000013627460822 -MeshFilter: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1000010451310172} - m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} ---- !u!135 &135000010671932678 -SphereCollider: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1000010451310172} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 0 - serializedVersion: 2 - m_Radius: 0.5 - m_Center: {x: 0, y: 0, z: 0} ---- !u!135 &135000011058025344 -SphereCollider: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1000014156410884} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 0 - serializedVersion: 2 - m_Radius: 0.5 - m_Center: {x: 0, y: 0, z: 0} ---- !u!135 &135000011239088174 -SphereCollider: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1000012231533174} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 0 - serializedVersion: 2 - m_Radius: 0.5 - m_Center: {x: 0, y: 0, z: 0} ---- !u!135 &135000011449940696 -SphereCollider: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1000014201300368} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 0 - serializedVersion: 2 - m_Radius: 0.5 - m_Center: {x: 0, y: 0, z: 0} ---- !u!135 &135000012063113006 -SphereCollider: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1000010926074054} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 0 - serializedVersion: 2 - m_Radius: 0.5 - m_Center: {x: 0, y: 0, z: 0} ---- !u!135 &135000012203994238 -SphereCollider: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1000011525310432} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 0 - serializedVersion: 2 - m_Radius: 0.5 - m_Center: {x: 0, y: 0, z: 0} ---- !u!135 &135000012387328462 -SphereCollider: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1000011093593298} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 0 - serializedVersion: 2 - m_Radius: 0.5 - m_Center: {x: 0, y: 0, z: 0} ---- !u!135 &135000012421887900 -SphereCollider: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1000012851992960} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 0 - serializedVersion: 2 - m_Radius: 0.5 - m_Center: {x: 0, y: 0, z: 0} --- !u!135 &135000013946198720 SphereCollider: m_ObjectHideFlags: 1 diff --git a/Assets/Scripts/AI/AI.cs b/Assets/Scripts/AI/AI.cs index 7ed08a3f..ae012cbb 100644 --- a/Assets/Scripts/AI/AI.cs +++ b/Assets/Scripts/AI/AI.cs @@ -31,15 +31,13 @@ public class AI : MonoBehaviour { private AudioSource death; // Use this for initialization - void Awake () { + void Start () { agent = GetComponent (); wayPos = new Transform[waypoints.GetComponentsInChildren ().Length]; - for (int i = 1; i ().Length; i++) //i is set to 1 because GetComponentsInChildren also takes the parent once. We don't want that { wayPos[i] = waypoints.GetComponentsInChildren () [i]; } - print ("Number of waypoints found: " + wayPos.Length); AudioSource[] samples = GetComponents (); //Neat way to have multiple samples with a single audio source! alert = samples[0]; @@ -48,7 +46,7 @@ public class AI : MonoBehaviour { } void FixedUpdate () { - ray_magnitude = EchoSound.instance.Volume / ghost_awarness; + ray_magnitude = AudioManager.instance.GetLightRange() / ghost_awarness; if (GameSettings.instance.lose_state == false && GameSettings.instance.win_state == false) //IF you die, these won't be called anymore. { state_manager (); //Manages the AI's different states @@ -76,7 +74,7 @@ public class AI : MonoBehaviour { } void state_manager () { - if ((sees_the_player || enemies_converge) && PlayerSettings.instance != null) //if any agent sees a live player, all will converge towards it's location + if ((sees_the_player || enemies_converge) && CurrentPlayer.instance != null) //if any agent sees a live player, all will converge towards it's location { chase_player_state (); } else { @@ -120,7 +118,6 @@ public class AI : MonoBehaviour { dest_point = Random.Range (1, wayPos.Length); //Selects a random point and travels to it taking the best rout and avoiding obstacles agent.destination = wayPos[dest_point].position; //Sets the new destination - print (agent + "'s " + "next destination: " + dest_point); } void sound_effects () //This is where all the samples are played. diff --git a/Assets/Scripts/Effects/PlayerSettings.cs b/Assets/Scripts/Effects/CurrentPlayer.cs similarity index 80% rename from Assets/Scripts/Effects/PlayerSettings.cs rename to Assets/Scripts/Effects/CurrentPlayer.cs index 335f211b..0cf08ec1 100644 --- a/Assets/Scripts/Effects/PlayerSettings.cs +++ b/Assets/Scripts/Effects/CurrentPlayer.cs @@ -1,9 +1,9 @@ using UnityEngine; //Another singleton that stores all player relevant information. -public class PlayerSettings : MonoBehaviour +public class CurrentPlayer : MonoBehaviour { - public static PlayerSettings instance; + public static CurrentPlayer instance; public GameObject player; diff --git a/Assets/Scripts/Effects/PlayerSettings.cs.meta b/Assets/Scripts/Effects/CurrentPlayer.cs.meta similarity index 100% rename from Assets/Scripts/Effects/PlayerSettings.cs.meta rename to Assets/Scripts/Effects/CurrentPlayer.cs.meta diff --git a/Assets/Scripts/Tools/AudioManager.cs b/Assets/Scripts/Tools/AudioManager.cs index 2f102d63..c96617b0 100644 --- a/Assets/Scripts/Tools/AudioManager.cs +++ b/Assets/Scripts/Tools/AudioManager.cs @@ -7,27 +7,28 @@ public class AudioManager : MonoBehaviour { //Global private AudioClip mic; - public bool making_sound = false; + public float intensity = 80; + public float volume_range_min = 30; + public float volume_range_max = 200; + public bool linear = true; public int buffer_size = 44100; + public float light_range_value = 11; + public float splash_force_value = 2; void Start () { instance = this; print ("AudioManager initialized"); - mic = Microphone.Start ("Built-in Microphone", true, 1, 44100); //Microphone setup (null will select the default Microphone) } void Update () { - GetSpeqData(); - if (GetAverageVolume () >= 5.0f) { - making_sound = true; - } //Only grabs the 128th value form the spectrum (so about 7000Hz)) - else { - making_sound = false; - } + //GetSpeqData (); + GetLightColor (); + GetLightRange (); + } - public Vector3 GetFreqSpec3 () { + public Vector3 GetFreqSpec () { float[] spec_data = new float[44100]; //Creates an array pre-allocated (We want it quite small to reduce latency, I made it tweakable from the inspector) mic.GetData (spec_data, 0); //Stores all the output data into the array I pre-allocated @@ -48,21 +49,44 @@ public class AudioManager : MonoBehaviour { for (int spec_index = 0; spec_index < spec_data.Length / 3; spec_index++) { high_pitch_sum += Mathf.Abs (spec_data[spec_index + ((spec_data.Length / 3) * 2)]); //Only grabs the third Third values of the array (so the "low" pitch values) } - return new Vector3 ((low_pitch_sum / (spec_data.Length / 3) * 100), (mid_pitch_sum / (spec_data.Length / 3) * 100), (high_pitch_sum / (spec_data.Length / 3) * 100)); //Populates a Final vectore with the average of the sums of the all three parts of the buffer + return new Vector3 ((low_pitch_sum / (spec_data.Length / 3) * intensity), (mid_pitch_sum / (spec_data.Length / 3) * intensity), (high_pitch_sum / (spec_data.Length / 3) * intensity)); //Populates a Final vectore with the average of the sums of the all three parts of the buffer } public float GetAverageVolume () { - return ((GetFreqSpec3 () [0]) + (GetFreqSpec3 () [1]) + (GetFreqSpec3 () [2] / 3)); //Grouping all 3 arrays into 1 to get average of all values (global volume) + return ((GetFreqSpec () [0]) + (GetFreqSpec () [1]) + (GetFreqSpec () [2] / 3)); //Grouping all 3 arrays into 1 to get average of all values (global volume) } - public void GetSpeqData () { - float[] spectrum = new float[256]; + public float GetLightRange () { + return GetAverageVolume () * light_range_value; + } + + public float GetSplashForce () { + print("1"); + return GetLightRange () * splash_force_value; + } - for (int i = 1; i < spectrum.Length - 1; i++) { - Debug.DrawLine (new Vector3 (i - 1, spectrum[i] + 10, 0), new Vector3 (i, spectrum[i + 1] + 10, 0), Color.red); - Debug.DrawLine (new Vector3 (i - 1, Mathf.Log (spectrum[i - 1]) + 10, 2), new Vector3 (i, Mathf.Log (spectrum[i]) + 10, 2), Color.cyan); - Debug.DrawLine (new Vector3 (Mathf.Log (i - 1), spectrum[i - 1] - 10, 1), new Vector3 (Mathf.Log (i), spectrum[i] - 10, 1), Color.green); - Debug.DrawLine (new Vector3 (Mathf.Log (i - 1), Mathf.Log (spectrum[i - 1]), 3), new Vector3 (Mathf.Log (i), Mathf.Log (spectrum[i]), 3), Color.blue); + public Color GetLightColor () { + Color output; + //Linear interpolation: + if (linear) { + float r = Mathf.Abs ((GetLightRange () - volume_range_min) / volume_range_max); + float b = 1 - r; + output = new Color (r, 0, b, 0.8f); + } else { + output = new Color (0, 0, 0, 1); } + + return output; + } + + public void GetSpeqData () { + // float[] spectrum = new float[256]; + + // for (int i = 1; i < spectrum.Length - 1; i++) { + // Debug.DrawLine (new Vector3 (i - 1, spectrum[i] + 10, 0), new Vector3 (i, spectrum[i + 1] + 10, 0), Color.red); + // Debug.DrawLine (new Vector3 (i - 1, Mathf.Log (spectrum[i - 1]) + 10, 2), new Vector3 (i, Mathf.Log (spectrum[i]) + 10, 2), Color.cyan); + // Debug.DrawLine (new Vector3 (Mathf.Log (i - 1), spectrum[i - 1] - 10, 1), new Vector3 (Mathf.Log (i), spectrum[i] - 10, 1), Color.green); + // Debug.DrawLine (new Vector3 (Mathf.Log (i - 1), Mathf.Log (spectrum[i - 1]), 3), new Vector3 (Mathf.Log (i), Mathf.Log (spectrum[i]), 3), Color.blue); + // } } } \ No newline at end of file diff --git a/Assets/Scripts/Tools/EchoSound.cs b/Assets/Scripts/Tools/EchoSound.cs deleted file mode 100644 index cafbd725..00000000 --- a/Assets/Scripts/Tools/EchoSound.cs +++ /dev/null @@ -1,69 +0,0 @@ -using UnityEngine; - -public class EchoSound : MonoBehaviour { - public static EchoSound instance; - - //LIGHT - public GameObject light_distance; - private Light light_self; - private bool start_echo; - public static bool noise; - public float echo_max_range = 60f; - public float echo_speed = 3.0f; - public float echo_current_range = 1.0f; - public float echo_reset = 3.0f; - public float echo_fading_speed = 0.2f; - public bool use_mic = false; - public float Volume = 0; - - private bool ripple_forward = true; - - // Use this for initialization - void Start () { - instance = this; - light_self = GetComponentInChildren (); - } - - // Update is called once per frame - void Update () { - if (use_mic) { - Volume = AudioManager.instance.GetAverageVolume () * 40; - light_self.spotAngle = Volume; - - } - echo (); - if (Input.GetKeyDown (KeyCode.Space) && !start_echo) { - //LIGHT SELF - start_echo = true; - - //LIGHT AT MOUSE - RaycastHit hit; - if (Physics.Raycast (Camera.main.ScreenPointToRay (Input.mousePosition), out hit)) { - //Instantiate(light_object, hit.point, Quaternion.identity); - } - } - } - - void echo () { - if (start_echo) { - if (ripple_forward) { - if (!(echo_current_range >= echo_max_range)) { - echo_current_range += echo_speed; - } else { - ripple_forward = false; - } - } - if (!ripple_forward) { - if (!(echo_current_range <= echo_reset)) { - echo_current_range -= echo_speed; - } else { - start_echo = false; - ripple_forward = true; - } - } - - light_self.enabled = true; - light_self.spotAngle = echo_current_range; - } - } -} \ No newline at end of file diff --git a/Assets/Scripts/Tools/GhostSound.cs b/Assets/Scripts/Tools/GhostSound.cs new file mode 100644 index 00000000..89d9122f --- /dev/null +++ b/Assets/Scripts/Tools/GhostSound.cs @@ -0,0 +1,56 @@ + using UnityEngine; + + public class GhostSound : MonoBehaviour { + public static GhostSound instance; + + public Light light_self; + public bool made_noise = false; + public Vector3 vector_down; + private bool start_light; + public float echo_max_range = 60f; + public float echo_speed = 2.0f; + public float light_current_angle = 0.0f; + public float echo_reset = 0.0f; + public float echo_fading_speed = 0.2f; + + private bool ripple_forward = true; + + void Start () { + instance = this; + } + + void Update () { + vector_down = this.transform.TransformDirection(Vector3.down); + echo (); + if (Input.GetKeyDown (KeyCode.Space)) { + //LIGHT SELF + made_noise = true; + start_light = true; + }else{ + made_noise = false; + } + } + + void echo () { + if (start_light) { + if (ripple_forward) { + if (!(light_current_angle >= echo_max_range)) { + light_current_angle += echo_speed; + } else { + ripple_forward = false; + } + } + if (!ripple_forward) { + if (!(light_current_angle <= echo_reset)) { + light_current_angle -= echo_speed; + } else { + start_light = false; + ripple_forward = true; + } + } + + light_self.enabled = true; + light_self.spotAngle = light_current_angle; + } + } + } \ No newline at end of file diff --git a/Assets/Scripts/Tools/EchoSound.cs.meta b/Assets/Scripts/Tools/GhostSound.cs.meta similarity index 76% rename from Assets/Scripts/Tools/EchoSound.cs.meta rename to Assets/Scripts/Tools/GhostSound.cs.meta index 9d88e559..4ce80fe9 100644 --- a/Assets/Scripts/Tools/EchoSound.cs.meta +++ b/Assets/Scripts/Tools/GhostSound.cs.meta @@ -1,6 +1,6 @@ fileFormatVersion: 2 -guid: 6d89b34a475517c4889f6e9e2c54cb52 -timeCreated: 1486904541 +guid: 79ebbc9a70ee4734b9a0eda82f28fd5f +timeCreated: 1489328749 licenseType: Free MonoImporter: serializedVersion: 2 diff --git a/Assets/Scripts/Tools/PlayerSound.cs b/Assets/Scripts/Tools/PlayerSound.cs new file mode 100644 index 00000000..f81734f6 --- /dev/null +++ b/Assets/Scripts/Tools/PlayerSound.cs @@ -0,0 +1,34 @@ +using UnityEngine; + +public class PlayerSound : MonoBehaviour { + public static PlayerSound instance; + + //LIGHT + private Light light_self; + private Color update_color; + private float update_blue; + private float update_red; + private float light_angle; + + public bool use_mic = false; + // Use this for initialization + void Start () { + instance = this; + light_self = GetComponentInChildren (); + } + + // Update is called once per frame + void Update () { + light_angle = AudioManager.instance.GetLightRange (); + + // Fade color change: + // Range 40 - 220 + update_color = AudioManager.instance.GetLightColor (); + + if (use_mic && this.gameObject.tag == "Player") { + + light_self.spotAngle = light_angle; + light_self.color = update_color; + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Tools/PlayerSound.cs.meta b/Assets/Scripts/Tools/PlayerSound.cs.meta new file mode 100644 index 00000000..ba4fd99d --- /dev/null +++ b/Assets/Scripts/Tools/PlayerSound.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 3945477939724e24aa27f23a96506610 +timeCreated: 1489328851 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Tools/RippleEffect.cs b/Assets/Scripts/Tools/RippleEffect.cs index 6da3a76d..651c458f 100644 --- a/Assets/Scripts/Tools/RippleEffect.cs +++ b/Assets/Scripts/Tools/RippleEffect.cs @@ -20,7 +20,7 @@ public class RippleEffect : MonoBehaviour { private bool swap_buffer = true; //Switches between the first and the second buffer private bool ticked = false; public int update_rate = 120; - public int mic_threshold = 200; + public int mic_threshold = 40; public int spread_bit_shift = 1; public int cols = 128; //Number of the columns we want our plane to have (The bigger this is, the more computer intensive the calculations will be) @@ -39,7 +39,7 @@ public class RippleEffect : MonoBehaviour { vertex_indexes = new int[vertices.Length]; // Create an int array and allocates it's size to the number of vertices - /* ***************** Initializes and Populates the buffers (These two for loops have originally been written by Ben Britten) ******************** */ + /* ***************** Initializes and Populates the buffers (These two for loops have originally been inspired from Ben Britten's code) ******************** */ int vertices_index = 0; for (vertices_index = 0; vertices_index < vertices.Length; vertices_index++) { vertex_indexes[vertices_index] = -1; @@ -57,9 +57,21 @@ public class RippleEffect : MonoBehaviour { void SplashAtPoint (int x, int y) //Function that initiates the splash at a given location { - if (EchoSound.instance.use_mic) { - // initiates the values of each vertices according to their distance from the center such as the further you are from it the weak the force is. - int position = ((y * (cols + 1)) + x); + // initiates the values of each vertices according to their distance from the center such as the further you are from it the weak the force is. + int position = ((y * (cols + 1)) + x); + if (GhostSound.instance.made_noise) { + buffer1[position] = splash_force; + buffer1[position - 1] = splash_force; + buffer1[position + 1] = splash_force; + buffer1[position + (cols + 1)] = splash_force; + buffer1[position + (cols + 1) + 1] = splash_force; + buffer1[position + (cols + 1) - 1] = splash_force; + buffer1[position - (cols + 1)] = splash_force; + buffer1[position - (cols + 1) + 1] = splash_force; + buffer1[position - (cols + 1) - 1] = splash_force; + } else if (PlayerSound.instance.use_mic) { + print("y"); + buffer1[position] = splash_force_mic; buffer1[position - 1] = splash_force_mic; buffer1[position + 1] = splash_force_mic; @@ -70,7 +82,6 @@ public class RippleEffect : MonoBehaviour { buffer1[position - (cols + 1) + 1] = splash_force_mic; buffer1[position - (cols + 1) - 1] = splash_force_mic; } else { - int position = ((y * (cols + 1)) + x); buffer1[position] = splash_force; buffer1[position - 1] = splash_force; buffer1[position + 1] = splash_force; @@ -85,7 +96,7 @@ public class RippleEffect : MonoBehaviour { // Update is called once per frame void Update () { ticked = tick (update_rate); - splash_force_mic = (int) EchoSound.instance.Volume; + splash_force_mic = (int) AudioManager.instance.GetSplashForce(); //if (splash_force > wave_force_max) splash_force = wave_force_max; //if (splash_force_mic > wave_force_max) splash_force_mic = wave_force_max; SplashInput (); //Currently checks if the space bar has been pressed (will later change this to be according to volume of the mic) @@ -110,29 +121,45 @@ public class RippleEffect : MonoBehaviour { { current_index = vertex_indexes[i]; current_vertices[current_index] = vertices[current_index]; - current_vertices[current_index].y += (current_buffer[i] * 1.0f / splash_force); //This is what raises the current "tile"'s Y value by the splash force times the maximum height of the wave} - //print(current_vertices[current_index].y); + current_vertices[current_index].y += (current_buffer[i] * 0.5f / splash_force); //This is what raises the current "tile"'s Y value by the splash force times the maximum height of the wave} } GetComponent ().mesh = mesh; //Updates it to unity mesh.vertices = current_vertices; //Updates the mesh! :) } void SplashInput () { - - if ((ticked && EchoSound.instance.Volume > mic_threshold) || Input.GetKeyDown (KeyCode.Space)) //Either Microphone output or the space bar + if (ticked && AudioManager.instance.GetSplashForce () > mic_threshold) //Either Microphone output or the space bar { - print(EchoSound.instance.Volume); + print (AudioManager.instance.GetSplashForce ()); /* Ray cast function to set the splash position */ - RaycastHit hit; //Will store all the info on the object the ray will collide - Vector3 down = PlayerSettings.instance.player.transform.TransformDirection (Vector3.down); //Create a raycast from the player's position downwards - if (Physics.Raycast (PlayerSettings.instance.player.transform.position, down, out hit)) // Draws a ray downwards from the player and stores the impact location + RaycastHit player_hit; //Will store all the info on the object the ray will collide + Vector3 player_down = CurrentPlayer.instance.player.transform.TransformDirection (Vector3.down); //Create a raycast from the player's position downwards + if (Physics.Raycast (CurrentPlayer.instance.player.transform.position, player_down, out player_hit)) // Draws a ray downwards from the player and stores the impact location + { + // First we must init the tiles + Bounds bounds = mesh.bounds; + float xStep = (bounds.max.x - bounds.min.x) / cols; + float zStep = (bounds.max.z - bounds.min.z) / rows; + + float xCoord = (bounds.max.x - bounds.min.x) - ((bounds.max.x - bounds.min.x) * player_hit.textureCoord.x); //Sets the X coordinates for the splash + float zCoord = (bounds.max.z - bounds.min.z) - ((bounds.max.z - bounds.min.z) * (player_hit.textureCoord.y)); //Sets the Y coordinates for the splash + float column = (xCoord / xStep); + float row = (zCoord / zStep); + SplashAtPoint ((int) column, (int) row); //Generates the splash! + } + } + if (GhostSound.instance.made_noise) { + print ("Ghost made some noise"); + RaycastHit ghost_hit; //Will store all the info on the object the ray will collide + Vector3 ghost_down = GhostSound.instance.vector_down; //Create a raycast from the player's position downwards + if (Physics.Raycast (CurrentPlayer.instance.player.transform.position, ghost_down, out ghost_hit)) // Draws a ray downwards from the player and stores the impact location { // First we must init the tiles Bounds bounds = mesh.bounds; float xStep = (bounds.max.x - bounds.min.x) / cols; float zStep = (bounds.max.z - bounds.min.z) / rows; - float xCoord = (bounds.max.x - bounds.min.x) - ((bounds.max.x - bounds.min.x) * hit.textureCoord.x); //Sets the X coordinates for the splash - float zCoord = (bounds.max.z - bounds.min.z) - ((bounds.max.z - bounds.min.z) * hit.textureCoord.y); //Sets the Y coordinates for the splash + float xCoord = (bounds.max.x - bounds.min.x) - ((bounds.max.x - bounds.min.x) * ghost_hit.textureCoord.x); //Sets the X coordinates for the splash + float zCoord = (bounds.max.z - bounds.min.z) - ((bounds.max.z - bounds.min.z) * ghost_hit.textureCoord.y); //Sets the Y coordinates for the splash float column = (xCoord / xStep); float row = (zCoord / zStep); SplashAtPoint ((int) column, (int) row); //Generates the splash! diff --git a/Assets/Standard Assets/Characters/FirstPersonCharacter/Scripts/FirstPersonController.cs b/Assets/Standard Assets/Characters/FirstPersonCharacter/Scripts/FirstPersonController.cs index 84518cc0..845e3864 100644 --- a/Assets/Standard Assets/Characters/FirstPersonCharacter/Scripts/FirstPersonController.cs +++ b/Assets/Standard Assets/Characters/FirstPersonCharacter/Scripts/FirstPersonController.cs @@ -4,29 +4,27 @@ using UnityStandardAssets.CrossPlatformInput; using UnityStandardAssets.Utility; using Random = UnityEngine.Random; -namespace UnityStandardAssets.Characters.FirstPerson -{ - [RequireComponent(typeof (CharacterController))] - [RequireComponent(typeof (AudioSource))] - public class FirstPersonController : MonoBehaviour - { +namespace UnityStandardAssets.Characters.FirstPerson { + [RequireComponent (typeof (CharacterController))] + [RequireComponent (typeof (AudioSource))] + public class FirstPersonController : MonoBehaviour { [SerializeField] private bool m_IsWalking; [SerializeField] private float m_WalkSpeed; [SerializeField] private float m_RunSpeed; - [SerializeField] [Range(0f, 1f)] private float m_RunstepLenghten; + [SerializeField] [Range (0f, 1f)] private float m_RunstepLenghten; [SerializeField] private float m_JumpSpeed; [SerializeField] private float m_StickToGroundForce; [SerializeField] private float m_GravityMultiplier; [SerializeField] private MouseLook m_MouseLook; [SerializeField] private bool m_UseFovKick; - [SerializeField] private FOVKick m_FovKick = new FOVKick(); + [SerializeField] private FOVKick m_FovKick = new FOVKick (); [SerializeField] private bool m_UseHeadBob; - [SerializeField] private CurveControlledBob m_HeadBob = new CurveControlledBob(); - [SerializeField] private LerpControlledBob m_JumpBob = new LerpControlledBob(); + [SerializeField] private CurveControlledBob m_HeadBob = new CurveControlledBob (); + [SerializeField] private LerpControlledBob m_JumpBob = new LerpControlledBob (); [SerializeField] private float m_StepInterval; - [SerializeField] private AudioClip[] m_FootstepSounds; // an array of footstep sounds that will be randomly selected from. - [SerializeField] private AudioClip m_JumpSound; // the sound played when character leaves the ground. - [SerializeField] private AudioClip m_LandSound; // the sound played when character touches back on ground. + [SerializeField] private AudioClip[] m_FootstepSounds; // an array of footstep sounds that will be randomly selected from. + [SerializeField] private AudioClip m_JumpSound; // the sound played when character leaves the ground. + [SerializeField] private AudioClip m_LandSound; // the sound played when character touches back on ground. private Camera m_Camera; private bool m_Jump; @@ -43,217 +41,177 @@ namespace UnityStandardAssets.Characters.FirstPerson private AudioSource m_AudioSource; // Use this for initialization - private void Start() - { - m_CharacterController = GetComponent(); + private void Start () { + m_CharacterController = GetComponent (); m_Camera = Camera.main; m_OriginalCameraPosition = m_Camera.transform.localPosition; - m_FovKick.Setup(m_Camera); - m_HeadBob.Setup(m_Camera, m_StepInterval); + m_FovKick.Setup (m_Camera); + m_HeadBob.Setup (m_Camera, m_StepInterval); m_StepCycle = 0f; - m_NextStep = m_StepCycle/2f; + m_NextStep = m_StepCycle / 2f; m_Jumping = false; - m_AudioSource = GetComponent(); - m_MouseLook.Init(transform , m_Camera.transform); + m_AudioSource = GetComponent (); + m_MouseLook.Init (transform, m_Camera.transform); } - // Update is called once per frame - private void Update() - { - RotateView(); + private void Update () { + RotateView (); // the jump state needs to read here to make sure it is not missed - if (!m_Jump) - { - m_Jump = CrossPlatformInputManager.GetButtonDown("Jump"); + if (!m_Jump) { + m_Jump = CrossPlatformInputManager.GetButtonDown ("Jump"); } - if (!m_PreviouslyGrounded && m_CharacterController.isGrounded) - { - StartCoroutine(m_JumpBob.DoBobCycle()); - PlayLandingSound(); + if (!m_PreviouslyGrounded && m_CharacterController.isGrounded) { + StartCoroutine (m_JumpBob.DoBobCycle ()); + PlayLandingSound (); m_MoveDir.y = 0f; m_Jumping = false; } - if (!m_CharacterController.isGrounded && !m_Jumping && m_PreviouslyGrounded) - { + if (!m_CharacterController.isGrounded && !m_Jumping && m_PreviouslyGrounded) { m_MoveDir.y = 0f; } m_PreviouslyGrounded = m_CharacterController.isGrounded; } - - private void PlayLandingSound() - { + private void PlayLandingSound () { m_AudioSource.clip = m_LandSound; - m_AudioSource.Play(); + m_AudioSource.Play (); m_NextStep = m_StepCycle + .5f; } - - private void FixedUpdate() - { + private void FixedUpdate () { float speed; - GetInput(out speed); + GetInput (out speed); // always move along the camera forward as it is the direction that it being aimed at - Vector3 desiredMove = transform.forward*m_Input.y + transform.right*m_Input.x; + Vector3 desiredMove = transform.forward * m_Input.y + transform.right * m_Input.x; // get a normal for the surface that is being touched to move along it RaycastHit hitInfo; - Physics.SphereCast(transform.position, m_CharacterController.radius, Vector3.down, out hitInfo, - m_CharacterController.height/2f, Physics.AllLayers, QueryTriggerInteraction.Ignore); - desiredMove = Vector3.ProjectOnPlane(desiredMove, hitInfo.normal).normalized; - - m_MoveDir.x = desiredMove.x*speed; - m_MoveDir.z = desiredMove.z*speed; + Physics.SphereCast (transform.position, m_CharacterController.radius, Vector3.down, out hitInfo, + m_CharacterController.height / 2f, Physics.AllLayers, QueryTriggerInteraction.Ignore); + desiredMove = Vector3.ProjectOnPlane (desiredMove, hitInfo.normal).normalized; + m_MoveDir.x = desiredMove.x * speed; + m_MoveDir.z = desiredMove.z * speed; - if (m_CharacterController.isGrounded) - { + if (m_CharacterController.isGrounded) { m_MoveDir.y = -m_StickToGroundForce; - if (m_Jump) - { + if (m_Jump) { m_MoveDir.y = m_JumpSpeed; - PlayJumpSound(); + PlayJumpSound (); m_Jump = false; m_Jumping = true; } + } else { + m_MoveDir += Physics.gravity * m_GravityMultiplier * Time.fixedDeltaTime; } - else - { - m_MoveDir += Physics.gravity*m_GravityMultiplier*Time.fixedDeltaTime; - } - m_CollisionFlags = m_CharacterController.Move(m_MoveDir*Time.fixedDeltaTime); + m_CollisionFlags = m_CharacterController.Move (m_MoveDir * Time.fixedDeltaTime); - ProgressStepCycle(speed); - UpdateCameraPosition(speed); + ProgressStepCycle (speed); + UpdateCameraPosition (speed); - m_MouseLook.UpdateCursorLock(); + m_MouseLook.UpdateCursorLock (); } - - private void PlayJumpSound() - { + private void PlayJumpSound () { m_AudioSource.clip = m_JumpSound; - m_AudioSource.Play(); + m_AudioSource.Play (); } - - private void ProgressStepCycle(float speed) - { - if (m_CharacterController.velocity.sqrMagnitude > 0 && (m_Input.x != 0 || m_Input.y != 0)) - { - m_StepCycle += (m_CharacterController.velocity.magnitude + (speed*(m_IsWalking ? 1f : m_RunstepLenghten)))* - Time.fixedDeltaTime; + private void ProgressStepCycle (float speed) { + if (m_CharacterController.velocity.sqrMagnitude > 0 && (m_Input.x != 0 || m_Input.y != 0)) { + m_StepCycle += (m_CharacterController.velocity.magnitude + (speed * (m_IsWalking ? 1f : m_RunstepLenghten))) * + Time.fixedDeltaTime; } - if (!(m_StepCycle > m_NextStep)) - { + if (!(m_StepCycle > m_NextStep)) { return; } m_NextStep = m_StepCycle + m_StepInterval; - PlayFootStepAudio(); + PlayFootStepAudio (); } - - private void PlayFootStepAudio() - { - if (!m_CharacterController.isGrounded) - { + private void PlayFootStepAudio () { + if (!m_CharacterController.isGrounded) { return; } // pick & play a random footstep sound from the array, // excluding sound at index 0 - int n = Random.Range(1, m_FootstepSounds.Length); + int n = Random.Range (1, m_FootstepSounds.Length); m_AudioSource.clip = m_FootstepSounds[n]; - m_AudioSource.PlayOneShot(m_AudioSource.clip); + m_AudioSource.PlayOneShot (m_AudioSource.clip); // move picked sound to index 0 so it's not picked next time m_FootstepSounds[n] = m_FootstepSounds[0]; m_FootstepSounds[0] = m_AudioSource.clip; } - - private void UpdateCameraPosition(float speed) - { + private void UpdateCameraPosition (float speed) { Vector3 newCameraPosition; - if (!m_UseHeadBob) - { + if (!m_UseHeadBob) { return; } - if (m_CharacterController.velocity.magnitude > 0 && m_CharacterController.isGrounded) - { + if (m_CharacterController.velocity.magnitude > 0 && m_CharacterController.isGrounded) { m_Camera.transform.localPosition = - m_HeadBob.DoHeadBob(m_CharacterController.velocity.magnitude + - (speed*(m_IsWalking ? 1f : m_RunstepLenghten))); - newCameraPosition = m_Camera.transform.localPosition + new Vector3(0,0,1); //Slightly forward to avoid ripple start glitch - newCameraPosition.y = m_Camera.transform.localPosition.y - m_JumpBob.Offset(); - } - else - { + m_HeadBob.DoHeadBob (m_CharacterController.velocity.magnitude + + (speed * (m_IsWalking ? 1f : m_RunstepLenghten))); + newCameraPosition = m_Camera.transform.localPosition; //Slightly forward to avoid ripple start glitch + newCameraPosition.y = m_Camera.transform.localPosition.y - m_JumpBob.Offset (); + } else { newCameraPosition = m_Camera.transform.localPosition; - newCameraPosition.y = m_OriginalCameraPosition.y - m_JumpBob.Offset(); + newCameraPosition.y = m_OriginalCameraPosition.y - m_JumpBob.Offset (); } m_Camera.transform.localPosition = newCameraPosition; } - - private void GetInput(out float speed) - { + private void GetInput (out float speed) { // Read input - float horizontal = CrossPlatformInputManager.GetAxis("Horizontal"); - float vertical = CrossPlatformInputManager.GetAxis("Vertical"); + float horizontal = CrossPlatformInputManager.GetAxis ("Horizontal"); + float vertical = CrossPlatformInputManager.GetAxis ("Vertical"); bool waswalking = m_IsWalking; #if !MOBILE_INPUT // On standalone builds, walk/run speed is modified by a key press. // keep track of whether or not the character is walking or running - m_IsWalking = !Input.GetKey(KeyCode.LeftShift); + m_IsWalking = !Input.GetKey (KeyCode.LeftShift); #endif // set the desired speed to be walking or running speed = m_IsWalking ? m_WalkSpeed : m_RunSpeed; - m_Input = new Vector2(horizontal, vertical); + m_Input = new Vector2 (horizontal, vertical); // normalize input if it exceeds 1 in combined length: - if (m_Input.sqrMagnitude > 1) - { - m_Input.Normalize(); + if (m_Input.sqrMagnitude > 1) { + m_Input.Normalize (); } // handle speed change to give an fov kick // only if the player is going to a run, is running and the fovkick is to be used - if (m_IsWalking != waswalking && m_UseFovKick && m_CharacterController.velocity.sqrMagnitude > 0) - { - StopAllCoroutines(); - StartCoroutine(!m_IsWalking ? m_FovKick.FOVKickUp() : m_FovKick.FOVKickDown()); + if (m_IsWalking != waswalking && m_UseFovKick && m_CharacterController.velocity.sqrMagnitude > 0) { + StopAllCoroutines (); + StartCoroutine (!m_IsWalking ? m_FovKick.FOVKickUp () : m_FovKick.FOVKickDown ()); } } - - private void RotateView() - { + private void RotateView () { m_MouseLook.LookRotation (transform, m_Camera.transform); } - - private void OnControllerColliderHit(ControllerColliderHit hit) - { + private void OnControllerColliderHit (ControllerColliderHit hit) { Rigidbody body = hit.collider.attachedRigidbody; //dont move the rigidbody if the character is on top of it - if (m_CollisionFlags == CollisionFlags.Below) - { + if (m_CollisionFlags == CollisionFlags.Below) { return; } - if (body == null || body.isKinematic) - { + if (body == null || body.isKinematic) { return; } - body.AddForceAtPosition(m_CharacterController.velocity*0.1f, hit.point, ForceMode.Impulse); + body.AddForceAtPosition (m_CharacterController.velocity * 0.1f, hit.point, ForceMode.Impulse); } } -} +} \ No newline at end of file diff --git a/Assets/SteamVR.meta b/Assets/SteamVR.meta new file mode 100644 index 00000000..8548a71c --- /dev/null +++ b/Assets/SteamVR.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: fe244a154e37eac40a5ecc62b91e6f4f +folderAsset: yes +timeCreated: 1489604231 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/Editor.meta b/Assets/SteamVR/Editor.meta new file mode 100644 index 00000000..90b104cf --- /dev/null +++ b/Assets/SteamVR/Editor.meta @@ -0,0 +1,6 @@ +fileFormatVersion: 2 +guid: c33af0785775d7548b22541da37936fe +folderAsset: yes +DefaultImporter: + userData: + assetBundleName: diff --git a/Assets/SteamVR/Editor/SteamVR_Editor.cs b/Assets/SteamVR/Editor/SteamVR_Editor.cs new file mode 100644 index 00000000..8889e49e --- /dev/null +++ b/Assets/SteamVR/Editor/SteamVR_Editor.cs @@ -0,0 +1,127 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Custom inspector display for SteamVR_Camera +// +//============================================================================= + +using UnityEngine; +using UnityEditor; +using System.IO; + +[CustomEditor(typeof(SteamVR_Camera)), CanEditMultipleObjects] +public class SteamVR_Editor : Editor +{ + int bannerHeight = 150; + Texture logo; + + SerializedProperty script, wireframe; + + string GetResourcePath() + { + var ms = MonoScript.FromScriptableObject(this); + var path = AssetDatabase.GetAssetPath(ms); + path = Path.GetDirectoryName(path); + return path.Substring(0, path.Length - "Editor".Length) + "Textures/"; + } + + void OnEnable() + { + var resourcePath = GetResourcePath(); + + logo = AssetDatabase.LoadAssetAtPath(resourcePath + "logo.png"); + + script = serializedObject.FindProperty("m_Script"); + + wireframe = serializedObject.FindProperty("wireframe"); + + foreach (SteamVR_Camera target in targets) + target.ForceLast(); + } + + public override void OnInspectorGUI() + { + serializedObject.Update(); + + var rect = GUILayoutUtility.GetRect(Screen.width - 38, bannerHeight, GUI.skin.box); + if (logo) + GUI.DrawTexture(rect, logo, ScaleMode.ScaleToFit); + + if (!Application.isPlaying) + { + var expand = false; + var collapse = false; + foreach (SteamVR_Camera target in targets) + { + if (AssetDatabase.Contains(target)) + continue; + if (target.isExpanded) + collapse = true; + else + expand = true; + } + + if (expand) + { + GUILayout.BeginHorizontal(); + if (GUILayout.Button("Expand")) + { + foreach (SteamVR_Camera target in targets) + { + if (AssetDatabase.Contains(target)) + continue; + if (!target.isExpanded) + { + target.Expand(); + EditorUtility.SetDirty(target); + } + } + } + GUILayout.Space(18); + GUILayout.EndHorizontal(); + } + + if (collapse) + { + GUILayout.BeginHorizontal(); + if (GUILayout.Button("Collapse")) + { + foreach (SteamVR_Camera target in targets) + { + if (AssetDatabase.Contains(target)) + continue; + if (target.isExpanded) + { + target.Collapse(); + EditorUtility.SetDirty(target); + } + } + } + GUILayout.Space(18); + GUILayout.EndHorizontal(); + } + } + + EditorGUILayout.PropertyField(script); + EditorGUILayout.PropertyField(wireframe); + + serializedObject.ApplyModifiedProperties(); + } + + public static void ExportPackage() + { + AssetDatabase.ExportPackage(new string[] { + "Assets/SteamVR", + "Assets/Plugins/openvr_api.cs", + "Assets/Plugins/openvr_api.bundle", + "Assets/Plugins/x86/openvr_api.dll", + "Assets/Plugins/x86/steam_api.dll", + "Assets/Plugins/x86/libsteam_api.so", + "Assets/Plugins/x86_64/openvr_api.dll", + "Assets/Plugins/x86_64/steam_api.dll", + "Assets/Plugins/x86_64/libsteam_api.so", + "Assets/Plugins/x86_64/libopenvr_api.so", + }, "steamvr.unitypackage", ExportPackageOptions.Recurse); + EditorApplication.Exit(0); + } +} + diff --git a/Assets/SteamVR/Editor/SteamVR_Editor.cs.meta b/Assets/SteamVR/Editor/SteamVR_Editor.cs.meta new file mode 100644 index 00000000..1b344ed2 --- /dev/null +++ b/Assets/SteamVR/Editor/SteamVR_Editor.cs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 5ba22c80948c94e44a82b9fd1b3abd0d +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: diff --git a/Assets/SteamVR/Editor/SteamVR_Preferences.cs b/Assets/SteamVR/Editor/SteamVR_Preferences.cs new file mode 100644 index 00000000..ad3e0007 --- /dev/null +++ b/Assets/SteamVR/Editor/SteamVR_Preferences.cs @@ -0,0 +1,48 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Preferences pane for how SteamVR plugin behaves. +// +//============================================================================= + +using UnityEngine; +using UnityEditor; + +public class SteamVR_Preferences +{ + /// + /// Should SteamVR automatically enable VR when opening Unity or pressing play. + /// + public static bool AutoEnableVR + { + get + { + return EditorPrefs.GetBool("SteamVR_AutoEnableVR", true); + } + set + { + EditorPrefs.SetBool("SteamVR_AutoEnableVR", value); + } + } + + [PreferenceItem("SteamVR")] + static void PreferencesGUI() + { + EditorGUILayout.BeginVertical(); + EditorGUILayout.Space(); + + // Automatically Enable VR + { + string title = "Automatically Enable VR"; + string tooltip = "Should SteamVR automatically enable VR on launch and play?"; + AutoEnableVR = EditorGUILayout.Toggle(new GUIContent(title, tooltip), AutoEnableVR); + string helpMessage = "To enable VR manually:\n"; + helpMessage += "- go to Edit -> Project Settings -> Player,\n"; + helpMessage += "- tick 'Virtual Reality Supported',\n"; + helpMessage += "- make sure OpenVR is in the 'Virtual Reality SDKs' list."; + EditorGUILayout.HelpBox(helpMessage, MessageType.Info); + } + + EditorGUILayout.EndVertical(); + } +} + diff --git a/Assets/SteamVR/Editor/SteamVR_Preferences.cs.meta b/Assets/SteamVR/Editor/SteamVR_Preferences.cs.meta new file mode 100644 index 00000000..3ecb77ac --- /dev/null +++ b/Assets/SteamVR/Editor/SteamVR_Preferences.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 29abf75f7265ccb45b799eac4ab0ca94 +timeCreated: 1487968203 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/Editor/SteamVR_RenderModelEditor.cs b/Assets/SteamVR/Editor/SteamVR_RenderModelEditor.cs new file mode 100644 index 00000000..5e684368 --- /dev/null +++ b/Assets/SteamVR/Editor/SteamVR_RenderModelEditor.cs @@ -0,0 +1,105 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Custom inspector display for SteamVR_RenderModel +// +//============================================================================= + +using UnityEngine; +using UnityEditor; +using System.Text; +using System.Collections.Generic; +using Valve.VR; + +[CustomEditor(typeof(SteamVR_RenderModel)), CanEditMultipleObjects] +public class SteamVR_RenderModelEditor : Editor +{ + SerializedProperty script, index, modelOverride, shader, verbose, createComponents, updateDynamically; + + static string[] renderModelNames; + int renderModelIndex; + + void OnEnable() + { + script = serializedObject.FindProperty("m_Script"); + index = serializedObject.FindProperty("index"); + modelOverride = serializedObject.FindProperty("modelOverride"); + shader = serializedObject.FindProperty("shader"); + verbose = serializedObject.FindProperty("verbose"); + createComponents = serializedObject.FindProperty("createComponents"); + updateDynamically = serializedObject.FindProperty("updateDynamically"); + + // Load render model names if necessary. + if (renderModelNames == null) + { + renderModelNames = LoadRenderModelNames(); + } + + // Update renderModelIndex based on current modelOverride value. + if (modelOverride.stringValue != "") + { + for (int i = 0; i < renderModelNames.Length; i++) + { + if (modelOverride.stringValue == renderModelNames[i]) + { + renderModelIndex = i; + break; + } + } + } + } + + static string[] LoadRenderModelNames() + { + var results = new List(); + results.Add("None"); + + using (var holder = new SteamVR_RenderModel.RenderModelInterfaceHolder()) + { + var renderModels = holder.instance; + if (renderModels != null) + { + uint count = renderModels.GetRenderModelCount(); + for (uint i = 0; i < count; i++) + { + var buffer = new StringBuilder(); + var requiredSize = renderModels.GetRenderModelName(i, buffer, 0); + if (requiredSize == 0) + continue; + + buffer.EnsureCapacity((int)requiredSize); + renderModels.GetRenderModelName(i, buffer, requiredSize); + results.Add(buffer.ToString()); + } + } + } + + return results.ToArray(); + } + + public override void OnInspectorGUI() + { + serializedObject.Update(); + + EditorGUILayout.PropertyField(script); + EditorGUILayout.PropertyField(index); + //EditorGUILayout.PropertyField(modelOverride); + + GUILayout.BeginHorizontal(); + GUILayout.Label("Model Override"); + var selected = EditorGUILayout.Popup(renderModelIndex, renderModelNames); + if (selected != renderModelIndex) + { + renderModelIndex = selected; + modelOverride.stringValue = (selected > 0) ? renderModelNames[selected] : ""; + } + GUILayout.EndHorizontal(); + + EditorGUILayout.PropertyField(shader); + EditorGUILayout.PropertyField(verbose); + EditorGUILayout.PropertyField(createComponents); + EditorGUILayout.PropertyField(updateDynamically); + + serializedObject.ApplyModifiedProperties(); + } +} + diff --git a/Assets/SteamVR/Editor/SteamVR_RenderModelEditor.cs.meta b/Assets/SteamVR/Editor/SteamVR_RenderModelEditor.cs.meta new file mode 100644 index 00000000..222f5238 --- /dev/null +++ b/Assets/SteamVR/Editor/SteamVR_RenderModelEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 67867a20919f7db45a2e7034fda1c28e +timeCreated: 1433373945 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/Editor/SteamVR_Settings.cs b/Assets/SteamVR/Editor/SteamVR_Settings.cs new file mode 100644 index 00000000..f6e8145a --- /dev/null +++ b/Assets/SteamVR/Editor/SteamVR_Settings.cs @@ -0,0 +1,688 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Prompt developers to use settings most compatible with SteamVR. +// +//============================================================================= + +using UnityEngine; +using UnityEditor; +using System.IO; + +[InitializeOnLoad] +public class SteamVR_Settings : EditorWindow +{ + const bool forceShow = false; // Set to true to get the dialog to show back up in the case you clicked Ignore All. + + const string ignore = "ignore."; + const string useRecommended = "Use recommended ({0})"; + const string currentValue = " (current = {0})"; + + const string buildTarget = "Build Target"; + const string showUnitySplashScreen = "Show Unity Splashscreen"; + const string defaultIsFullScreen = "Default is Fullscreen"; + const string defaultScreenSize = "Default Screen Size"; + const string runInBackground = "Run In Background"; + const string displayResolutionDialog = "Display Resolution Dialog"; + const string resizableWindow = "Resizable Window"; + const string fullscreenMode = "D3D11 Fullscreen Mode"; + const string visibleInBackground = "Visible In Background"; +#if (UNITY_5_4 || UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) + const string renderingPath = "Rendering Path"; +#endif + const string colorSpace = "Color Space"; + const string gpuSkinning = "GPU Skinning"; +#if false // skyboxes are currently broken + const string singlePassStereoRendering = "Single-Pass Stereo Rendering"; +#endif + + const BuildTarget recommended_BuildTarget = BuildTarget.StandaloneWindows64; + const bool recommended_ShowUnitySplashScreen = false; + const bool recommended_DefaultIsFullScreen = false; + const int recommended_DefaultScreenWidth = 1024; + const int recommended_DefaultScreenHeight = 768; + const bool recommended_RunInBackground = true; + const ResolutionDialogSetting recommended_DisplayResolutionDialog = ResolutionDialogSetting.HiddenByDefault; + const bool recommended_ResizableWindow = true; + const D3D11FullscreenMode recommended_FullscreenMode = D3D11FullscreenMode.FullscreenWindow; + const bool recommended_VisibleInBackground = true; +#if (UNITY_5_4 || UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) + const RenderingPath recommended_RenderPath = RenderingPath.Forward; +#endif + const ColorSpace recommended_ColorSpace = ColorSpace.Linear; + const bool recommended_GpuSkinning = true; +#if false + const bool recommended_SinglePassStereoRendering = true; +#endif + + static SteamVR_Settings window; + + static SteamVR_Settings() + { + EditorApplication.update += Update; + } + + static void Update() + { + bool show = + (!EditorPrefs.HasKey(ignore + buildTarget) && + EditorUserBuildSettings.activeBuildTarget != recommended_BuildTarget) || + (!EditorPrefs.HasKey(ignore + showUnitySplashScreen) && +#if (UNITY_5_4 || UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) + PlayerSettings.showUnitySplashScreen != recommended_ShowUnitySplashScreen) || +#else + PlayerSettings.SplashScreen.show != recommended_ShowUnitySplashScreen) || +#endif + (!EditorPrefs.HasKey(ignore + defaultIsFullScreen) && + PlayerSettings.defaultIsFullScreen != recommended_DefaultIsFullScreen) || + (!EditorPrefs.HasKey(ignore + defaultScreenSize) && + (PlayerSettings.defaultScreenWidth != recommended_DefaultScreenWidth || + PlayerSettings.defaultScreenHeight != recommended_DefaultScreenHeight)) || + (!EditorPrefs.HasKey(ignore + runInBackground) && + PlayerSettings.runInBackground != recommended_RunInBackground) || + (!EditorPrefs.HasKey(ignore + displayResolutionDialog) && + PlayerSettings.displayResolutionDialog != recommended_DisplayResolutionDialog) || + (!EditorPrefs.HasKey(ignore + resizableWindow) && + PlayerSettings.resizableWindow != recommended_ResizableWindow) || + (!EditorPrefs.HasKey(ignore + fullscreenMode) && + PlayerSettings.d3d11FullscreenMode != recommended_FullscreenMode) || + (!EditorPrefs.HasKey(ignore + visibleInBackground) && + PlayerSettings.visibleInBackground != recommended_VisibleInBackground) || +#if (UNITY_5_4 || UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) + (!EditorPrefs.HasKey(ignore + renderingPath) && + PlayerSettings.renderingPath != recommended_RenderPath) || +#endif + (!EditorPrefs.HasKey(ignore + colorSpace) && + PlayerSettings.colorSpace != recommended_ColorSpace) || + (!EditorPrefs.HasKey(ignore + gpuSkinning) && + PlayerSettings.gpuSkinning != recommended_GpuSkinning) || +#if false + (!EditorPrefs.HasKey(ignore + singlePassStereoRendering) && + PlayerSettings.singlePassStereoRendering != recommended_SinglePassStereoRendering) || +#endif + forceShow; + + if (show) + { + window = GetWindow(true); + window.minSize = new Vector2(320, 440); + //window.title = "SteamVR"; + } + + if (SteamVR_Preferences.AutoEnableVR) + { + // Switch to native OpenVR support. + var updated = false; + + if (!PlayerSettings.virtualRealitySupported) + { + PlayerSettings.virtualRealitySupported = true; + updated = true; + } + +#if (UNITY_5_4 || UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) + var devices = UnityEditorInternal.VR.VREditor.GetVREnabledDevices(BuildTargetGroup.Standalone); +#else + var devices = UnityEditorInternal.VR.VREditor.GetVREnabledDevicesOnTargetGroup(BuildTargetGroup.Standalone); +#endif + var hasOpenVR = false; + foreach (var device in devices) + if (device.ToLower() == "openvr") + hasOpenVR = true; + + + if (!hasOpenVR) + { + string[] newDevices; + if (updated) + { + newDevices = new string[] { "OpenVR" }; + } + else + { + newDevices = new string[devices.Length + 1]; + for (int i = 0; i < devices.Length; i++) + newDevices[i] = devices[i]; + newDevices[devices.Length] = "OpenVR"; + updated = true; + } +#if (UNITY_5_4 || UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) + UnityEditorInternal.VR.VREditor.SetVREnabledDevices(BuildTargetGroup.Standalone, newDevices); +#else + UnityEditorInternal.VR.VREditor.SetVREnabledDevicesOnTargetGroup(BuildTargetGroup.Standalone, newDevices); +#endif + } + + if (updated) + Debug.Log("Switching to native OpenVR support."); + } + + var dlls = new string[] + { + "Plugins/x86/openvr_api.dll", + "Plugins/x86_64/openvr_api.dll" + }; + + foreach (var path in dlls) + { + if (!File.Exists(Application.dataPath + "/" + path)) + continue; + + if (AssetDatabase.DeleteAsset("Assets/" + path)) + Debug.Log("Deleting " + path); + else + { + Debug.Log(path + " in use; cannot delete. Please restart Unity to complete upgrade."); + } + } + + EditorApplication.update -= Update; + } + + Vector2 scrollPosition; + + string GetResourcePath() + { + var ms = MonoScript.FromScriptableObject(this); + var path = AssetDatabase.GetAssetPath(ms); + path = Path.GetDirectoryName(path); + return path.Substring(0, path.Length - "Editor".Length) + "Textures/"; + } + + public void OnGUI() + { + var resourcePath = GetResourcePath(); + var logo = AssetDatabase.LoadAssetAtPath(resourcePath + "logo.png"); + var rect = GUILayoutUtility.GetRect(position.width, 150, GUI.skin.box); + if (logo) + GUI.DrawTexture(rect, logo, ScaleMode.ScaleToFit); + + EditorGUILayout.HelpBox("Recommended project settings for SteamVR:", MessageType.Warning); + + scrollPosition = GUILayout.BeginScrollView(scrollPosition); + + int numItems = 0; + + if (!EditorPrefs.HasKey(ignore + buildTarget) && + EditorUserBuildSettings.activeBuildTarget != recommended_BuildTarget) + { + ++numItems; + + GUILayout.Label(buildTarget + string.Format(currentValue, EditorUserBuildSettings.activeBuildTarget)); + + GUILayout.BeginHorizontal(); + + if (GUILayout.Button(string.Format(useRecommended, recommended_BuildTarget))) + { +#if (UNITY_5_5 || UNITY_5_4 || UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) + EditorUserBuildSettings.SwitchActiveBuildTarget(recommended_BuildTarget); +#else + EditorUserBuildSettings.SwitchActiveBuildTarget(BuildTargetGroup.Standalone, recommended_BuildTarget); +#endif + } + + GUILayout.FlexibleSpace(); + + if (GUILayout.Button("Ignore")) + { + EditorPrefs.SetBool(ignore + buildTarget, true); + } + + GUILayout.EndHorizontal(); + } + +#if (UNITY_5_4 || UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) + if (!EditorPrefs.HasKey(ignore + showUnitySplashScreen) && + PlayerSettings.showUnitySplashScreen != recommended_ShowUnitySplashScreen) + { + ++numItems; + + GUILayout.Label(showUnitySplashScreen + string.Format(currentValue, PlayerSettings.showUnitySplashScreen)); + + GUILayout.BeginHorizontal(); + + if (GUILayout.Button(string.Format(useRecommended, recommended_ShowUnitySplashScreen))) + { + PlayerSettings.showUnitySplashScreen = recommended_ShowUnitySplashScreen; + } + + GUILayout.FlexibleSpace(); + + if (GUILayout.Button("Ignore")) + { + EditorPrefs.SetBool(ignore + showUnitySplashScreen, true); + } + + GUILayout.EndHorizontal(); + } +#else + if (!EditorPrefs.HasKey(ignore + showUnitySplashScreen) && + PlayerSettings.SplashScreen.show != recommended_ShowUnitySplashScreen) + { + ++numItems; + + GUILayout.Label(showUnitySplashScreen + string.Format(currentValue, PlayerSettings.SplashScreen.show)); + + GUILayout.BeginHorizontal(); + + if (GUILayout.Button(string.Format(useRecommended, recommended_ShowUnitySplashScreen))) + { + PlayerSettings.SplashScreen.show = recommended_ShowUnitySplashScreen; + } + + GUILayout.FlexibleSpace(); + + if (GUILayout.Button("Ignore")) + { + EditorPrefs.SetBool(ignore + showUnitySplashScreen, true); + } + + GUILayout.EndHorizontal(); + } +#endif + if (!EditorPrefs.HasKey(ignore + defaultIsFullScreen) && + PlayerSettings.defaultIsFullScreen != recommended_DefaultIsFullScreen) + { + ++numItems; + + GUILayout.Label(defaultIsFullScreen + string.Format(currentValue, PlayerSettings.defaultIsFullScreen)); + + GUILayout.BeginHorizontal(); + + if (GUILayout.Button(string.Format(useRecommended, recommended_DefaultIsFullScreen))) + { + PlayerSettings.defaultIsFullScreen = recommended_DefaultIsFullScreen; + } + + GUILayout.FlexibleSpace(); + + if (GUILayout.Button("Ignore")) + { + EditorPrefs.SetBool(ignore + defaultIsFullScreen, true); + } + + GUILayout.EndHorizontal(); + } + + if (!EditorPrefs.HasKey(ignore + defaultScreenSize) && + (PlayerSettings.defaultScreenWidth != recommended_DefaultScreenWidth || + PlayerSettings.defaultScreenHeight != recommended_DefaultScreenHeight)) + { + ++numItems; + + GUILayout.Label(defaultScreenSize + string.Format(" ({0}x{1})", PlayerSettings.defaultScreenWidth, PlayerSettings.defaultScreenHeight)); + + GUILayout.BeginHorizontal(); + + if (GUILayout.Button(string.Format("Use recommended ({0}x{1})", recommended_DefaultScreenWidth, recommended_DefaultScreenHeight))) + { + PlayerSettings.defaultScreenWidth = recommended_DefaultScreenWidth; + PlayerSettings.defaultScreenHeight = recommended_DefaultScreenHeight; + } + + GUILayout.FlexibleSpace(); + + if (GUILayout.Button("Ignore")) + { + EditorPrefs.SetBool(ignore + defaultScreenSize, true); + } + + GUILayout.EndHorizontal(); + } + + if (!EditorPrefs.HasKey(ignore + runInBackground) && + PlayerSettings.runInBackground != recommended_RunInBackground) + { + ++numItems; + + GUILayout.Label(runInBackground + string.Format(currentValue, PlayerSettings.runInBackground)); + + GUILayout.BeginHorizontal(); + + if (GUILayout.Button(string.Format(useRecommended, recommended_RunInBackground))) + { + PlayerSettings.runInBackground = recommended_RunInBackground; + } + + GUILayout.FlexibleSpace(); + + if (GUILayout.Button("Ignore")) + { + EditorPrefs.SetBool(ignore + runInBackground, true); + } + + GUILayout.EndHorizontal(); + } + + if (!EditorPrefs.HasKey(ignore + displayResolutionDialog) && + PlayerSettings.displayResolutionDialog != recommended_DisplayResolutionDialog) + { + ++numItems; + + GUILayout.Label(displayResolutionDialog + string.Format(currentValue, PlayerSettings.displayResolutionDialog)); + + GUILayout.BeginHorizontal(); + + if (GUILayout.Button(string.Format(useRecommended, recommended_DisplayResolutionDialog))) + { + PlayerSettings.displayResolutionDialog = recommended_DisplayResolutionDialog; + } + + GUILayout.FlexibleSpace(); + + if (GUILayout.Button("Ignore")) + { + EditorPrefs.SetBool(ignore + displayResolutionDialog, true); + } + + GUILayout.EndHorizontal(); + } + + if (!EditorPrefs.HasKey(ignore + resizableWindow) && + PlayerSettings.resizableWindow != recommended_ResizableWindow) + { + ++numItems; + + GUILayout.Label(resizableWindow + string.Format(currentValue, PlayerSettings.resizableWindow)); + + GUILayout.BeginHorizontal(); + + if (GUILayout.Button(string.Format(useRecommended, recommended_ResizableWindow))) + { + PlayerSettings.resizableWindow = recommended_ResizableWindow; + } + + GUILayout.FlexibleSpace(); + + if (GUILayout.Button("Ignore")) + { + EditorPrefs.SetBool(ignore + resizableWindow, true); + } + + GUILayout.EndHorizontal(); + } + + if (!EditorPrefs.HasKey(ignore + fullscreenMode) && + PlayerSettings.d3d11FullscreenMode != recommended_FullscreenMode) + { + ++numItems; + + GUILayout.Label(fullscreenMode + string.Format(currentValue, PlayerSettings.d3d11FullscreenMode)); + + GUILayout.BeginHorizontal(); + + if (GUILayout.Button(string.Format(useRecommended, recommended_FullscreenMode))) + { + PlayerSettings.d3d11FullscreenMode = recommended_FullscreenMode; + } + + GUILayout.FlexibleSpace(); + + if (GUILayout.Button("Ignore")) + { + EditorPrefs.SetBool(ignore + fullscreenMode, true); + } + + GUILayout.EndHorizontal(); + } + + if (!EditorPrefs.HasKey(ignore + visibleInBackground) && + PlayerSettings.visibleInBackground != recommended_VisibleInBackground) + { + ++numItems; + + GUILayout.Label(visibleInBackground + string.Format(currentValue, PlayerSettings.visibleInBackground)); + + GUILayout.BeginHorizontal(); + + if (GUILayout.Button(string.Format(useRecommended, recommended_VisibleInBackground))) + { + PlayerSettings.visibleInBackground = recommended_VisibleInBackground; + } + + GUILayout.FlexibleSpace(); + + if (GUILayout.Button("Ignore")) + { + EditorPrefs.SetBool(ignore + visibleInBackground, true); + } + + GUILayout.EndHorizontal(); + } +#if (UNITY_5_4 || UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) + if (!EditorPrefs.HasKey(ignore + renderingPath) && + PlayerSettings.renderingPath != recommended_RenderPath) + { + ++numItems; + + GUILayout.Label(renderingPath + string.Format(currentValue, PlayerSettings.renderingPath)); + + GUILayout.BeginHorizontal(); + + if (GUILayout.Button(string.Format(useRecommended, recommended_RenderPath) + " - required for MSAA")) + { + PlayerSettings.renderingPath = recommended_RenderPath; + } + + GUILayout.FlexibleSpace(); + + if (GUILayout.Button("Ignore")) + { + EditorPrefs.SetBool(ignore + renderingPath, true); + } + + GUILayout.EndHorizontal(); + } +#endif + if (!EditorPrefs.HasKey(ignore + colorSpace) && + PlayerSettings.colorSpace != recommended_ColorSpace) + { + ++numItems; + + GUILayout.Label(colorSpace + string.Format(currentValue, PlayerSettings.colorSpace)); + + GUILayout.BeginHorizontal(); + + if (GUILayout.Button(string.Format(useRecommended, recommended_ColorSpace) + " - requires reloading scene")) + { + PlayerSettings.colorSpace = recommended_ColorSpace; + } + + GUILayout.FlexibleSpace(); + + if (GUILayout.Button("Ignore")) + { + EditorPrefs.SetBool(ignore + colorSpace, true); + } + + GUILayout.EndHorizontal(); + } + + if (!EditorPrefs.HasKey(ignore + gpuSkinning) && + PlayerSettings.gpuSkinning != recommended_GpuSkinning) + { + ++numItems; + + GUILayout.Label(gpuSkinning + string.Format(currentValue, PlayerSettings.gpuSkinning)); + + GUILayout.BeginHorizontal(); + + if (GUILayout.Button(string.Format(useRecommended, recommended_GpuSkinning))) + { + PlayerSettings.gpuSkinning = recommended_GpuSkinning; + } + + GUILayout.FlexibleSpace(); + + if (GUILayout.Button("Ignore")) + { + EditorPrefs.SetBool(ignore + gpuSkinning, true); + } + + GUILayout.EndHorizontal(); + } + +#if false + if (!EditorPrefs.HasKey(ignore + singlePassStereoRendering) && + PlayerSettings.singlePassStereoRendering != recommended_SinglePassStereoRendering) + { + ++numItems; + + GUILayout.Label(singlePassStereoRendering + string.Format(currentValue, PlayerSettings.singlePassStereoRendering)); + + GUILayout.BeginHorizontal(); + + if (GUILayout.Button(string.Format(useRecommended, recommended_SinglePassStereoRendering))) + { + PlayerSettings.singlePassStereoRendering = recommended_SinglePassStereoRendering; + } + + GUILayout.FlexibleSpace(); + + if (GUILayout.Button("Ignore")) + { + EditorPrefs.SetBool(ignore + singlePassStereoRendering, true); + } + + GUILayout.EndHorizontal(); + } +#endif + + GUILayout.BeginHorizontal(); + + GUILayout.FlexibleSpace(); + + if (GUILayout.Button("Clear All Ignores")) + { + EditorPrefs.DeleteKey(ignore + buildTarget); + EditorPrefs.DeleteKey(ignore + showUnitySplashScreen); + EditorPrefs.DeleteKey(ignore + defaultIsFullScreen); + EditorPrefs.DeleteKey(ignore + defaultScreenSize); + EditorPrefs.DeleteKey(ignore + runInBackground); + EditorPrefs.DeleteKey(ignore + displayResolutionDialog); + EditorPrefs.DeleteKey(ignore + resizableWindow); + EditorPrefs.DeleteKey(ignore + fullscreenMode); + EditorPrefs.DeleteKey(ignore + visibleInBackground); +#if (UNITY_5_4 || UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) + EditorPrefs.DeleteKey(ignore + renderingPath); +#endif + EditorPrefs.DeleteKey(ignore + colorSpace); + EditorPrefs.DeleteKey(ignore + gpuSkinning); +#if false + EditorPrefs.DeleteKey(ignore + singlePassStereoRendering); +#endif + } + + GUILayout.EndHorizontal(); + + GUILayout.EndScrollView(); + + GUILayout.FlexibleSpace(); + + GUILayout.BeginHorizontal(); + + if (numItems > 0) + { + if (GUILayout.Button("Accept All")) + { + // Only set those that have not been explicitly ignored. + if (!EditorPrefs.HasKey(ignore + buildTarget)) +#if (UNITY_5_5 || UNITY_5_4 || UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) + EditorUserBuildSettings.SwitchActiveBuildTarget(recommended_BuildTarget); +#else + EditorUserBuildSettings.SwitchActiveBuildTarget(BuildTargetGroup.Standalone, recommended_BuildTarget); +#endif + if (!EditorPrefs.HasKey(ignore + showUnitySplashScreen)) +#if (UNITY_5_4 || UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) + PlayerSettings.showUnitySplashScreen = recommended_ShowUnitySplashScreen; +#else + PlayerSettings.SplashScreen.show = recommended_ShowUnitySplashScreen; +#endif + if (!EditorPrefs.HasKey(ignore + defaultIsFullScreen)) + PlayerSettings.defaultIsFullScreen = recommended_DefaultIsFullScreen; + if (!EditorPrefs.HasKey(ignore + defaultScreenSize)) + { + PlayerSettings.defaultScreenWidth = recommended_DefaultScreenWidth; + PlayerSettings.defaultScreenHeight = recommended_DefaultScreenHeight; + } + if (!EditorPrefs.HasKey(ignore + runInBackground)) + PlayerSettings.runInBackground = recommended_RunInBackground; + if (!EditorPrefs.HasKey(ignore + displayResolutionDialog)) + PlayerSettings.displayResolutionDialog = recommended_DisplayResolutionDialog; + if (!EditorPrefs.HasKey(ignore + resizableWindow)) + PlayerSettings.resizableWindow = recommended_ResizableWindow; + if (!EditorPrefs.HasKey(ignore + fullscreenMode)) + PlayerSettings.d3d11FullscreenMode = recommended_FullscreenMode; + if (!EditorPrefs.HasKey(ignore + visibleInBackground)) + PlayerSettings.visibleInBackground = recommended_VisibleInBackground; +#if (UNITY_5_4 || UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) + if (!EditorPrefs.HasKey(ignore + renderingPath)) + PlayerSettings.renderingPath = recommended_RenderPath; +#endif + if (!EditorPrefs.HasKey(ignore + colorSpace)) + PlayerSettings.colorSpace = recommended_ColorSpace; + if (!EditorPrefs.HasKey(ignore + gpuSkinning)) + PlayerSettings.gpuSkinning = recommended_GpuSkinning; +#if false + if (!EditorPrefs.HasKey(ignore + singlePassStereoRendering)) + PlayerSettings.singlePassStereoRendering = recommended_SinglePassStereoRendering; +#endif + + EditorUtility.DisplayDialog("Accept All", "You made the right choice!", "Ok"); + + Close(); + } + + if (GUILayout.Button("Ignore All")) + { + if (EditorUtility.DisplayDialog("Ignore All", "Are you sure?", "Yes, Ignore All", "Cancel")) + { + // Only ignore those that do not currently match our recommended settings. + if (EditorUserBuildSettings.activeBuildTarget != recommended_BuildTarget) + EditorPrefs.SetBool(ignore + buildTarget, true); +#if (UNITY_5_4 || UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) + if (PlayerSettings.showUnitySplashScreen != recommended_ShowUnitySplashScreen) +#else + if (PlayerSettings.SplashScreen.show != recommended_ShowUnitySplashScreen) +#endif + EditorPrefs.SetBool(ignore + showUnitySplashScreen, true); + if (PlayerSettings.defaultIsFullScreen != recommended_DefaultIsFullScreen) + EditorPrefs.SetBool(ignore + defaultIsFullScreen, true); + if (PlayerSettings.defaultScreenWidth != recommended_DefaultScreenWidth || + PlayerSettings.defaultScreenHeight != recommended_DefaultScreenHeight) + EditorPrefs.SetBool(ignore + defaultScreenSize, true); + if (PlayerSettings.runInBackground != recommended_RunInBackground) + EditorPrefs.SetBool(ignore + runInBackground, true); + if (PlayerSettings.displayResolutionDialog != recommended_DisplayResolutionDialog) + EditorPrefs.SetBool(ignore + displayResolutionDialog, true); + if (PlayerSettings.resizableWindow != recommended_ResizableWindow) + EditorPrefs.SetBool(ignore + resizableWindow, true); + if (PlayerSettings.d3d11FullscreenMode != recommended_FullscreenMode) + EditorPrefs.SetBool(ignore + fullscreenMode, true); + if (PlayerSettings.visibleInBackground != recommended_VisibleInBackground) + EditorPrefs.SetBool(ignore + visibleInBackground, true); +#if (UNITY_5_4 || UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) + if (PlayerSettings.renderingPath != recommended_RenderPath) + EditorPrefs.SetBool(ignore + renderingPath, true); +#endif + if (PlayerSettings.colorSpace != recommended_ColorSpace) + EditorPrefs.SetBool(ignore + colorSpace, true); + if (PlayerSettings.gpuSkinning != recommended_GpuSkinning) + EditorPrefs.SetBool(ignore + gpuSkinning, true); +#if false + if (PlayerSettings.singlePassStereoRendering != recommended_SinglePassStereoRendering) + EditorPrefs.SetBool(ignore + singlePassStereoRendering, true); +#endif + + Close(); + } + } + } + else if (GUILayout.Button("Close")) + { + Close(); + } + + GUILayout.EndHorizontal(); + } +} + diff --git a/Assets/SteamVR/Editor/SteamVR_Settings.cs.meta b/Assets/SteamVR/Editor/SteamVR_Settings.cs.meta new file mode 100644 index 00000000..88876280 --- /dev/null +++ b/Assets/SteamVR/Editor/SteamVR_Settings.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d2244eee8a3a4784fb40d1123ff69301 +timeCreated: 1438809573 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/Editor/SteamVR_SkyboxEditor.cs b/Assets/SteamVR/Editor/SteamVR_SkyboxEditor.cs new file mode 100644 index 00000000..9fea2f7b --- /dev/null +++ b/Assets/SteamVR/Editor/SteamVR_SkyboxEditor.cs @@ -0,0 +1,381 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Custom inspector display for SteamVR_Skybox +// +//============================================================================= + +using UnityEngine; +using UnityEditor; +using System.Text; +using System.Collections.Generic; +using Valve.VR; +using System.IO; + +[CustomEditor(typeof(SteamVR_Skybox)), CanEditMultipleObjects] +public class SteamVR_SkyboxEditor : Editor +{ + private const string nameFormat = "{0}/{1}-{2}.png"; + private const string helpText = "Take snapshot will use the current " + + "position and rotation to capture six directional screenshots to use as this " + + "skybox's textures. Note: This skybox is only used to override what shows up " + + "in the compositor (e.g. when loading levels). Add a Camera component to this " + + "object to override default settings like which layers to render. Additionally, " + + "by specifying your own targetTexture, you can control the size of the textures " + + "and other properties like antialiasing. Don't forget to disable the camera.\n\n" + + "For stereo screenshots, a panorama is render for each eye using the specified " + + "ipd (in millimeters) broken up into segments cellSize pixels square to optimize " + + "generation.\n(32x32 takes about 10 seconds depending on scene complexity, 16x16 " + + "takes around a minute, while will 8x8 take several minutes.)\n\nTo test, hit " + + "play then pause - this will activate the skybox settings, and then drop you to " + + "the compositor where the skybox is rendered."; + + public override void OnInspectorGUI() + { + DrawDefaultInspector(); + + EditorGUILayout.HelpBox(helpText, MessageType.Info); + + if (GUILayout.Button("Take snapshot")) + { + var directions = new Quaternion[] { + Quaternion.LookRotation(Vector3.forward), + Quaternion.LookRotation(Vector3.back), + Quaternion.LookRotation(Vector3.left), + Quaternion.LookRotation(Vector3.right), + Quaternion.LookRotation(Vector3.up, Vector3.back), + Quaternion.LookRotation(Vector3.down, Vector3.forward) + }; + + Camera tempCamera = null; + foreach (SteamVR_Skybox target in targets) + { + var targetScene = target.gameObject.scene; + var sceneName = Path.GetFileNameWithoutExtension(targetScene.path); + var scenePath = Path.GetDirectoryName(targetScene.path); + var assetPath = scenePath + "/" + sceneName; + if (!AssetDatabase.IsValidFolder(assetPath)) + { + var guid = AssetDatabase.CreateFolder(scenePath, sceneName); + assetPath = AssetDatabase.GUIDToAssetPath(guid); + } + + var camera = target.GetComponent(); + if (camera == null) + { + if (tempCamera == null) + tempCamera = new GameObject().AddComponent(); + camera = tempCamera; + } + + var targetTexture = camera.targetTexture; + if (camera.targetTexture == null) + { + targetTexture = new RenderTexture(1024, 1024, 24); + targetTexture.antiAliasing = 8; + camera.targetTexture = targetTexture; + } + + var oldPosition = target.transform.localPosition; + var oldRotation = target.transform.localRotation; + var baseRotation = target.transform.rotation; + + var t = camera.transform; + t.position = target.transform.position; + camera.orthographic = false; + camera.fieldOfView = 90; + + for (int i = 0; i < directions.Length; i++) + { + t.rotation = baseRotation * directions[i]; + camera.Render(); + + // Copy to texture and save to disk. + RenderTexture.active = targetTexture; + var texture = new Texture2D(targetTexture.width, targetTexture.height, TextureFormat.ARGB32, false); + texture.ReadPixels(new Rect(0, 0, texture.width, texture.height), 0, 0); + texture.Apply(); + RenderTexture.active = null; + + var assetName = string.Format(nameFormat, assetPath, target.name, i); + System.IO.File.WriteAllBytes(assetName, texture.EncodeToPNG()); + } + + if (camera != tempCamera) + { + target.transform.localPosition = oldPosition; + target.transform.localRotation = oldRotation; + } + } + + if (tempCamera != null) + { + Object.DestroyImmediate(tempCamera.gameObject); + } + + // Now that everything has be written out, reload the associated assets and assign them. + AssetDatabase.Refresh(); + foreach (SteamVR_Skybox target in targets) + { + var targetScene = target.gameObject.scene; + var sceneName = Path.GetFileNameWithoutExtension(targetScene.path); + var scenePath = Path.GetDirectoryName(targetScene.path); + var assetPath = scenePath + "/" + sceneName; + + for (int i = 0; i < directions.Length; i++) + { + var assetName = string.Format(nameFormat, assetPath, target.name, i); + var importer = AssetImporter.GetAtPath(assetName) as TextureImporter; +#if (UNITY_5_4 || UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) + importer.textureFormat = TextureImporterFormat.RGB24; +#else + importer.textureCompression = TextureImporterCompression.Uncompressed; +#endif + importer.wrapMode = TextureWrapMode.Clamp; + importer.mipmapEnabled = false; + importer.SaveAndReimport(); + + var texture = AssetDatabase.LoadAssetAtPath(assetName); + target.SetTextureByIndex(i, texture); + } + } + } + else if (GUILayout.Button("Take stereo snapshot")) + { + const int width = 4096; + const int height = width / 2; + const int halfHeight = height / 2; + + var textures = new Texture2D[] { + new Texture2D(width, height, TextureFormat.ARGB32, false), + new Texture2D(width, height, TextureFormat.ARGB32, false) }; + + var timer = new System.Diagnostics.Stopwatch(); + + Camera tempCamera = null; + foreach (SteamVR_Skybox target in targets) + { + timer.Start(); + + var targetScene = target.gameObject.scene; + var sceneName = Path.GetFileNameWithoutExtension(targetScene.path); + var scenePath = Path.GetDirectoryName(targetScene.path); + var assetPath = scenePath + "/" + sceneName; + if (!AssetDatabase.IsValidFolder(assetPath)) + { + var guid = AssetDatabase.CreateFolder(scenePath, sceneName); + assetPath = AssetDatabase.GUIDToAssetPath(guid); + } + + var camera = target.GetComponent(); + if (camera == null) + { + if (tempCamera == null) + tempCamera = new GameObject().AddComponent(); + camera = tempCamera; + } + + var fx = camera.gameObject.AddComponent(); + + var oldTargetTexture = camera.targetTexture; + var oldOrthographic = camera.orthographic; + var oldFieldOfView = camera.fieldOfView; + var oldAspect = camera.aspect; + + var oldPosition = target.transform.localPosition; + var oldRotation = target.transform.localRotation; + var basePosition = target.transform.position; + var baseRotation = target.transform.rotation; + + var transform = camera.transform; + + int cellSize = int.Parse(target.StereoCellSize.ToString().Substring(1)); + float ipd = target.StereoIpdMm / 1000.0f; + int vTotal = halfHeight / cellSize; + float dv = 90.0f / vTotal; // vertical degrees per segment + float dvHalf = dv / 2.0f; + + var targetTexture = new RenderTexture(cellSize, cellSize, 24); + targetTexture.wrapMode = TextureWrapMode.Clamp; + targetTexture.antiAliasing = 8; + + camera.fieldOfView = dv; + camera.orthographic = false; + camera.targetTexture = targetTexture; + + // Render sections of a sphere using a rectilinear projection + // and resample using a sphereical projection into a single panorama + // texture per eye. We break into sections in order to keep the eye + // separation similar around the sphere. Rendering alternates between + // top and bottom sections, sweeping horizontally around the sphere, + // alternating left and right eyes. + for (int v = 0; v < vTotal; v++) + { + var pitch = 90.0f - (v * dv) - dvHalf; + var uTotal = width / targetTexture.width; + var du = 360.0f / uTotal; // horizontal degrees per segment + var duHalf = du / 2.0f; + + var vTarget = v * halfHeight / vTotal; + + for (int i = 0; i < 2; i++) // top, bottom + { + if (i == 1) + { + pitch = -pitch; + vTarget = height - vTarget - cellSize; + } + + for (int u = 0; u < uTotal; u++) + { + var yaw = -180.0f + (u * du) + duHalf; + + var uTarget = u * width / uTotal; + + var xOffset = -ipd / 2 * Mathf.Cos(pitch * Mathf.Deg2Rad); + + for (int j = 0; j < 2; j++) // left, right + { + var texture = textures[j]; + + if (j == 1) + { + xOffset = -xOffset; + } + + var offset = baseRotation * Quaternion.Euler(0, yaw, 0) * new Vector3(xOffset, 0, 0); + transform.position = basePosition + offset; + + var direction = Quaternion.Euler(pitch, yaw, 0.0f); + transform.rotation = baseRotation * direction; + + // vector pointing to center of this section + var N = direction * Vector3.forward; + + // horizontal span of this section in degrees + var phi0 = yaw - (du / 2); + var phi1 = phi0 + du; + + // vertical span of this section in degrees + var theta0 = pitch + (dv / 2); + var theta1 = theta0 - dv; + + var midPhi = (phi0 + phi1) / 2; + var baseTheta = Mathf.Abs(theta0) < Mathf.Abs(theta1) ? theta0 : theta1; + + // vectors pointing to corners of image closes to the equator + var V00 = Quaternion.Euler(baseTheta, phi0, 0.0f) * Vector3.forward; + var V01 = Quaternion.Euler(baseTheta, phi1, 0.0f) * Vector3.forward; + + // vectors pointing to top and bottom midsection of image + var V0M = Quaternion.Euler(theta0, midPhi, 0.0f) * Vector3.forward; + var V1M = Quaternion.Euler(theta1, midPhi, 0.0f) * Vector3.forward; + + // intersection points for each of the above + var P00 = V00 / Vector3.Dot(V00, N); + var P01 = V01 / Vector3.Dot(V01, N); + var P0M = V0M / Vector3.Dot(V0M, N); + var P1M = V1M / Vector3.Dot(V1M, N); + + // calculate basis vectors for plane + var P00_P01 = P01 - P00; + var P0M_P1M = P1M - P0M; + + var uMag = P00_P01.magnitude; + var vMag = P0M_P1M.magnitude; + + var uScale = 1.0f / uMag; + var vScale = 1.0f / vMag; + + var uAxis = P00_P01 * uScale; + var vAxis = P0M_P1M * vScale; + + // update material constant buffer + fx.Set(N, phi0, phi1, theta0, theta1, + uAxis, P00, uScale, + vAxis, P0M, vScale); + + camera.aspect = uMag / vMag; + camera.Render(); + + RenderTexture.active = targetTexture; + texture.ReadPixels(new Rect(0, 0, targetTexture.width, targetTexture.height), uTarget, vTarget); + RenderTexture.active = null; + } + } + } + } + + // Save textures to disk. + for (int i = 0; i < 2; i++) + { + var texture = textures[i]; + + texture.Apply(); + var assetName = string.Format(nameFormat, assetPath, target.name, i); + File.WriteAllBytes(assetName, texture.EncodeToPNG()); + } + + // Cleanup. + if (camera != tempCamera) + { + camera.targetTexture = oldTargetTexture; + camera.orthographic = oldOrthographic; + camera.fieldOfView = oldFieldOfView; + camera.aspect = oldAspect; + + target.transform.localPosition = oldPosition; + target.transform.localRotation = oldRotation; + } + else + { + tempCamera.targetTexture = null; + } + + DestroyImmediate(targetTexture); + DestroyImmediate(fx); + + timer.Stop(); + Debug.Log(string.Format("Screenshot took {0} seconds.", timer.Elapsed)); + } + + if (tempCamera != null) + { + DestroyImmediate(tempCamera.gameObject); + } + + DestroyImmediate(textures[0]); + DestroyImmediate(textures[1]); + + // Now that everything has be written out, reload the associated assets and assign them. + AssetDatabase.Refresh(); + foreach (SteamVR_Skybox target in targets) + { + var targetScene = target.gameObject.scene; + var sceneName = Path.GetFileNameWithoutExtension(targetScene.path); + var scenePath = Path.GetDirectoryName(targetScene.path); + var assetPath = scenePath + "/" + sceneName; + + for (int i = 0; i < 2; i++) + { + var assetName = string.Format(nameFormat, assetPath, target.name, i); + var importer = AssetImporter.GetAtPath(assetName) as TextureImporter; + importer.mipmapEnabled = false; + importer.wrapMode = TextureWrapMode.Repeat; +#if (UNITY_5_4 || UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0) + importer.SetPlatformTextureSettings("Standalone", width, TextureImporterFormat.RGB24); +#else + var settings = importer.GetPlatformTextureSettings("Standalone"); + settings.textureCompression = TextureImporterCompression.Uncompressed; + settings.maxTextureSize = width; + importer.SetPlatformTextureSettings(settings); +#endif + importer.SaveAndReimport(); + + var texture = AssetDatabase.LoadAssetAtPath(assetName); + target.SetTextureByIndex(i, texture); + } + } + } + } +} + diff --git a/Assets/SteamVR/Editor/SteamVR_SkyboxEditor.cs.meta b/Assets/SteamVR/Editor/SteamVR_SkyboxEditor.cs.meta new file mode 100644 index 00000000..95230d04 --- /dev/null +++ b/Assets/SteamVR/Editor/SteamVR_SkyboxEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 80087fbbf7bf93a46bb4aea276b19568 +timeCreated: 1446765449 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/Editor/SteamVR_Update.cs b/Assets/SteamVR/Editor/SteamVR_Update.cs new file mode 100644 index 00000000..792b1c96 --- /dev/null +++ b/Assets/SteamVR/Editor/SteamVR_Update.cs @@ -0,0 +1,170 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Notify developers when a new version of the plugin is available. +// +//============================================================================= + +using UnityEngine; +using UnityEditor; +using System.IO; +using System.Text.RegularExpressions; + +[InitializeOnLoad] +public class SteamVR_Update : EditorWindow +{ + const string currentVersion = "1.2.1"; + const string versionUrl = "http://media.steampowered.com/apps/steamvr/unitypluginversion.txt"; + const string notesUrl = "http://media.steampowered.com/apps/steamvr/unityplugin-v{0}.txt"; + const string pluginUrl = "http://u3d.as/content/valve-corporation/steam-vr-plugin"; + const string doNotShowKey = "SteamVR.DoNotShow.v{0}"; + + static bool gotVersion = false; + static WWW wwwVersion, wwwNotes; + static string version, notes; + static SteamVR_Update window; + + static SteamVR_Update() + { + EditorApplication.update += Update; + } + + static void Update() + { + if (!gotVersion) + { + if (wwwVersion == null) + wwwVersion = new WWW(versionUrl); + + if (!wwwVersion.isDone) + return; + + if (UrlSuccess(wwwVersion)) + version = wwwVersion.text; + + wwwVersion = null; + gotVersion = true; + + if (ShouldDisplay()) + { + var url = string.Format(notesUrl, version); + wwwNotes = new WWW(url); + + window = GetWindow(true); + window.minSize = new Vector2(320, 440); + //window.title = "SteamVR"; + } + } + + if (wwwNotes != null) + { + if (!wwwNotes.isDone) + return; + + if (UrlSuccess(wwwNotes)) + notes = wwwNotes.text; + + wwwNotes = null; + + if (notes != "") + window.Repaint(); + } + + EditorApplication.update -= Update; + } + + static bool UrlSuccess(WWW www) + { + if (!string.IsNullOrEmpty(www.error)) + return false; + if (Regex.IsMatch(www.text, "404 not found", RegexOptions.IgnoreCase)) + return false; + return true; + } + + static bool ShouldDisplay() + { + if (string.IsNullOrEmpty(version)) + return false; + if (version == currentVersion) + return false; + if (EditorPrefs.HasKey(string.Format(doNotShowKey, version))) + return false; + + // parse to see if newer (e.g. 1.0.4 vs 1.0.3) + var versionSplit = version.Split('.'); + var currentVersionSplit = currentVersion.Split('.'); + for (int i = 0; i < versionSplit.Length && i < currentVersionSplit.Length; i++) + { + int versionValue, currentVersionValue; + if (int.TryParse(versionSplit[i], out versionValue) && + int.TryParse(currentVersionSplit[i], out currentVersionValue)) + { + if (versionValue > currentVersionValue) + return true; + if (versionValue < currentVersionValue) + return false; + } + } + + // same up to this point, now differentiate based on number of sub values (e.g. 1.0.4.1 vs 1.0.4) + if (versionSplit.Length <= currentVersionSplit.Length) + return false; + + return true; + } + + Vector2 scrollPosition; + bool toggleState; + + string GetResourcePath() + { + var ms = MonoScript.FromScriptableObject(this); + var path = AssetDatabase.GetAssetPath(ms); + path = Path.GetDirectoryName(path); + return path.Substring(0, path.Length - "Editor".Length) + "Textures/"; + } + + public void OnGUI() + { + EditorGUILayout.HelpBox("A new version of the SteamVR plugin is available!", MessageType.Warning); + + var resourcePath = GetResourcePath(); + var logo = AssetDatabase.LoadAssetAtPath(resourcePath + "logo.png"); + var rect = GUILayoutUtility.GetRect(position.width, 150, GUI.skin.box); + if (logo) + GUI.DrawTexture(rect, logo, ScaleMode.ScaleToFit); + + scrollPosition = GUILayout.BeginScrollView(scrollPosition); + + GUILayout.Label("Current version: " + currentVersion); + GUILayout.Label("New version: " + version); + + if (notes != "") + { + GUILayout.Label("Release notes:"); + EditorGUILayout.HelpBox(notes, MessageType.Info); + } + + GUILayout.EndScrollView(); + + GUILayout.FlexibleSpace(); + + if (GUILayout.Button("Get Latest Version")) + { + Application.OpenURL(pluginUrl); + } + + EditorGUI.BeginChangeCheck(); + var doNotShow = GUILayout.Toggle(toggleState, "Do not prompt for this version again."); + if (EditorGUI.EndChangeCheck()) + { + toggleState = doNotShow; + var key = string.Format(doNotShowKey, version); + if (doNotShow) + EditorPrefs.SetBool(key, true); + else + EditorPrefs.DeleteKey(key); + } + } +} + diff --git a/Assets/SteamVR/Editor/SteamVR_Update.cs.meta b/Assets/SteamVR/Editor/SteamVR_Update.cs.meta new file mode 100644 index 00000000..de16a501 --- /dev/null +++ b/Assets/SteamVR/Editor/SteamVR_Update.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 73a0556bda803bf4e898751dcfcf21a8 +timeCreated: 1433880062 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/Extras.meta b/Assets/SteamVR/Extras.meta new file mode 100644 index 00000000..5785668d --- /dev/null +++ b/Assets/SteamVR/Extras.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 61f4796ee4f00314e8d8b1ad39a78c28 +folderAsset: yes +timeCreated: 1438797390 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/Extras/SteamVR_GazeTracker.cs b/Assets/SteamVR/Extras/SteamVR_GazeTracker.cs new file mode 100644 index 00000000..c35b7833 --- /dev/null +++ b/Assets/SteamVR/Extras/SteamVR_GazeTracker.cs @@ -0,0 +1,88 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +using UnityEngine; +using System.Collections; + +public struct GazeEventArgs +{ + public float distance; +} + +public delegate void GazeEventHandler(object sender, GazeEventArgs e); + +public class SteamVR_GazeTracker : MonoBehaviour +{ + public bool isInGaze = false; + public event GazeEventHandler GazeOn; + public event GazeEventHandler GazeOff; + public float gazeInCutoff = 0.15f; + public float gazeOutCutoff = 0.4f; + + // Contains a HMD tracked object that we can use to find the user's gaze + Transform hmdTrackedObject = null; + + // Use this for initialization + void Start () + { + + } + + public virtual void OnGazeOn(GazeEventArgs e) + { + if (GazeOn != null) + GazeOn(this, e); + } + + public virtual void OnGazeOff(GazeEventArgs e) + { + if (GazeOff != null) + GazeOff(this, e); + } + + // Update is called once per frame + void Update () + { + // If we haven't set up hmdTrackedObject find what the user is looking at + if (hmdTrackedObject == null) + { + SteamVR_TrackedObject[] trackedObjects = FindObjectsOfType(); + foreach (SteamVR_TrackedObject tracked in trackedObjects) + { + if (tracked.index == SteamVR_TrackedObject.EIndex.Hmd) + { + hmdTrackedObject = tracked.transform; + break; + } + } + } + + if (hmdTrackedObject) + { + Ray r = new Ray(hmdTrackedObject.position, hmdTrackedObject.forward); + Plane p = new Plane(hmdTrackedObject.forward, transform.position); + + float enter = 0.0f; + if (p.Raycast(r, out enter)) + { + Vector3 intersect = hmdTrackedObject.position + hmdTrackedObject.forward * enter; + float dist = Vector3.Distance(intersect, transform.position); + //Debug.Log("Gaze dist = " + dist); + if (dist < gazeInCutoff && !isInGaze) + { + isInGaze = true; + GazeEventArgs e; + e.distance = dist; + OnGazeOn(e); + } + else if (dist >= gazeOutCutoff && isInGaze) + { + isInGaze = false; + GazeEventArgs e; + e.distance = dist; + OnGazeOff(e); + } + } + + } + + } +} diff --git a/Assets/SteamVR/Extras/SteamVR_GazeTracker.cs.meta b/Assets/SteamVR/Extras/SteamVR_GazeTracker.cs.meta new file mode 100644 index 00000000..9f67d122 --- /dev/null +++ b/Assets/SteamVR/Extras/SteamVR_GazeTracker.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 501eb8b744f73714fbe7dbdd5e3ef66e +timeCreated: 1426193800 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/Extras/SteamVR_LaserPointer.cs b/Assets/SteamVR/Extras/SteamVR_LaserPointer.cs new file mode 100644 index 00000000..d35c7318 --- /dev/null +++ b/Assets/SteamVR/Extras/SteamVR_LaserPointer.cs @@ -0,0 +1,141 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +using UnityEngine; +using System.Collections; + +public struct PointerEventArgs +{ + public uint controllerIndex; + public uint flags; + public float distance; + public Transform target; +} + +public delegate void PointerEventHandler(object sender, PointerEventArgs e); + + +public class SteamVR_LaserPointer : MonoBehaviour +{ + public bool active = true; + public Color color; + public float thickness = 0.002f; + public GameObject holder; + public GameObject pointer; + bool isActive = false; + public bool addRigidBody = false; + public Transform reference; + public event PointerEventHandler PointerIn; + public event PointerEventHandler PointerOut; + + Transform previousContact = null; + + // Use this for initialization + void Start () + { + holder = new GameObject(); + holder.transform.parent = this.transform; + holder.transform.localPosition = Vector3.zero; + holder.transform.localRotation = Quaternion.identity; + + pointer = GameObject.CreatePrimitive(PrimitiveType.Cube); + pointer.transform.parent = holder.transform; + pointer.transform.localScale = new Vector3(thickness, thickness, 100f); + pointer.transform.localPosition = new Vector3(0f, 0f, 50f); + pointer.transform.localRotation = Quaternion.identity; + BoxCollider collider = pointer.GetComponent(); + if (addRigidBody) + { + if (collider) + { + collider.isTrigger = true; + } + Rigidbody rigidBody = pointer.AddComponent(); + rigidBody.isKinematic = true; + } + else + { + if(collider) + { + Object.Destroy(collider); + } + } + Material newMaterial = new Material(Shader.Find("Unlit/Color")); + newMaterial.SetColor("_Color", color); + pointer.GetComponent().material = newMaterial; + } + + public virtual void OnPointerIn(PointerEventArgs e) + { + if (PointerIn != null) + PointerIn(this, e); + } + + public virtual void OnPointerOut(PointerEventArgs e) + { + if (PointerOut != null) + PointerOut(this, e); + } + + + // Update is called once per frame + void Update () + { + if (!isActive) + { + isActive = true; + this.transform.GetChild(0).gameObject.SetActive(true); + } + + float dist = 100f; + + SteamVR_TrackedController controller = GetComponent(); + + Ray raycast = new Ray(transform.position, transform.forward); + RaycastHit hit; + bool bHit = Physics.Raycast(raycast, out hit); + + if(previousContact && previousContact != hit.transform) + { + PointerEventArgs args = new PointerEventArgs(); + if (controller != null) + { + args.controllerIndex = controller.controllerIndex; + } + args.distance = 0f; + args.flags = 0; + args.target = previousContact; + OnPointerOut(args); + previousContact = null; + } + if(bHit && previousContact != hit.transform) + { + PointerEventArgs argsIn = new PointerEventArgs(); + if (controller != null) + { + argsIn.controllerIndex = controller.controllerIndex; + } + argsIn.distance = hit.distance; + argsIn.flags = 0; + argsIn.target = hit.transform; + OnPointerIn(argsIn); + previousContact = hit.transform; + } + if(!bHit) + { + previousContact = null; + } + if (bHit && hit.distance < 100f) + { + dist = hit.distance; + } + + if (controller != null && controller.triggerPressed) + { + pointer.transform.localScale = new Vector3(thickness * 5f, thickness * 5f, dist); + } + else + { + pointer.transform.localScale = new Vector3(thickness, thickness, dist); + } + pointer.transform.localPosition = new Vector3(0f, 0f, dist/2f); + } +} diff --git a/Assets/SteamVR/Extras/SteamVR_LaserPointer.cs.meta b/Assets/SteamVR/Extras/SteamVR_LaserPointer.cs.meta new file mode 100644 index 00000000..874f4aea --- /dev/null +++ b/Assets/SteamVR/Extras/SteamVR_LaserPointer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d4e8a839a7c5b7e4580c59e305fb5f01 +timeCreated: 1430337756 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/Extras/SteamVR_Teleporter.cs b/Assets/SteamVR/Extras/SteamVR_Teleporter.cs new file mode 100644 index 00000000..e04df84e --- /dev/null +++ b/Assets/SteamVR/Extras/SteamVR_Teleporter.cs @@ -0,0 +1,98 @@ +using UnityEngine; +using System.Collections; + +public class SteamVR_Teleporter : MonoBehaviour +{ + public enum TeleportType + { + TeleportTypeUseTerrain, + TeleportTypeUseCollider, + TeleportTypeUseZeroY + } + + public bool teleportOnClick = false; + public TeleportType teleportType = TeleportType.TeleportTypeUseZeroY; + + Transform reference + { + get + { + var top = SteamVR_Render.Top(); + return (top != null) ? top.origin : null; + } + } + + void Start() + { + var trackedController = GetComponent(); + if (trackedController == null) + { + trackedController = gameObject.AddComponent(); + } + + trackedController.TriggerClicked += new ClickedEventHandler(DoClick); + + if (teleportType == TeleportType.TeleportTypeUseTerrain) + { + // Start the player at the level of the terrain + var t = reference; + if (t != null) + t.position = new Vector3(t.position.x, Terrain.activeTerrain.SampleHeight(t.position), t.position.z); + } + } + + void DoClick(object sender, ClickedEventArgs e) + { + if (teleportOnClick) + { + // First get the current Transform of the the reference space (i.e. the Play Area, e.g. CameraRig prefab) + var t = reference; + if (t == null) + return; + + // Get the current Y position of the reference space + float refY = t.position.y; + + // Create a plane at the Y position of the Play Area + // Then create a Ray from the origin of the controller in the direction that the controller is pointing + Plane plane = new Plane(Vector3.up, -refY); + Ray ray = new Ray(this.transform.position, transform.forward); + + // Set defaults + bool hasGroundTarget = false; + float dist = 0f; + if (teleportType == TeleportType.TeleportTypeUseTerrain) // If we picked to use the terrain + { + RaycastHit hitInfo; + TerrainCollider tc = Terrain.activeTerrain.GetComponent(); + hasGroundTarget = tc.Raycast(ray, out hitInfo, 1000f); + dist = hitInfo.distance; + } + else if (teleportType == TeleportType.TeleportTypeUseCollider) // If we picked to use the collider + { + RaycastHit hitInfo; + hasGroundTarget = Physics.Raycast(ray, out hitInfo); + dist = hitInfo.distance; + } + else // If we're just staying flat on the current Y axis + { + // Intersect a ray with the plane that was created earlier + // and output the distance along the ray that it intersects + hasGroundTarget = plane.Raycast(ray, out dist); + } + + if (hasGroundTarget) + { + // Get the current Camera (head) position on the ground relative to the world + Vector3 headPosOnGround = new Vector3(SteamVR_Render.Top().head.position.x, refY, SteamVR_Render.Top().head.position.z); + + // We need to translate the reference space along the same vector + // that is between the head's position on the ground and the intersection point on the ground + // i.e. intersectionPoint - headPosOnGround = translateVector + // currentReferencePosition + translateVector = finalPosition + t.position = t.position + (ray.origin + (ray.direction * dist)) - headPosOnGround; + } + } + } +} + diff --git a/Assets/SteamVR/Extras/SteamVR_Teleporter.cs.meta b/Assets/SteamVR/Extras/SteamVR_Teleporter.cs.meta new file mode 100644 index 00000000..8aad8d93 --- /dev/null +++ b/Assets/SteamVR/Extras/SteamVR_Teleporter.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 24c7d7d77dd0d2a4b8e1ad129b170ee3 +timeCreated: 1430337756 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/Extras/SteamVR_TestIK.unity b/Assets/SteamVR/Extras/SteamVR_TestIK.unity new file mode 100644 index 00000000..01eb2531 --- /dev/null +++ b/Assets/SteamVR/Extras/SteamVR_TestIK.unity @@ -0,0 +1,1852 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +SceneSettings: + m_ObjectHideFlags: 0 + m_PVSData: + m_PVSObjectsArray: [] + m_PVSPortalsArray: [] + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 7 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0.44692558, g: 0.49678743, b: 0.57508624, a: 1} +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 7 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_TemporalCoherenceThreshold: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_LightmapEditorSettings: + serializedVersion: 4 + m_Resolution: 2 + m_BakeResolution: 40 + m_TextureWidth: 1024 + m_TextureHeight: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_DirectLightInLightProbes: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 1024 + m_ReflectionCompression: 2 + m_LightingDataAsset: {fileID: 0} + m_RuntimeCPUUsage: 25 +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + accuratePlacement: 0 + minRegionArea: 2 + cellSize: 0.16666667 + manualCellSize: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &70705404 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 70705405} + m_Layer: 0 + m_Name: Shoulder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &70705405 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 70705404} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.50000006} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 518458055} + m_Father: {fileID: 1498619836} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!43 &155501431 +Mesh: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: + serializedVersion: 8 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 24 + topology: 0 + firstVertex: 0 + vertexCount: 8 + localAABB: + m_Center: {x: 0, y: 0.01, z: 0} + m_Extent: {x: 1.9500006, y: 0, z: 1.3500005} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexBuffer: 000001000400010005000400010002000500020006000500020003000600030007000600030000000700000004000700 + m_Skin: [] + m_VertexData: + m_CurrentChannels: 13 + m_VertexCount: 8 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 3 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 12 + format: 0 + dimension: 4 + - stream: 0 + offset: 28 + format: 0 + dimension: 2 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 288 + _typelessdata: 6c66e63f0ad7233c9e9999bf000000000000803f0000803f0000803f00000000000000006c66e6bf0ad7233c9e9999bf000000000000803f0000803f0000803f0000803f000000006c66e6bf0ad7233c9e99993f000000000000803f0000803f0000803f00000000000000006c66e63f0ad7233c9e99993f000000000000803f0000803f0000803f0000803f000000009f99f93f0ad7233cd1ccacbf000000000000803f0000803f00000000000000000000803f9f99f9bf0ad7233cd1ccacbf000000000000803f0000803f000000000000803f0000803f9f99f9bf0ad7233cd1ccac3f000000000000803f0000803f00000000000000000000803f9f99f93f0ad7233cd1ccac3f000000000000803f0000803f000000000000803f0000803f + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: 0, y: 0.01, z: 0} + m_Extent: {x: 1.9500006, y: 0, z: 1.3500005} + m_MeshUsageFlags: 0 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + m_MeshOptimized: 0 +--- !u!1 &377922043 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 377922044} + - 33: {fileID: 377922047} + - 65: {fileID: 377922046} + - 23: {fileID: 377922045} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &377922044 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 377922043} + m_LocalRotation: {x: 0.36186868, y: 0, z: 0, w: 0.9322291} + m_LocalPosition: {x: 0, y: -0.0434, z: -0.108} + m_LocalScale: {x: 0.05, y: 0.1, z: 0.2} + m_Children: [] + m_Father: {fileID: 753936137} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &377922045 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 377922043} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &377922046 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 377922043} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &377922047 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 377922043} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &420826060 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 420826061} + m_Layer: 0 + m_Name: Up + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &420826061 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 420826060} + m_LocalRotation: {x: 0, y: 0, z: 0.7071066, w: -0.70710695} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 753936137} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &518458054 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 518458055} + - 33: {fileID: 518458058} + - 135: {fileID: 518458057} + - 23: {fileID: 518458056} + m_Layer: 0 + m_Name: Sphere + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &518458055 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 518458054} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.06, y: 0.06, z: 0.06} + m_Children: [] + m_Father: {fileID: 70705405} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &518458056 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 518458054} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!135 &518458057 +SphereCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 518458054} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &518458058 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 518458054} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &609705786 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 609705787} + m_Layer: 0 + m_Name: Wrist + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &609705787 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 609705786} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0.024, z: -0.1669} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1236808431} + - {fileID: 980711618} + m_Father: {fileID: 753936137} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &686376158 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 686376159} + - 33: {fileID: 686376162} + - 65: {fileID: 686376161} + - 23: {fileID: 686376160} + m_Layer: 0 + m_Name: Thumb + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &686376159 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 686376158} + m_LocalRotation: {x: 0.09323949, y: 0, z: 0, w: 0.99564373} + m_LocalPosition: {x: 0, y: 0.0303, z: -0.0899} + m_LocalScale: {x: 0.03, y: 0.03, z: 0.1} + m_Children: [] + m_Father: {fileID: 761608423} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &686376160 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 686376158} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &686376161 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 686376158} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &686376162 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 686376158} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &753936136 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 753936137} + - 114: {fileID: 753936138} + m_Layer: 0 + m_Name: Hand + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &753936137 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 753936136} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 377922044} + - {fileID: 1578518029} + - {fileID: 609705787} + - {fileID: 420826061} + m_Father: {fileID: 1110379726} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &753936138 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 753936136} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ea22dba3baf2ecc4d886bf2444444228, type: 3} + m_Name: + m_EditorClassIdentifier: + target: {fileID: 1767194830} + start: {fileID: 609705787} + joint: {fileID: 980711618} + end: {fileID: 2051845785} + poleVector: {fileID: 1205044774} + upVector: {fileID: 420826061} + blendPct: 1 + startXform: {fileID: 0} + jointXform: {fileID: 0} + endXform: {fileID: 0} +--- !u!1 &761608422 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 761608423} + - 114: {fileID: 761608424} + m_Layer: 0 + m_Name: Hand + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &761608423 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 761608422} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 2023982476} + - {fileID: 686376159} + - {fileID: 1636757628} + - {fileID: 1348900984} + m_Father: {fileID: 1110379725} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &761608424 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 761608422} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ea22dba3baf2ecc4d886bf2444444228, type: 3} + m_Name: + m_EditorClassIdentifier: + target: {fileID: 1474147602} + start: {fileID: 1636757628} + joint: {fileID: 1498619836} + end: {fileID: 70705405} + poleVector: {fileID: 2016251417} + upVector: {fileID: 1348900984} + blendPct: 1 + startXform: {fileID: 0} + jointXform: {fileID: 0} + endXform: {fileID: 0} +--- !u!1 &980711617 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 980711618} + m_Layer: 0 + m_Name: Elbow + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &980711618 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 980711617} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.49010003} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 996351045} + - {fileID: 2051845785} + - {fileID: 1438740633} + m_Father: {fileID: 609705787} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &981213534 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 981213535} + - 33: {fileID: 981213538} + - 135: {fileID: 981213537} + - 23: {fileID: 981213536} + m_Layer: 0 + m_Name: Sphere + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &981213535 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 981213534} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.06, y: 0.06, z: 0.06} + m_Children: [] + m_Father: {fileID: 2051845785} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &981213536 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 981213534} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!135 &981213537 +SphereCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 981213534} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &981213538 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 981213534} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &996351044 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 996351045} + - 33: {fileID: 996351048} + - 135: {fileID: 996351047} + - 23: {fileID: 996351046} + m_Layer: 0 + m_Name: Sphere + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &996351045 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 996351044} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.06, y: 0.06, z: 0.06} + m_Children: [] + m_Father: {fileID: 980711618} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &996351046 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 996351044} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!135 &996351047 +SphereCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 996351044} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &996351048 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 996351044} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1001 &1110379724 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 420908, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 420908, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 420908, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 420908, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 420908, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 420908, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 420908, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 420908, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 2395298, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 11453314, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2337482, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 11438774, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 477890, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 477890, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3380982, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_Mesh + value: + objectReference: {fileID: 155501431} + - target: {fileID: 482514, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 478542, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 192944, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 147176, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 11489174, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2082592, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: near clip plane + value: .00999999978 + objectReference: {fileID: 0} + - target: {fileID: 2082592, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: far clip plane + value: 100 + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: 11403694, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + - {fileID: 11438774, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + - {fileID: 11453314, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + m_ParentPrefab: {fileID: 100100000, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + m_IsPrefabParent: 0 +--- !u!4 &1110379725 stripped +Transform: + m_PrefabParentObject: {fileID: 402434, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + m_PrefabInternal: {fileID: 1110379724} +--- !u!4 &1110379726 stripped +Transform: + m_PrefabParentObject: {fileID: 458974, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + m_PrefabInternal: {fileID: 1110379724} +--- !u!4 &1110379727 stripped +Transform: + m_PrefabParentObject: {fileID: 408470, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + m_PrefabInternal: {fileID: 1110379724} +--- !u!1 &1205044773 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1205044774} + m_Layer: 0 + m_Name: ElbowTarget (L) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1205044774 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1205044773} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.684, y: -0.5, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1110379727} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1236808430 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1236808431} + - 33: {fileID: 1236808434} + - 65: {fileID: 1236808433} + - 23: {fileID: 1236808432} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1236808431 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1236808430} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.24010001} + m_LocalScale: {x: 0.03, y: 0.03, z: 0.5} + m_Children: [] + m_Father: {fileID: 609705787} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1236808432 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1236808430} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &1236808433 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1236808430} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1236808434 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1236808430} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1348900983 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1348900984} + m_Layer: 0 + m_Name: Up + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1348900984 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1348900983} + m_LocalRotation: {x: 0, y: 0, z: 0.7071068, w: 0.7071067} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 761608423} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1438740632 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1438740633} + - 33: {fileID: 1438740636} + - 65: {fileID: 1438740635} + - 23: {fileID: 1438740634} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1438740633 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1438740632} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.25000006} + m_LocalScale: {x: 0.03, y: 0.03, z: 0.5} + m_Children: [] + m_Father: {fileID: 980711618} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1438740634 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1438740632} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &1438740635 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1438740632} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1438740636 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1438740632} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1474147601 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1474147602} + m_Layer: 0 + m_Name: ShoulderTarget (R) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1474147602 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1474147601} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.153, y: -0.133, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1110379727} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1498619835 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1498619836} + m_Layer: 0 + m_Name: Elbow + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1498619836 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1498619835} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.49010003} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1930346741} + - {fileID: 70705405} + - {fileID: 1782427842} + m_Father: {fileID: 1636757628} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1569421957 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1569421959} + - 108: {fileID: 1569421958} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1569421958 +Light: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1569421957} + m_Enabled: 1 + serializedVersion: 7 + m_Type: 1 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_Lightmapping: 4 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &1569421959 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1569421957} + m_LocalRotation: {x: 0.40821794, y: -0.23456973, z: 0.109381676, w: 0.87542605} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1578518028 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1578518029} + - 33: {fileID: 1578518032} + - 65: {fileID: 1578518031} + - 23: {fileID: 1578518030} + m_Layer: 0 + m_Name: Thumb + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1578518029 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1578518028} + m_LocalRotation: {x: 0.09323949, y: 0, z: 0, w: 0.99564373} + m_LocalPosition: {x: 0, y: 0.0303, z: -0.0899} + m_LocalScale: {x: 0.03, y: 0.03, z: 0.1} + m_Children: [] + m_Father: {fileID: 753936137} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1578518030 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1578518028} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &1578518031 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1578518028} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1578518032 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1578518028} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1636757627 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1636757628} + m_Layer: 0 + m_Name: Wrist + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1636757628 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1636757627} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0.024, z: -0.1669} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 2047629266} + - {fileID: 1498619836} + m_Father: {fileID: 761608423} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1767194829 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1767194830} + m_Layer: 0 + m_Name: ShoulderTarget (L) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1767194830 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1767194829} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -0.153, y: -0.133, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1110379727} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1782427841 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1782427842} + - 33: {fileID: 1782427845} + - 65: {fileID: 1782427844} + - 23: {fileID: 1782427843} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1782427842 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1782427841} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.25000006} + m_LocalScale: {x: 0.03, y: 0.03, z: 0.5} + m_Children: [] + m_Father: {fileID: 1498619836} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1782427843 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1782427841} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &1782427844 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1782427841} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1782427845 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1782427841} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1930346740 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1930346741} + - 33: {fileID: 1930346744} + - 135: {fileID: 1930346743} + - 23: {fileID: 1930346742} + m_Layer: 0 + m_Name: Sphere + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1930346741 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1930346740} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.06, y: 0.06, z: 0.06} + m_Children: [] + m_Father: {fileID: 1498619836} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1930346742 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1930346740} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!135 &1930346743 +SphereCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1930346740} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1930346744 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1930346740} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2016251416 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2016251417} + m_Layer: 0 + m_Name: ElbowTarget (R) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2016251417 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2016251416} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.684, y: -0.5, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1110379727} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2023982475 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2023982476} + - 33: {fileID: 2023982479} + - 65: {fileID: 2023982478} + - 23: {fileID: 2023982477} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2023982476 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2023982475} + m_LocalRotation: {x: 0.36186868, y: 0, z: 0, w: 0.9322291} + m_LocalPosition: {x: 0, y: -0.0434, z: -0.108} + m_LocalScale: {x: 0.05, y: 0.1, z: 0.2} + m_Children: [] + m_Father: {fileID: 761608423} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &2023982477 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2023982475} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &2023982478 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2023982475} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &2023982479 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2023982475} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2032672589 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2032672593} + - 33: {fileID: 2032672592} + - 64: {fileID: 2032672591} + - 23: {fileID: 2032672590} + m_Layer: 0 + m_Name: Plane + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &2032672590 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2032672589} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!64 &2032672591 +MeshCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2032672589} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Convex: 0 + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &2032672592 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2032672589} + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &2032672593 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2032672589} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2047629265 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2047629266} + - 33: {fileID: 2047629269} + - 65: {fileID: 2047629268} + - 23: {fileID: 2047629267} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2047629266 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2047629265} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.24010001} + m_LocalScale: {x: 0.03, y: 0.03, z: 0.5} + m_Children: [] + m_Father: {fileID: 1636757628} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &2047629267 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2047629265} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &2047629268 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2047629265} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &2047629269 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2047629265} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &2051845784 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2051845785} + m_Layer: 0 + m_Name: Shoulder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2051845785 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2051845784} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.50000006} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 981213535} + m_Father: {fileID: 980711618} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Assets/SteamVR/Extras/SteamVR_TestIK.unity.meta b/Assets/SteamVR/Extras/SteamVR_TestIK.unity.meta new file mode 100644 index 00000000..a31ced77 --- /dev/null +++ b/Assets/SteamVR/Extras/SteamVR_TestIK.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4b6669fb4e4df9c48926f02b694be9d1 +timeCreated: 1437433018 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/Extras/SteamVR_TestThrow.cs b/Assets/SteamVR/Extras/SteamVR_TestThrow.cs new file mode 100644 index 00000000..0dd7a943 --- /dev/null +++ b/Assets/SteamVR/Extras/SteamVR_TestThrow.cs @@ -0,0 +1,58 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +using UnityEngine; +using System.Collections; + +[RequireComponent(typeof(SteamVR_TrackedObject))] +public class SteamVR_TestThrow : MonoBehaviour +{ + public GameObject prefab; + public Rigidbody attachPoint; + + SteamVR_TrackedObject trackedObj; + FixedJoint joint; + + void Awake() + { + trackedObj = GetComponent(); + } + + void FixedUpdate() + { + var device = SteamVR_Controller.Input((int)trackedObj.index); + if (joint == null && device.GetTouchDown(SteamVR_Controller.ButtonMask.Trigger)) + { + var go = GameObject.Instantiate(prefab); + go.transform.position = attachPoint.transform.position; + + joint = go.AddComponent(); + joint.connectedBody = attachPoint; + } + else if (joint != null && device.GetTouchUp(SteamVR_Controller.ButtonMask.Trigger)) + { + var go = joint.gameObject; + var rigidbody = go.GetComponent(); + Object.DestroyImmediate(joint); + joint = null; + Object.Destroy(go, 15.0f); + + // We should probably apply the offset between trackedObj.transform.position + // and device.transform.pos to insert into the physics sim at the correct + // location, however, we would then want to predict ahead the visual representation + // by the same amount we are predicting our render poses. + + var origin = trackedObj.origin ? trackedObj.origin : trackedObj.transform.parent; + if (origin != null) + { + rigidbody.velocity = origin.TransformVector(device.velocity); + rigidbody.angularVelocity = origin.TransformVector(device.angularVelocity); + } + else + { + rigidbody.velocity = device.velocity; + rigidbody.angularVelocity = device.angularVelocity; + } + + rigidbody.maxAngularVelocity = rigidbody.angularVelocity.magnitude; + } + } +} diff --git a/Assets/SteamVR/Extras/SteamVR_TestThrow.cs.meta b/Assets/SteamVR/Extras/SteamVR_TestThrow.cs.meta new file mode 100644 index 00000000..86dcfb0d --- /dev/null +++ b/Assets/SteamVR/Extras/SteamVR_TestThrow.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: ff4f36585e15b1942827390ff1a92502 +timeCreated: 1437513988 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/Extras/SteamVR_TestThrow.unity b/Assets/SteamVR/Extras/SteamVR_TestThrow.unity new file mode 100644 index 00000000..6c7609ad --- /dev/null +++ b/Assets/SteamVR/Extras/SteamVR_TestThrow.unity @@ -0,0 +1,2611 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +SceneSettings: + m_ObjectHideFlags: 0 + m_PVSData: + m_PVSObjectsArray: [] + m_PVSPortalsArray: [] + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: .25 + backfaceThreshold: 100 +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 6 + m_Fog: 0 + m_FogColor: {r: .5, g: .5, b: .5, a: 1} + m_FogMode: 3 + m_FogDensity: .00999999978 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: .211999997, g: .226999998, b: .259000003, a: 1} + m_AmbientEquatorColor: {r: .114, g: .125, b: .133000001, a: 1} + m_AmbientGroundColor: {r: .0469999984, g: .0430000015, b: .0350000001, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: .5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} +--- !u!127 &3 +LevelGameManager: + m_ObjectHideFlags: 0 +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 5 + m_GIWorkflowMode: 0 + m_LightmapsMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_TemporalCoherenceThreshold: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_LightmapEditorSettings: + serializedVersion: 3 + m_Resolution: 2 + m_BakeResolution: 40 + m_TextureWidth: 1024 + m_TextureHeight: 1024 + m_AOMaxDistance: 1 + m_Padding: 2 + m_CompAOExponent: 0 + m_LightmapParameters: {fileID: 0} + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherRayCount: 1024 + m_LightmapSnapshot: {fileID: 0} + m_RuntimeCPUUsage: 25 +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentRadius: .5 + agentHeight: 2 + agentSlope: 45 + agentClimb: .400000006 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + accuratePlacement: 0 + minRegionArea: 2 + cellSize: .166666672 + manualCellSize: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &91495650 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 91495651} + m_Layer: 0 + m_Name: handgrip + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &91495651 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 91495650} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 778085283} + m_Father: {fileID: 1110379725} + m_RootOrder: 4 +--- !u!1 &100616237 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 100616238} + m_Layer: 0 + m_Name: attach + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &100616238 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 100616237} + m_LocalRotation: {x: -.527747691, y: -.527747631, z: -.470619261, w: .470619202} + m_LocalPosition: {x: 5.84125903e-09, y: .00200000009, z: -.0490000322} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 522544805} + m_RootOrder: 0 +--- !u!1 &224368448 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 224368449} + m_Layer: 0 + m_Name: attach + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &224368449 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 224368448} + m_LocalRotation: {x: -.527747691, y: -.527747631, z: -.470619261, w: .470619202} + m_LocalPosition: {x: 5.84125903e-09, y: .00200000009, z: -.0490000322} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1618636410} + m_RootOrder: 0 +--- !u!1 &237089346 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 237089350} + - 33: {fileID: 237089349} + - 65: {fileID: 237089348} + - 23: {fileID: 237089347} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &237089347 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 237089346} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 1 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &237089348 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 237089346} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 0 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &237089349 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 237089346} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &237089350 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 237089346} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: .449999988, y: 0, z: 0} + m_LocalScale: {x: .5, y: .5, z: .5} + m_Children: [] + m_Father: {fileID: 1408731625} + m_RootOrder: 0 +--- !u!1 &246165074 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 246165075} + m_Layer: 0 + m_Name: attach + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &246165075 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 246165074} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1579280151} + m_RootOrder: 0 +--- !u!1 &249653579 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 249653580} + m_Layer: 0 + m_Name: attach + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &249653580 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 249653579} + m_LocalRotation: {x: -.682177067, y: 2.98023224e-08, z: -0, w: .731186986} + m_LocalPosition: {x: 2.26498309e-09, y: .00800000038, z: -.0190000553} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 347994646} + m_RootOrder: 0 +--- !u!1 &320136479 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 320136480} + m_Layer: 0 + m_Name: base + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &320136480 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 320136479} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1753405257} + m_Father: {fileID: 1110379726} + m_RootOrder: 0 +--- !u!1 &332366463 stripped +GameObject: + m_PrefabParentObject: {fileID: 159396, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + m_PrefabInternal: {fileID: 1110379724} +--- !u!114 &332366464 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 332366463} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ff4f36585e15b1942827390ff1a92502, type: 3} + m_Name: + m_EditorClassIdentifier: + prefab: {fileID: 1408731620} + attachPoint: {fileID: 967381576} +--- !u!1 &347994645 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 347994646} + m_Layer: 0 + m_Name: button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &347994646 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 347994645} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 249653580} + m_Father: {fileID: 1110379726} + m_RootOrder: 2 +--- !u!1 &396873262 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 396873263} + m_Layer: 0 + m_Name: attach + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &396873263 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 396873262} + m_LocalRotation: {x: -0, y: .732744873, z: -0, w: .680503547} + m_LocalPosition: {x: .019999994, y: -.0149999997, z: -.0880000666} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1585875541} + m_RootOrder: 0 +--- !u!1 &434395083 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 434395084} + m_Layer: 0 + m_Name: tip + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &434395084 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 434395083} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1820526388} + m_Father: {fileID: 1110379726} + m_RootOrder: 11 +--- !u!1 &451677119 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 451677120} + m_Layer: 0 + m_Name: attach + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &451677120 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 451677119} + m_LocalRotation: {x: -0, y: .732744873, z: -0, w: .680503547} + m_LocalPosition: {x: .019999994, y: -.0149999997, z: -.0880000666} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2030927575} + m_RootOrder: 0 +--- !u!1 &472402302 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 472402303} + m_Layer: 0 + m_Name: lgrip + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &472402303 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 472402302} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 798159700} + m_Father: {fileID: 1110379726} + m_RootOrder: 6 +--- !u!1 &522544804 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 522544805} + m_Layer: 0 + m_Name: trackpad + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &522544805 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 522544804} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -6.98491931e-10, z: -0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 100616238} + m_Father: {fileID: 1110379725} + m_RootOrder: 12 +--- !u!1 &538783392 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 538783393} + m_Layer: 0 + m_Name: status + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &538783393 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 538783392} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 806942303} + m_Father: {fileID: 1110379726} + m_RootOrder: 9 +--- !u!1 &541696034 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 541696035} + m_Layer: 0 + m_Name: sys_button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &541696035 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 541696034} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 2142915234} + m_Father: {fileID: 1110379726} + m_RootOrder: 10 +--- !u!1 &580241142 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 580241143} + m_Layer: 0 + m_Name: attach + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &580241143 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 580241142} + m_LocalRotation: {x: -0, y: -.99997437, z: .0071637705, w: 0} + m_LocalPosition: {x: 2.07424211e-08, y: -.0140000004, z: -.17400004} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2140480525} + m_RootOrder: 0 +--- !u!1 &612488643 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 612488644} + m_Layer: 0 + m_Name: gdc2015 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &612488644 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 612488643} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 892132716} + m_Father: {fileID: 1110379726} + m_RootOrder: 3 +--- !u!1 &734376791 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 734376792} + m_Layer: 0 + m_Name: sys_button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &734376792 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 734376791} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1318643329} + m_Father: {fileID: 1110379725} + m_RootOrder: 10 +--- !u!1 &778085282 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 778085283} + m_Layer: 0 + m_Name: attach + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &778085283 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 778085282} + m_LocalRotation: {x: -.0439419225, y: -0, z: -0, w: .999034107} + m_LocalPosition: {x: 1.1563289e-08, y: .00300000003, z: -.0969998986} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 91495651} + m_RootOrder: 0 +--- !u!1 &792116936 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 792116937} + m_Layer: 0 + m_Name: trackpad_touch + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &792116937 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 792116936} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -6.98491931e-10, z: -0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1585230955} + m_Father: {fileID: 1110379725} + m_RootOrder: 14 +--- !u!1 &798159699 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 798159700} + m_Layer: 0 + m_Name: attach + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &798159700 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 798159699} + m_LocalRotation: {x: -0, y: -.732744873, z: -0, w: .680503547} + m_LocalPosition: {x: -.0199999716, y: -.0149999997, z: -.0880000666} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 472402303} + m_RootOrder: 0 +--- !u!1 &806942302 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 806942303} + m_Layer: 0 + m_Name: attach + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &806942303 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 806942302} + m_LocalRotation: {x: -.742718458, y: 2.98023224e-08, z: -0, w: .669603825} + m_LocalPosition: {x: 1.74045471e-08, y: -.00200000009, z: -.145999923} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 538783393} + m_RootOrder: 0 +--- !u!1 &892132715 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 892132716} + m_Layer: 0 + m_Name: attach + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &892132716 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 892132715} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 612488644} + m_RootOrder: 0 +--- !u!1 &894688665 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 894688666} + m_Layer: 0 + m_Name: lgrip + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &894688666 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 894688665} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 970540920} + m_Father: {fileID: 1110379725} + m_RootOrder: 6 +--- !u!1 &901228863 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 901228864} + m_Layer: 0 + m_Name: attach + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &901228864 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 901228863} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1923457342} + m_RootOrder: 0 +--- !u!1 &903291499 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 903291500} + m_Layer: 0 + m_Name: attach + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &903291500 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 903291499} + m_LocalRotation: {x: -.73805505, y: -0, z: 2.98023259e-08, w: .674740493} + m_LocalPosition: {x: 1.14440883e-08, y: .00300000003, z: -.095999971} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1600772784} + m_RootOrder: 0 +--- !u!1 &911094655 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 911094656} + m_Layer: 0 + m_Name: trigger + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &911094656 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 911094655} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1622007331} + m_Father: {fileID: 1110379726} + m_RootOrder: 15 +--- !u!1 &962880598 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 962880599} + m_Layer: 0 + m_Name: handgrip + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &962880599 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 962880598} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1733931643} + m_Father: {fileID: 1110379726} + m_RootOrder: 4 +--- !u!1 &967381575 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 967381577} + - 54: {fileID: 967381576} + m_Layer: 0 + m_Name: attach + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!54 &967381576 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 967381575} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: .0500000007 + m_UseGravity: 1 + m_IsKinematic: 1 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!4 &967381577 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 967381575} + m_LocalRotation: {x: -.0111879278, y: -0, z: 4.65661287e-10, w: .999937415} + m_LocalPosition: {x: -8.344615e-10, y: -.00999999978, z: .00699997041} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1175970169} + m_RootOrder: 0 +--- !u!1 &970540919 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 970540920} + m_Layer: 0 + m_Name: attach + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &970540920 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 970540919} + m_LocalRotation: {x: -0, y: -.732744873, z: -0, w: .680503547} + m_LocalPosition: {x: -.0199999716, y: -.0149999997, z: -.0880000666} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 894688666} + m_RootOrder: 0 +--- !u!1 &996490431 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 996490432} + m_Layer: 0 + m_Name: trackpad_touch + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &996490432 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 996490431} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -6.98491931e-10, z: -0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1336613104} + m_Father: {fileID: 1110379726} + m_RootOrder: 14 +--- !u!1 &1014847752 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1014847753} + m_Layer: 0 + m_Name: attach + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1014847753 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1014847752} + m_LocalRotation: {x: .668384492, y: 2.98023259e-08, z: -2.98023259e-08, w: .743815958} + m_LocalPosition: {x: 6.07966033e-09, y: -.0390000008, z: -.0509998873} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1822778769} + m_RootOrder: 0 +--- !u!1 &1041982560 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1041982561} + m_Layer: 0 + m_Name: trackpad_scroll_cut + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &1041982561 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1041982560} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 2035615552} + m_Father: {fileID: 1110379725} + m_RootOrder: 13 +--- !u!1 &1072748903 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1072748904} + m_Layer: 0 + m_Name: attach + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1072748904 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1072748903} + m_LocalRotation: {x: -.0439419225, y: -0, z: -0, w: .999034107} + m_LocalPosition: {x: 1.1563289e-08, y: .00300000003, z: -.0969998986} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1849200857} + m_RootOrder: 0 +--- !u!1001 &1110379724 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 420908, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_LocalPosition.x + value: -2.49000001 + objectReference: {fileID: 0} + - target: {fileID: 420908, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 420908, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_LocalPosition.z + value: -1.95000005 + objectReference: {fileID: 0} + - target: {fileID: 420908, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 420908, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_LocalRotation.y + value: .707106829 + objectReference: {fileID: 0} + - target: {fileID: 420908, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 420908, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_LocalRotation.w + value: .707106709 + objectReference: {fileID: 0} + - target: {fileID: 420908, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 2395298, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 11453314, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_Enabled + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2337482, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 11438774, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_Enabled + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 477890, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 477890, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3380982, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_Mesh + value: + objectReference: {fileID: 1605019177} + - target: {fileID: 11489174, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: drawInGame + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 11489174, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 11489174, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: vertices.Array.data[0].x + value: 1.64999974 + objectReference: {fileID: 0} + - target: {fileID: 11489174, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: vertices.Array.data[0].z + value: -.80000025 + objectReference: {fileID: 0} + - target: {fileID: 11489174, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: vertices.Array.data[1].x + value: -1.64999974 + objectReference: {fileID: 0} + - target: {fileID: 11489174, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: vertices.Array.data[1].z + value: -.80000025 + objectReference: {fileID: 0} + - target: {fileID: 11489174, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: vertices.Array.data[2].x + value: -1.64999974 + objectReference: {fileID: 0} + - target: {fileID: 11489174, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: vertices.Array.data[2].z + value: .80000025 + objectReference: {fileID: 0} + - target: {fileID: 11489174, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: vertices.Array.data[3].x + value: 1.64999974 + objectReference: {fileID: 0} + - target: {fileID: 11489174, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: vertices.Array.data[3].z + value: .80000025 + objectReference: {fileID: 0} + - target: {fileID: 11489174, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: vertices.Array.data[4].x + value: 1.79999971 + objectReference: {fileID: 0} + - target: {fileID: 11489174, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: vertices.Array.data[4].z + value: -.950000286 + objectReference: {fileID: 0} + - target: {fileID: 11489174, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: vertices.Array.data[5].x + value: -1.79999971 + objectReference: {fileID: 0} + - target: {fileID: 11489174, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: vertices.Array.data[5].z + value: -.950000286 + objectReference: {fileID: 0} + - target: {fileID: 11489174, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: vertices.Array.data[6].x + value: -1.79999971 + objectReference: {fileID: 0} + - target: {fileID: 11489174, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: vertices.Array.data[6].z + value: .950000286 + objectReference: {fileID: 0} + - target: {fileID: 11489174, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: vertices.Array.data[7].x + value: 1.79999971 + objectReference: {fileID: 0} + - target: {fileID: 11489174, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: vertices.Array.data[7].z + value: .950000286 + objectReference: {fileID: 0} + - target: {fileID: 420908, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 420908, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 420908, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2082592, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: far clip plane + value: 100 + objectReference: {fileID: 0} + - target: {fileID: 2082592, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: near clip plane + value: .0199999996 + objectReference: {fileID: 0} + - target: {fileID: 11453314, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: modelOverride + value: + objectReference: {fileID: 0} + - target: {fileID: 3370552, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_Mesh + value: + objectReference: {fileID: 0} + - target: {fileID: 2395298, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2041284010} + - target: {fileID: 426554, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 402434, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 440048, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 147176, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 192944, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 11417306, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: modelOverride + value: + objectReference: {fileID: 0} + - target: {fileID: 482514, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 11417168, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: modelOverride + value: + objectReference: {fileID: 0} + - target: {fileID: 478542, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2348914, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 1611178522} + m_RemovedComponents: + - {fileID: 11403694, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + - {fileID: 11438774, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + - {fileID: 11453314, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + m_ParentPrefab: {fileID: 100100000, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + m_IsPrefabParent: 0 +--- !u!4 &1110379725 stripped +Transform: + m_PrefabParentObject: {fileID: 478542, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + m_PrefabInternal: {fileID: 1110379724} +--- !u!4 &1110379726 stripped +Transform: + m_PrefabParentObject: {fileID: 482514, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + m_PrefabInternal: {fileID: 1110379724} +--- !u!1 &1110379727 stripped +GameObject: + m_PrefabParentObject: {fileID: 124034, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + m_PrefabInternal: {fileID: 1110379724} +--- !u!114 &1110379728 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1110379727} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ff4f36585e15b1942827390ff1a92502, type: 3} + m_Name: + m_EditorClassIdentifier: + prefab: {fileID: 1408731620} + attachPoint: {fileID: 1820526387} +--- !u!1 &1175970168 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1175970169} + m_Layer: 0 + m_Name: tip + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &1175970169 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1175970168} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 967381577} + m_Father: {fileID: 1110379725} + m_RootOrder: 11 +--- !u!1 &1202305644 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1202305645} + m_Layer: 0 + m_Name: attach + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1202305645 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1202305644} + m_LocalRotation: {x: -.0439419225, y: -0, z: -0, w: .999034107} + m_LocalPosition: {x: 1.1563289e-08, y: .00300000003, z: -.0969998986} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1831616664} + m_RootOrder: 0 +--- !u!1 &1318643328 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1318643329} + m_Layer: 0 + m_Name: attach + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1318643329 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1318643328} + m_LocalRotation: {x: -.736864507, y: -0, z: 2.98023259e-08, w: .676040471} + m_LocalPosition: {x: 1.04904254e-08, y: .00400000019, z: -.0880000666} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 734376792} + m_RootOrder: 0 +--- !u!1 &1335400831 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1335400832} + m_Layer: 0 + m_Name: attach + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1335400832 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1335400831} + m_LocalRotation: {x: -.73805505, y: -0, z: 2.98023259e-08, w: .674740493} + m_LocalPosition: {x: 1.14440883e-08, y: .00300000003, z: -.095999971} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1576117653} + m_RootOrder: 0 +--- !u!1 &1336613103 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1336613104} + m_Layer: 0 + m_Name: attach + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1336613104 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1336613103} + m_LocalRotation: {x: -.527747691, y: -.527747631, z: -.470619261, w: .470619202} + m_LocalPosition: {x: 5.84125903e-09, y: .00200000009, z: -.0490000322} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 996490432} + m_RootOrder: 0 +--- !u!1 &1354867603 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1354867604} + m_Layer: 0 + m_Name: button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &1354867604 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1354867603} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1979134660} + m_Father: {fileID: 1110379725} + m_RootOrder: 2 +--- !u!1 &1408731620 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1408731625} + - 33: {fileID: 1408731624} + - 135: {fileID: 1408731623} + - 23: {fileID: 1408731622} + - 54: {fileID: 1408731621} + m_Layer: 0 + m_Name: Template + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!54 &1408731621 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1408731620} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: .0500000007 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 2 +--- !u!23 &1408731622 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1408731620} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 1 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!135 &1408731623 +SphereCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1408731620} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: .5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &1408731624 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1408731620} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1408731625 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1408731620} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 1.95299888, y: .850000024, z: -0} + m_LocalScale: {x: .100000001, y: .100000001, z: .100000001} + m_Children: + - {fileID: 237089350} + m_Father: {fileID: 0} + m_RootOrder: 3 +--- !u!1 &1409558562 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1409558563} + m_Layer: 0 + m_Name: attach + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1409558563 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1409558562} + m_LocalRotation: {x: -.742718458, y: 2.98023224e-08, z: -0, w: .669603825} + m_LocalPosition: {x: 1.74045471e-08, y: -.00200000009, z: -.145999923} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1621128257} + m_RootOrder: 0 +--- !u!1 &1569421957 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1569421959} + - 108: {fileID: 1569421958} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1569421958 +Light: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1569421957} + m_Enabled: 1 + serializedVersion: 6 + m_Type: 1 + m_Color: {r: 1, g: .956862748, b: .839215696, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_Strength: 1 + m_Bias: .0500000007 + m_NormalBias: .400000006 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_Lightmapping: 4 + m_BounceIntensity: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 + m_AreaSize: {x: 1, y: 1} +--- !u!4 &1569421959 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1569421957} + m_LocalRotation: {x: .408217937, y: -.234569728, z: .109381676, w: .875426054} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 +--- !u!1 &1576117652 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1576117653} + m_Layer: 0 + m_Name: led + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &1576117653 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1576117652} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1335400832} + m_Father: {fileID: 1110379725} + m_RootOrder: 5 +--- !u!1 &1579280150 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1579280151} + m_Layer: 0 + m_Name: gdc2015 + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &1579280151 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1579280150} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 246165075} + m_Father: {fileID: 1110379725} + m_RootOrder: 3 +--- !u!1 &1585230954 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1585230955} + m_Layer: 0 + m_Name: attach + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1585230955 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1585230954} + m_LocalRotation: {x: -.527747691, y: -.527747631, z: -.470619261, w: .470619202} + m_LocalPosition: {x: 5.84125903e-09, y: .00200000009, z: -.0490000322} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 792116937} + m_RootOrder: 0 +--- !u!1 &1585875540 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1585875541} + m_Layer: 0 + m_Name: rgrip + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &1585875541 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1585875540} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 396873263} + m_Father: {fileID: 1110379726} + m_RootOrder: 7 +--- !u!1 &1600772783 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1600772784} + m_Layer: 0 + m_Name: led + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &1600772784 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1600772783} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 903291500} + m_Father: {fileID: 1110379726} + m_RootOrder: 5 +--- !u!43 &1605019177 +Mesh: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: + serializedVersion: 8 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 24 + topology: 0 + firstVertex: 0 + vertexCount: 8 + localAABB: + m_Center: {x: 0, y: .00999999978, z: 0} + m_Extent: {x: 1.1500001, y: 0, z: 1.10000014} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexBuffer: 000004000100010004000500010005000200020005000600020006000300030006000700030007000000000007000400 + m_Skin: [] + m_VertexData: + m_CurrentChannels: 13 + m_VertexCount: 8 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 3 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 12 + format: 0 + dimension: 4 + - stream: 0 + offset: 28 + format: 0 + dimension: 2 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 288 + _typelessdata: 0100803f0ad7233c363373bf000000000000803f0000803f0000803f0000000000000000010080bf0ad7233c363373bf000000000000803f0000803f0000803f0000803f00000000010080bf0ad7233c3633733f000000000000803f0000803f0000803f00000000000000000100803f0ad7233c3633733f000000000000803f0000803f0000803f0000803f000000003433933f0ad7233ccecc8cbf000000000000803f0000803f00000000000000000000803f343393bf0ad7233ccecc8cbf000000000000803f0000803f000000000000803f0000803f343393bf0ad7233ccecc8c3f000000000000803f0000803f00000000000000000000803f3433933f0ad7233ccecc8c3f000000000000803f0000803f000000000000803f0000803f + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: 0, y: .00999999978, z: 0} + m_Extent: {x: 1.1500001, y: 0, z: 1.10000014} + m_MeshUsageFlags: 0 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + m_MeshOptimized: 0 +--- !u!21 &1611178522 +Material: + serializedVersion: 5 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Sprites/Default + m_Shader: {fileID: 10753, guid: 0000000000000000e000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_CustomRenderQueue: -1 + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: PixelSnap + second: 0 + m_Colors: + data: + first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} +--- !u!1 &1618636409 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1618636410} + m_Layer: 0 + m_Name: scroll_wheel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &1618636410 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1618636409} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 224368449} + m_Father: {fileID: 1110379726} + m_RootOrder: 8 +--- !u!1 &1621128256 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1621128257} + m_Layer: 0 + m_Name: status + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &1621128257 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1621128256} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1409558563} + m_Father: {fileID: 1110379725} + m_RootOrder: 9 +--- !u!1 &1622007330 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1622007331} + m_Layer: 0 + m_Name: attach + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1622007331 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1622007330} + m_LocalRotation: {x: .668384492, y: 2.98023259e-08, z: -2.98023259e-08, w: .743815958} + m_LocalPosition: {x: 6.07966033e-09, y: -.0390000008, z: -.0509998873} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 911094656} + m_RootOrder: 0 +--- !u!1 &1709089766 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1709089767} + m_Layer: 0 + m_Name: attach + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1709089767 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1709089766} + m_LocalRotation: {x: -.527747691, y: -.527747631, z: -.470619261, w: .470619202} + m_LocalPosition: {x: 5.84125903e-09, y: .00200000009, z: -.0490000322} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2001529639} + m_RootOrder: 0 +--- !u!1 &1733931642 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1733931643} + m_Layer: 0 + m_Name: attach + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1733931643 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1733931642} + m_LocalRotation: {x: -.0439419225, y: -0, z: -0, w: .999034107} + m_LocalPosition: {x: 1.1563289e-08, y: .00300000003, z: -.0969998986} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 962880599} + m_RootOrder: 0 +--- !u!1 &1753405256 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1753405257} + m_Layer: 0 + m_Name: attach + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1753405257 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1753405256} + m_LocalRotation: {x: -0, y: -.99997437, z: .0071637705, w: 0} + m_LocalPosition: {x: 2.07424211e-08, y: -.0140000004, z: -.17400004} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 320136480} + m_RootOrder: 0 +--- !u!1 &1770332722 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1770332723} + m_Layer: 0 + m_Name: attach + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1770332723 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1770332722} + m_LocalRotation: {x: -.527747691, y: -.527747631, z: -.470619261, w: .470619202} + m_LocalPosition: {x: 5.84125903e-09, y: .00200000009, z: -.0490000322} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1876720479} + m_RootOrder: 0 +--- !u!1 &1820526386 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1820526388} + - 54: {fileID: 1820526387} + m_Layer: 0 + m_Name: attach + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!54 &1820526387 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1820526386} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: .0500000007 + m_UseGravity: 1 + m_IsKinematic: 1 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!4 &1820526388 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1820526386} + m_LocalRotation: {x: -.0111879278, y: -0, z: 4.65661287e-10, w: .999937415} + m_LocalPosition: {x: -8.344615e-10, y: -.00999999978, z: .00699997041} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 434395084} + m_RootOrder: 0 +--- !u!1 &1822778768 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1822778769} + m_Layer: 0 + m_Name: trigger + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &1822778769 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1822778768} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1014847753} + m_Father: {fileID: 1110379725} + m_RootOrder: 15 +--- !u!1 &1831616663 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1831616664} + m_Layer: 0 + m_Name: body + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &1831616664 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1831616663} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1202305645} + m_Father: {fileID: 1110379726} + m_RootOrder: 1 +--- !u!1 &1849200856 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1849200857} + m_Layer: 0 + m_Name: body + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &1849200857 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1849200856} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1072748904} + m_Father: {fileID: 1110379725} + m_RootOrder: 1 +--- !u!1 &1876720478 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1876720479} + m_Layer: 0 + m_Name: scroll_wheel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &1876720479 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1876720478} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1770332723} + m_Father: {fileID: 1110379725} + m_RootOrder: 8 +--- !u!1 &1923457341 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1923457342} + m_Layer: 0 + m_Name: trackpad_scroll_cut + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &1923457342 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1923457341} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 901228864} + m_Father: {fileID: 1110379726} + m_RootOrder: 13 +--- !u!1 &1979134659 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1979134660} + m_Layer: 0 + m_Name: attach + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1979134660 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1979134659} + m_LocalRotation: {x: -.682177067, y: 2.98023224e-08, z: -0, w: .731186986} + m_LocalPosition: {x: 2.26498309e-09, y: .00800000038, z: -.0190000553} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1354867604} + m_RootOrder: 0 +--- !u!1 &2001529638 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2001529639} + m_Layer: 0 + m_Name: trackpad + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &2001529639 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2001529638} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -6.98491931e-10, z: -0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1709089767} + m_Father: {fileID: 1110379726} + m_RootOrder: 12 +--- !u!1 &2030927574 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2030927575} + m_Layer: 0 + m_Name: rgrip + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &2030927575 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2030927574} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 451677120} + m_Father: {fileID: 1110379725} + m_RootOrder: 7 +--- !u!1 &2032672589 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2032672593} + - 33: {fileID: 2032672592} + - 64: {fileID: 2032672591} + - 23: {fileID: 2032672590} + m_Layer: 0 + m_Name: Plane + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 4294967295 + m_IsActive: 1 +--- !u!23 &2032672590 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2032672589} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 1 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!64 &2032672591 +MeshCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2032672589} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Convex: 0 + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &2032672592 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2032672589} + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &2032672593 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2032672589} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 +--- !u!1 &2035615551 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2035615552} + m_Layer: 0 + m_Name: attach + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2035615552 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2035615551} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1041982561} + m_RootOrder: 0 +--- !u!21 &2041284010 +Material: + serializedVersion: 5 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Standard + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_CustomRenderQueue: -1 + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: {} + m_Floats: {} + m_Colors: {} +--- !u!1 &2140480524 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2140480525} + m_Layer: 0 + m_Name: base + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &2140480525 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2140480524} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 580241143} + m_Father: {fileID: 1110379725} + m_RootOrder: 0 +--- !u!1 &2142915233 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2142915234} + m_Layer: 0 + m_Name: attach + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2142915234 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2142915233} + m_LocalRotation: {x: -.736864507, y: -0, z: 2.98023259e-08, w: .676040471} + m_LocalPosition: {x: 1.04904254e-08, y: .00400000019, z: -.0880000666} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 541696035} + m_RootOrder: 0 diff --git a/Assets/SteamVR/Extras/SteamVR_TestThrow.unity.meta b/Assets/SteamVR/Extras/SteamVR_TestThrow.unity.meta new file mode 100644 index 00000000..3cb5fc84 --- /dev/null +++ b/Assets/SteamVR/Extras/SteamVR_TestThrow.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0d936163b5e9a5047b5e4ba5afaf5126 +timeCreated: 1437513966 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/Extras/SteamVR_TestTrackedCamera.cs b/Assets/SteamVR/Extras/SteamVR_TestTrackedCamera.cs new file mode 100644 index 00000000..0d24ae52 --- /dev/null +++ b/Assets/SteamVR/Extras/SteamVR_TestTrackedCamera.cs @@ -0,0 +1,84 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +using UnityEngine; + +public class SteamVR_TestTrackedCamera : MonoBehaviour +{ + public Material material; + public Transform target; + public bool undistorted = true; + public bool cropped = true; + + void OnEnable() + { + // The video stream must be symmetrically acquired and released in + // order to properly disable the stream once there are no consumers. + var source = SteamVR_TrackedCamera.Source(undistorted); + source.Acquire(); + + // Auto-disable if no camera is present. + if (!source.hasCamera) + enabled = false; + } + + void OnDisable() + { + // Clear the texture when no longer active. + material.mainTexture = null; + + // The video stream must be symmetrically acquired and released in + // order to properly disable the stream once there are no consumers. + var source = SteamVR_TrackedCamera.Source(undistorted); + source.Release(); + } + + void Update() + { + var source = SteamVR_TrackedCamera.Source(undistorted); + var texture = source.texture; + if (texture == null) + { + return; + } + + // Apply the latest texture to the material. This must be performed + // every frame since the underlying texture is actually part of a ring + // buffer which is updated in lock-step with its associated pose. + // (You actually really only need to call any of the accessors which + // internally call Update on the SteamVR_TrackedCamera.VideoStreamTexture). + material.mainTexture = texture; + + // Adjust the height of the quad based on the aspect to keep the texels square. + var aspect = (float)texture.width / texture.height; + + // The undistorted video feed has 'bad' areas near the edges where the original + // square texture feed is stretched to undo the fisheye from the lens. + // Therefore, you'll want to crop it to the specified frameBounds to remove this. + if (cropped) + { + var bounds = source.frameBounds; + material.mainTextureOffset = new Vector2(bounds.uMin, bounds.vMin); + + var du = bounds.uMax - bounds.uMin; + var dv = bounds.vMax - bounds.vMin; + material.mainTextureScale = new Vector2(du, dv); + + aspect *= Mathf.Abs(du / dv); + } + else + { + material.mainTextureOffset = Vector2.zero; + material.mainTextureScale = new Vector2(1, -1); + } + + target.localScale = new Vector3(1, 1.0f / aspect, 1); + + // Apply the pose that this frame was recorded at. + if (source.hasTracking) + { + var t = source.transform; + target.localPosition = t.pos; + target.localRotation = t.rot; + } + } +} + diff --git a/Assets/SteamVR/Extras/SteamVR_TestTrackedCamera.cs.meta b/Assets/SteamVR/Extras/SteamVR_TestTrackedCamera.cs.meta new file mode 100644 index 00000000..062ae1ed --- /dev/null +++ b/Assets/SteamVR/Extras/SteamVR_TestTrackedCamera.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8b18b36a995ecb04599f35c2741be8d5 +timeCreated: 1465946679 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/Extras/SteamVR_TestTrackedCamera.mat b/Assets/SteamVR/Extras/SteamVR_TestTrackedCamera.mat new file mode 100644 index 00000000..ac7fe86d --- /dev/null +++ b/Assets/SteamVR/Extras/SteamVR_TestTrackedCamera.mat @@ -0,0 +1,127 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: SteamVR_TestTrackedCamera + m_Shader: {fileID: 10752, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _EMISSION + m_LightmapFlags: 1 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + - first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _MainTex + second: + m_Texture: {fileID: 0} + m_Scale: {x: 0.5, y: -0.49999994} + m_Offset: {x: 0.25, y: 0.75} + - first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - first: + name: _BumpScale + second: 1 + - first: + name: _Cutoff + second: 0.5 + - first: + name: _DetailNormalMapScale + second: 1 + - first: + name: _DstBlend + second: 0 + - first: + name: _GlossMapScale + second: 1 + - first: + name: _Glossiness + second: 0.5 + - first: + name: _GlossyReflections + second: 1 + - first: + name: _Metallic + second: 0 + - first: + name: _Mode + second: 0 + - first: + name: _OcclusionStrength + second: 1 + - first: + name: _Parallax + second: 0.02 + - first: + name: _SmoothnessTextureChannel + second: 0 + - first: + name: _SpecularHighlights + second: 1 + - first: + name: _SrcBlend + second: 1 + - first: + name: _UVSec + second: 0 + - first: + name: _ZWrite + second: 1 + m_Colors: + - first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} + - first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} diff --git a/Assets/SteamVR/Extras/SteamVR_TestTrackedCamera.mat.meta b/Assets/SteamVR/Extras/SteamVR_TestTrackedCamera.mat.meta new file mode 100644 index 00000000..f8611eb8 --- /dev/null +++ b/Assets/SteamVR/Extras/SteamVR_TestTrackedCamera.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 99ee8d48ccf36264e9d9a72baa681249 +timeCreated: 1465950289 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/Extras/SteamVR_TestTrackedCamera.unity b/Assets/SteamVR/Extras/SteamVR_TestTrackedCamera.unity new file mode 100644 index 00000000..a09f52f6 --- /dev/null +++ b/Assets/SteamVR/Extras/SteamVR_TestTrackedCamera.unity @@ -0,0 +1,749 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +SceneSettings: + m_ObjectHideFlags: 0 + m_PVSData: + m_PVSObjectsArray: [] + m_PVSPortalsArray: [] + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 6 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 6 + m_GIWorkflowMode: 0 + m_LightmapsMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_TemporalCoherenceThreshold: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_LightmapEditorSettings: + serializedVersion: 3 + m_Resolution: 2 + m_BakeResolution: 40 + m_TextureWidth: 1024 + m_TextureHeight: 1024 + m_AOMaxDistance: 1 + m_Padding: 2 + m_CompAOExponent: 0 + m_LightmapParameters: {fileID: 0} + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherRayCount: 1024 + m_ReflectionCompression: 2 + m_LightingDataAsset: {fileID: 0} + m_RuntimeCPUUsage: 25 +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + accuratePlacement: 0 + minRegionArea: 2 + cellSize: 0.16666667 + manualCellSize: 0 + m_NavMeshData: {fileID: 0} +--- !u!1001 &1110379724 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 420908, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_LocalPosition.x + value: -2.49 + objectReference: {fileID: 0} + - target: {fileID: 420908, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 420908, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_LocalPosition.z + value: -1.95 + objectReference: {fileID: 0} + - target: {fileID: 420908, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 420908, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_LocalRotation.y + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 420908, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 420908, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_LocalRotation.w + value: 0.7071067 + objectReference: {fileID: 0} + - target: {fileID: 420908, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 2395298, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 11453314, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_Enabled + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2337482, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 11438774, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_Enabled + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 477890, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 477890, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 3380982, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_Mesh + value: + objectReference: {fileID: 1186597620} + - target: {fileID: 11489174, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: drawInGame + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 11489174, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: size + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 11489174, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: vertices.Array.data[0].x + value: 1.64999974 + objectReference: {fileID: 0} + - target: {fileID: 11489174, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: vertices.Array.data[0].z + value: -.80000025 + objectReference: {fileID: 0} + - target: {fileID: 11489174, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: vertices.Array.data[1].x + value: -1.64999974 + objectReference: {fileID: 0} + - target: {fileID: 11489174, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: vertices.Array.data[1].z + value: -.80000025 + objectReference: {fileID: 0} + - target: {fileID: 11489174, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: vertices.Array.data[2].x + value: -1.64999974 + objectReference: {fileID: 0} + - target: {fileID: 11489174, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: vertices.Array.data[2].z + value: .80000025 + objectReference: {fileID: 0} + - target: {fileID: 11489174, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: vertices.Array.data[3].x + value: 1.64999974 + objectReference: {fileID: 0} + - target: {fileID: 11489174, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: vertices.Array.data[3].z + value: .80000025 + objectReference: {fileID: 0} + - target: {fileID: 11489174, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: vertices.Array.data[4].x + value: 1.79999971 + objectReference: {fileID: 0} + - target: {fileID: 11489174, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: vertices.Array.data[4].z + value: -.950000286 + objectReference: {fileID: 0} + - target: {fileID: 11489174, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: vertices.Array.data[5].x + value: -1.79999971 + objectReference: {fileID: 0} + - target: {fileID: 11489174, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: vertices.Array.data[5].z + value: -.950000286 + objectReference: {fileID: 0} + - target: {fileID: 11489174, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: vertices.Array.data[6].x + value: -1.79999971 + objectReference: {fileID: 0} + - target: {fileID: 11489174, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: vertices.Array.data[6].z + value: .950000286 + objectReference: {fileID: 0} + - target: {fileID: 11489174, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: vertices.Array.data[7].x + value: 1.79999971 + objectReference: {fileID: 0} + - target: {fileID: 11489174, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: vertices.Array.data[7].z + value: .950000286 + objectReference: {fileID: 0} + - target: {fileID: 420908, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_LocalScale.x + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 420908, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_LocalScale.y + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 420908, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_LocalScale.z + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2082592, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: far clip plane + value: 100 + objectReference: {fileID: 0} + - target: {fileID: 2082592, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: near clip plane + value: .0199999996 + objectReference: {fileID: 0} + - target: {fileID: 11453314, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: modelOverride + value: + objectReference: {fileID: 0} + - target: {fileID: 3370552, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_Mesh + value: + objectReference: {fileID: 0} + - target: {fileID: 2395298, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2041284010} + - target: {fileID: 426554, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_RootOrder + value: 4 + objectReference: {fileID: 0} + - target: {fileID: 402434, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 440048, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 147176, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 192944, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 11417306, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: modelOverride + value: + objectReference: {fileID: 0} + - target: {fileID: 482514, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 482514, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_LocalPosition.y + value: 0.264 + objectReference: {fileID: 0} + - target: {fileID: 11417168, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: modelOverride + value: + objectReference: {fileID: 0} + - target: {fileID: 478542, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2348914, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 1862156363} + m_RemovedComponents: + - {fileID: 11403694, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + - {fileID: 11438774, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + - {fileID: 11453314, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + - {fileID: 11420968, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + m_ParentPrefab: {fileID: 100100000, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + m_IsPrefabParent: 0 +--- !u!43 &1186597620 +Mesh: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: + serializedVersion: 8 + m_SubMeshes: + - serializedVersion: 2 + firstByte: 0 + indexCount: 24 + topology: 0 + firstVertex: 0 + vertexCount: 8 + localAABB: + m_Center: {x: 0, y: 0.01, z: 0} + m_Extent: {x: 1.7000004, y: 0, z: 1.3000007} + m_Shapes: + vertices: [] + shapes: [] + channels: [] + fullWeights: [] + m_BindPose: [] + m_BoneNameHashes: + m_RootBoneNameHash: 0 + m_MeshCompression: 0 + m_IsReadable: 1 + m_KeepVertices: 1 + m_KeepIndices: 1 + m_IndexBuffer: 000004000100010004000500010005000200020005000600020006000300030006000700030007000000000007000400 + m_Skin: [] + m_VertexData: + m_CurrentChannels: 13 + m_VertexCount: 8 + m_Channels: + - stream: 0 + offset: 0 + format: 0 + dimension: 3 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 12 + format: 0 + dimension: 4 + - stream: 0 + offset: 28 + format: 0 + dimension: 2 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + - stream: 0 + offset: 0 + format: 0 + dimension: 0 + m_DataSize: 288 + _typelessdata: 6a66c63f0ad7233c393393bf000000000000803f0000803f0000803f00000000000000006a66c6bf0ad7233c393393bf000000000000803f0000803f0000803f0000803f000000006a66c6bf0ad7233c3933933f000000000000803f0000803f0000803f00000000000000006a66c63f0ad7233c3933933f000000000000803f0000803f0000803f0000803f000000009d99d93f0ad7233c6c66a6bf000000000000803f0000803f00000000000000000000803f9d99d9bf0ad7233c6c66a6bf000000000000803f0000803f000000000000803f0000803f9d99d9bf0ad7233c6c66a63f000000000000803f0000803f00000000000000000000803f9d99d93f0ad7233c6c66a63f000000000000803f0000803f000000000000803f0000803f + m_CompressedMesh: + m_Vertices: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_UV: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Normals: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Tangents: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_Weights: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_NormalSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_TangentSigns: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_FloatColors: + m_NumItems: 0 + m_Range: 0 + m_Start: 0 + m_Data: + m_BitSize: 0 + m_BoneIndices: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_Triangles: + m_NumItems: 0 + m_Data: + m_BitSize: 0 + m_UVInfo: 0 + m_LocalAABB: + m_Center: {x: 0, y: 0.01, z: 0} + m_Extent: {x: 1.7000004, y: 0, z: 1.3000007} + m_MeshUsageFlags: 0 + m_BakedConvexCollisionMesh: + m_BakedTriangleCollisionMesh: + m_MeshOptimized: 0 +--- !u!1 &1569421957 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1569421959} + - 108: {fileID: 1569421958} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1569421958 +Light: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1569421957} + m_Enabled: 1 + serializedVersion: 6 + m_Type: 1 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_Lightmapping: 4 + m_BounceIntensity: 1 + m_ShadowRadius: 0 + m_ShadowAngle: 0 + m_AreaSize: {x: 1, y: 1} +--- !u!4 &1569421959 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1569421957} + m_LocalRotation: {x: 0.40821794, y: -0.23456973, z: 0.109381676, w: 0.87542605} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 +--- !u!4 &1779605316 stripped +Transform: + m_PrefabParentObject: {fileID: 420908, guid: 4d293c8e162f3874b982baadd71153d2, type: 2} + m_PrefabInternal: {fileID: 1110379724} +--- !u!1 &1824250565 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1824250566} + - 33: {fileID: 1824250569} + - 64: {fileID: 1824250568} + - 23: {fileID: 1824250567} + m_Layer: 0 + m_Name: Quad + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1824250566 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1824250565} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 1} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 1951799181} + m_RootOrder: 0 +--- !u!23 &1824250567 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1824250565} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: 99ee8d48ccf36264e9d9a72baa681249, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 1 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!64 &1824250568 +MeshCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1824250565} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Convex: 0 + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &1824250569 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1824250565} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!21 &1862156363 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Sprites/Default + m_Shader: {fileID: 10753, guid: 0000000000000000e000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: PixelSnap + second: 0 + m_Colors: + data: + first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} +--- !u!1 &1951799180 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1951799181} + - 114: {fileID: 1951799182} + m_Layer: 0 + m_Name: TrackedCamera + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1951799181 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1951799180} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 2, y: 2, z: 2} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1824250566} + m_Father: {fileID: 1779605316} + m_RootOrder: 3 +--- !u!114 &1951799182 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1951799180} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8b18b36a995ecb04599f35c2741be8d5, type: 3} + m_Name: + m_EditorClassIdentifier: + material: {fileID: 2100000, guid: 99ee8d48ccf36264e9d9a72baa681249, type: 2} + target: {fileID: 1951799181} + undistorted: 1 + cropped: 1 +--- !u!1 &2032672589 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 2032672593} + - 33: {fileID: 2032672592} + - 64: {fileID: 2032672591} + - 23: {fileID: 2032672590} + m_Layer: 0 + m_Name: Plane + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 4294967295 + m_IsActive: 1 +--- !u!23 &2032672590 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2032672589} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 1 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!64 &2032672591 +MeshCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2032672589} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Convex: 0 + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &2032672592 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2032672589} + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &2032672593 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2032672589} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 +--- !u!21 &2041284010 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Standard + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: {} + m_Floats: {} + m_Colors: {} diff --git a/Assets/SteamVR/Extras/SteamVR_TestTrackedCamera.unity.meta b/Assets/SteamVR/Extras/SteamVR_TestTrackedCamera.unity.meta new file mode 100644 index 00000000..d3eb9087 --- /dev/null +++ b/Assets/SteamVR/Extras/SteamVR_TestTrackedCamera.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7fb811b0ffe615b4dbf1d5e6ced385fd +timeCreated: 1464227836 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/Extras/SteamVR_TrackedController.cs b/Assets/SteamVR/Extras/SteamVR_TrackedController.cs new file mode 100644 index 00000000..5556bbef --- /dev/null +++ b/Assets/SteamVR/Extras/SteamVR_TrackedController.cs @@ -0,0 +1,250 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +using UnityEngine; +using Valve.VR; + +public struct ClickedEventArgs +{ + public uint controllerIndex; + public uint flags; + public float padX, padY; +} + +public delegate void ClickedEventHandler(object sender, ClickedEventArgs e); + +public class SteamVR_TrackedController : MonoBehaviour +{ + public uint controllerIndex; + public VRControllerState_t controllerState; + public bool triggerPressed = false; + public bool steamPressed = false; + public bool menuPressed = false; + public bool padPressed = false; + public bool padTouched = false; + public bool gripped = false; + + public event ClickedEventHandler MenuButtonClicked; + public event ClickedEventHandler MenuButtonUnclicked; + public event ClickedEventHandler TriggerClicked; + public event ClickedEventHandler TriggerUnclicked; + public event ClickedEventHandler SteamClicked; + public event ClickedEventHandler PadClicked; + public event ClickedEventHandler PadUnclicked; + public event ClickedEventHandler PadTouched; + public event ClickedEventHandler PadUntouched; + public event ClickedEventHandler Gripped; + public event ClickedEventHandler Ungripped; + + // Use this for initialization + void Start() + { + if (this.GetComponent() == null) + { + gameObject.AddComponent(); + } + + if (controllerIndex != 0) + { + this.GetComponent().index = (SteamVR_TrackedObject.EIndex)controllerIndex; + if (this.GetComponent() != null) + { + this.GetComponent().index = (SteamVR_TrackedObject.EIndex)controllerIndex; + } + } + else + { + controllerIndex = (uint) this.GetComponent().index; + } + } + + public void SetDeviceIndex(int index) + { + this.controllerIndex = (uint) index; + } + + public virtual void OnTriggerClicked(ClickedEventArgs e) + { + if (TriggerClicked != null) + TriggerClicked(this, e); + } + + public virtual void OnTriggerUnclicked(ClickedEventArgs e) + { + if (TriggerUnclicked != null) + TriggerUnclicked(this, e); + } + + public virtual void OnMenuClicked(ClickedEventArgs e) + { + if (MenuButtonClicked != null) + MenuButtonClicked(this, e); + } + + public virtual void OnMenuUnclicked(ClickedEventArgs e) + { + if (MenuButtonUnclicked != null) + MenuButtonUnclicked(this, e); + } + + public virtual void OnSteamClicked(ClickedEventArgs e) + { + if (SteamClicked != null) + SteamClicked(this, e); + } + + public virtual void OnPadClicked(ClickedEventArgs e) + { + if (PadClicked != null) + PadClicked(this, e); + } + + public virtual void OnPadUnclicked(ClickedEventArgs e) + { + if (PadUnclicked != null) + PadUnclicked(this, e); + } + + public virtual void OnPadTouched(ClickedEventArgs e) + { + if (PadTouched != null) + PadTouched(this, e); + } + + public virtual void OnPadUntouched(ClickedEventArgs e) + { + if (PadUntouched != null) + PadUntouched(this, e); + } + + public virtual void OnGripped(ClickedEventArgs e) + { + if (Gripped != null) + Gripped(this, e); + } + + public virtual void OnUngripped(ClickedEventArgs e) + { + if (Ungripped != null) + Ungripped(this, e); + } + + // Update is called once per frame + void Update() + { + var system = OpenVR.System; + if (system != null && system.GetControllerState(controllerIndex, ref controllerState, (uint)System.Runtime.InteropServices.Marshal.SizeOf(typeof(VRControllerState_t)))) + { + ulong trigger = controllerState.ulButtonPressed & (1UL << ((int)EVRButtonId.k_EButton_SteamVR_Trigger)); + if (trigger > 0L && !triggerPressed) + { + triggerPressed = true; + ClickedEventArgs e; + e.controllerIndex = controllerIndex; + e.flags = (uint)controllerState.ulButtonPressed; + e.padX = controllerState.rAxis0.x; + e.padY = controllerState.rAxis0.y; + OnTriggerClicked(e); + + } + else if (trigger == 0L && triggerPressed) + { + triggerPressed = false; + ClickedEventArgs e; + e.controllerIndex = controllerIndex; + e.flags = (uint)controllerState.ulButtonPressed; + e.padX = controllerState.rAxis0.x; + e.padY = controllerState.rAxis0.y; + OnTriggerUnclicked(e); + } + + ulong grip = controllerState.ulButtonPressed & (1UL << ((int)EVRButtonId.k_EButton_Grip)); + if (grip > 0L && !gripped) + { + gripped = true; + ClickedEventArgs e; + e.controllerIndex = controllerIndex; + e.flags = (uint)controllerState.ulButtonPressed; + e.padX = controllerState.rAxis0.x; + e.padY = controllerState.rAxis0.y; + OnGripped(e); + + } + else if (grip == 0L && gripped) + { + gripped = false; + ClickedEventArgs e; + e.controllerIndex = controllerIndex; + e.flags = (uint)controllerState.ulButtonPressed; + e.padX = controllerState.rAxis0.x; + e.padY = controllerState.rAxis0.y; + OnUngripped(e); + } + + ulong pad = controllerState.ulButtonPressed & (1UL << ((int)EVRButtonId.k_EButton_SteamVR_Touchpad)); + if (pad > 0L && !padPressed) + { + padPressed = true; + ClickedEventArgs e; + e.controllerIndex = controllerIndex; + e.flags = (uint)controllerState.ulButtonPressed; + e.padX = controllerState.rAxis0.x; + e.padY = controllerState.rAxis0.y; + OnPadClicked(e); + } + else if (pad == 0L && padPressed) + { + padPressed = false; + ClickedEventArgs e; + e.controllerIndex = controllerIndex; + e.flags = (uint)controllerState.ulButtonPressed; + e.padX = controllerState.rAxis0.x; + e.padY = controllerState.rAxis0.y; + OnPadUnclicked(e); + } + + ulong menu = controllerState.ulButtonPressed & (1UL << ((int)EVRButtonId.k_EButton_ApplicationMenu)); + if (menu > 0L && !menuPressed) + { + menuPressed = true; + ClickedEventArgs e; + e.controllerIndex = controllerIndex; + e.flags = (uint)controllerState.ulButtonPressed; + e.padX = controllerState.rAxis0.x; + e.padY = controllerState.rAxis0.y; + OnMenuClicked(e); + } + else if (menu == 0L && menuPressed) + { + menuPressed = false; + ClickedEventArgs e; + e.controllerIndex = controllerIndex; + e.flags = (uint)controllerState.ulButtonPressed; + e.padX = controllerState.rAxis0.x; + e.padY = controllerState.rAxis0.y; + OnMenuUnclicked(e); + } + + pad = controllerState.ulButtonTouched & (1UL << ((int)EVRButtonId.k_EButton_SteamVR_Touchpad)); + if (pad > 0L && !padTouched) + { + padTouched = true; + ClickedEventArgs e; + e.controllerIndex = controllerIndex; + e.flags = (uint)controllerState.ulButtonPressed; + e.padX = controllerState.rAxis0.x; + e.padY = controllerState.rAxis0.y; + OnPadTouched(e); + + } + else if (pad == 0L && padTouched) + { + padTouched = false; + ClickedEventArgs e; + e.controllerIndex = controllerIndex; + e.flags = (uint)controllerState.ulButtonPressed; + e.padX = controllerState.rAxis0.x; + e.padY = controllerState.rAxis0.y; + OnPadUntouched(e); + } + } + } +} diff --git a/Assets/SteamVR/Extras/SteamVR_TrackedController.cs.meta b/Assets/SteamVR/Extras/SteamVR_TrackedController.cs.meta new file mode 100644 index 00000000..7cc72d01 --- /dev/null +++ b/Assets/SteamVR/Extras/SteamVR_TrackedController.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 7346a42905a29b347b1f492e8ad7b49f +timeCreated: 1430337756 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/InteractionSystem.meta b/Assets/SteamVR/InteractionSystem.meta new file mode 100644 index 00000000..f510efdd --- /dev/null +++ b/Assets/SteamVR/InteractionSystem.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: c8941a9f98c35d84cb19a5e044467de9 +folderAsset: yes +timeCreated: 1479762244 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/InteractionSystem/Core.meta b/Assets/SteamVR/InteractionSystem/Core.meta new file mode 100644 index 00000000..7cb2055d --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 1ab2780fe1da2544b86a1020e5f638e2 +folderAsset: yes +timeCreated: 1479762244 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/InteractionSystem/Core/Icons.meta b/Assets/SteamVR/InteractionSystem/Core/Icons.meta new file mode 100644 index 00000000..5c73e6b3 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Icons.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 1fcf8377413b60c44afff7b2e4efd8f7 +folderAsset: yes +timeCreated: 1482867667 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system.png b/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system.png new file mode 100644 index 0000000000000000000000000000000000000000..54f15940bec0956db1ee09aa2c586acfbcbe7262 GIT binary patch literal 14839 zcmV004&%004{+008|`004nN004b?008NW002DY000@xb3BE2000U( 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 literal 0 HcmV?d00001 diff --git a/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system.png.meta b/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system.png.meta new file mode 100644 index 00000000..b83d41e6 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system.png.meta @@ -0,0 +1,59 @@ +fileFormatVersion: 2 +guid: b93fe5c516cf6ed4b9153ec790f856e2 +timeCreated: 1484264198 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + allowsAlphaSplitting: 0 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_feet.png b/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_feet.png new file mode 100644 index 0000000000000000000000000000000000000000..8c279c0e28772b3d41357669c01b347ed722fe0d GIT binary patch literal 11011 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 literal 0 HcmV?d00001 diff --git a/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_feet.png.meta b/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_feet.png.meta new file mode 100644 index 00000000..cf03fc94 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_feet.png.meta @@ -0,0 +1,55 @@ +fileFormatVersion: 2 +guid: 032fb1710098a1d47ad34d72e90f714a +timeCreated: 1435940722 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_left_hand.png b/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_left_hand.png new file mode 100644 index 0000000000000000000000000000000000000000..f1b7984fe489328d2f2075f412b3f68bcf68cb2e GIT binary patch literal 10034 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
tpR4Irs9lX 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 IM6N<$f}3q>bpQYW literal 0 HcmV?d00001 diff --git a/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_left_hand.png.meta b/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_left_hand.png.meta new file mode 100644 index 00000000..fd76cfa2 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_left_hand.png.meta @@ -0,0 +1,55 @@ +fileFormatVersion: 2 +guid: 27f3faef5a63db84c9cbac06e94ab7b3 +timeCreated: 1435940722 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_left_hand_question.png b/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_left_hand_question.png new file mode 100644 index 0000000000000000000000000000000000000000..cca593fbfa10c6884744eda883ddfee03944edf3 GIT binary patch literal 11809 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 P00000NkvXXu0mjfRuklq literal 0 HcmV?d00001 diff --git a/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_left_hand_question.png.meta b/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_left_hand_question.png.meta new file mode 100644 index 00000000..551713b7 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_left_hand_question.png.meta @@ -0,0 +1,55 @@ +fileFormatVersion: 2 +guid: 6789d499b24f8964c8bb06e21008e546 +timeCreated: 1435940722 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_right_hand.png b/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_right_hand.png new file mode 100644 index 0000000000000000000000000000000000000000..57d9bed677e0d4afab0f393141f14ad02c85ab5c GIT binary patch literal 10163 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 literal 0 HcmV?d00001 diff --git a/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_right_hand.png.meta b/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_right_hand.png.meta new file mode 100644 index 00000000..a193a69e --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_right_hand.png.meta @@ -0,0 +1,55 @@ +fileFormatVersion: 2 +guid: 1acda2a2584a8fb4683ea56799b27fa0 +timeCreated: 1435940722 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_right_hand_question.png b/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_right_hand_question.png new file mode 100644 index 0000000000000000000000000000000000000000..74d7245e6ef984c08449d48ca4398b2aae0d9e2d GIT binary patch literal 11971 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 VR_B?2lKlVx002ovPDHLkV1h^2=CJ?( literal 0 HcmV?d00001 diff --git a/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_right_hand_question.png.meta b/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_right_hand_question.png.meta new file mode 100644 index 00000000..9725e1d8 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_right_hand_question.png.meta @@ -0,0 +1,55 @@ +fileFormatVersion: 2 +guid: 90173f9e9e795f74ca97ccc52fe410cd +timeCreated: 1435940723 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 8 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_unknown_hand.png b/Assets/SteamVR/InteractionSystem/Core/Icons/vr_interaction_system_unknown_hand.png new file mode 100644 index 0000000000000000000000000000000000000000..c42e1a03260457b8207f3cfaeebde4a5329496ae GIT binary patch literal 13315 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 qeIiQ$ufXK@EdgKT$(); + } + + + //------------------------------------------------- + void FixedUpdate() + { + float distanceFromFloor = Vector3.Dot( head.localPosition, Vector3.up ); + capsuleCollider.height = Mathf.Max( capsuleCollider.radius, distanceFromFloor ); + transform.localPosition = head.localPosition - 0.5f * distanceFromFloor * Vector3.up; + } + } +} diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/BodyCollider.cs.meta b/Assets/SteamVR/InteractionSystem/Core/Scripts/BodyCollider.cs.meta new file mode 100644 index 00000000..280704a2 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/BodyCollider.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 1731d642c0b250b48bb8cdfb153d9792 +timeCreated: 1434649753 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: b93fe5c516cf6ed4b9153ec790f856e2, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/CircularDrive.cs b/Assets/SteamVR/InteractionSystem/Core/Scripts/CircularDrive.cs new file mode 100644 index 00000000..b24d9446 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/CircularDrive.cs @@ -0,0 +1,529 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Interactable that can be used to move in a circular motion +// +//============================================================================= + +using UnityEngine; +using UnityEngine.Events; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + + //------------------------------------------------------------------------- + [RequireComponent( typeof( Interactable ) )] + public class CircularDrive : MonoBehaviour + { + public enum Axis_t + { + XAxis, + YAxis, + ZAxis + }; + + [Tooltip( "The axis around which the circular drive will rotate in local space" )] + public Axis_t axisOfRotation = Axis_t.XAxis; + + [Tooltip( "Child GameObject which has the Collider component to initiate interaction, only needs to be set if there is more than one Collider child" )] + public Collider childCollider = null; + + [Tooltip( "A LinearMapping component to drive, if not specified one will be dynamically added to this GameObject" )] + public LinearMapping linearMapping; + + [Tooltip( "If true, the drive will stay manipulating as long as the button is held down, if false, it will stop if the controller moves out of the collider" )] + public bool hoverLock = false; + + [HeaderAttribute( "Limited Rotation" )] + [Tooltip( "If true, the rotation will be limited to [minAngle, maxAngle], if false, the rotation is unlimited" )] + public bool limited = false; + public Vector2 frozenDistanceMinMaxThreshold = new Vector2( 0.1f, 0.2f ); + public UnityEvent onFrozenDistanceThreshold; + + [HeaderAttribute( "Limited Rotation Min" )] + [Tooltip( "If limited is true, the specifies the lower limit, otherwise value is unused" )] + public float minAngle = -45.0f; + [Tooltip( "If limited, set whether drive will freeze its angle when the min angle is reached" )] + public bool freezeOnMin = false; + [Tooltip( "If limited, event invoked when minAngle is reached" )] + public UnityEvent onMinAngle; + + [HeaderAttribute( "Limited Rotation Max" )] + [Tooltip( "If limited is true, the specifies the upper limit, otherwise value is unused" )] + public float maxAngle = 45.0f; + [Tooltip( "If limited, set whether drive will freeze its angle when the max angle is reached" )] + public bool freezeOnMax = false; + [Tooltip( "If limited, event invoked when maxAngle is reached" )] + public UnityEvent onMaxAngle; + + [Tooltip( "If limited is true, this forces the starting angle to be startAngle, clamped to [minAngle, maxAngle]" )] + public bool forceStart = false; + [Tooltip( "If limited is true and forceStart is true, the starting angle will be this, clamped to [minAngle, maxAngle]" )] + public float startAngle = 0.0f; + + [Tooltip( "If true, the transform of the GameObject this component is on will be rotated accordingly" )] + public bool rotateGameObject = true; + + [Tooltip( "If true, the path of the Hand (red) and the projected value (green) will be drawn" )] + public bool debugPath = false; + [Tooltip( "If debugPath is true, this is the maximum number of GameObjects to create to draw the path" )] + public int dbgPathLimit = 50; + + [Tooltip( "If not null, the TextMesh will display the linear value and the angular value of this circular drive" )] + public TextMesh debugText = null; + + [Tooltip( "The output angle value of the drive in degrees, unlimited will increase or decrease without bound, take the 360 modulus to find number of rotations" )] + public float outAngle; + + private Quaternion start; + + private Vector3 worldPlaneNormal = new Vector3( 1.0f, 0.0f, 0.0f ); + private Vector3 localPlaneNormal = new Vector3( 1.0f, 0.0f, 0.0f ); + + private Vector3 lastHandProjected; + + private Color red = new Color( 1.0f, 0.0f, 0.0f ); + private Color green = new Color( 0.0f, 1.0f, 0.0f ); + + private GameObject[] dbgHandObjects; + private GameObject[] dbgProjObjects; + private GameObject dbgObjectsParent; + private int dbgObjectCount = 0; + private int dbgObjectIndex = 0; + + private bool driving = false; + + // If the drive is limited as is at min/max, angles greater than this are ignored + private float minMaxAngularThreshold = 1.0f; + + private bool frozen = false; + private float frozenAngle = 0.0f; + private Vector3 frozenHandWorldPos = new Vector3( 0.0f, 0.0f, 0.0f ); + private Vector2 frozenSqDistanceMinMaxThreshold = new Vector2( 0.0f, 0.0f ); + + Hand handHoverLocked = null; + + //------------------------------------------------- + private void Freeze( Hand hand ) + { + frozen = true; + frozenAngle = outAngle; + frozenHandWorldPos = hand.hoverSphereTransform.position; + frozenSqDistanceMinMaxThreshold.x = frozenDistanceMinMaxThreshold.x * frozenDistanceMinMaxThreshold.x; + frozenSqDistanceMinMaxThreshold.y = frozenDistanceMinMaxThreshold.y * frozenDistanceMinMaxThreshold.y; + } + + + //------------------------------------------------- + private void UnFreeze() + { + frozen = false; + frozenHandWorldPos.Set( 0.0f, 0.0f, 0.0f ); + } + + + //------------------------------------------------- + void Start() + { + if ( childCollider == null ) + { + childCollider = GetComponentInChildren(); + } + + if ( linearMapping == null ) + { + linearMapping = GetComponent(); + } + + if ( linearMapping == null ) + { + linearMapping = gameObject.AddComponent(); + } + + worldPlaneNormal = new Vector3( 0.0f, 0.0f, 0.0f ); + worldPlaneNormal[(int)axisOfRotation] = 1.0f; + + localPlaneNormal = worldPlaneNormal; + + if ( transform.parent ) + { + worldPlaneNormal = transform.parent.localToWorldMatrix.MultiplyVector( worldPlaneNormal ).normalized; + } + + if ( limited ) + { + start = Quaternion.identity; + outAngle = transform.localEulerAngles[(int)axisOfRotation]; + + if ( forceStart ) + { + outAngle = Mathf.Clamp( startAngle, minAngle, maxAngle ); + } + } + else + { + start = Quaternion.AngleAxis( transform.localEulerAngles[(int)axisOfRotation], localPlaneNormal ); + outAngle = 0.0f; + } + + if ( debugText ) + { + debugText.alignment = TextAlignment.Left; + debugText.anchor = TextAnchor.UpperLeft; + } + + UpdateAll(); + } + + + //------------------------------------------------- + void OnDisable() + { + if ( handHoverLocked ) + { + ControllerButtonHints.HideButtonHint( handHoverLocked, Valve.VR.EVRButtonId.k_EButton_SteamVR_Trigger ); + handHoverLocked.HoverUnlock( GetComponent() ); + handHoverLocked = null; + } + } + + + //------------------------------------------------- + private IEnumerator HapticPulses( SteamVR_Controller.Device controller, float flMagnitude, int nCount ) + { + if ( controller != null ) + { + int nRangeMax = (int)Util.RemapNumberClamped( flMagnitude, 0.0f, 1.0f, 100.0f, 900.0f ); + nCount = Mathf.Clamp( nCount, 1, 10 ); + + for ( ushort i = 0; i < nCount; ++i ) + { + ushort duration = (ushort)Random.Range( 100, nRangeMax ); + controller.TriggerHapticPulse( duration ); + yield return new WaitForSeconds( .01f ); + } + } + } + + + //------------------------------------------------- + private void OnHandHoverBegin( Hand hand ) + { + ControllerButtonHints.ShowButtonHint( hand, Valve.VR.EVRButtonId.k_EButton_SteamVR_Trigger ); + } + + + //------------------------------------------------- + private void OnHandHoverEnd( Hand hand ) + { + ControllerButtonHints.HideButtonHint( hand, Valve.VR.EVRButtonId.k_EButton_SteamVR_Trigger ); + + if ( driving && hand.GetStandardInteractionButton() ) + { + StartCoroutine( HapticPulses( hand.controller, 1.0f, 10 ) ); + } + + driving = false; + handHoverLocked = null; + } + + + //------------------------------------------------- + private void HandHoverUpdate( Hand hand ) + { + if ( hand.GetStandardInteractionButtonDown() ) + { + // Trigger was just pressed + lastHandProjected = ComputeToTransformProjected( hand.hoverSphereTransform ); + + if ( hoverLock ) + { + hand.HoverLock( GetComponent() ); + handHoverLocked = hand; + } + + driving = true; + + ComputeAngle( hand ); + UpdateAll(); + + ControllerButtonHints.HideButtonHint( hand, Valve.VR.EVRButtonId.k_EButton_SteamVR_Trigger ); + } + else if ( hand.GetStandardInteractionButtonUp() ) + { + // Trigger was just released + if ( hoverLock ) + { + hand.HoverUnlock( GetComponent() ); + handHoverLocked = null; + } + } + else if ( driving && hand.GetStandardInteractionButton() && hand.hoveringInteractable == GetComponent() ) + { + ComputeAngle( hand ); + UpdateAll(); + } + } + + + //------------------------------------------------- + private Vector3 ComputeToTransformProjected( Transform xForm ) + { + Vector3 toTransform = ( xForm.position - transform.position ).normalized; + Vector3 toTransformProjected = new Vector3( 0.0f, 0.0f, 0.0f ); + + // Need a non-zero distance from the hand to the center of the CircularDrive + if ( toTransform.sqrMagnitude > 0.0f ) + { + toTransformProjected = Vector3.ProjectOnPlane( toTransform, worldPlaneNormal ).normalized; + } + else + { + Debug.LogFormat( "The collider needs to be a minimum distance away from the CircularDrive GameObject {0}", gameObject.ToString() ); + Debug.Assert( false, string.Format( "The collider needs to be a minimum distance away from the CircularDrive GameObject {0}", gameObject.ToString() ) ); + } + + if ( debugPath && dbgPathLimit > 0 ) + { + DrawDebugPath( xForm, toTransformProjected ); + } + + return toTransformProjected; + } + + + //------------------------------------------------- + private void DrawDebugPath( Transform xForm, Vector3 toTransformProjected ) + { + if ( dbgObjectCount == 0 ) + { + dbgObjectsParent = new GameObject( "Circular Drive Debug" ); + dbgHandObjects = new GameObject[dbgPathLimit]; + dbgProjObjects = new GameObject[dbgPathLimit]; + dbgObjectCount = dbgPathLimit; + dbgObjectIndex = 0; + } + + //Actual path + GameObject gSphere = null; + + if ( dbgHandObjects[dbgObjectIndex] ) + { + gSphere = dbgHandObjects[dbgObjectIndex]; + } + else + { + gSphere = GameObject.CreatePrimitive( PrimitiveType.Sphere ); + gSphere.transform.SetParent( dbgObjectsParent.transform ); + dbgHandObjects[dbgObjectIndex] = gSphere; + } + + gSphere.name = string.Format( "actual_{0}", (int)( ( 1.0f - red.r ) * 10.0f ) ); + gSphere.transform.position = xForm.position; + gSphere.transform.rotation = Quaternion.Euler( 0.0f, 0.0f, 0.0f ); + gSphere.transform.localScale = new Vector3( 0.004f, 0.004f, 0.004f ); + gSphere.gameObject.GetComponent().material.color = red; + + if ( red.r > 0.1f ) + { + red.r -= 0.1f; + } + else + { + red.r = 1.0f; + } + + //Projected path + gSphere = null; + + if ( dbgProjObjects[dbgObjectIndex] ) + { + gSphere = dbgProjObjects[dbgObjectIndex]; + } + else + { + gSphere = GameObject.CreatePrimitive( PrimitiveType.Sphere ); + gSphere.transform.SetParent( dbgObjectsParent.transform ); + dbgProjObjects[dbgObjectIndex] = gSphere; + } + + gSphere.name = string.Format( "projed_{0}", (int)( ( 1.0f - green.g ) * 10.0f ) ); + gSphere.transform.position = transform.position + toTransformProjected * 0.25f; + gSphere.transform.rotation = Quaternion.Euler( 0.0f, 0.0f, 0.0f ); + gSphere.transform.localScale = new Vector3( 0.004f, 0.004f, 0.004f ); + gSphere.gameObject.GetComponent().material.color = green; + + if ( green.g > 0.1f ) + { + green.g -= 0.1f; + } + else + { + green.g = 1.0f; + } + + dbgObjectIndex = ( dbgObjectIndex + 1 ) % dbgObjectCount; + } + + + //------------------------------------------------- + // Updates the LinearMapping value from the angle + //------------------------------------------------- + private void UpdateLinearMapping() + { + if ( limited ) + { + // Map it to a [0, 1] value + linearMapping.value = ( outAngle - minAngle ) / ( maxAngle - minAngle ); + } + else + { + // Normalize to [0, 1] based on 360 degree windings + float flTmp = outAngle / 360.0f; + linearMapping.value = flTmp - Mathf.Floor( flTmp ); + } + + UpdateDebugText(); + } + + + //------------------------------------------------- + // Updates the LinearMapping value from the angle + //------------------------------------------------- + private void UpdateGameObject() + { + if ( rotateGameObject ) + { + transform.localRotation = start * Quaternion.AngleAxis( outAngle, localPlaneNormal ); + } + } + + + //------------------------------------------------- + // Updates the Debug TextMesh with the linear mapping value and the angle + //------------------------------------------------- + private void UpdateDebugText() + { + if ( debugText ) + { + debugText.text = string.Format( "Linear: {0}\nAngle: {1}\n", linearMapping.value, outAngle ); + } + } + + + //------------------------------------------------- + // Updates the Debug TextMesh with the linear mapping value and the angle + //------------------------------------------------- + private void UpdateAll() + { + UpdateLinearMapping(); + UpdateGameObject(); + UpdateDebugText(); + } + + + //------------------------------------------------- + // Computes the angle to rotate the game object based on the change in the transform + //------------------------------------------------- + private void ComputeAngle( Hand hand ) + { + Vector3 toHandProjected = ComputeToTransformProjected( hand.hoverSphereTransform ); + + if ( !toHandProjected.Equals( lastHandProjected ) ) + { + float absAngleDelta = Vector3.Angle( lastHandProjected, toHandProjected ); + + if ( absAngleDelta > 0.0f ) + { + if ( frozen ) + { + float frozenSqDist = ( hand.hoverSphereTransform.position - frozenHandWorldPos ).sqrMagnitude; + if ( frozenSqDist > frozenSqDistanceMinMaxThreshold.x ) + { + outAngle = frozenAngle + Random.Range( -1.0f, 1.0f ); + + float magnitude = Util.RemapNumberClamped( frozenSqDist, frozenSqDistanceMinMaxThreshold.x, frozenSqDistanceMinMaxThreshold.y, 0.0f, 1.0f ); + if ( magnitude > 0 ) + { + StartCoroutine( HapticPulses( hand.controller, magnitude, 10 ) ); + } + else + { + StartCoroutine( HapticPulses( hand.controller, 0.5f, 10 ) ); + } + + if ( frozenSqDist >= frozenSqDistanceMinMaxThreshold.y ) + { + onFrozenDistanceThreshold.Invoke(); + } + } + } + else + { + Vector3 cross = Vector3.Cross( lastHandProjected, toHandProjected ).normalized; + float dot = Vector3.Dot( worldPlaneNormal, cross ); + + float signedAngleDelta = absAngleDelta; + + if ( dot < 0.0f ) + { + signedAngleDelta = -signedAngleDelta; + } + + if ( limited ) + { + float angleTmp = Mathf.Clamp( outAngle + signedAngleDelta, minAngle, maxAngle ); + + if ( outAngle == minAngle ) + { + if ( angleTmp > minAngle && absAngleDelta < minMaxAngularThreshold ) + { + outAngle = angleTmp; + lastHandProjected = toHandProjected; + } + } + else if ( outAngle == maxAngle ) + { + if ( angleTmp < maxAngle && absAngleDelta < minMaxAngularThreshold ) + { + outAngle = angleTmp; + lastHandProjected = toHandProjected; + } + } + else if ( angleTmp == minAngle ) + { + outAngle = angleTmp; + lastHandProjected = toHandProjected; + onMinAngle.Invoke(); + if ( freezeOnMin ) + { + Freeze( hand ); + } + } + else if ( angleTmp == maxAngle ) + { + outAngle = angleTmp; + lastHandProjected = toHandProjected; + onMaxAngle.Invoke(); + if ( freezeOnMax ) + { + Freeze( hand ); + } + } + else + { + outAngle = angleTmp; + lastHandProjected = toHandProjected; + } + } + else + { + outAngle += signedAngleDelta; + lastHandProjected = toHandProjected; + } + } + } + } + } + } +} diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/CircularDrive.cs.meta b/Assets/SteamVR/InteractionSystem/Core/Scripts/CircularDrive.cs.meta new file mode 100644 index 00000000..3895f2fc --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/CircularDrive.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 1f32883eed859804dbb0c5fedac91496 +timeCreated: 1440531244 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: b93fe5c516cf6ed4b9153ec790f856e2, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/ComplexThrowable.cs b/Assets/SteamVR/InteractionSystem/Core/Scripts/ComplexThrowable.cs new file mode 100644 index 00000000..4c367fc0 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/ComplexThrowable.cs @@ -0,0 +1,190 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Throwable that uses physics joints to attach instead of just +// parenting +// +//============================================================================= + +using UnityEngine; +using System.Collections.Generic; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + [RequireComponent( typeof( Interactable ) )] + public class ComplexThrowable : MonoBehaviour + { + public enum AttachMode + { + FixedJoint, + Force, + } + + public float attachForce = 800.0f; + public float attachForceDamper = 25.0f; + + public AttachMode attachMode = AttachMode.FixedJoint; + + [EnumFlags] + public Hand.AttachmentFlags attachmentFlags = 0; + + private List holdingHands = new List(); + private List holdingBodies = new List(); + private List holdingPoints = new List(); + + private List rigidBodies = new List(); + + //------------------------------------------------- + void Awake() + { + GetComponentsInChildren( rigidBodies ); + } + + + //------------------------------------------------- + void Update() + { + for ( int i = 0; i < holdingHands.Count; i++ ) + { + if ( !holdingHands[i].GetStandardInteractionButton() ) + { + PhysicsDetach( holdingHands[i] ); + } + } + } + + + //------------------------------------------------- + private void OnHandHoverBegin( Hand hand ) + { + if ( holdingHands.IndexOf( hand ) == -1 ) + { + if ( hand.controller != null ) + { + hand.controller.TriggerHapticPulse( 800 ); + } + } + } + + + //------------------------------------------------- + private void OnHandHoverEnd( Hand hand ) + { + if ( holdingHands.IndexOf( hand ) == -1 ) + { + if ( hand.controller != null ) + { + hand.controller.TriggerHapticPulse( 500 ); + } + } + } + + + //------------------------------------------------- + private void HandHoverUpdate( Hand hand ) + { + if ( hand.GetStandardInteractionButtonDown() ) + { + PhysicsAttach( hand ); + } + } + + + //------------------------------------------------- + private void PhysicsAttach( Hand hand ) + { + PhysicsDetach( hand ); + + Rigidbody holdingBody = null; + Vector3 holdingPoint = Vector3.zero; + + // The hand should grab onto the nearest rigid body + float closestDistance = float.MaxValue; + for ( int i = 0; i < rigidBodies.Count; i++ ) + { + float distance = Vector3.Distance( rigidBodies[i].worldCenterOfMass, hand.transform.position ); + if ( distance < closestDistance ) + { + holdingBody = rigidBodies[i]; + closestDistance = distance; + } + } + + // Couldn't grab onto a body + if ( holdingBody == null ) + return; + + // Create a fixed joint from the hand to the holding body + if ( attachMode == AttachMode.FixedJoint ) + { + Rigidbody handRigidbody = Util.FindOrAddComponent( hand.gameObject ); + handRigidbody.isKinematic = true; + + FixedJoint handJoint = hand.gameObject.AddComponent(); + handJoint.connectedBody = holdingBody; + } + + // Don't let the hand interact with other things while it's holding us + hand.HoverLock( null ); + + // Affix this point + Vector3 offset = hand.transform.position - holdingBody.worldCenterOfMass; + offset = Mathf.Min( offset.magnitude, 1.0f ) * offset.normalized; + holdingPoint = holdingBody.transform.InverseTransformPoint( holdingBody.worldCenterOfMass + offset ); + + hand.AttachObject( this.gameObject, attachmentFlags ); + + // Update holding list + holdingHands.Add( hand ); + holdingBodies.Add( holdingBody ); + holdingPoints.Add( holdingPoint ); + } + + + //------------------------------------------------- + private bool PhysicsDetach( Hand hand ) + { + int i = holdingHands.IndexOf( hand ); + + if ( i != -1 ) + { + // Detach this object from the hand + holdingHands[i].DetachObject( this.gameObject, false ); + + // Allow the hand to do other things + holdingHands[i].HoverUnlock( null ); + + // Delete any existing joints from the hand + if ( attachMode == AttachMode.FixedJoint ) + { + Destroy( holdingHands[i].GetComponent() ); + } + + Util.FastRemove( holdingHands, i ); + Util.FastRemove( holdingBodies, i ); + Util.FastRemove( holdingPoints, i ); + + return true; + } + + return false; + } + + + //------------------------------------------------- + void FixedUpdate() + { + if ( attachMode == AttachMode.Force ) + { + for ( int i = 0; i < holdingHands.Count; i++ ) + { + Vector3 targetPoint = holdingBodies[i].transform.TransformPoint( holdingPoints[i] ); + Vector3 vdisplacement = holdingHands[i].transform.position - targetPoint; + + holdingBodies[i].AddForceAtPosition( attachForce * vdisplacement, targetPoint, ForceMode.Acceleration ); + holdingBodies[i].AddForceAtPosition( -attachForceDamper * holdingBodies[i].GetPointVelocity( targetPoint ), targetPoint, ForceMode.Acceleration ); + } + } + } + } +} diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/ComplexThrowable.cs.meta b/Assets/SteamVR/InteractionSystem/Core/Scripts/ComplexThrowable.cs.meta new file mode 100644 index 00000000..d9e69cc7 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/ComplexThrowable.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: ad77666522338cf49ba83b80b25e6476 +timeCreated: 1440023090 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: b93fe5c516cf6ed4b9153ec790f856e2, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/ControllerHoverHighlight.cs b/Assets/SteamVR/InteractionSystem/Core/Scripts/ControllerHoverHighlight.cs new file mode 100644 index 00000000..e8fabde2 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/ControllerHoverHighlight.cs @@ -0,0 +1,193 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Highlights the controller when hovering over interactables +// +//============================================================================= + +using UnityEngine; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + public class ControllerHoverHighlight : MonoBehaviour + { + public Material highLightMaterial; + public bool fireHapticsOnHightlight = true; + + private Hand hand; + + private MeshRenderer bodyMeshRenderer; + private MeshRenderer trackingHatMeshRenderer; + private SteamVR_RenderModel renderModel; + private bool renderModelLoaded = false; + + SteamVR_Events.Action renderModelLoadedAction; + + //------------------------------------------------- + void Start() + { + hand = GetComponentInParent(); + } + + + //------------------------------------------------- + void Awake() + { + renderModelLoadedAction = SteamVR_Events.RenderModelLoadedAction( OnRenderModelLoaded ); + } + + + //------------------------------------------------- + void OnEnable() + { + renderModelLoadedAction.enabled = true; + } + + + //------------------------------------------------- + void OnDisable() + { + renderModelLoadedAction.enabled = false; + } + + + //------------------------------------------------- + private void OnHandInitialized( int deviceIndex ) + { + renderModel = gameObject.AddComponent(); + renderModel.SetDeviceIndex( deviceIndex ); + renderModel.updateDynamically = false; + } + + + //------------------------------------------------- + private void OnRenderModelLoaded( SteamVR_RenderModel renderModel, bool success ) + { + if ( renderModel != this.renderModel ) + { + return; + } + + Transform bodyTransform = transform.Find( "body" ); + if ( bodyTransform != null ) + { + bodyMeshRenderer = bodyTransform.GetComponent(); + bodyMeshRenderer.material = highLightMaterial; + bodyMeshRenderer.enabled = false; + } + + Transform trackingHatTransform = transform.Find( "trackhat" ); + if ( trackingHatTransform != null ) + { + trackingHatMeshRenderer = trackingHatTransform.GetComponent(); + trackingHatMeshRenderer.material = highLightMaterial; + trackingHatMeshRenderer.enabled = false; + } + + foreach ( Transform child in transform ) + { + if ( ( child.name != "body" ) && ( child.name != "trackhat" ) ) + { + Destroy( child.gameObject ); + } + } + + renderModelLoaded = true; + } + + + //------------------------------------------------- + private void OnParentHandHoverBegin( Interactable other ) + { + if ( !this.isActiveAndEnabled ) + { + return; + } + + if ( other.transform.parent != transform.parent ) + { + ShowHighlight(); + } + } + + + //------------------------------------------------- + private void OnParentHandHoverEnd( Interactable other ) + { + HideHighlight(); + } + + + //------------------------------------------------- + private void OnParentHandInputFocusAcquired() + { + if ( !this.isActiveAndEnabled ) + { + return; + } + + if ( hand.hoveringInteractable && hand.hoveringInteractable.transform.parent != transform.parent ) + { + ShowHighlight(); + } + } + + + //------------------------------------------------- + private void OnParentHandInputFocusLost() + { + HideHighlight(); + } + + + //------------------------------------------------- + public void ShowHighlight() + { + if ( renderModelLoaded == false ) + { + return; + } + + if ( fireHapticsOnHightlight ) + { + hand.controller.TriggerHapticPulse( 500 ); + } + + if ( bodyMeshRenderer != null ) + { + bodyMeshRenderer.enabled = true; + } + + if ( trackingHatMeshRenderer != null ) + { + trackingHatMeshRenderer.enabled = true; + } + } + + + //------------------------------------------------- + public void HideHighlight() + { + if ( renderModelLoaded == false ) + { + return; + } + + if ( fireHapticsOnHightlight ) + { + hand.controller.TriggerHapticPulse( 300 ); + } + + if ( bodyMeshRenderer != null ) + { + bodyMeshRenderer.enabled = false; + } + + if ( trackingHatMeshRenderer != null ) + { + trackingHatMeshRenderer.enabled = false; + } + } + } +} diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/ControllerHoverHighlight.cs.meta b/Assets/SteamVR/InteractionSystem/Core/Scripts/ControllerHoverHighlight.cs.meta new file mode 100644 index 00000000..34e581cf --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/ControllerHoverHighlight.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8ca2cc563cc33f542a5d9f8f661184ba +timeCreated: 1441139979 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: b93fe5c516cf6ed4b9153ec790f856e2, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/CustomEvents.cs b/Assets/SteamVR/InteractionSystem/Core/Scripts/CustomEvents.cs new file mode 100644 index 00000000..ae37001a --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/CustomEvents.cs @@ -0,0 +1,28 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Custom Unity Events that take in additional parameters +// +//============================================================================= + +using UnityEngine.Events; +using System; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + public static class CustomEvents + { + //------------------------------------------------- + [System.Serializable] + public class UnityEventSingleFloat : UnityEvent + { + } + + + //------------------------------------------------- + [System.Serializable] + public class UnityEventHand : UnityEvent + { + } + } +} diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/CustomEvents.cs.meta b/Assets/SteamVR/InteractionSystem/Core/Scripts/CustomEvents.cs.meta new file mode 100644 index 00000000..aee0603f --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/CustomEvents.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 5f3294e06115d0047a2ac7659a11b168 +timeCreated: 1437076614 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: b93fe5c516cf6ed4b9153ec790f856e2, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/DebugUI.cs b/Assets/SteamVR/InteractionSystem/Core/Scripts/DebugUI.cs new file mode 100644 index 00000000..079b373c --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/DebugUI.cs @@ -0,0 +1,48 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Debug UI shown for the player +// +//============================================================================= + +using UnityEngine; +using UnityEngine.UI; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + public class DebugUI : MonoBehaviour + { + private Player player; + + //------------------------------------------------- + static private DebugUI _instance; + static public DebugUI instance + { + get + { + if ( _instance == null ) + { + _instance = GameObject.FindObjectOfType(); + } + return _instance; + } + } + + + //------------------------------------------------- + void Start() + { + player = Player.instance; + } + + + //------------------------------------------------- + private void OnGUI() + { +#if !HIDE_DEBUG_UI + player.Draw2DDebug(); +#endif + } + } +} diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/DebugUI.cs.meta b/Assets/SteamVR/InteractionSystem/Core/Scripts/DebugUI.cs.meta new file mode 100644 index 00000000..a2da5e7c --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/DebugUI.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6f3bba2c36dd79242b3157dbcd876bf2 +timeCreated: 1458703500 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: b93fe5c516cf6ed4b9153ec790f856e2, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/DestroyOnDetachedFromHand.cs b/Assets/SteamVR/InteractionSystem/Core/Scripts/DestroyOnDetachedFromHand.cs new file mode 100644 index 00000000..5cf17d1a --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/DestroyOnDetachedFromHand.cs @@ -0,0 +1,22 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Destroys this object when it is detached from the hand +// +//============================================================================= + +using UnityEngine; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + [RequireComponent( typeof( Interactable ) )] + public class DestroyOnDetachedFromHand : MonoBehaviour + { + //------------------------------------------------- + private void OnDetachedFromHand( Hand hand ) + { + Destroy( gameObject ); + } + } +} diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/DestroyOnDetachedFromHand.cs.meta b/Assets/SteamVR/InteractionSystem/Core/Scripts/DestroyOnDetachedFromHand.cs.meta new file mode 100644 index 00000000..a6602604 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/DestroyOnDetachedFromHand.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 5240357a2468cdc4291b266bee3cb9b9 +timeCreated: 1442359285 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: b93fe5c516cf6ed4b9153ec790f856e2, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/DestroyOnParticleSystemDeath.cs b/Assets/SteamVR/InteractionSystem/Core/Scripts/DestroyOnParticleSystemDeath.cs new file mode 100644 index 00000000..ac37223d --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/DestroyOnParticleSystemDeath.cs @@ -0,0 +1,36 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Destroys this object when its particle system dies +// +//============================================================================= + +using UnityEngine; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + [RequireComponent( typeof( ParticleSystem ) )] + public class DestroyOnParticleSystemDeath : MonoBehaviour + { + private ParticleSystem particles; + + //------------------------------------------------- + void Awake() + { + particles = GetComponent(); + + InvokeRepeating( "CheckParticleSystem", 0.1f, 0.1f ); + } + + + //------------------------------------------------- + private void CheckParticleSystem() + { + if ( !particles.IsAlive() ) + { + Destroy( this.gameObject ); + } + } + } +} diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/DestroyOnParticleSystemDeath.cs.meta b/Assets/SteamVR/InteractionSystem/Core/Scripts/DestroyOnParticleSystemDeath.cs.meta new file mode 100644 index 00000000..75455d29 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/DestroyOnParticleSystemDeath.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 69cad530c565c714491a326c21accb90 +timeCreated: 1478655595 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: b93fe5c516cf6ed4b9153ec790f856e2, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/DestroyOnTriggerEnter.cs b/Assets/SteamVR/InteractionSystem/Core/Scripts/DestroyOnTriggerEnter.cs new file mode 100644 index 00000000..2537d9a9 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/DestroyOnTriggerEnter.cs @@ -0,0 +1,38 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Destroys this object when it enters a trigger +// +//============================================================================= + +using UnityEngine; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + public class DestroyOnTriggerEnter : MonoBehaviour + { + public string tagFilter; + + private bool useTag; + + //------------------------------------------------- + void Start() + { + if ( !string.IsNullOrEmpty( tagFilter ) ) + { + useTag = true; + } + } + + + //------------------------------------------------- + void OnTriggerEnter( Collider collider ) + { + if ( !useTag || ( useTag && collider.gameObject.tag == tagFilter ) ) + { + Destroy( collider.gameObject.transform.root.gameObject ); + } + } + } +} diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/DestroyOnTriggerEnter.cs.meta b/Assets/SteamVR/InteractionSystem/Core/Scripts/DestroyOnTriggerEnter.cs.meta new file mode 100644 index 00000000..f5a31524 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/DestroyOnTriggerEnter.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 7ba84888c9d4c504cb752a3904551a6c +timeCreated: 1438101498 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: b93fe5c516cf6ed4b9153ec790f856e2, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/DistanceHaptics.cs b/Assets/SteamVR/InteractionSystem/Core/Scripts/DistanceHaptics.cs new file mode 100644 index 00000000..3225ac40 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/DistanceHaptics.cs @@ -0,0 +1,42 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Triggers haptic pulses based on distance between 2 positions +// +//============================================================================= + +using UnityEngine; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + public class DistanceHaptics : MonoBehaviour + { + public Transform firstTransform; + public Transform secondTransform; + + public AnimationCurve distanceIntensityCurve = AnimationCurve.Linear( 0.0f, 800.0f, 1.0f, 800.0f ); + public AnimationCurve pulseIntervalCurve = AnimationCurve.Linear( 0.0f, 0.01f, 1.0f, 0.0f ); + + //------------------------------------------------- + IEnumerator Start() + { + while ( true ) + { + float distance = Vector3.Distance( firstTransform.position, secondTransform.position ); + + SteamVR_TrackedObject trackedObject = GetComponentInParent(); + if ( trackedObject ) + { + float pulse = distanceIntensityCurve.Evaluate( distance ); + SteamVR_Controller.Input( (int)trackedObject.index ).TriggerHapticPulse( (ushort)pulse ); + } + + float nextPulse = pulseIntervalCurve.Evaluate( distance ); + + yield return new WaitForSeconds( nextPulse ); + } + + } + } +} diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/DistanceHaptics.cs.meta b/Assets/SteamVR/InteractionSystem/Core/Scripts/DistanceHaptics.cs.meta new file mode 100644 index 00000000..628f9e9c --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/DistanceHaptics.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 65ef702aaa09d3f46a75659678b1a711 +timeCreated: 1430871385 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: b93fe5c516cf6ed4b9153ec790f856e2, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/DontDestroyOnLoad.cs b/Assets/SteamVR/InteractionSystem/Core/Scripts/DontDestroyOnLoad.cs new file mode 100644 index 00000000..d2661111 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/DontDestroyOnLoad.cs @@ -0,0 +1,21 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: This object won't be destroyed when a new scene is loaded +// +//============================================================================= + +using UnityEngine; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + public class DontDestroyOnLoad : MonoBehaviour + { + //------------------------------------------------- + void Awake() + { + DontDestroyOnLoad( this ); + } + } +} diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/DontDestroyOnLoad.cs.meta b/Assets/SteamVR/InteractionSystem/Core/Scripts/DontDestroyOnLoad.cs.meta new file mode 100644 index 00000000..5a196e57 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/DontDestroyOnLoad.cs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 4d1c07a6449b0ca439ee6fac5f6f7d83 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: b93fe5c516cf6ed4b9153ec790f856e2, type: 3} + userData: + assetBundleName: diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/EnumFlags.cs b/Assets/SteamVR/InteractionSystem/Core/Scripts/EnumFlags.cs new file mode 100644 index 00000000..30464aa1 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/EnumFlags.cs @@ -0,0 +1,32 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Allows Enums to be shown in the inspector as flags +// +//============================================================================= + +using UnityEngine; +#if UNITY_EDITOR +using UnityEditor; +#endif + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + public class EnumFlags : PropertyAttribute + { + public EnumFlags() { } + } + + +#if UNITY_EDITOR + //------------------------------------------------------------------------- + [CustomPropertyDrawer( typeof( EnumFlags ) )] + public class EnumFlagsPropertyDrawer : PropertyDrawer + { + public override void OnGUI( Rect position, SerializedProperty property, GUIContent label ) + { + property.intValue = EditorGUI.MaskField( position, label, property.intValue, property.enumNames ); + } + } +#endif +} diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/EnumFlags.cs.meta b/Assets/SteamVR/InteractionSystem/Core/Scripts/EnumFlags.cs.meta new file mode 100644 index 00000000..756265d8 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/EnumFlags.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 88a2ccbdad9948c45b28f5e63902705b +timeCreated: 1440536338 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: b93fe5c516cf6ed4b9153ec790f856e2, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/FallbackCameraController.cs b/Assets/SteamVR/InteractionSystem/Core/Scripts/FallbackCameraController.cs new file mode 100644 index 00000000..73ec74aa --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/FallbackCameraController.cs @@ -0,0 +1,96 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Controls for the non-VR debug camera +// +//============================================================================= + +using UnityEngine; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + [RequireComponent( typeof( Camera ) )] + public class FallbackCameraController : MonoBehaviour + { + public float speed = 4.0f; + public float shiftSpeed = 16.0f; + public bool showInstructions = true; + + private Vector3 startEulerAngles; + private Vector3 startMousePosition; + private float realTime; + + //------------------------------------------------- + void OnEnable() + { + realTime = Time.realtimeSinceStartup; + } + + + //------------------------------------------------- + void Update() + { + float forward = 0.0f; + if ( Input.GetKey( KeyCode.W ) || Input.GetKey( KeyCode.UpArrow ) ) + { + forward += 1.0f; + } + if ( Input.GetKey( KeyCode.S ) || Input.GetKey( KeyCode.DownArrow ) ) + { + forward -= 1.0f; + } + + float right = 0.0f; + if ( Input.GetKey( KeyCode.D ) || Input.GetKey( KeyCode.RightArrow ) ) + { + right += 1.0f; + } + if ( Input.GetKey( KeyCode.A ) || Input.GetKey( KeyCode.LeftArrow ) ) + { + right -= 1.0f; + } + + float currentSpeed = speed; + if ( Input.GetKey( KeyCode.LeftShift ) || Input.GetKey( KeyCode.RightShift ) ) + { + currentSpeed = shiftSpeed; + } + + float realTimeNow = Time.realtimeSinceStartup; + float deltaRealTime = realTimeNow - realTime; + realTime = realTimeNow; + + Vector3 delta = new Vector3( right, 0.0f, forward ) * currentSpeed * deltaRealTime; + + transform.position += transform.TransformDirection( delta ); + + Vector3 mousePosition = Input.mousePosition; + + if ( Input.GetMouseButtonDown( 1 ) /* right mouse */) + { + startMousePosition = mousePosition; + startEulerAngles = transform.localEulerAngles; + } + + if ( Input.GetMouseButton( 1 ) /* right mouse */) + { + Vector3 offset = mousePosition - startMousePosition; + transform.localEulerAngles = startEulerAngles + new Vector3( -offset.y * 360.0f / Screen.height, offset.x * 360.0f / Screen.width, 0.0f ); + } + } + + + //------------------------------------------------- + void OnGUI() + { + if ( showInstructions ) + { + GUI.Label( new Rect( 10.0f, 10.0f, 600.0f, 400.0f ), + "WASD/Arrow Keys to translate the camera\n" + + "Right mouse click to rotate the camera\n" + + "Left mouse click for standard interactions.\n" ); + } + } + } +} diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/FallbackCameraController.cs.meta b/Assets/SteamVR/InteractionSystem/Core/Scripts/FallbackCameraController.cs.meta new file mode 100644 index 00000000..2748ff86 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/FallbackCameraController.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6043f3be9a21bd74281f9770463bea00 +timeCreated: 1436190027 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: b93fe5c516cf6ed4b9153ec790f856e2, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/Hand.cs b/Assets/SteamVR/InteractionSystem/Core/Scripts/Hand.cs new file mode 100644 index 00000000..dfd74184 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/Hand.cs @@ -0,0 +1,915 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: The hands used by the player in the vr interaction system +// +//============================================================================= + +using UnityEngine; +using System; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + // Links with an appropriate SteamVR controller and facilitates + // interactions with objects in the virtual world. + //------------------------------------------------------------------------- + public class Hand : MonoBehaviour + { + public enum HandType + { + Left, + Right, + Any + }; + + // The flags used to determine how an object is attached to the hand. + [Flags] + public enum AttachmentFlags + { + SnapOnAttach = 1 << 0, // The object should snap to the position of the specified attachment point on the hand. + DetachOthers = 1 << 1, // Other objects attached to this hand will be detached. + DetachFromOtherHand = 1 << 2, // This object will be detached from the other hand. + ParentToHand = 1 << 3, // The object will be parented to the hand. + }; + + public const AttachmentFlags defaultAttachmentFlags = AttachmentFlags.ParentToHand | + AttachmentFlags.DetachOthers | + AttachmentFlags.DetachFromOtherHand | + AttachmentFlags.SnapOnAttach; + + public Hand otherHand; + public HandType startingHandType; + + public Transform hoverSphereTransform; + public float hoverSphereRadius = 0.05f; + public LayerMask hoverLayerMask = -1; + public float hoverUpdateInterval = 0.1f; + + public Camera noSteamVRFallbackCamera; + public float noSteamVRFallbackMaxDistanceNoItem = 10.0f; + public float noSteamVRFallbackMaxDistanceWithItem = 0.5f; + private float noSteamVRFallbackInteractorDistance = -1.0f; + + public SteamVR_Controller.Device controller; + + public GameObject controllerPrefab; + private GameObject controllerObject = null; + + public bool showDebugText = false; + public bool spewDebugText = false; + + public struct AttachedObject + { + public GameObject attachedObject; + public GameObject originalParent; + public bool isParentedToHand; + } + + private List attachedObjects = new List(); + + public ReadOnlyCollection AttachedObjects + { + get { return attachedObjects.AsReadOnly(); } + } + + public bool hoverLocked { get; private set; } + + private Interactable _hoveringInteractable; + + private TextMesh debugText; + private int prevOverlappingColliders = 0; + + private const int ColliderArraySize = 16; + private Collider[] overlappingColliders; + + private Player playerInstance; + + private GameObject applicationLostFocusObject; + + SteamVR_Events.Action inputFocusAction; + + + //------------------------------------------------- + // The Interactable object this Hand is currently hovering over + //------------------------------------------------- + public Interactable hoveringInteractable + { + get { return _hoveringInteractable; } + set + { + if ( _hoveringInteractable != value ) + { + if ( _hoveringInteractable != null ) + { + HandDebugLog( "HoverEnd " + _hoveringInteractable.gameObject ); + _hoveringInteractable.SendMessage( "OnHandHoverEnd", this, SendMessageOptions.DontRequireReceiver ); + + //Note: The _hoveringInteractable can change after sending the OnHandHoverEnd message so we need to check it again before broadcasting this message + if ( _hoveringInteractable != null ) + { + this.BroadcastMessage( "OnParentHandHoverEnd", _hoveringInteractable, SendMessageOptions.DontRequireReceiver ); // let objects attached to the hand know that a hover has ended + } + } + + _hoveringInteractable = value; + + if ( _hoveringInteractable != null ) + { + HandDebugLog( "HoverBegin " + _hoveringInteractable.gameObject ); + _hoveringInteractable.SendMessage( "OnHandHoverBegin", this, SendMessageOptions.DontRequireReceiver ); + + //Note: The _hoveringInteractable can change after sending the OnHandHoverBegin message so we need to check it again before broadcasting this message + if ( _hoveringInteractable != null ) + { + this.BroadcastMessage( "OnParentHandHoverBegin", _hoveringInteractable, SendMessageOptions.DontRequireReceiver ); // let objects attached to the hand know that a hover has begun + } + } + } + } + } + + + //------------------------------------------------- + // Active GameObject attached to this Hand + //------------------------------------------------- + public GameObject currentAttachedObject + { + get + { + CleanUpAttachedObjectStack(); + + if ( attachedObjects.Count > 0 ) + { + return attachedObjects[attachedObjects.Count - 1].attachedObject; + } + + return null; + } + } + + + //------------------------------------------------- + public Transform GetAttachmentTransform( string attachmentPoint = "" ) + { + Transform attachmentTransform = null; + + if ( !string.IsNullOrEmpty( attachmentPoint ) ) + { + attachmentTransform = transform.Find( attachmentPoint ); + } + + if ( !attachmentTransform ) + { + attachmentTransform = this.transform; + } + + return attachmentTransform; + } + + + //------------------------------------------------- + // Guess the type of this Hand + // + // If startingHandType is Hand.Left or Hand.Right, returns startingHandType. + // If otherHand is non-null and both Hands are linked to controllers, returns + // Hand.Left if this Hand is leftmost relative to the HMD, otherwise Hand.Right. + // Otherwise, returns Hand.Any + //------------------------------------------------- + public HandType GuessCurrentHandType() + { + if ( startingHandType == HandType.Left || startingHandType == HandType.Right ) + { + return startingHandType; + } + + if ( startingHandType == HandType.Any && otherHand != null && otherHand.controller == null ) + { + return HandType.Right; + } + + if ( controller == null || otherHand == null || otherHand.controller == null ) + { + return startingHandType; + } + + if ( controller.index == SteamVR_Controller.GetDeviceIndex( SteamVR_Controller.DeviceRelation.Leftmost ) ) + { + return HandType.Left; + } + + return HandType.Right; + } + + + //------------------------------------------------- + // Attach a GameObject to this GameObject + // + // objectToAttach - The GameObject to attach + // flags - The flags to use for attaching the object + // attachmentPoint - Name of the GameObject in the hierarchy of this Hand which should act as the attachment point for this GameObject + //------------------------------------------------- + public void AttachObject( GameObject objectToAttach, AttachmentFlags flags = defaultAttachmentFlags, string attachmentPoint = "" ) + { + if ( flags == 0 ) + { + flags = defaultAttachmentFlags; + } + + //Make sure top object on stack is non-null + CleanUpAttachedObjectStack(); + + //Detach the object if it is already attached so that it can get re-attached at the top of the stack + DetachObject( objectToAttach ); + + //Detach from the other hand if requested + if ( ( ( flags & AttachmentFlags.DetachFromOtherHand ) == AttachmentFlags.DetachFromOtherHand ) && otherHand ) + { + otherHand.DetachObject( objectToAttach ); + } + + if ( ( flags & AttachmentFlags.DetachOthers ) == AttachmentFlags.DetachOthers ) + { + //Detach all the objects from the stack + while ( attachedObjects.Count > 0 ) + { + DetachObject( attachedObjects[0].attachedObject ); + } + } + + if ( currentAttachedObject ) + { + currentAttachedObject.SendMessage( "OnHandFocusLost", this, SendMessageOptions.DontRequireReceiver ); + } + + AttachedObject attachedObject = new AttachedObject(); + attachedObject.attachedObject = objectToAttach; + attachedObject.originalParent = objectToAttach.transform.parent != null ? objectToAttach.transform.parent.gameObject : null; + if ( ( flags & AttachmentFlags.ParentToHand ) == AttachmentFlags.ParentToHand ) + { + //Parent the object to the hand + objectToAttach.transform.parent = GetAttachmentTransform( attachmentPoint ); + attachedObject.isParentedToHand = true; + } + else + { + attachedObject.isParentedToHand = false; + } + attachedObjects.Add( attachedObject ); + + if ( ( flags & AttachmentFlags.SnapOnAttach ) == AttachmentFlags.SnapOnAttach ) + { + objectToAttach.transform.localPosition = Vector3.zero; + objectToAttach.transform.localRotation = Quaternion.identity; + } + + HandDebugLog( "AttachObject " + objectToAttach ); + objectToAttach.SendMessage( "OnAttachedToHand", this, SendMessageOptions.DontRequireReceiver ); + + UpdateHovering(); + } + + + //------------------------------------------------- + // Detach this GameObject from the attached object stack of this Hand + // + // objectToDetach - The GameObject to detach from this Hand + //------------------------------------------------- + public void DetachObject( GameObject objectToDetach, bool restoreOriginalParent = true ) + { + int index = attachedObjects.FindIndex( l => l.attachedObject == objectToDetach ); + if ( index != -1 ) + { + HandDebugLog( "DetachObject " + objectToDetach ); + + GameObject prevTopObject = currentAttachedObject; + + Transform parentTransform = null; + if ( attachedObjects[index].isParentedToHand ) + { + if ( restoreOriginalParent && ( attachedObjects[index].originalParent != null ) ) + { + parentTransform = attachedObjects[index].originalParent.transform; + } + attachedObjects[index].attachedObject.transform.parent = parentTransform; + } + + attachedObjects[index].attachedObject.SetActive( true ); + attachedObjects[index].attachedObject.SendMessage( "OnDetachedFromHand", this, SendMessageOptions.DontRequireReceiver ); + attachedObjects.RemoveAt( index ); + + GameObject newTopObject = currentAttachedObject; + + //Give focus to the top most object on the stack if it changed + if ( newTopObject != null && newTopObject != prevTopObject ) + { + newTopObject.SetActive( true ); + newTopObject.SendMessage( "OnHandFocusAcquired", this, SendMessageOptions.DontRequireReceiver ); + } + } + + CleanUpAttachedObjectStack(); + } + + + //------------------------------------------------- + // Get the world velocity of the VR Hand. + // Note: controller velocity value only updates on controller events (Button but and down) so good for throwing + //------------------------------------------------- + public Vector3 GetTrackedObjectVelocity() + { + if ( controller != null ) + { + return transform.parent.TransformVector( controller.velocity ); + } + + return Vector3.zero; + } + + + //------------------------------------------------- + // Get the world angular velocity of the VR Hand. + // Note: controller velocity value only updates on controller events (Button but and down) so good for throwing + //------------------------------------------------- + public Vector3 GetTrackedObjectAngularVelocity() + { + if ( controller != null ) + { + return transform.parent.TransformVector( controller.angularVelocity ); + } + + return Vector3.zero; + } + + + //------------------------------------------------- + private void CleanUpAttachedObjectStack() + { + attachedObjects.RemoveAll( l => l.attachedObject == null ); + } + + + //------------------------------------------------- + void Awake() + { + inputFocusAction = SteamVR_Events.InputFocusAction( OnInputFocus ); + + if ( hoverSphereTransform == null ) + { + hoverSphereTransform = this.transform; + } + + applicationLostFocusObject = new GameObject( "_application_lost_focus" ); + applicationLostFocusObject.transform.parent = transform; + applicationLostFocusObject.SetActive( false ); + } + + + //------------------------------------------------- + IEnumerator Start() + { + // save off player instance + playerInstance = Player.instance; + if ( !playerInstance ) + { + Debug.LogError( "No player instance found in Hand Start()" ); + } + + // allocate array for colliders + overlappingColliders = new Collider[ColliderArraySize]; + + // We are a "no SteamVR fallback hand" if we have this camera set + // we'll use the right mouse to look around and left mouse to interact + // - don't need to find the device + if ( noSteamVRFallbackCamera ) + { + yield break; + } + + //Debug.Log( "Hand - initializing connection routine" ); + + // Acquire the correct device index for the hand we want to be + // Also for the other hand if we get there first + while ( true ) + { + // Don't need to run this every frame + yield return new WaitForSeconds( 1.0f ); + + // We have a controller now, break out of the loop! + if ( controller != null ) + break; + + //Debug.Log( "Hand - checking controllers..." ); + + // Initialize both hands simultaneously + if ( startingHandType == HandType.Left || startingHandType == HandType.Right ) + { + // Left/right relationship. + // Wait until we have a clear unique left-right relationship to initialize. + int leftIndex = SteamVR_Controller.GetDeviceIndex( SteamVR_Controller.DeviceRelation.Leftmost ); + int rightIndex = SteamVR_Controller.GetDeviceIndex( SteamVR_Controller.DeviceRelation.Rightmost ); + if ( leftIndex == -1 || rightIndex == -1 || leftIndex == rightIndex ) + { + //Debug.Log( string.Format( "...Left/right hand relationship not yet established: leftIndex={0}, rightIndex={1}", leftIndex, rightIndex ) ); + continue; + } + + int myIndex = ( startingHandType == HandType.Right ) ? rightIndex : leftIndex; + int otherIndex = ( startingHandType == HandType.Right ) ? leftIndex : rightIndex; + + InitController( myIndex ); + if ( otherHand ) + { + otherHand.InitController( otherIndex ); + } + } + else + { + // No left/right relationship. Just wait for a connection + + var vr = SteamVR.instance; + for ( int i = 0; i < Valve.VR.OpenVR.k_unMaxTrackedDeviceCount; i++ ) + { + if ( vr.hmd.GetTrackedDeviceClass( (uint)i ) != Valve.VR.ETrackedDeviceClass.Controller ) + { + //Debug.Log( string.Format( "Hand - device {0} is not a controller", i ) ); + continue; + } + + var device = SteamVR_Controller.Input( i ); + if ( !device.valid ) + { + //Debug.Log( string.Format( "Hand - device {0} is not valid", i ) ); + continue; + } + + if ( ( otherHand != null ) && ( otherHand.controller != null ) ) + { + // Other hand is using this index, so we cannot use it. + if ( i == (int)otherHand.controller.index ) + { + //Debug.Log( string.Format( "Hand - device {0} is owned by the other hand", i ) ); + continue; + } + } + + InitController( i ); + } + } + } + } + + + //------------------------------------------------- + private void UpdateHovering() + { + if ( ( noSteamVRFallbackCamera == null ) && ( controller == null ) ) + { + return; + } + + if ( hoverLocked ) + return; + + if ( applicationLostFocusObject.activeSelf ) + return; + + float closestDistance = float.MaxValue; + Interactable closestInteractable = null; + + // Pick the closest hovering + float flHoverRadiusScale = playerInstance.transform.lossyScale.x; + float flScaledSphereRadius = hoverSphereRadius * flHoverRadiusScale; + + // if we're close to the floor, increase the radius to make things easier to pick up + float handDiff = Mathf.Abs( transform.position.y - playerInstance.trackingOriginTransform.position.y ); + float boxMult = Util.RemapNumberClamped( handDiff, 0.0f, 0.5f * flHoverRadiusScale, 5.0f, 1.0f ) * flHoverRadiusScale; + + // null out old vals + for ( int i = 0; i < overlappingColliders.Length; ++i ) + { + overlappingColliders[i] = null; + } + + Physics.OverlapBoxNonAlloc( + hoverSphereTransform.position - new Vector3( 0, flScaledSphereRadius * boxMult - flScaledSphereRadius, 0 ), + new Vector3( flScaledSphereRadius, flScaledSphereRadius * boxMult * 2.0f, flScaledSphereRadius ), + overlappingColliders, + Quaternion.identity, + hoverLayerMask.value + ); + + // DebugVar + int iActualColliderCount = 0; + + foreach ( Collider collider in overlappingColliders ) + { + if ( collider == null ) + continue; + + Interactable contacting = collider.GetComponentInParent(); + + // Yeah, it's null, skip + if ( contacting == null ) + continue; + + // Ignore this collider for hovering + IgnoreHovering ignore = collider.GetComponent(); + if ( ignore != null ) + { + if ( ignore.onlyIgnoreHand == null || ignore.onlyIgnoreHand == this ) + { + continue; + } + } + + // Can't hover over the object if it's attached + if ( attachedObjects.FindIndex( l => l.attachedObject == contacting.gameObject ) != -1 ) + continue; + + // Occupied by another hand, so we can't touch it + if ( otherHand && otherHand.hoveringInteractable == contacting ) + continue; + + // Best candidate so far... + float distance = Vector3.Distance( contacting.transform.position, hoverSphereTransform.position ); + if ( distance < closestDistance ) + { + closestDistance = distance; + closestInteractable = contacting; + } + iActualColliderCount++; + } + + // Hover on this one + hoveringInteractable = closestInteractable; + + if ( iActualColliderCount > 0 && iActualColliderCount != prevOverlappingColliders ) + { + prevOverlappingColliders = iActualColliderCount; + HandDebugLog( "Found " + iActualColliderCount + " overlapping colliders." ); + } + } + + + //------------------------------------------------- + private void UpdateNoSteamVRFallback() + { + if ( noSteamVRFallbackCamera ) + { + Ray ray = noSteamVRFallbackCamera.ScreenPointToRay( Input.mousePosition ); + + if ( attachedObjects.Count > 0 ) + { + // Holding down the mouse: + // move around a fixed distance from the camera + transform.position = ray.origin + noSteamVRFallbackInteractorDistance * ray.direction; + } + else + { + // Not holding down the mouse: + // cast out a ray to see what we should mouse over + + // Don't want to hit the hand and anything underneath it + // So move it back behind the camera when we do the raycast + Vector3 oldPosition = transform.position; + transform.position = noSteamVRFallbackCamera.transform.forward * ( -1000.0f ); + + RaycastHit raycastHit; + if ( Physics.Raycast( ray, out raycastHit, noSteamVRFallbackMaxDistanceNoItem ) ) + { + transform.position = raycastHit.point; + + // Remember this distance in case we click and drag the mouse + noSteamVRFallbackInteractorDistance = Mathf.Min( noSteamVRFallbackMaxDistanceNoItem, raycastHit.distance ); + } + else if ( noSteamVRFallbackInteractorDistance > 0.0f ) + { + // Move it around at the distance we last had a hit + transform.position = ray.origin + Mathf.Min( noSteamVRFallbackMaxDistanceNoItem, noSteamVRFallbackInteractorDistance ) * ray.direction; + } + else + { + // Didn't hit, just leave it where it was + transform.position = oldPosition; + } + } + } + } + + + //------------------------------------------------- + private void UpdateDebugText() + { + if ( showDebugText ) + { + if ( debugText == null ) + { + debugText = new GameObject( "_debug_text" ).AddComponent(); + debugText.fontSize = 120; + debugText.characterSize = 0.001f; + debugText.transform.parent = transform; + + debugText.transform.localRotation = Quaternion.Euler( 90.0f, 0.0f, 0.0f ); + } + + if ( GuessCurrentHandType() == HandType.Right ) + { + debugText.transform.localPosition = new Vector3( -0.05f, 0.0f, 0.0f ); + debugText.alignment = TextAlignment.Right; + debugText.anchor = TextAnchor.UpperRight; + } + else + { + debugText.transform.localPosition = new Vector3( 0.05f, 0.0f, 0.0f ); + debugText.alignment = TextAlignment.Left; + debugText.anchor = TextAnchor.UpperLeft; + } + + debugText.text = string.Format( + "Hovering: {0}\n" + + "Hover Lock: {1}\n" + + "Attached: {2}\n" + + "Total Attached: {3}\n" + + "Type: {4}\n", + ( hoveringInteractable ? hoveringInteractable.gameObject.name : "null" ), + hoverLocked, + ( currentAttachedObject ? currentAttachedObject.name : "null" ), + attachedObjects.Count, + GuessCurrentHandType().ToString() ); + } + else + { + if ( debugText != null ) + { + Destroy( debugText.gameObject ); + } + } + } + + + //------------------------------------------------- + void OnEnable() + { + inputFocusAction.enabled = true; + + // Stagger updates between hands + float hoverUpdateBegin = ( ( otherHand != null ) && ( otherHand.GetInstanceID() < GetInstanceID() ) ) ? ( 0.5f * hoverUpdateInterval ) : ( 0.0f ); + InvokeRepeating( "UpdateHovering", hoverUpdateBegin, hoverUpdateInterval ); + InvokeRepeating( "UpdateDebugText", hoverUpdateBegin, hoverUpdateInterval ); + } + + + //------------------------------------------------- + void OnDisable() + { + inputFocusAction.enabled = false; + + CancelInvoke(); + } + + + //------------------------------------------------- + void Update() + { + UpdateNoSteamVRFallback(); + + GameObject attached = currentAttachedObject; + if ( attached ) + { + attached.SendMessage( "HandAttachedUpdate", this, SendMessageOptions.DontRequireReceiver ); + } + + if ( hoveringInteractable ) + { + hoveringInteractable.SendMessage( "HandHoverUpdate", this, SendMessageOptions.DontRequireReceiver ); + } + } + + + //------------------------------------------------- + void LateUpdate() + { + //Re-attach the controller if nothing else is attached to the hand + if ( controllerObject != null && attachedObjects.Count == 0 ) + { + AttachObject( controllerObject ); + } + } + + + //------------------------------------------------- + private void OnInputFocus( bool hasFocus ) + { + if ( hasFocus ) + { + DetachObject( applicationLostFocusObject, true ); + applicationLostFocusObject.SetActive( false ); + UpdateHandPoses(); + UpdateHovering(); + BroadcastMessage( "OnParentHandInputFocusAcquired", SendMessageOptions.DontRequireReceiver ); + } + else + { + applicationLostFocusObject.SetActive( true ); + AttachObject( applicationLostFocusObject, AttachmentFlags.ParentToHand ); + BroadcastMessage( "OnParentHandInputFocusLost", SendMessageOptions.DontRequireReceiver ); + } + } + + + //------------------------------------------------- + void FixedUpdate() + { + UpdateHandPoses(); + } + + + //------------------------------------------------- + void OnDrawGizmos() + { + Gizmos.color = new Color( 0.5f, 1.0f, 0.5f, 0.9f ); + Transform sphereTransform = hoverSphereTransform ? hoverSphereTransform : this.transform; + Gizmos.DrawWireSphere( sphereTransform.position, hoverSphereRadius ); + } + + + //------------------------------------------------- + private void HandDebugLog( string msg ) + { + if ( spewDebugText ) + { + Debug.Log( "Hand (" + this.name + "): " + msg ); + } + } + + + //------------------------------------------------- + private void UpdateHandPoses() + { + if ( controller != null ) + { + SteamVR vr = SteamVR.instance; + if ( vr != null ) + { + var pose = new Valve.VR.TrackedDevicePose_t(); + var gamePose = new Valve.VR.TrackedDevicePose_t(); + var err = vr.compositor.GetLastPoseForTrackedDeviceIndex( controller.index, ref pose, ref gamePose ); + if ( err == Valve.VR.EVRCompositorError.None ) + { + var t = new SteamVR_Utils.RigidTransform( gamePose.mDeviceToAbsoluteTracking ); + transform.localPosition = t.pos; + transform.localRotation = t.rot; + } + } + } + } + + + //------------------------------------------------- + // Continue to hover over this object indefinitely, whether or not the Hand moves out of its interaction trigger volume. + // + // interactable - The Interactable to hover over indefinitely. + //------------------------------------------------- + public void HoverLock( Interactable interactable ) + { + HandDebugLog( "HoverLock " + interactable ); + hoverLocked = true; + hoveringInteractable = interactable; + } + + + //------------------------------------------------- + // Stop hovering over this object indefinitely. + // + // interactable - The hover-locked Interactable to stop hovering over indefinitely. + //------------------------------------------------- + public void HoverUnlock( Interactable interactable ) + { + HandDebugLog( "HoverUnlock " + interactable ); + if ( hoveringInteractable == interactable ) + { + hoverLocked = false; + } + } + + //------------------------------------------------- + // Was the standard interaction button just pressed? In VR, this is a trigger press. In 2D fallback, this is a mouse left-click. + //------------------------------------------------- + public bool GetStandardInteractionButtonDown() + { + if ( noSteamVRFallbackCamera ) + { + return Input.GetMouseButtonDown( 0 ); + } + else if ( controller != null ) + { + return controller.GetHairTriggerDown(); + } + + return false; + } + + + //------------------------------------------------- + // Was the standard interaction button just released? In VR, this is a trigger press. In 2D fallback, this is a mouse left-click. + //------------------------------------------------- + public bool GetStandardInteractionButtonUp() + { + if ( noSteamVRFallbackCamera ) + { + return Input.GetMouseButtonUp( 0 ); + } + else if ( controller != null ) + { + return controller.GetHairTriggerUp(); + } + + return false; + } + + + //------------------------------------------------- + // Is the standard interaction button being pressed? In VR, this is a trigger press. In 2D fallback, this is a mouse left-click. + //------------------------------------------------- + public bool GetStandardInteractionButton() + { + if ( noSteamVRFallbackCamera ) + { + return Input.GetMouseButton( 0 ); + } + else if ( controller != null ) + { + return controller.GetHairTrigger(); + } + + return false; + } + + + //------------------------------------------------- + private void InitController( int index ) + { + if ( controller == null ) + { + controller = SteamVR_Controller.Input( index ); + + HandDebugLog( "Hand " + name + " connected with device index " + controller.index ); + + controllerObject = GameObject.Instantiate( controllerPrefab ); + controllerObject.SetActive( true ); + controllerObject.name = controllerPrefab.name + "_" + this.name; + AttachObject( controllerObject ); + controller.TriggerHapticPulse( 800 ); + + // If the player's scale has been changed the object to attach will be the wrong size. + // To fix this we change the object's scale back to its original, pre-attach scale. + controllerObject.transform.localScale = controllerPrefab.transform.localScale; + + this.BroadcastMessage( "OnHandInitialized", index, SendMessageOptions.DontRequireReceiver ); // let child objects know we've initialized + } + } + } + +#if UNITY_EDITOR + //------------------------------------------------------------------------- + [UnityEditor.CustomEditor( typeof( Hand ) )] + public class HandEditor : UnityEditor.Editor + { + //------------------------------------------------- + // Custom Inspector GUI allows us to click from within the UI + //------------------------------------------------- + public override void OnInspectorGUI() + { + DrawDefaultInspector(); + + Hand hand = (Hand)target; + + if ( hand.otherHand ) + { + if ( hand.otherHand.otherHand != hand ) + { + UnityEditor.EditorGUILayout.HelpBox( "The otherHand of this Hand's otherHand is not this Hand.", UnityEditor.MessageType.Warning ); + } + + if ( hand.startingHandType == Hand.HandType.Left && hand.otherHand.startingHandType != Hand.HandType.Right ) + { + UnityEditor.EditorGUILayout.HelpBox( "This is a left Hand but otherHand is not a right Hand.", UnityEditor.MessageType.Warning ); + } + + if ( hand.startingHandType == Hand.HandType.Right && hand.otherHand.startingHandType != Hand.HandType.Left ) + { + UnityEditor.EditorGUILayout.HelpBox( "This is a right Hand but otherHand is not a left Hand.", UnityEditor.MessageType.Warning ); + } + + if ( hand.startingHandType == Hand.HandType.Any && hand.otherHand.startingHandType != Hand.HandType.Any ) + { + UnityEditor.EditorGUILayout.HelpBox( "This is an any-handed Hand but otherHand is not an any-handed Hand.", UnityEditor.MessageType.Warning ); + } + } + } + } +#endif +} diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/Hand.cs.meta b/Assets/SteamVR/InteractionSystem/Core/Scripts/Hand.cs.meta new file mode 100644 index 00000000..ab2575c7 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/Hand.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 29e3e4511966ba94d8ba0b98c6c62f82 +timeCreated: 1484266511 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: b93fe5c516cf6ed4b9153ec790f856e2, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/HapticRack.cs b/Assets/SteamVR/InteractionSystem/Core/Scripts/HapticRack.cs new file mode 100644 index 00000000..7f327258 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/HapticRack.cs @@ -0,0 +1,83 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Triggers haptic pulses based on a linear mapping +// +//============================================================================= + +using UnityEngine; +using UnityEngine.Events; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + [RequireComponent( typeof( Interactable ) )] + public class HapticRack : MonoBehaviour + { + [Tooltip( "The linear mapping driving the haptic rack" )] + public LinearMapping linearMapping; + + [Tooltip( "The number of haptic pulses evenly distributed along the mapping" )] + public int teethCount = 128; + + [Tooltip( "Minimum duration of the haptic pulse" )] + public int minimumPulseDuration = 500; + + [Tooltip( "Maximum duration of the haptic pulse" )] + public int maximumPulseDuration = 900; + + [Tooltip( "This event is triggered every time a haptic pulse is made" )] + public UnityEvent onPulse; + + private Hand hand; + private int previousToothIndex = -1; + + //------------------------------------------------- + void Awake() + { + if ( linearMapping == null ) + { + linearMapping = GetComponent(); + } + } + + + //------------------------------------------------- + private void OnHandHoverBegin( Hand hand ) + { + this.hand = hand; + } + + + //------------------------------------------------- + private void OnHandHoverEnd( Hand hand ) + { + this.hand = null; + } + + + //------------------------------------------------- + void Update() + { + int currentToothIndex = Mathf.RoundToInt( linearMapping.value * teethCount - 0.5f ); + if ( currentToothIndex != previousToothIndex ) + { + Pulse(); + previousToothIndex = currentToothIndex; + } + } + + + //------------------------------------------------- + private void Pulse() + { + if ( hand && ( hand.controller != null ) && ( hand.GetStandardInteractionButton() ) ) + { + ushort duration = (ushort)Random.Range( minimumPulseDuration, maximumPulseDuration + 1 ); + hand.controller.TriggerHapticPulse( duration ); + + onPulse.Invoke(); + } + } + } +} diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/HapticRack.cs.meta b/Assets/SteamVR/InteractionSystem/Core/Scripts/HapticRack.cs.meta new file mode 100644 index 00000000..a1b94567 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/HapticRack.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 817521c5973e4ee45905ee97df3c38ad +timeCreated: 1433796170 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: b93fe5c516cf6ed4b9153ec790f856e2, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/HideOnHandFocusLost.cs b/Assets/SteamVR/InteractionSystem/Core/Scripts/HideOnHandFocusLost.cs new file mode 100644 index 00000000..9d3b138c --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/HideOnHandFocusLost.cs @@ -0,0 +1,21 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Sets this GameObject as inactive when it loses focus from the hand +// +//============================================================================= + +using UnityEngine; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + public class HideOnHandFocusLost : MonoBehaviour + { + //------------------------------------------------- + private void OnHandFocusLost( Hand hand ) + { + gameObject.SetActive( false ); + } + } +} diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/HideOnHandFocusLost.cs.meta b/Assets/SteamVR/InteractionSystem/Core/Scripts/HideOnHandFocusLost.cs.meta new file mode 100644 index 00000000..9987d498 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/HideOnHandFocusLost.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: eb6d6653511aff5409d0827d4e3b79ea +timeCreated: 1439254899 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: b93fe5c516cf6ed4b9153ec790f856e2, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/IgnoreHovering.cs b/Assets/SteamVR/InteractionSystem/Core/Scripts/IgnoreHovering.cs new file mode 100644 index 00000000..7daa7980 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/IgnoreHovering.cs @@ -0,0 +1,17 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Makes this object ignore any hovering by the hands +// +//============================================================================= + +using UnityEngine; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + public class IgnoreHovering : MonoBehaviour + { + [Tooltip( "If Hand is not null, only ignore the specified hand" )] + public Hand onlyIgnoreHand = null; + } +} diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/IgnoreHovering.cs.meta b/Assets/SteamVR/InteractionSystem/Core/Scripts/IgnoreHovering.cs.meta new file mode 100644 index 00000000..9ce16365 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/IgnoreHovering.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f5a1be5da1c87864582d778e52de4e9b +timeCreated: 1444166650 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: b93fe5c516cf6ed4b9153ec790f856e2, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/InputModule.cs b/Assets/SteamVR/InteractionSystem/Core/Scripts/InputModule.cs new file mode 100644 index 00000000..ce97a312 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/InputModule.cs @@ -0,0 +1,79 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Makes the hand act as an input module for Unity's event system +// +//============================================================================= + +using UnityEngine; +using System.Collections; +using UnityEngine.EventSystems; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + public class InputModule : BaseInputModule + { + private GameObject submitObject; + + //------------------------------------------------- + private static InputModule _instance; + public static InputModule instance + { + get + { + if ( _instance == null ) + _instance = GameObject.FindObjectOfType(); + + return _instance; + } + } + + + //------------------------------------------------- + public override bool ShouldActivateModule() + { + if ( !base.ShouldActivateModule() ) + return false; + + return submitObject != null; + } + + + //------------------------------------------------- + public void HoverBegin( GameObject gameObject ) + { + PointerEventData pointerEventData = new PointerEventData( eventSystem ); + ExecuteEvents.Execute( gameObject, pointerEventData, ExecuteEvents.pointerEnterHandler ); + } + + + //------------------------------------------------- + public void HoverEnd( GameObject gameObject ) + { + PointerEventData pointerEventData = new PointerEventData( eventSystem ); + pointerEventData.selectedObject = null; + ExecuteEvents.Execute( gameObject, pointerEventData, ExecuteEvents.pointerExitHandler ); + } + + + //------------------------------------------------- + public void Submit( GameObject gameObject ) + { + submitObject = gameObject; + } + + + //------------------------------------------------- + public override void Process() + { + if ( submitObject ) + { + BaseEventData data = GetBaseEventData(); + data.selectedObject = submitObject; + ExecuteEvents.Execute( submitObject, data, ExecuteEvents.submitHandler ); + + submitObject = null; + } + } + } +} diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/InputModule.cs.meta b/Assets/SteamVR/InteractionSystem/Core/Scripts/InputModule.cs.meta new file mode 100644 index 00000000..b8bc9167 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/InputModule.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c9e05292e0d62b542ac5bba92674a86d +timeCreated: 1429055028 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: b93fe5c516cf6ed4b9153ec790f856e2, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/Interactable.cs b/Assets/SteamVR/InteractionSystem/Core/Scripts/Interactable.cs new file mode 100644 index 00000000..b355011b --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/Interactable.cs @@ -0,0 +1,43 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: This object will get hover events and can be attached to the hands +// +//============================================================================= + +using UnityEngine; +using UnityEngine.Events; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + public class Interactable : MonoBehaviour + { + public delegate void OnAttachedToHandDelegate( Hand hand ); + public delegate void OnDetachedFromHandDelegate( Hand hand ); + + [HideInInspector] + public event OnAttachedToHandDelegate onAttachedToHand; + [HideInInspector] + public event OnDetachedFromHandDelegate onDetachedFromHand; + + //------------------------------------------------- + private void OnAttachedToHand( Hand hand ) + { + if ( onAttachedToHand != null ) + { + onAttachedToHand.Invoke( hand ); + } + } + + + //------------------------------------------------- + private void OnDetachedFromHand( Hand hand ) + { + if ( onDetachedFromHand != null ) + { + onDetachedFromHand.Invoke( hand ); + } + } + } +} diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/Interactable.cs.meta b/Assets/SteamVR/InteractionSystem/Core/Scripts/Interactable.cs.meta new file mode 100644 index 00000000..ea4b7d43 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/Interactable.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b93b6a877adcbf94c89a9d6e0c0e844d +timeCreated: 1430943024 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: b93fe5c516cf6ed4b9153ec790f856e2, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/InteractableButtonEvents.cs b/Assets/SteamVR/InteractionSystem/Core/Scripts/InteractableButtonEvents.cs new file mode 100644 index 00000000..67a3719d --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/InteractableButtonEvents.cs @@ -0,0 +1,78 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Sends simple controller button events to UnityEvents +// +//============================================================================= + +using UnityEngine; +using UnityEngine.Events; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + [RequireComponent( typeof( Interactable ) )] + public class InteractableButtonEvents : MonoBehaviour + { + public UnityEvent onTriggerDown; + public UnityEvent onTriggerUp; + public UnityEvent onGripDown; + public UnityEvent onGripUp; + public UnityEvent onTouchpadDown; + public UnityEvent onTouchpadUp; + public UnityEvent onTouchpadTouch; + public UnityEvent onTouchpadRelease; + + //------------------------------------------------- + void Update() + { + for ( int i = 0; i < Player.instance.handCount; i++ ) + { + Hand hand = Player.instance.GetHand( i ); + + if ( hand.controller != null ) + { + if ( hand.controller.GetPressDown( Valve.VR.EVRButtonId.k_EButton_SteamVR_Trigger ) ) + { + onTriggerDown.Invoke(); + } + + if ( hand.controller.GetPressUp( Valve.VR.EVRButtonId.k_EButton_SteamVR_Trigger ) ) + { + onTriggerUp.Invoke(); + } + + if ( hand.controller.GetPressDown( Valve.VR.EVRButtonId.k_EButton_Grip ) ) + { + onGripDown.Invoke(); + } + + if ( hand.controller.GetPressUp( Valve.VR.EVRButtonId.k_EButton_Grip ) ) + { + onGripUp.Invoke(); + } + + if ( hand.controller.GetPressDown( Valve.VR.EVRButtonId.k_EButton_SteamVR_Touchpad ) ) + { + onTouchpadDown.Invoke(); + } + + if ( hand.controller.GetPressUp( Valve.VR.EVRButtonId.k_EButton_SteamVR_Touchpad ) ) + { + onTouchpadUp.Invoke(); + } + + if ( hand.controller.GetTouchDown( Valve.VR.EVRButtonId.k_EButton_SteamVR_Touchpad ) ) + { + onTouchpadTouch.Invoke(); + } + + if ( hand.controller.GetTouchUp( Valve.VR.EVRButtonId.k_EButton_SteamVR_Touchpad ) ) + { + onTouchpadRelease.Invoke(); + } + } + } + + } + } +} diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/InteractableButtonEvents.cs.meta b/Assets/SteamVR/InteractionSystem/Core/Scripts/InteractableButtonEvents.cs.meta new file mode 100644 index 00000000..2b9c6a01 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/InteractableButtonEvents.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6948c755e9613734dbac166d770c8e3e +timeCreated: 1435876320 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: b93fe5c516cf6ed4b9153ec790f856e2, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/InteractableHoverEvents.cs b/Assets/SteamVR/InteractionSystem/Core/Scripts/InteractableHoverEvents.cs new file mode 100644 index 00000000..4102d074 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/InteractableHoverEvents.cs @@ -0,0 +1,49 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Sends UnityEvents for basic hand interactions +// +//============================================================================= + +using UnityEngine; +using UnityEngine.Events; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + [RequireComponent( typeof( Interactable ) )] + public class InteractableHoverEvents : MonoBehaviour + { + public UnityEvent onHandHoverBegin; + public UnityEvent onHandHoverEnd; + public UnityEvent onAttachedToHand; + public UnityEvent onDetachedFromHand; + + //------------------------------------------------- + private void OnHandHoverBegin() + { + onHandHoverBegin.Invoke(); + } + + + //------------------------------------------------- + private void OnHandHoverEnd() + { + onHandHoverEnd.Invoke(); + } + + + //------------------------------------------------- + private void OnAttachedToHand( Hand hand ) + { + onAttachedToHand.Invoke(); + } + + + //------------------------------------------------- + private void OnDetachedFromHand( Hand hand ) + { + onDetachedFromHand.Invoke(); + } + } +} diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/InteractableHoverEvents.cs.meta b/Assets/SteamVR/InteractionSystem/Core/Scripts/InteractableHoverEvents.cs.meta new file mode 100644 index 00000000..ee592ebd --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/InteractableHoverEvents.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c4153b26428ccf041950b92c057812a3 +timeCreated: 1432689386 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: b93fe5c516cf6ed4b9153ec790f856e2, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/ItemPackage.cs b/Assets/SteamVR/InteractionSystem/Core/Scripts/ItemPackage.cs new file mode 100644 index 00000000..cbf28fee --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/ItemPackage.cs @@ -0,0 +1,24 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: A package of items that can interact with the hands and be returned +// +//============================================================================= + +using UnityEngine; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + public class ItemPackage : MonoBehaviour + { + public enum ItemPackageType { Unrestricted, OneHanded, TwoHanded } + + public new string name; + public ItemPackageType packageType = ItemPackageType.Unrestricted; + public GameObject itemPrefab; // object to be spawned on tracked controller + public GameObject otherHandItemPrefab; // object to be spawned in Other Hand + public GameObject previewPrefab; // used to preview inputObject + public GameObject fadedPreviewPrefab; // used to preview insubstantial inputObject + } +} diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/ItemPackage.cs.meta b/Assets/SteamVR/InteractionSystem/Core/Scripts/ItemPackage.cs.meta new file mode 100644 index 00000000..edda282f --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/ItemPackage.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c9f83db71b9a6764abf964ab7679f035 +timeCreated: 1436836633 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: b93fe5c516cf6ed4b9153ec790f856e2, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/ItemPackageReference.cs b/Assets/SteamVR/InteractionSystem/Core/Scripts/ItemPackageReference.cs new file mode 100644 index 00000000..ed4cdd2d --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/ItemPackageReference.cs @@ -0,0 +1,17 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Keeps track of the ItemPackage this object is a part of +// +//============================================================================= + +using UnityEngine; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + public class ItemPackageReference : MonoBehaviour + { + public ItemPackage itemPackage; + } +} diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/ItemPackageReference.cs.meta b/Assets/SteamVR/InteractionSystem/Core/Scripts/ItemPackageReference.cs.meta new file mode 100644 index 00000000..7141b1d6 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/ItemPackageReference.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 57468e6cbae21894fa42c90413c294ff +timeCreated: 1436997098 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: b93fe5c516cf6ed4b9153ec790f856e2, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/ItemPackageSpawner.cs b/Assets/SteamVR/InteractionSystem/Core/Scripts/ItemPackageSpawner.cs new file mode 100644 index 00000000..efaf131a --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/ItemPackageSpawner.cs @@ -0,0 +1,348 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Handles the spawning and returning of the ItemPackage +// +//============================================================================= + +using UnityEngine; +using System.Collections; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using UnityEngine.Events; +#if UNITY_EDITOR +using UnityEditor; +#endif + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + [RequireComponent( typeof( Interactable ) )] + public class ItemPackageSpawner : MonoBehaviour + { + public ItemPackage itemPackage + { + get + { + return _itemPackage; + } + set + { + CreatePreviewObject(); + } + } + + public ItemPackage _itemPackage; + + private bool useItemPackagePreview = true; + private bool useFadedPreview = false; + private GameObject previewObject; + + public bool requireTriggerPressToTake = false; + public bool requireTriggerPressToReturn = false; + public bool showTriggerHint = false; + + [EnumFlags] + public Hand.AttachmentFlags attachmentFlags = Hand.defaultAttachmentFlags; + public string attachmentPoint; + + public bool takeBackItem = false; // if a hand enters this trigger and has the item this spawner dispenses at the top of the stack, remove it from the stack + + public bool acceptDifferentItems = false; + + private GameObject spawnedItem; + private bool itemIsSpawned = false; + + public UnityEvent pickupEvent; + public UnityEvent dropEvent; + + public bool justPickedUpItem = false; + + + //------------------------------------------------- + private void CreatePreviewObject() + { + if ( !useItemPackagePreview ) + { + return; + } + + ClearPreview(); + + if ( useItemPackagePreview ) + { + if ( itemPackage == null ) + { + return; + } + + if ( useFadedPreview == false ) // if we don't have a spawned item out there, use the regular preview + { + if ( itemPackage.previewPrefab != null ) + { + previewObject = Instantiate( itemPackage.previewPrefab, transform.position, Quaternion.identity ) as GameObject; + previewObject.transform.parent = transform; + previewObject.transform.localRotation = Quaternion.identity; + } + } + else // there's a spawned item out there. Use the faded preview + { + if ( itemPackage.fadedPreviewPrefab != null ) + { + previewObject = Instantiate( itemPackage.fadedPreviewPrefab, transform.position, Quaternion.identity ) as GameObject; + previewObject.transform.parent = transform; + previewObject.transform.localRotation = Quaternion.identity; + } + } + } + } + + + //------------------------------------------------- + void Start() + { + VerifyItemPackage(); + } + + + //------------------------------------------------- + private void VerifyItemPackage() + { + if ( itemPackage == null ) + { + ItemPackageNotValid(); + } + + if ( itemPackage.itemPrefab == null ) + { + ItemPackageNotValid(); + } + } + + + //------------------------------------------------- + private void ItemPackageNotValid() + { + Debug.LogError( "ItemPackage assigned to " + gameObject.name + " is not valid. Destroying this game object." ); + Destroy( gameObject ); + } + + + //------------------------------------------------- + private void ClearPreview() + { + foreach ( Transform child in transform ) + { + if ( Time.time > 0 ) + { + GameObject.Destroy( child.gameObject ); + } + else + { + GameObject.DestroyImmediate( child.gameObject ); + } + } + } + + + //------------------------------------------------- + void Update() + { + if ( ( itemIsSpawned == true ) && ( spawnedItem == null ) ) + { + itemIsSpawned = false; + useFadedPreview = false; + dropEvent.Invoke(); + CreatePreviewObject(); + } + } + + + //------------------------------------------------- + private void OnHandHoverBegin( Hand hand ) + { + ItemPackage currentAttachedItemPackage = GetAttachedItemPackage( hand ); + + if ( currentAttachedItemPackage == itemPackage ) // the item at the top of the hand's stack has an associated ItemPackage + { + if ( takeBackItem && !requireTriggerPressToReturn ) // if we want to take back matching items and aren't waiting for a trigger press + { + TakeBackItem( hand ); + } + } + + if ( !requireTriggerPressToTake ) // we don't require trigger press for pickup. Spawn and attach object. + { + SpawnAndAttachObject( hand ); + } + + if ( requireTriggerPressToTake && showTriggerHint ) + { + ControllerButtonHints.ShowTextHint( hand, Valve.VR.EVRButtonId.k_EButton_SteamVR_Trigger, "PickUp" ); + } + } + + + //------------------------------------------------- + private void TakeBackItem( Hand hand ) + { + RemoveMatchingItemsFromHandStack( itemPackage, hand ); + + if ( itemPackage.packageType == ItemPackage.ItemPackageType.TwoHanded ) + { + RemoveMatchingItemsFromHandStack( itemPackage, hand.otherHand ); + } + } + + + //------------------------------------------------- + private ItemPackage GetAttachedItemPackage( Hand hand ) + { + GameObject currentAttachedObject = hand.currentAttachedObject; + + if ( currentAttachedObject == null ) // verify the hand is holding something + { + return null; + } + + ItemPackageReference packageReference = hand.currentAttachedObject.GetComponent(); + if ( packageReference == null ) // verify the item in the hand is matchable + { + return null; + } + + ItemPackage attachedItemPackage = packageReference.itemPackage; // return the ItemPackage reference we find. + + return attachedItemPackage; + } + + + //------------------------------------------------- + private void HandHoverUpdate( Hand hand ) + { + if ( requireTriggerPressToTake ) + { + if ( hand.controller != null && hand.controller.GetHairTriggerDown() ) + { + SpawnAndAttachObject( hand ); + } + } + } + + + //------------------------------------------------- + private void OnHandHoverEnd( Hand hand ) + { + if ( !justPickedUpItem && requireTriggerPressToTake && showTriggerHint ) + { + ControllerButtonHints.HideTextHint( hand, Valve.VR.EVRButtonId.k_EButton_SteamVR_Trigger ); + } + + justPickedUpItem = false; + } + + + //------------------------------------------------- + private void RemoveMatchingItemsFromHandStack( ItemPackage package, Hand hand ) + { + for ( int i = 0; i < hand.AttachedObjects.Count; i++ ) + { + ItemPackageReference packageReference = hand.AttachedObjects[i].attachedObject.GetComponent(); + if ( packageReference != null ) + { + ItemPackage attachedObjectItemPackage = packageReference.itemPackage; + if ( ( attachedObjectItemPackage != null ) && ( attachedObjectItemPackage == package ) ) + { + GameObject detachedItem = hand.AttachedObjects[i].attachedObject; + hand.DetachObject( detachedItem ); + } + } + } + } + + + //------------------------------------------------- + private void RemoveMatchingItemTypesFromHand( ItemPackage.ItemPackageType packageType, Hand hand ) + { + for ( int i = 0; i < hand.AttachedObjects.Count; i++ ) + { + ItemPackageReference packageReference = hand.AttachedObjects[i].attachedObject.GetComponent(); + if ( packageReference != null ) + { + if ( packageReference.itemPackage.packageType == packageType ) + { + GameObject detachedItem = hand.AttachedObjects[i].attachedObject; + hand.DetachObject( detachedItem ); + } + } + } + } + + + //------------------------------------------------- + private void SpawnAndAttachObject( Hand hand ) + { + if ( hand.otherHand != null ) + { + //If the other hand has this item package, take it back from the other hand + ItemPackage otherHandItemPackage = GetAttachedItemPackage( hand.otherHand ); + if ( otherHandItemPackage == itemPackage ) + { + TakeBackItem( hand.otherHand ); + } + } + + if ( showTriggerHint ) + { + ControllerButtonHints.HideTextHint( hand, Valve.VR.EVRButtonId.k_EButton_SteamVR_Trigger ); + } + + if ( itemPackage.otherHandItemPrefab != null ) + { + if ( hand.otherHand.hoverLocked ) + { + //Debug.Log( "Not attaching objects because other hand is hoverlocked and we can't deliver both items." ); + return; + } + } + + // if we're trying to spawn a one-handed item, remove one and two-handed items from this hand and two-handed items from both hands + if ( itemPackage.packageType == ItemPackage.ItemPackageType.OneHanded ) + { + RemoveMatchingItemTypesFromHand( ItemPackage.ItemPackageType.OneHanded, hand ); + RemoveMatchingItemTypesFromHand( ItemPackage.ItemPackageType.TwoHanded, hand ); + RemoveMatchingItemTypesFromHand( ItemPackage.ItemPackageType.TwoHanded, hand.otherHand ); + } + + // if we're trying to spawn a two-handed item, remove one and two-handed items from both hands + if ( itemPackage.packageType == ItemPackage.ItemPackageType.TwoHanded ) + { + RemoveMatchingItemTypesFromHand( ItemPackage.ItemPackageType.OneHanded, hand ); + RemoveMatchingItemTypesFromHand( ItemPackage.ItemPackageType.OneHanded, hand.otherHand ); + RemoveMatchingItemTypesFromHand( ItemPackage.ItemPackageType.TwoHanded, hand ); + RemoveMatchingItemTypesFromHand( ItemPackage.ItemPackageType.TwoHanded, hand.otherHand ); + } + + spawnedItem = GameObject.Instantiate( itemPackage.itemPrefab ); + spawnedItem.SetActive( true ); + hand.AttachObject( spawnedItem, attachmentFlags, attachmentPoint ); + + if ( ( itemPackage.otherHandItemPrefab != null ) && ( hand.otherHand.controller != null ) ) + { + GameObject otherHandObjectToAttach = GameObject.Instantiate( itemPackage.otherHandItemPrefab ); + otherHandObjectToAttach.SetActive( true ); + hand.otherHand.AttachObject( otherHandObjectToAttach, attachmentFlags ); + } + + itemIsSpawned = true; + + justPickedUpItem = true; + + if ( takeBackItem ) + { + useFadedPreview = true; + pickupEvent.Invoke(); + CreatePreviewObject(); + } + } + } +} diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/ItemPackageSpawner.cs.meta b/Assets/SteamVR/InteractionSystem/Core/Scripts/ItemPackageSpawner.cs.meta new file mode 100644 index 00000000..ad61425e --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/ItemPackageSpawner.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 43e53a985809f0949b9a42cc2a6888c9 +timeCreated: 1436915041 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: b93fe5c516cf6ed4b9153ec790f856e2, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearAnimation.cs b/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearAnimation.cs new file mode 100644 index 00000000..6c11379a --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearAnimation.cs @@ -0,0 +1,64 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Animation that moves based on a linear mapping +// +//============================================================================= + +using UnityEngine; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + public class LinearAnimation : MonoBehaviour + { + public LinearMapping linearMapping; + public new Animation animation; + + private AnimationState animState; + private float animLength; + private float lastValue; + + + //------------------------------------------------- + void Awake() + { + if ( animation == null ) + { + animation = GetComponent(); + } + + if ( linearMapping == null ) + { + linearMapping = GetComponent(); + } + + //We're assuming the animation has a single clip, and that's the one we're + //going to scrub with the linear mapping. + animation.playAutomatically = true; + animState = animation[animation.clip.name]; + + //If the anim state's (i.e. clip's) wrap mode is Once (the default) or ClampForever, + //Unity will automatically stop playing the anim, regardless of subsequent changes + //to animState.time. Thus, we set the wrap mode to PingPong. + animState.wrapMode = WrapMode.PingPong; + animState.speed = 0; + animLength = animState.length; + } + + + //------------------------------------------------- + void Update() + { + float value = linearMapping.value; + + //No need to set the anim if our value hasn't changed. + if ( value != lastValue ) + { + animState.time = value / animLength; + } + + lastValue = value; + } + } +} diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearAnimation.cs.meta b/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearAnimation.cs.meta new file mode 100644 index 00000000..2f6ba37a --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearAnimation.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 49a60120b932b59409171f5ff611b639 +timeCreated: 1433799038 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: b93fe5c516cf6ed4b9153ec790f856e2, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearAnimator.cs b/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearAnimator.cs new file mode 100644 index 00000000..15b84ae2 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearAnimator.cs @@ -0,0 +1,59 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Animator whose speed is set based on a linear mapping +// +//============================================================================= + +using UnityEngine; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + public class LinearAnimator : MonoBehaviour + { + public LinearMapping linearMapping; + public Animator animator; + + private float currentLinearMapping = float.NaN; + private int framesUnchanged = 0; + + + //------------------------------------------------- + void Awake() + { + if ( animator == null ) + { + animator = GetComponent(); + } + + animator.speed = 0.0f; + + if ( linearMapping == null ) + { + linearMapping = GetComponent(); + } + } + + + //------------------------------------------------- + void Update() + { + if ( currentLinearMapping != linearMapping.value ) + { + currentLinearMapping = linearMapping.value; + animator.enabled = true; + animator.Play( 0, 0, currentLinearMapping ); + framesUnchanged = 0; + } + else + { + framesUnchanged++; + if ( framesUnchanged > 2 ) + { + animator.enabled = false; + } + } + } + } +} diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearAnimator.cs.meta b/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearAnimator.cs.meta new file mode 100644 index 00000000..36c56206 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearAnimator.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 634b98c3ef8bc6d4f834f80a4613a4a4 +timeCreated: 1435864149 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: b93fe5c516cf6ed4b9153ec790f856e2, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearAudioPitch.cs b/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearAudioPitch.cs new file mode 100644 index 00000000..ec17c040 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearAudioPitch.cs @@ -0,0 +1,58 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Changes the pitch of this audio source based on a linear mapping +// and a curve +// +//============================================================================= + +using UnityEngine; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + public class LinearAudioPitch : MonoBehaviour + { + public LinearMapping linearMapping; + public AnimationCurve pitchCurve; + public float minPitch; + public float maxPitch; + public bool applyContinuously = true; + + private AudioSource audioSource; + + + //------------------------------------------------- + void Awake() + { + if ( audioSource == null ) + { + audioSource = GetComponent(); + } + + if ( linearMapping == null ) + { + linearMapping = GetComponent(); + } + } + + + //------------------------------------------------- + void Update() + { + if ( applyContinuously ) + { + Apply(); + } + } + + + //------------------------------------------------- + private void Apply() + { + float y = pitchCurve.Evaluate( linearMapping.value ); + + audioSource.pitch = Mathf.Lerp( minPitch, maxPitch, y ); + } + } +} diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearAudioPitch.cs.meta b/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearAudioPitch.cs.meta new file mode 100644 index 00000000..da2964e0 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearAudioPitch.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: bb07dbf09f9933e49b22c82d8428c53b +timeCreated: 1436834777 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: b93fe5c516cf6ed4b9153ec790f856e2, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearBlendshape.cs b/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearBlendshape.cs new file mode 100644 index 00000000..af1740b7 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearBlendshape.cs @@ -0,0 +1,51 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Set the blend shape weight based on a linear mapping +// +//============================================================================= + +using UnityEngine; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + public class LinearBlendshape : MonoBehaviour + { + public LinearMapping linearMapping; + public SkinnedMeshRenderer skinnedMesh; + + private float lastValue; + + + //------------------------------------------------- + void Awake() + { + if ( skinnedMesh == null ) + { + skinnedMesh = GetComponent(); + } + + if ( linearMapping == null ) + { + linearMapping = GetComponent(); + } + } + + + //------------------------------------------------- + void Update() + { + float value = linearMapping.value; + + //No need to set the blend if our value hasn't changed. + if ( value != lastValue ) + { + float blendValue = Util.RemapNumberClamped( value, 0f, 1f, 1f, 100f ); + skinnedMesh.SetBlendShapeWeight( 0, blendValue ); + } + + lastValue = value; + } + } +} diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearBlendshape.cs.meta b/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearBlendshape.cs.meta new file mode 100644 index 00000000..74cb2ed7 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearBlendshape.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 5a3622562855c9a40a14846ffdc8bfe4 +timeCreated: 1447859480 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: b93fe5c516cf6ed4b9153ec790f856e2, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearDisplacement.cs b/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearDisplacement.cs new file mode 100644 index 00000000..a59c9f4c --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearDisplacement.cs @@ -0,0 +1,41 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Move the position of this object based on a linear mapping +// +//============================================================================= + +using UnityEngine; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + public class LinearDisplacement : MonoBehaviour + { + public Vector3 displacement; + public LinearMapping linearMapping; + + private Vector3 initialPosition; + + //------------------------------------------------- + void Start() + { + initialPosition = transform.localPosition; + + if ( linearMapping == null ) + { + linearMapping = GetComponent(); + } + } + + + //------------------------------------------------- + void Update() + { + if ( linearMapping ) + { + transform.localPosition = initialPosition + linearMapping.value * displacement; + } + } + } +} diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearDisplacement.cs.meta b/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearDisplacement.cs.meta new file mode 100644 index 00000000..66a0a137 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearDisplacement.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 13d876e5d485004448f3e7b57eece9ab +timeCreated: 1433730007 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: b93fe5c516cf6ed4b9153ec790f856e2, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearDrive.cs b/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearDrive.cs new file mode 100644 index 00000000..dabd09e0 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearDrive.cs @@ -0,0 +1,148 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Drives a linear mapping based on position between 2 positions +// +//============================================================================= + +using UnityEngine; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + [RequireComponent( typeof( Interactable ) )] + public class LinearDrive : MonoBehaviour + { + public Transform startPosition; + public Transform endPosition; + public LinearMapping linearMapping; + public bool repositionGameObject = true; + public bool maintainMomemntum = true; + public float momemtumDampenRate = 5.0f; + + private float initialMappingOffset; + private int numMappingChangeSamples = 5; + private float[] mappingChangeSamples; + private float prevMapping = 0.0f; + private float mappingChangeRate; + private int sampleCount = 0; + + + //------------------------------------------------- + void Awake() + { + mappingChangeSamples = new float[numMappingChangeSamples]; + } + + + //------------------------------------------------- + void Start() + { + if ( linearMapping == null ) + { + linearMapping = GetComponent(); + } + + if ( linearMapping == null ) + { + linearMapping = gameObject.AddComponent(); + } + + initialMappingOffset = linearMapping.value; + + if ( repositionGameObject ) + { + UpdateLinearMapping( transform ); + } + } + + + //------------------------------------------------- + private void HandHoverUpdate( Hand hand ) + { + if ( hand.GetStandardInteractionButtonDown() ) + { + hand.HoverLock( GetComponent() ); + + initialMappingOffset = linearMapping.value - CalculateLinearMapping( hand.transform ); + sampleCount = 0; + mappingChangeRate = 0.0f; + } + + if ( hand.GetStandardInteractionButtonUp() ) + { + hand.HoverUnlock( GetComponent() ); + + CalculateMappingChangeRate(); + } + + if ( hand.GetStandardInteractionButton() ) + { + UpdateLinearMapping( hand.transform ); + } + } + + + //------------------------------------------------- + private void CalculateMappingChangeRate() + { + //Compute the mapping change rate + mappingChangeRate = 0.0f; + int mappingSamplesCount = Mathf.Min( sampleCount, mappingChangeSamples.Length ); + if ( mappingSamplesCount != 0 ) + { + for ( int i = 0; i < mappingSamplesCount; ++i ) + { + mappingChangeRate += mappingChangeSamples[i]; + } + mappingChangeRate /= mappingSamplesCount; + } + } + + + //------------------------------------------------- + private void UpdateLinearMapping( Transform tr ) + { + prevMapping = linearMapping.value; + linearMapping.value = Mathf.Clamp01( initialMappingOffset + CalculateLinearMapping( tr ) ); + + mappingChangeSamples[sampleCount % mappingChangeSamples.Length] = ( 1.0f / Time.deltaTime ) * ( linearMapping.value - prevMapping ); + sampleCount++; + + if ( repositionGameObject ) + { + transform.position = Vector3.Lerp( startPosition.position, endPosition.position, linearMapping.value ); + } + } + + + //------------------------------------------------- + private float CalculateLinearMapping( Transform tr ) + { + Vector3 direction = endPosition.position - startPosition.position; + float length = direction.magnitude; + direction.Normalize(); + + Vector3 displacement = tr.position - startPosition.position; + + return Vector3.Dot( displacement, direction ) / length; + } + + + //------------------------------------------------- + void Update() + { + if ( maintainMomemntum && mappingChangeRate != 0.0f ) + { + //Dampen the mapping change rate and apply it to the mapping + mappingChangeRate = Mathf.Lerp( mappingChangeRate, 0.0f, momemtumDampenRate * Time.deltaTime ); + linearMapping.value = Mathf.Clamp01( linearMapping.value + ( mappingChangeRate * Time.deltaTime ) ); + + if ( repositionGameObject ) + { + transform.position = Vector3.Lerp( startPosition.position, endPosition.position, linearMapping.value ); + } + } + } + } +} diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearDrive.cs.meta b/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearDrive.cs.meta new file mode 100644 index 00000000..bbc2a5b2 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearDrive.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8c81a27fd18a29444be92481fe681f4b +timeCreated: 1434650764 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: b93fe5c516cf6ed4b9153ec790f856e2, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearMapping.cs b/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearMapping.cs new file mode 100644 index 00000000..ec7cc437 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearMapping.cs @@ -0,0 +1,17 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: A linear mapping value that is used by other components +// +//============================================================================= + +using UnityEngine; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + public class LinearMapping : MonoBehaviour + { + public float value; + } +} diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearMapping.cs.meta b/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearMapping.cs.meta new file mode 100644 index 00000000..21c0195e --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/LinearMapping.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 46f8e9e70f68ee3418ad85992778c116 +timeCreated: 1433728353 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: b93fe5c516cf6ed4b9153ec790f856e2, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/PlaySound.cs b/Assets/SteamVR/InteractionSystem/Core/Scripts/PlaySound.cs new file mode 100644 index 00000000..6b8771b2 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/PlaySound.cs @@ -0,0 +1,216 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Plays one of many audio files with possible randomized parameters +// +//============================================================================= + +using UnityEngine; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + [RequireComponent( typeof( AudioSource ) )] + public class PlaySound : MonoBehaviour + { + [Tooltip( "List of audio clips to play." )] + public AudioClip[] waveFile; + [Tooltip( "Stops the currently playing clip in the audioSource. Otherwise clips will overlap/mix." )] + public bool stopOnPlay; + [Tooltip( "After the audio clip finishes playing, disable the game object the sound is on." )] + public bool disableOnEnd; + [Tooltip( "Loop the sound after the wave file variation has been chosen." )] + public bool looping; + [Tooltip( "If the sound is looping and updating it's position every frame, stop the sound at the end of the wav/clip length. " )] + public bool stopOnEnd; + [Tooltip( "Start a wave file playing on awake, but after a delay." )] + public bool playOnAwakeWithDelay; + + [Header ( "Random Volume" )] + public bool useRandomVolume = true; + [Tooltip( "Minimum volume that will be used when randomly set." )] + [Range( 0.0f, 1.0f )] + public float volMin = 1.0f; + [Tooltip( "Maximum volume that will be used when randomly set." )] + [Range( 0.0f, 1.0f )] + public float volMax = 1.0f; + + [Header ( "Random Pitch" )] + [Tooltip( "Use min and max random pitch levels when playing sounds." )] + public bool useRandomPitch = true; + [Tooltip( "Minimum pitch that will be used when randomly set." )] + [Range( -3.0f, 3.0f )] + public float pitchMin = 1.0f; + [Tooltip( "Maximum pitch that will be used when randomly set." )] + [Range( -3.0f, 3.0f )] + public float pitchMax = 1.0f; + + [Header( "Random Time" )] + [Tooltip( "Use Retrigger Time to repeat the sound within a time range" )] + public bool useRetriggerTime = false; + [Tooltip( "Inital time before the first repetion starts" )] + [Range( 0.0f, 360.0f )] + public float timeInitial = 0.0f; + [Tooltip( "Minimum time that will pass before the sound is retriggered" )] + [Range( 0.0f, 360.0f )] + public float timeMin = 0.0f; + [Tooltip( "Maximum pitch that will be used when randomly set." )] + [Range( 0.0f, 360.0f )] + public float timeMax = 0.0f; + + [Header ( "Random Silence" )] + [Tooltip( "Use Retrigger Time to repeat the sound within a time range" )] + public bool useRandomSilence = false; + [Tooltip( "Percent chance that the wave file will not play" )] + [Range( 0.0f, 1.0f )] + public float percentToNotPlay = 0.0f; + + [Header( "Delay Time" )] + [Tooltip( "Time to offset playback of sound" )] + public float delayOffsetTime = 0.0f; + + + private AudioSource audioSource; + private AudioClip clip; + + //------------------------------------------------- + void Awake() + { + audioSource = GetComponent(); + clip = audioSource.clip; + + // audio source play on awake is true, just play the PlaySound immediately + if ( audioSource.playOnAwake ) + { + if ( useRetriggerTime ) + InvokeRepeating( "Play", timeInitial, Random.Range( timeMin, timeMax ) ); + else + Play(); + } + + // if playOnAwake is false, but the playOnAwakeWithDelay on the PlaySound is true, play the sound on away but with a delay + else if ( !audioSource.playOnAwake && playOnAwakeWithDelay ) + { + PlayWithDelay( delayOffsetTime ); + + if ( useRetriggerTime ) + InvokeRepeating( "Play", timeInitial, Random.Range( timeMin, timeMax ) ); + } + + // in the case where both playOnAwake and playOnAwakeWithDelay are both set to true, just to the same as above, play the sound but with a delay + else if ( audioSource.playOnAwake && playOnAwakeWithDelay ) + { + PlayWithDelay( delayOffsetTime ); + + if ( useRetriggerTime ) + InvokeRepeating( "Play", timeInitial, Random.Range( timeMin, timeMax ) ); + } + } + + + //------------------------------------------------- + // Play a random clip from those available + //------------------------------------------------- + public void Play() + { + if ( looping ) + { + PlayLooping(); + + } + + else PlayOneShotSound(); + } + + + //------------------------------------------------- + public void PlayWithDelay( float delayTime ) + { + if ( looping ) + Invoke( "PlayLooping", delayTime ); + else + Invoke( "PlayOneShotSound", delayTime ); + } + + + //------------------------------------------------- + // Play random wave clip on audiosource as a one shot + //------------------------------------------------- + public AudioClip PlayOneShotSound() + { + if ( !this.audioSource.isActiveAndEnabled ) + return null; + + SetAudioSource(); + if ( this.stopOnPlay ) + audioSource.Stop(); + if ( this.disableOnEnd ) + Invoke( "Disable", clip.length ); + this.audioSource.PlayOneShot( this.clip ); + return this.clip; + } + + + //------------------------------------------------- + public AudioClip PlayLooping() + { + // get audio source properties, and do any special randomizations + SetAudioSource(); + + // if the audio source has forgotten to be set to looping, set it to looping + if ( !audioSource.loop ) + audioSource.loop = true; + + // play the clip in the audio source, all the meanwhile updating it's location + this.audioSource.Play(); + + // if disable on end is checked, stop playing the wave file after the first loop has finished. + if ( stopOnEnd ) + Invoke( "Stop", audioSource.clip.length ); + return this.clip; + } + + + //------------------------------------------------- + public void Disable() + { + gameObject.SetActive( false ); + } + + + //------------------------------------------------- + public void Stop() + { + audioSource.Stop(); + } + + + //------------------------------------------------- + private void SetAudioSource() + { + if ( this.useRandomVolume ) + { + //randomly apply a volume between the volume min max + this.audioSource.volume = Random.Range( this.volMin, this.volMax ); + + if ( useRandomSilence && ( Random.Range( 0, 1 ) < percentToNotPlay ) ) + { + this.audioSource.volume = 0; + } + } + + if ( this.useRandomPitch ) + { + //randomly apply a pitch between the pitch min max + this.audioSource.pitch = Random.Range( this.pitchMin, this.pitchMax ); + } + + if ( this.waveFile.Length > 0 ) + { + // randomly assign a wave file from the array into the audioSource clip property + audioSource.clip = this.waveFile[Random.Range( 0, waveFile.Length )]; + clip = audioSource.clip; + } + } + } +} diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/PlaySound.cs.meta b/Assets/SteamVR/InteractionSystem/Core/Scripts/PlaySound.cs.meta new file mode 100644 index 00000000..9c22ff9c --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/PlaySound.cs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 1a125d9df683e2a49b12babced273360 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: b93fe5c516cf6ed4b9153ec790f856e2, type: 3} + userData: + assetBundleName: diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/Player.cs b/Assets/SteamVR/InteractionSystem/Core/Scripts/Player.cs new file mode 100644 index 00000000..36344153 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/Player.cs @@ -0,0 +1,406 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Player interface used to query HMD transforms and VR hands +// +//============================================================================= + +using UnityEngine; +using System.Collections; +using System.Collections.Generic; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + // Singleton representing the local VR player/user, with methods for getting + // the player's hands, head, tracking origin, and guesses for various properties. + //------------------------------------------------------------------------- + public class Player : MonoBehaviour + { + [Tooltip( "Virtual transform corresponding to the meatspace tracking origin. Devices are tracked relative to this." )] + public Transform trackingOriginTransform; + + [Tooltip( "List of possible transforms for the head/HMD, including the no-SteamVR fallback camera." )] + public Transform[] hmdTransforms; + + [Tooltip( "List of possible Hands, including no-SteamVR fallback Hands." )] + public Hand[] hands; + + [Tooltip( "Reference to the physics collider that follows the player's HMD position." )] + public Collider headCollider; + + [Tooltip( "These objects are enabled when SteamVR is available" )] + public GameObject rigSteamVR; + + [Tooltip( "These objects are enabled when SteamVR is not available, or when the user toggles out of VR" )] + public GameObject rig2DFallback; + + [Tooltip( "The audio listener for this player" )] + public Transform audioListener; + + public bool allowToggleTo2D = true; + + + //------------------------------------------------- + // Singleton instance of the Player. Only one can exist at a time. + //------------------------------------------------- + private static Player _instance; + public static Player instance + { + get + { + if ( _instance == null ) + { + _instance = FindObjectOfType(); + } + return _instance; + } + } + + + //------------------------------------------------- + // Get the number of active Hands. + //------------------------------------------------- + public int handCount + { + get + { + int count = 0; + for ( int i = 0; i < hands.Length; i++ ) + { + if ( hands[i].gameObject.activeInHierarchy ) + { + count++; + } + } + return count; + } + } + + + //------------------------------------------------- + // Get the i-th active Hand. + // + // i - Zero-based index of the active Hand to get + //------------------------------------------------- + public Hand GetHand( int i ) + { + for ( int j = 0; j < hands.Length; j++ ) + { + if ( !hands[j].gameObject.activeInHierarchy ) + { + continue; + } + + if ( i > 0 ) + { + i--; + continue; + } + + return hands[j]; + } + + return null; + } + + + //------------------------------------------------- + public Hand leftHand + { + get + { + for ( int j = 0; j < hands.Length; j++ ) + { + if ( !hands[j].gameObject.activeInHierarchy ) + { + continue; + } + + if ( hands[j].GuessCurrentHandType() != Hand.HandType.Left ) + { + continue; + } + + return hands[j]; + } + + return null; + } + } + + + //------------------------------------------------- + public Hand rightHand + { + get + { + for ( int j = 0; j < hands.Length; j++ ) + { + if ( !hands[j].gameObject.activeInHierarchy ) + { + continue; + } + + if ( hands[j].GuessCurrentHandType() != Hand.HandType.Right ) + { + continue; + } + + return hands[j]; + } + + return null; + } + } + + + //------------------------------------------------- + public SteamVR_Controller.Device leftController + { + get + { + Hand h = leftHand; + if ( h ) + { + return h.controller; + } + return null; + } + } + + + //------------------------------------------------- + public SteamVR_Controller.Device rightController + { + get + { + Hand h = rightHand; + if ( h ) + { + return h.controller; + } + return null; + } + } + + + //------------------------------------------------- + // Get the HMD transform. This might return the fallback camera transform if SteamVR is unavailable or disabled. + //------------------------------------------------- + public Transform hmdTransform + { + get + { + for ( int i = 0; i < hmdTransforms.Length; i++ ) + { + if ( hmdTransforms[i].gameObject.activeInHierarchy ) + return hmdTransforms[i]; + } + return null; + } + } + + + //------------------------------------------------- + // Height of the eyes above the ground - useful for estimating player height. + //------------------------------------------------- + public float eyeHeight + { + get + { + Transform hmd = hmdTransform; + if ( hmd ) + { + Vector3 eyeOffset = Vector3.Project( hmd.position - trackingOriginTransform.position, trackingOriginTransform.up ); + return eyeOffset.magnitude / trackingOriginTransform.lossyScale.x; + } + return 0.0f; + } + } + + + //------------------------------------------------- + // Guess for the world-space position of the player's feet, directly beneath the HMD. + //------------------------------------------------- + public Vector3 feetPositionGuess + { + get + { + Transform hmd = hmdTransform; + if ( hmd ) + { + return trackingOriginTransform.position + Vector3.ProjectOnPlane( hmd.position - trackingOriginTransform.position, trackingOriginTransform.up ); + } + return trackingOriginTransform.position; + } + } + + + //------------------------------------------------- + // Guess for the world-space direction of the player's hips/torso. This is effectively just the gaze direction projected onto the floor plane. + //------------------------------------------------- + public Vector3 bodyDirectionGuess + { + get + { + Transform hmd = hmdTransform; + if ( hmd ) + { + Vector3 direction = Vector3.ProjectOnPlane( hmd.forward, trackingOriginTransform.up ); + if ( Vector3.Dot( hmd.up, trackingOriginTransform.up ) < 0.0f ) + { + // The HMD is upside-down. Either + // -The player is bending over backwards + // -The player is bent over looking through their legs + direction = -direction; + } + return direction; + } + return trackingOriginTransform.forward; + } + } + + + //------------------------------------------------- + void Awake() + { + if ( trackingOriginTransform == null ) + { + trackingOriginTransform = this.transform; + } + } + + + //------------------------------------------------- + void OnEnable() + { + _instance = this; + + if ( SteamVR.instance != null ) + { + ActivateRig( rigSteamVR ); + } + else + { +#if !HIDE_DEBUG_UI + ActivateRig( rig2DFallback ); +#endif + } + } + + + //------------------------------------------------- + void OnDrawGizmos() + { + if ( this != instance ) + { + return; + } + + //NOTE: These gizmo icons don't work in the plugin since the icons need to exist in a specific "Gizmos" + // folder in your Asset tree. These icons are included under Core/Icons. Moving them into a + // "Gizmos" folder should make them work again. + + Gizmos.color = Color.white; + Gizmos.DrawIcon( feetPositionGuess, "vr_interaction_system_feet.png" ); + + Gizmos.color = Color.cyan; + Gizmos.DrawLine( feetPositionGuess, feetPositionGuess + trackingOriginTransform.up * eyeHeight ); + + // Body direction arrow + Gizmos.color = Color.blue; + Vector3 bodyDirection = bodyDirectionGuess; + Vector3 bodyDirectionTangent = Vector3.Cross( trackingOriginTransform.up, bodyDirection ); + Vector3 startForward = feetPositionGuess + trackingOriginTransform.up * eyeHeight * 0.75f; + Vector3 endForward = startForward + bodyDirection * 0.33f; + Gizmos.DrawLine( startForward, endForward ); + Gizmos.DrawLine( endForward, endForward - 0.033f * ( bodyDirection + bodyDirectionTangent ) ); + Gizmos.DrawLine( endForward, endForward - 0.033f * ( bodyDirection - bodyDirectionTangent ) ); + + Gizmos.color = Color.red; + int count = handCount; + for ( int i = 0; i < count; i++ ) + { + Hand hand = GetHand( i ); + + if ( hand.startingHandType == Hand.HandType.Left ) + { + Gizmos.DrawIcon( hand.transform.position, "vr_interaction_system_left_hand.png" ); + } + else if ( hand.startingHandType == Hand.HandType.Right ) + { + Gizmos.DrawIcon( hand.transform.position, "vr_interaction_system_right_hand.png" ); + } + else + { + Hand.HandType guessHandType = hand.GuessCurrentHandType(); + + if ( guessHandType == Hand.HandType.Left ) + { + Gizmos.DrawIcon( hand.transform.position, "vr_interaction_system_left_hand_question.png" ); + } + else if ( guessHandType == Hand.HandType.Right ) + { + Gizmos.DrawIcon( hand.transform.position, "vr_interaction_system_right_hand_question.png" ); + } + else + { + Gizmos.DrawIcon( hand.transform.position, "vr_interaction_system_unknown_hand.png" ); + } + } + } + } + + + //------------------------------------------------- + public void Draw2DDebug() + { + if ( !allowToggleTo2D ) + return; + + if ( !SteamVR.active ) + return; + + int width = 100; + int height = 25; + int left = Screen.width / 2 - width / 2; + int top = Screen.height - height - 10; + + string text = ( rigSteamVR.activeSelf ) ? "2D Debug" : "VR"; + + if ( GUI.Button( new Rect( left, top, width, height ), text ) ) + { + if ( rigSteamVR.activeSelf ) + { + ActivateRig( rig2DFallback ); + } + else + { + ActivateRig( rigSteamVR ); + } + } + } + + + //------------------------------------------------- + private void ActivateRig( GameObject rig ) + { + rigSteamVR.SetActive( rig == rigSteamVR ); + rig2DFallback.SetActive( rig == rig2DFallback ); + + if ( audioListener ) + { + audioListener.transform.parent = hmdTransform; + audioListener.transform.localPosition = Vector3.zero; + audioListener.transform.localRotation = Quaternion.identity; + } + } + + + //------------------------------------------------- + public void PlayerShotSelf() + { + //Do something appropriate here + } + } +} diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/Player.cs.meta b/Assets/SteamVR/InteractionSystem/Core/Scripts/Player.cs.meta new file mode 100644 index 00000000..c024748f --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/Player.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 202a6e24b48d1684398409c47161adcb +timeCreated: 1435864159 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: b93fe5c516cf6ed4b9153ec790f856e2, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/SeeThru.cs b/Assets/SteamVR/InteractionSystem/Core/Scripts/SeeThru.cs new file mode 100644 index 00000000..3d18de13 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/SeeThru.cs @@ -0,0 +1,151 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Uses the see thru renderer while attached to hand +// +//============================================================================= + +using UnityEngine; +using System.Collections; +using System.Collections.Generic; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + public class SeeThru : MonoBehaviour + { + public Material seeThruMaterial; + + private GameObject seeThru; + private Interactable interactable; + private Renderer sourceRenderer; + private Renderer destRenderer; + + + //------------------------------------------------- + void Awake() + { + interactable = GetComponentInParent(); + + // + // Create child game object for see thru renderer + // + seeThru = new GameObject( "_see_thru" ); + seeThru.transform.parent = transform; + seeThru.transform.localPosition = Vector3.zero; + seeThru.transform.localRotation = Quaternion.identity; + seeThru.transform.localScale = Vector3.one; + + // + // Copy mesh filter + // + MeshFilter sourceMeshFilter = GetComponent(); + if ( sourceMeshFilter != null ) + { + MeshFilter destMeshFilter = seeThru.AddComponent(); + destMeshFilter.sharedMesh = sourceMeshFilter.sharedMesh; + } + + // + // Copy mesh renderer + // + MeshRenderer sourceMeshRenderer = GetComponent(); + if ( sourceMeshRenderer != null ) + { + sourceRenderer = sourceMeshRenderer; + destRenderer = seeThru.AddComponent(); + } + + // + // Copy skinned mesh renderer + // + SkinnedMeshRenderer sourceSkinnedMeshRenderer = GetComponent(); + if ( sourceSkinnedMeshRenderer != null ) + { + SkinnedMeshRenderer destSkinnedMeshRenderer = seeThru.AddComponent(); + + sourceRenderer = sourceSkinnedMeshRenderer; + destRenderer = destSkinnedMeshRenderer; + + destSkinnedMeshRenderer.sharedMesh = sourceSkinnedMeshRenderer.sharedMesh; + destSkinnedMeshRenderer.rootBone = sourceSkinnedMeshRenderer.rootBone; + destSkinnedMeshRenderer.bones = sourceSkinnedMeshRenderer.bones; + destSkinnedMeshRenderer.quality = sourceSkinnedMeshRenderer.quality; + destSkinnedMeshRenderer.updateWhenOffscreen = sourceSkinnedMeshRenderer.updateWhenOffscreen; + } + + // + // Create see thru materials + // + if ( sourceRenderer != null && destRenderer != null ) + { + int materialCount = sourceRenderer.sharedMaterials.Length; + Material[] destRendererMaterials = new Material[materialCount]; + for ( int i = 0; i < materialCount; i++ ) + { + destRendererMaterials[i] = seeThruMaterial; + } + destRenderer.sharedMaterials = destRendererMaterials; + + for ( int i = 0; i < destRenderer.materials.Length; i++ ) + { + destRenderer.materials[i].renderQueue = 2001; // Rendered after geometry + } + + for ( int i = 0; i < sourceRenderer.materials.Length; i++ ) + { + if ( sourceRenderer.materials[i].renderQueue == 2000 ) + { + sourceRenderer.materials[i].renderQueue = 2002; + } + } + } + + seeThru.gameObject.SetActive( false ); + } + + + //------------------------------------------------- + void OnEnable() + { + interactable.onAttachedToHand += AttachedToHand; + interactable.onDetachedFromHand += DetachedFromHand; + } + + + //------------------------------------------------- + void OnDisable() + { + interactable.onAttachedToHand -= AttachedToHand; + interactable.onDetachedFromHand -= DetachedFromHand; + } + + + //------------------------------------------------- + private void AttachedToHand( Hand hand ) + { + seeThru.SetActive( true ); + } + + + //------------------------------------------------- + private void DetachedFromHand( Hand hand ) + { + seeThru.SetActive( false ); + } + + + //------------------------------------------------- + void Update() + { + if ( seeThru.activeInHierarchy ) + { + int materialCount = Mathf.Min( sourceRenderer.materials.Length, destRenderer.materials.Length ); + for ( int i = 0; i < materialCount; i++ ) + { + destRenderer.materials[i].mainTexture = sourceRenderer.materials[i].mainTexture; + destRenderer.materials[i].color = destRenderer.materials[i].color * sourceRenderer.materials[i].color; + } + } + } + } +} diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/SeeThru.cs.meta b/Assets/SteamVR/InteractionSystem/Core/Scripts/SeeThru.cs.meta new file mode 100644 index 00000000..de9c81e8 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/SeeThru.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 7d623a50b67320940b97e93e31d0a21b +timeCreated: 1456716277 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: + - seeThruMaterial: {fileID: 2100000, guid: 3bbb445147c574240a8b87a1193788b5, type: 2} + executionOrder: 0 + icon: {fileID: 2800000, guid: b93fe5c516cf6ed4b9153ec790f856e2, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/SleepOnAwake.cs b/Assets/SteamVR/InteractionSystem/Core/Scripts/SleepOnAwake.cs new file mode 100644 index 00000000..59487732 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/SleepOnAwake.cs @@ -0,0 +1,25 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: This object's rigidbody goes to sleep when created +// +//============================================================================= + +using UnityEngine; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + public class SleepOnAwake : MonoBehaviour + { + //------------------------------------------------- + void Awake() + { + Rigidbody rigidbody = GetComponent(); + if ( rigidbody ) + { + rigidbody.Sleep(); + } + } + } +} diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/SleepOnAwake.cs.meta b/Assets/SteamVR/InteractionSystem/Core/Scripts/SleepOnAwake.cs.meta new file mode 100644 index 00000000..5abaee25 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/SleepOnAwake.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 0584375ad2f33ef4da0b276de8507487 +timeCreated: 1430167006 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: b93fe5c516cf6ed4b9153ec790f856e2, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/SoundDeparent.cs b/Assets/SteamVR/InteractionSystem/Core/Scripts/SoundDeparent.cs new file mode 100644 index 00000000..2dbd1847 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/SoundDeparent.cs @@ -0,0 +1,38 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Unparents this object and optionally destroys it after the sound +// has played +// +//============================================================================= + +using UnityEngine; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + public class SoundDeparent : MonoBehaviour + { + public bool destroyAfterPlayOnce = true; + private AudioSource thisAudioSource; + + + //------------------------------------------------- + void Awake() + { + thisAudioSource = GetComponent(); + + } + + + //------------------------------------------------- + void Start() + { + // move the sound object out from under the parent + gameObject.transform.parent = null; + + if ( destroyAfterPlayOnce ) + Destroy( gameObject, thisAudioSource.clip.length ); + } + } +} diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/SoundDeparent.cs.meta b/Assets/SteamVR/InteractionSystem/Core/Scripts/SoundDeparent.cs.meta new file mode 100644 index 00000000..0b628d85 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/SoundDeparent.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f53662f45a4454944a06629fec9c941e +timeCreated: 1457503214 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: b93fe5c516cf6ed4b9153ec790f856e2, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/SoundPlayOneshot.cs b/Assets/SteamVR/InteractionSystem/Core/Scripts/SoundPlayOneshot.cs new file mode 100644 index 00000000..d2104602 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/SoundPlayOneshot.cs @@ -0,0 +1,75 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Play one-shot sounds as opposed to continuos/looping ones +// +//============================================================================= + +using UnityEngine; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + public class SoundPlayOneshot : MonoBehaviour + { + public AudioClip[] waveFiles; + private AudioSource thisAudioSource; + + public float volMin; + public float volMax; + + public float pitchMin; + public float pitchMax; + + public bool playOnAwake; + + + //------------------------------------------------- + void Awake() + { + thisAudioSource = GetComponent(); + + if ( playOnAwake ) + { + Play(); + } + } + + + //------------------------------------------------- + public void Play() + { + if ( thisAudioSource != null && thisAudioSource.isActiveAndEnabled && !Util.IsNullOrEmpty( waveFiles ) ) + { + //randomly apply a volume between the volume min max + thisAudioSource.volume = Random.Range( volMin, volMax ); + + //randomly apply a pitch between the pitch min max + thisAudioSource.pitch = Random.Range( pitchMin, pitchMax ); + + // play the sound + thisAudioSource.PlayOneShot( waveFiles[Random.Range( 0, waveFiles.Length )] ); + } + } + + + //------------------------------------------------- + public void Pause() + { + if ( thisAudioSource != null ) + { + thisAudioSource.Pause(); + } + } + + + //------------------------------------------------- + public void UnPause() + { + if ( thisAudioSource != null ) + { + thisAudioSource.UnPause(); + } + } + } +} diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/SoundPlayOneshot.cs.meta b/Assets/SteamVR/InteractionSystem/Core/Scripts/SoundPlayOneshot.cs.meta new file mode 100644 index 00000000..6612487f --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/SoundPlayOneshot.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 32c1c9a5bbab2e54280027c0ecaf42db +timeCreated: 1436566670 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: b93fe5c516cf6ed4b9153ec790f856e2, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/SpawnAndAttachAfterControllerIsTracking.cs b/Assets/SteamVR/InteractionSystem/Core/Scripts/SpawnAndAttachAfterControllerIsTracking.cs new file mode 100644 index 00000000..35cb4763 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/SpawnAndAttachAfterControllerIsTracking.cs @@ -0,0 +1,50 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Spawns and attaches an object to the hand after the controller has +// tracking +// +//============================================================================= + +using UnityEngine; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + public class SpawnAndAttachAfterControllerIsTracking : MonoBehaviour + { + private Hand hand; + public GameObject itemPrefab; + + + //------------------------------------------------- + void Start() + { + hand = GetComponentInParent(); + } + + + //------------------------------------------------- + void Update() + { + if ( itemPrefab != null ) + { + if ( hand.controller != null ) + { + if ( hand.controller.hasTracking ) + { + GameObject objectToAttach = GameObject.Instantiate( itemPrefab ); + objectToAttach.SetActive( true ); + hand.AttachObject( objectToAttach ); + hand.controller.TriggerHapticPulse( 800 ); + Destroy( gameObject ); + + // If the player's scale has been changed the object to attach will be the wrong size. + // To fix this we change the object's scale back to its original, pre-attach scale. + objectToAttach.transform.localScale = itemPrefab.transform.localScale; + } + } + } + } + } +} diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/SpawnAndAttachAfterControllerIsTracking.cs.meta b/Assets/SteamVR/InteractionSystem/Core/Scripts/SpawnAndAttachAfterControllerIsTracking.cs.meta new file mode 100644 index 00000000..66ac9c65 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/SpawnAndAttachAfterControllerIsTracking.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6ad167161b0bf8e4d9c038db358e0a28 +timeCreated: 1441826311 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: b93fe5c516cf6ed4b9153ec790f856e2, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/SpawnAndAttachToHand.cs b/Assets/SteamVR/InteractionSystem/Core/Scripts/SpawnAndAttachToHand.cs new file mode 100644 index 00000000..7cac3cc4 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/SpawnAndAttachToHand.cs @@ -0,0 +1,37 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Creates an object and attaches it to the hand +// +//============================================================================= + +using UnityEngine; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + public class SpawnAndAttachToHand : MonoBehaviour + { + public Hand hand; + public GameObject prefab; + + + //------------------------------------------------- + public void SpawnAndAttach( Hand passedInhand ) + { + Hand handToUse = passedInhand; + if ( passedInhand == null ) + { + handToUse = hand; + } + + if ( handToUse == null ) + { + return; + } + + GameObject prefabObject = Instantiate( prefab ) as GameObject; + handToUse.AttachObject( prefabObject ); + } + } +} diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/SpawnAndAttachToHand.cs.meta b/Assets/SteamVR/InteractionSystem/Core/Scripts/SpawnAndAttachToHand.cs.meta new file mode 100644 index 00000000..c3134fd1 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/SpawnAndAttachToHand.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f4a03a51c550b92478a559cf694ce118 +timeCreated: 1437097962 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: b93fe5c516cf6ed4b9153ec790f856e2, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/SpawnRenderModel.cs b/Assets/SteamVR/InteractionSystem/Core/Scripts/SpawnRenderModel.cs new file mode 100644 index 00000000..fc81c351 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/SpawnRenderModel.cs @@ -0,0 +1,166 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Spawns a render model for the controller from SteamVR +// +//============================================================================= + +using UnityEngine; +using System.Collections; +using System.Collections.Generic; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + public class SpawnRenderModel : MonoBehaviour + { + public Material[] materials; + + private SteamVR_RenderModel[] renderModels; + private Hand hand; + private List renderers = new List(); + + private static List spawnRenderModels = new List(); + private static int lastFrameUpdated; + private static int spawnRenderModelUpdateIndex; + + SteamVR_Events.Action renderModelLoadedAction; + + + //------------------------------------------------- + void Awake() + { + renderModels = new SteamVR_RenderModel[materials.Length]; + renderModelLoadedAction = SteamVR_Events.RenderModelLoadedAction( OnRenderModelLoaded ); + } + + + //------------------------------------------------- + void OnEnable() + { + ShowController(); + + renderModelLoadedAction.enabled = true; + + spawnRenderModels.Add( this ); + } + + + //------------------------------------------------- + void OnDisable() + { + HideController(); + + renderModelLoadedAction.enabled = false; + + spawnRenderModels.Remove( this ); + } + + + //------------------------------------------------- + private void OnAttachedToHand( Hand hand ) + { + this.hand = hand; + ShowController(); + } + + + //------------------------------------------------- + private void OnDetachedFromHand( Hand hand ) + { + this.hand = null; + HideController(); + } + + + //------------------------------------------------- + void Update() + { + // Only update one per frame + if ( lastFrameUpdated == Time.renderedFrameCount ) + { + return; + } + lastFrameUpdated = Time.renderedFrameCount; + + + // SpawnRenderModel overflow + if ( spawnRenderModelUpdateIndex >= spawnRenderModels.Count ) + { + spawnRenderModelUpdateIndex = 0; + } + + + // Perform update + if ( spawnRenderModelUpdateIndex < spawnRenderModels.Count ) + { + SteamVR_RenderModel renderModel = spawnRenderModels[spawnRenderModelUpdateIndex].renderModels[0]; + if ( renderModel != null ) + { + renderModel.UpdateComponents( OpenVR.RenderModels ); + } + } + + spawnRenderModelUpdateIndex++; + } + + + //------------------------------------------------- + private void ShowController() + { + if ( hand == null || hand.controller == null ) + { + return; + } + + for ( int i = 0; i < renderModels.Length; i++ ) + { + if ( renderModels[i] == null ) + { + renderModels[i] = new GameObject( "SteamVR_RenderModel" ).AddComponent(); + renderModels[i].updateDynamically = false; // Update one per frame (see Update() method) + renderModels[i].transform.parent = transform; + Util.ResetTransform( renderModels[i].transform ); + } + + renderModels[i].gameObject.SetActive( true ); + renderModels[i].SetDeviceIndex( (int)hand.controller.index ); + } + } + + + //------------------------------------------------- + private void HideController() + { + for ( int i = 0; i < renderModels.Length; i++ ) + { + if ( renderModels[i] != null ) + { + renderModels[i].gameObject.SetActive( false ); + } + } + } + + + //------------------------------------------------- + private void OnRenderModelLoaded( SteamVR_RenderModel renderModel, bool success ) + { + for ( int i = 0; i < renderModels.Length; i++ ) + { + if ( renderModel == renderModels[i] ) + { + if ( materials[i] != null ) + { + renderers.Clear(); + renderModels[i].GetComponentsInChildren( renderers ); + for ( int j = 0; j < renderers.Count; j++ ) + { + Texture mainTexture = renderers[j].material.mainTexture; + renderers[j].sharedMaterial = materials[i]; + renderers[j].material.mainTexture = mainTexture; + } + } + } + } + } + } +} diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/SpawnRenderModel.cs.meta b/Assets/SteamVR/InteractionSystem/Core/Scripts/SpawnRenderModel.cs.meta new file mode 100644 index 00000000..ea07185d --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/SpawnRenderModel.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9fb3fe54664b917489646492ee8c4993 +timeCreated: 1441140218 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: b93fe5c516cf6ed4b9153ec790f856e2, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/Throwable.cs b/Assets/SteamVR/InteractionSystem/Core/Scripts/Throwable.cs new file mode 100644 index 00000000..0319e5b2 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/Throwable.cs @@ -0,0 +1,258 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: Basic throwable object +// +//============================================================================= + +using UnityEngine; +using UnityEngine.Events; +using System.Collections; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + [RequireComponent( typeof( Interactable ) )] + [RequireComponent( typeof( Rigidbody ) )] + [RequireComponent( typeof( VelocityEstimator ) )] + public class Throwable : MonoBehaviour + { + [EnumFlags] + [Tooltip( "The flags used to attach this object to the hand." )] + public Hand.AttachmentFlags attachmentFlags = Hand.AttachmentFlags.ParentToHand | Hand.AttachmentFlags.DetachFromOtherHand; + + [Tooltip( "Name of the attachment transform under in the hand's hierarchy which the object should should snap to." )] + public string attachmentPoint; + + [Tooltip( "How fast must this object be moving to attach due to a trigger hold instead of a trigger press?" )] + public float catchSpeedThreshold = 0.0f; + + [Tooltip( "When detaching the object, should it return to its original parent?" )] + public bool restoreOriginalParent = false; + + public bool attachEaseIn = false; + public AnimationCurve snapAttachEaseInCurve = AnimationCurve.EaseInOut( 0.0f, 0.0f, 1.0f, 1.0f ); + public float snapAttachEaseInTime = 0.15f; + public string[] attachEaseInAttachmentNames; + + private VelocityEstimator velocityEstimator; + private bool attached = false; + private float attachTime; + private Vector3 attachPosition; + private Quaternion attachRotation; + private Transform attachEaseInTransform; + + public UnityEvent onPickUp; + public UnityEvent onDetachFromHand; + + public bool snapAttachEaseInCompleted = false; + + + //------------------------------------------------- + void Awake() + { + velocityEstimator = GetComponent(); + + if ( attachEaseIn ) + { + attachmentFlags &= ~Hand.AttachmentFlags.SnapOnAttach; + } + + Rigidbody rb = GetComponent(); + rb.maxAngularVelocity = 50.0f; + } + + + //------------------------------------------------- + private void OnHandHoverBegin( Hand hand ) + { + bool showHint = false; + + // "Catch" the throwable by holding down the interaction button instead of pressing it. + // Only do this if the throwable is moving faster than the prescribed threshold speed, + // and if it isn't attached to another hand + if ( !attached ) + { + if ( hand.GetStandardInteractionButton() ) + { + Rigidbody rb = GetComponent(); + if ( rb.velocity.magnitude >= catchSpeedThreshold ) + { + hand.AttachObject( gameObject, attachmentFlags, attachmentPoint ); + showHint = false; + } + } + } + + if ( showHint ) + { + ControllerButtonHints.ShowButtonHint( hand, Valve.VR.EVRButtonId.k_EButton_SteamVR_Trigger ); + } + } + + + //------------------------------------------------- + private void OnHandHoverEnd( Hand hand ) + { + ControllerButtonHints.HideButtonHint( hand, Valve.VR.EVRButtonId.k_EButton_SteamVR_Trigger ); + } + + + //------------------------------------------------- + private void HandHoverUpdate( Hand hand ) + { + //Trigger got pressed + if ( hand.GetStandardInteractionButtonDown() ) + { + hand.AttachObject( gameObject, attachmentFlags, attachmentPoint ); + ControllerButtonHints.HideButtonHint( hand, Valve.VR.EVRButtonId.k_EButton_SteamVR_Trigger ); + } + } + + //------------------------------------------------- + private void OnAttachedToHand( Hand hand ) + { + attached = true; + + onPickUp.Invoke(); + + hand.HoverLock( null ); + + Rigidbody rb = GetComponent(); + rb.isKinematic = true; + rb.interpolation = RigidbodyInterpolation.None; + + if ( hand.controller == null ) + { + velocityEstimator.BeginEstimatingVelocity(); + } + + attachTime = Time.time; + attachPosition = transform.position; + attachRotation = transform.rotation; + + if ( attachEaseIn ) + { + attachEaseInTransform = hand.transform; + if ( !Util.IsNullOrEmpty( attachEaseInAttachmentNames ) ) + { + float smallestAngle = float.MaxValue; + for ( int i = 0; i < attachEaseInAttachmentNames.Length; i++ ) + { + Transform t = hand.GetAttachmentTransform( attachEaseInAttachmentNames[i] ); + float angle = Quaternion.Angle( t.rotation, attachRotation ); + if ( angle < smallestAngle ) + { + attachEaseInTransform = t; + smallestAngle = angle; + } + } + } + } + + snapAttachEaseInCompleted = false; + } + + + //------------------------------------------------- + private void OnDetachedFromHand( Hand hand ) + { + attached = false; + + onDetachFromHand.Invoke(); + + hand.HoverUnlock( null ); + + Rigidbody rb = GetComponent(); + rb.isKinematic = false; + rb.interpolation = RigidbodyInterpolation.Interpolate; + + Vector3 position = Vector3.zero; + Vector3 velocity = Vector3.zero; + Vector3 angularVelocity = Vector3.zero; + if ( hand.controller == null ) + { + velocityEstimator.FinishEstimatingVelocity(); + velocity = velocityEstimator.GetVelocityEstimate(); + angularVelocity = velocityEstimator.GetAngularVelocityEstimate(); + position = velocityEstimator.transform.position; + } + else + { + velocity = Player.instance.trackingOriginTransform.TransformVector( hand.controller.velocity ); + angularVelocity = Player.instance.trackingOriginTransform.TransformVector( hand.controller.angularVelocity ); + position = hand.transform.position; + } + + Vector3 r = transform.TransformPoint( rb.centerOfMass ) - position; + rb.velocity = velocity + Vector3.Cross( angularVelocity, r ); + rb.angularVelocity = angularVelocity; + + // Make the object travel at the release velocity for the amount + // of time it will take until the next fixed update, at which + // point Unity physics will take over + float timeUntilFixedUpdate = ( Time.fixedDeltaTime + Time.fixedTime ) - Time.time; + transform.position += timeUntilFixedUpdate * velocity; + float angle = Mathf.Rad2Deg * angularVelocity.magnitude; + Vector3 axis = angularVelocity.normalized; + transform.rotation *= Quaternion.AngleAxis( angle * timeUntilFixedUpdate, axis ); + } + + + //------------------------------------------------- + private void HandAttachedUpdate( Hand hand ) + { + //Trigger got released + if ( !hand.GetStandardInteractionButton() ) + { + // Detach ourselves late in the frame. + // This is so that any vehicles the player is attached to + // have a chance to finish updating themselves. + // If we detach now, our position could be behind what it + // will be at the end of the frame, and the object may appear + // to teleport behind the hand when the player releases it. + StartCoroutine( LateDetach( hand ) ); + } + + if ( attachEaseIn ) + { + float t = Util.RemapNumberClamped( Time.time, attachTime, attachTime + snapAttachEaseInTime, 0.0f, 1.0f ); + if ( t < 1.0f ) + { + t = snapAttachEaseInCurve.Evaluate( t ); + transform.position = Vector3.Lerp( attachPosition, attachEaseInTransform.position, t ); + transform.rotation = Quaternion.Lerp( attachRotation, attachEaseInTransform.rotation, t ); + } + else if ( !snapAttachEaseInCompleted ) + { + gameObject.SendMessage( "OnThrowableAttachEaseInCompleted", hand, SendMessageOptions.DontRequireReceiver ); + snapAttachEaseInCompleted = true; + } + } + } + + + //------------------------------------------------- + private IEnumerator LateDetach( Hand hand ) + { + yield return new WaitForEndOfFrame(); + + hand.DetachObject( gameObject, restoreOriginalParent ); + } + + + //------------------------------------------------- + private void OnHandFocusAcquired( Hand hand ) + { + gameObject.SetActive( true ); + velocityEstimator.BeginEstimatingVelocity(); + } + + + //------------------------------------------------- + private void OnHandFocusLost( Hand hand ) + { + gameObject.SetActive( false ); + velocityEstimator.FinishEstimatingVelocity(); + } + } +} diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/Throwable.cs.meta b/Assets/SteamVR/InteractionSystem/Core/Scripts/Throwable.cs.meta new file mode 100644 index 00000000..aa95cdf3 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/Throwable.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: ffefbea063cab884ca33e5a449e5c22c +timeCreated: 1432687610 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {fileID: 2800000, guid: b93fe5c516cf6ed4b9153ec790f856e2, type: 3} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SteamVR/InteractionSystem/Core/Scripts/UIElement.cs b/Assets/SteamVR/InteractionSystem/Core/Scripts/UIElement.cs new file mode 100644 index 00000000..f5362345 --- /dev/null +++ b/Assets/SteamVR/InteractionSystem/Core/Scripts/UIElement.cs @@ -0,0 +1,89 @@ +//======= Copyright (c) Valve Corporation, All rights reserved. =============== +// +// Purpose: UIElement that responds to VR hands and generates UnityEvents +// +//============================================================================= + +using UnityEngine; +using UnityEngine.Events; +using UnityEngine.UI; +using System; + +namespace Valve.VR.InteractionSystem +{ + //------------------------------------------------------------------------- + [RequireComponent( typeof( Interactable ) )] + public class UIElement : MonoBehaviour + { + public CustomEvents.UnityEventHand onHandClick; + + private Hand currentHand; + + //------------------------------------------------- + void Awake() + { + Button button = GetComponent