From f8c83b4d7b1c034494aaf6761ce0d156118fc52a Mon Sep 17 00:00:00 2001 From: Benjamin Comeau Date: Sat, 7 Nov 2015 14:28:52 -0500 Subject: [PATCH 01/13] Add scripts folder and incomplete monsterAI --- Assets/Scripts.meta | 9 +++++++ Assets/Scripts/monsterAI.cs | 40 ++++++++++++++++++++++++++++++++ Assets/Scripts/monsterAI.cs.meta | 12 ++++++++++ 3 files changed, 61 insertions(+) create mode 100644 Assets/Scripts.meta create mode 100644 Assets/Scripts/monsterAI.cs create mode 100644 Assets/Scripts/monsterAI.cs.meta diff --git a/Assets/Scripts.meta b/Assets/Scripts.meta new file mode 100644 index 0000000..0e54acc --- /dev/null +++ b/Assets/Scripts.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 82200e55c3b1e4126883ef4efb2c9891 +folderAsset: yes +timeCreated: 1446924476 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/monsterAI.cs b/Assets/Scripts/monsterAI.cs new file mode 100644 index 0000000..f114c40 --- /dev/null +++ b/Assets/Scripts/monsterAI.cs @@ -0,0 +1,40 @@ +using UnityEngine; +using System.Collections; + +public class monsterAI : MonoBehaviour +{ + public GameObject player; + private Transform target = player.transform; + public float deadlyDistance; + public float rotationDamping; + + // Use this for initialization + void Start () + { + + } + + // Update is called once per frame + void Update () + { + + } + + // Check is the current distance is deadly for the target + bool IsAtDeadlyDistance () { + return (deadlyDistance <= Vector3.Distance(target.position, transform.position); + } + + // Follow player from a certain initial distance at a certain speed. + void FollowTarget () + { + + } + + // Look toward target + void LookAtTarget () { + Quaternion rotation = Quaternion.LookRotation (target.rotation - transform.rotation); + transform.rotation = Quaternion.Slerp(transform.rotation, rotation, Time.deltaTime * rotationDamping); + + } +} diff --git a/Assets/Scripts/monsterAI.cs.meta b/Assets/Scripts/monsterAI.cs.meta new file mode 100644 index 0000000..8fff61f --- /dev/null +++ b/Assets/Scripts/monsterAI.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 10ca748d7d0094f16b50525c5401d788 +timeCreated: 1446922382 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: From dd8661719ad492891b0859045187a6ba5cbf4510 Mon Sep 17 00:00:00 2001 From: max89max Date: Sat, 7 Nov 2015 20:52:16 +0100 Subject: [PATCH 02/13] =?UTF-8?q?Player=20controler=20hi=C3=A9rarchie=20st?= =?UTF-8?q?andard=20asset?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ProjectSettings/InputManager.asset | 6 +++--- ProjectSettings/ProjectSettings.asset | 15 ++++++++++++++- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/ProjectSettings/InputManager.asset b/ProjectSettings/InputManager.asset index b5ba40c..071be7a 100644 --- a/ProjectSettings/InputManager.asset +++ b/ProjectSettings/InputManager.asset @@ -182,7 +182,7 @@ InputManager: axis: 1 joyNum: 0 - serializedVersion: 3 - m_Name: Fire1 + m_Name: Course descriptiveName: descriptiveNegativeName: negativeButton: @@ -198,7 +198,7 @@ InputManager: axis: 0 joyNum: 0 - serializedVersion: 3 - m_Name: Fire2 + m_Name: Briquet descriptiveName: descriptiveNegativeName: negativeButton: @@ -214,7 +214,7 @@ InputManager: axis: 0 joyNum: 0 - serializedVersion: 3 - m_Name: Fire3 + m_Name: Alumettes descriptiveName: descriptiveNegativeName: negativeButton: diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset index 67cf571..83cca07 100644 --- a/ProjectSettings/ProjectSettings.asset +++ b/ProjectSettings/ProjectSettings.asset @@ -316,7 +316,16 @@ PlayerSettings: psp2InfoBarColor: 0 psmSplashimage: {fileID: 0} spritePackerPolicy: - scriptingDefineSymbols: {} + scriptingDefineSymbols: + 1: CROSS_PLATFORM_INPUT + 2: CROSS_PLATFORM_INPUT + 4: CROSS_PLATFORM_INPUT;MOBILE_INPUT + 7: CROSS_PLATFORM_INPUT;MOBILE_INPUT + 14: MOBILE_INPUT + 15: CROSS_PLATFORM_INPUT;MOBILE_INPUT + 16: CROSS_PLATFORM_INPUT;MOBILE_INPUT + 17: MOBILE_INPUT + 20: MOBILE_INPUT metroPackageName: EscapeTheRoom metroPackageLogo: metroPackageLogo140: @@ -442,6 +451,7 @@ PlayerSettings: XboxOneAllowedProductIds: [] XboxOnePersistentLocalStorageSize: 0 intPropertyNames: + - Android::ScriptingBackend - Metro::ScriptingBackend - Standalone::ScriptingBackend - WP8::ScriptingBackend @@ -451,7 +461,9 @@ PlayerSettings: - WebGL::memorySize - WebPlayer::ScriptingBackend - iOS::Architecture + - iOS::EnableIncrementalBuildSupportForIl2cpp - iOS::ScriptingBackend + Android::ScriptingBackend: 0 Metro::ScriptingBackend: 2 Standalone::ScriptingBackend: 0 WP8::ScriptingBackend: 2 @@ -461,6 +473,7 @@ PlayerSettings: WebGL::memorySize: 256 WebPlayer::ScriptingBackend: 0 iOS::Architecture: 2 + iOS::EnableIncrementalBuildSupportForIl2cpp: 0 iOS::ScriptingBackend: 1 boolPropertyNames: - WebGL::analyzeBuildSize From e8e7f8a23a2f792dc2149f955c0e92344a9e7aad Mon Sep 17 00:00:00 2001 From: max89max Date: Sat, 7 Nov 2015 20:56:53 +0100 Subject: [PATCH 03/13] =?UTF-8?q?PlayerControl=20Hi=C3=A9rarchie=20Standar?= =?UTF-8?q?d=20Assets?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Editor.meta | 9 + Assets/Editor/CrossPlatformInput.meta | 6 + .../CrossPlatformInputInitialize.cs | 146 +++ .../CrossPlatformInputInitialize.cs.meta | 9 + Assets/Prefab.meta | 9 + Assets/Scenes/maxScene.unity | 532 ++++++++++ Assets/Scenes/maxScene.unity.meta | 8 + Assets/Script.meta | 9 + Assets/Script/FirstPersonController.cs | 257 +++++ Assets/Script/FirstPersonController.cs.meta | 9 + Assets/Sound.meta | 9 + Assets/Standard Assets.meta | 9 + Assets/Standard Assets/Characters.meta | 6 + .../Characters/FirstPersonCharacter.meta | 6 + .../FirstPersonCharacter/Audio.meta | 6 + .../FirstPersonCharacter/Audio/Footstep01.wav | Bin 0 -> 49372 bytes .../Audio/Footstep01.wav.meta | 16 + .../FirstPersonCharacter/Audio/Footstep02.wav | Bin 0 -> 51060 bytes .../Audio/Footstep02.wav.meta | 16 + .../FirstPersonCharacter/Audio/Footstep03.wav | Bin 0 -> 54208 bytes .../Audio/Footstep03.wav.meta | 16 + .../FirstPersonCharacter/Audio/Footstep04.wav | Bin 0 -> 39646 bytes .../Audio/Footstep04.wav.meta | 16 + .../FirstPersonCharacter/Audio/Jump.wav | Bin 0 -> 22370 bytes .../FirstPersonCharacter/Audio/Jump.wav.meta | 16 + .../FirstPersonCharacter/Audio/Land.wav | Bin 0 -> 45462 bytes .../FirstPersonCharacter/Audio/Land.wav.meta | 16 + .../FirstPersonCharacterGuidelines.txt | 18 + .../FirstPersonCharacterGuidelines.txt.meta | 5 + .../FirstPersonCharacter/Prefabs.meta | 6 + .../Prefabs/FPSController.prefab | 306 ++++++ .../Prefabs/FPSController.prefab.meta | 5 + .../Prefabs/RigidBodyFPSController.prefab | 246 +++++ .../RigidBodyFPSController.prefab.meta | 5 + .../FirstPersonCharacter/Scripts.meta | 6 + .../FirstPersonCharacter/Scripts/HeadBob.cs | 55 + .../Scripts/HeadBob.cs.meta | 9 + .../FirstPersonCharacter/Scripts/MouseLook.cs | 73 ++ .../Scripts/MouseLook.cs.meta | 9 + .../Scripts/RigidbodyFirstPersonController.cs | 264 +++++ .../RigidbodyFirstPersonController.cs.meta | 9 + .../Characters/PhysicsMaterials.meta | 6 + .../Standard Assets/CrossPlatformInput.meta | 6 + .../CrossPlatformInputGuidelines.txt | 32 + .../CrossPlatformInputGuidelines.txt.meta | 5 + .../CrossPlatformInput/Prefabs.meta | 6 + .../Prefabs/CarTiltControls.prefab | 461 +++++++++ .../Prefabs/CarTiltControls.prefab.meta | 5 + .../Prefabs/DualTouchControls.prefab | 578 +++++++++++ .../Prefabs/DualTouchControls.prefab.meta | 5 + .../Prefabs/MobileAircraftControls.prefab | 972 ++++++++++++++++++ .../MobileAircraftControls.prefab.meta | 5 + .../Prefabs/MobileSingleStickControl.prefab | 376 +++++++ .../MobileSingleStickControl.prefab.meta | 5 + .../Prefabs/MobileTiltControlRig.prefab | 144 +++ .../Prefabs/MobileTiltControlRig.prefab.meta | 5 + .../CrossPlatformInput/Scripts.meta | 6 + .../Scripts/AxisTouchButton.cs | 75 ++ .../Scripts/AxisTouchButton.cs.meta | 9 + .../Scripts/ButtonHandler.cs | 50 + .../Scripts/ButtonHandler.cs.meta | 9 + .../Scripts/CrossPlatformInputManager.cs | 318 ++++++ .../Scripts/CrossPlatformInputManager.cs.meta | 11 + .../Scripts/InputAxisScrollbar.cs | 17 + .../Scripts/InputAxisScrollbar.cs.meta | 9 + .../CrossPlatformInput/Scripts/Joystick.cs | 118 +++ .../Scripts/Joystick.cs.meta | 9 + .../Scripts/MobileControlRig.cs | 86 ++ .../Scripts/MobileControlRig.cs.meta | 9 + .../Scripts/PlatformSpecific.meta | 6 + .../Scripts/PlatformSpecific/MobileInput.cs | 133 +++ .../PlatformSpecific/MobileInput.cs.meta | 9 + .../PlatformSpecific/StandaloneInput.cs | 79 ++ .../PlatformSpecific/StandaloneInput.cs.meta | 9 + .../CrossPlatformInput/Scripts/TiltInput.cs | 145 +++ .../Scripts/TiltInput.cs.meta | 13 + .../CrossPlatformInput/Scripts/TouchPad.cs | 156 +++ .../Scripts/TouchPad.cs.meta | 9 + .../Scripts/VirtualInput.cs | 134 +++ .../Scripts/VirtualInput.cs.meta | 9 + .../CrossPlatformInput/Sprites.meta | 6 + .../Sprites/ButtonAcceleratorOverSprite.png | Bin 0 -> 10618 bytes .../ButtonAcceleratorOverSprite.png.meta | 52 + .../Sprites/ButtonAcceleratorUpSprite.png | Bin 0 -> 10747 bytes .../ButtonAcceleratorUpSprite.png.meta | 52 + .../Sprites/ButtonArrowOverSprite.png | Bin 0 -> 8229 bytes .../Sprites/ButtonArrowOverSprite.png.meta | 52 + .../Sprites/ButtonArrowUpSprite.png | Bin 0 -> 8376 bytes .../Sprites/ButtonArrowUpSprite.png.meta | 52 + .../Sprites/ButtonBrakeOverSprite.png | Bin 0 -> 5818 bytes .../Sprites/ButtonBrakeOverSprite.png.meta | 52 + .../Sprites/ButtonBrakeUpSprite.png | Bin 0 -> 5873 bytes .../Sprites/ButtonBrakeUpSprite.png.meta | 52 + .../Sprites/ButtonCameraCycleUpSprite.png | Bin 0 -> 5764 bytes .../ButtonCameraCycleUpSprite.png.meta | 52 + .../Sprites/ButtonResetSprite.png | Bin 0 -> 8412 bytes .../Sprites/ButtonResetSprite.png.meta | 53 + .../Sprites/ButtonSpacebarSprite.png | Bin 0 -> 3471 bytes .../Sprites/ButtonSpacebarSprite.png.meta | 53 + .../Sprites/ButtonThumbstickOverSprite.png | Bin 0 -> 8099 bytes .../ButtonThumbstickOverSprite.png.meta | 52 + .../Sprites/ButtonThumbstickUpSprite.png | Bin 0 -> 8278 bytes .../Sprites/ButtonThumbstickUpSprite.png.meta | 52 + .../Sprites/ButtonTimescaleFullUpSprite.png | Bin 0 -> 8409 bytes .../ButtonTimescaleFullUpSprite.png.meta | 52 + .../Sprites/ButtonTimescaleSlowUpSprite.png | Bin 0 -> 9144 bytes .../ButtonTimescaleSlowUpSprite.png.meta | 52 + .../Sprites/SliderBackgroundSprite.png | Bin 0 -> 2309 bytes .../Sprites/SliderBackgroundSprite.png.meta | 53 + .../Sprites/SliderHandleSprite.png | Bin 0 -> 1671 bytes .../Sprites/SliderHandleSprite.png.meta | 52 + .../Sprites/TouchpadSprite.png | Bin 0 -> 3828 bytes .../Sprites/TouchpadSprite.png.meta | 53 + Assets/Standard Assets/PhysicsMaterials.meta | 9 + .../PhysicsMaterials/Bouncy.physicmaterial | 19 + .../Bouncy.physicmaterial.meta | 8 + .../PhysicsMaterials/Ice.physicmaterial | 19 + .../PhysicsMaterials/Ice.physicmaterial.meta | 8 + .../MaxFriction.physicMaterial | 16 + .../MaxFriction.physicMaterial.meta | 8 + .../PhysicsMaterials/Metal.physicmaterial | 19 + .../Metal.physicmaterial.meta | 8 + .../PhysicsMaterials/Rubber.physicmaterial | 19 + .../Rubber.physicmaterial.meta | 8 + .../PhysicsMaterials/Wood.physicmaterial | 19 + .../PhysicsMaterials/Wood.physicmaterial.meta | 8 + .../ZeroFriction.physicMaterial | 16 + .../ZeroFriction.physicMaterial.meta | 8 + Assets/Standard Assets/Utility.meta | 6 + .../Utility/ActivateTrigger.cs | 95 ++ .../Utility/ActivateTrigger.cs.meta | 9 + .../Utility/AutoMobileShaderSwitch.cs | 199 ++++ .../Utility/AutoMobileShaderSwitch.cs.meta | 9 + .../Utility/AutoMoveAndRotate.cs | 41 + .../Utility/AutoMoveAndRotate.cs.meta | 9 + .../Standard Assets/Utility/CameraRefocus.cs | 58 ++ .../Utility/CameraRefocus.cs.meta | 9 + .../Utility/CurveControlledBob.cs | 54 + .../Utility/CurveControlledBob.cs.meta | 9 + .../Standard Assets/Utility/DragRigidbody.cs | 96 ++ .../Utility/DragRigidbody.cs.meta | 9 + .../Utility/DynamicShadowSettings.cs | 51 + .../Utility/DynamicShadowSettings.cs.meta | 9 + .../Utility/EventSystemChecker.cs | 22 + .../Utility/EventSystemChecker.cs.meta | 9 + Assets/Standard Assets/Utility/FOVKick.cs | 73 ++ .../Standard Assets/Utility/FOVKick.cs.meta | 9 + Assets/Standard Assets/Utility/FPSCounter.cs | 38 + .../Utility/FPSCounter.cs.meta | 9 + .../Standard Assets/Utility/FollowTarget.cs | 18 + .../Utility/FollowTarget.cs.meta | 9 + Assets/Standard Assets/Utility/ForcedReset.cs | 17 + .../Utility/ForcedReset.cs.meta | 9 + .../Utility/LerpControlledBob.cs | 45 + .../Utility/LerpControlledBob.cs.meta | 9 + .../Standard Assets/Utility/ObjectResetter.cs | 57 + .../Utility/ObjectResetter.cs.meta | 9 + .../Utility/ParticleSystemDestroyer.cs | 61 ++ .../Utility/ParticleSystemDestroyer.cs.meta | 9 + .../Utility/PlatformSpecificContent.cs | 108 ++ .../Utility/PlatformSpecificContent.cs.meta | 9 + Assets/Standard Assets/Utility/Prefabs.meta | 6 + .../Utility/Prefabs/FramerateCounter.prefab | 183 ++++ .../Prefabs/FramerateCounter.prefab.meta | 5 + .../Utility/SimpleActivatorMenu.cs | 38 + .../Utility/SimpleActivatorMenu.cs.meta | 9 + .../Utility/SimpleMouseRotator.cs | 113 ++ .../Utility/SimpleMouseRotator.cs.meta | 9 + .../Standard Assets/Utility/SmoothFollow.cs | 61 ++ .../Utility/SmoothFollow.cs.meta | 9 + .../Utility/TimedObjectActivator.cs | 215 ++++ .../Utility/TimedObjectActivator.cs.meta | 9 + .../Utility/TimedObjectDestructor.cs | 27 + .../Utility/TimedObjectDestructor.cs.meta | 9 + .../Utility/WaypointCircuit.cs | 384 +++++++ .../Utility/WaypointCircuit.cs.meta | 9 + .../Utility/WaypointProgressTracker.cs | 152 +++ .../Utility/WaypointProgressTracker.cs.meta | 9 + 178 files changed, 9645 insertions(+) create mode 100644 Assets/Editor.meta create mode 100644 Assets/Editor/CrossPlatformInput.meta create mode 100644 Assets/Editor/CrossPlatformInput/CrossPlatformInputInitialize.cs create mode 100644 Assets/Editor/CrossPlatformInput/CrossPlatformInputInitialize.cs.meta create mode 100644 Assets/Prefab.meta create mode 100644 Assets/Scenes/maxScene.unity create mode 100644 Assets/Scenes/maxScene.unity.meta create mode 100644 Assets/Script.meta create mode 100644 Assets/Script/FirstPersonController.cs create mode 100644 Assets/Script/FirstPersonController.cs.meta create mode 100644 Assets/Sound.meta create mode 100644 Assets/Standard Assets.meta create mode 100644 Assets/Standard Assets/Characters.meta create mode 100644 Assets/Standard Assets/Characters/FirstPersonCharacter.meta create mode 100644 Assets/Standard Assets/Characters/FirstPersonCharacter/Audio.meta create mode 100644 Assets/Standard Assets/Characters/FirstPersonCharacter/Audio/Footstep01.wav create mode 100644 Assets/Standard Assets/Characters/FirstPersonCharacter/Audio/Footstep01.wav.meta create mode 100644 Assets/Standard Assets/Characters/FirstPersonCharacter/Audio/Footstep02.wav create mode 100644 Assets/Standard Assets/Characters/FirstPersonCharacter/Audio/Footstep02.wav.meta create mode 100644 Assets/Standard Assets/Characters/FirstPersonCharacter/Audio/Footstep03.wav create mode 100644 Assets/Standard Assets/Characters/FirstPersonCharacter/Audio/Footstep03.wav.meta create mode 100644 Assets/Standard Assets/Characters/FirstPersonCharacter/Audio/Footstep04.wav create mode 100644 Assets/Standard Assets/Characters/FirstPersonCharacter/Audio/Footstep04.wav.meta create mode 100644 Assets/Standard Assets/Characters/FirstPersonCharacter/Audio/Jump.wav create mode 100644 Assets/Standard Assets/Characters/FirstPersonCharacter/Audio/Jump.wav.meta create mode 100644 Assets/Standard Assets/Characters/FirstPersonCharacter/Audio/Land.wav create mode 100644 Assets/Standard Assets/Characters/FirstPersonCharacter/Audio/Land.wav.meta create mode 100644 Assets/Standard Assets/Characters/FirstPersonCharacter/FirstPersonCharacterGuidelines.txt create mode 100644 Assets/Standard Assets/Characters/FirstPersonCharacter/FirstPersonCharacterGuidelines.txt.meta create mode 100644 Assets/Standard Assets/Characters/FirstPersonCharacter/Prefabs.meta create mode 100644 Assets/Standard Assets/Characters/FirstPersonCharacter/Prefabs/FPSController.prefab create mode 100644 Assets/Standard Assets/Characters/FirstPersonCharacter/Prefabs/FPSController.prefab.meta create mode 100644 Assets/Standard Assets/Characters/FirstPersonCharacter/Prefabs/RigidBodyFPSController.prefab create mode 100644 Assets/Standard Assets/Characters/FirstPersonCharacter/Prefabs/RigidBodyFPSController.prefab.meta create mode 100644 Assets/Standard Assets/Characters/FirstPersonCharacter/Scripts.meta create mode 100644 Assets/Standard Assets/Characters/FirstPersonCharacter/Scripts/HeadBob.cs create mode 100644 Assets/Standard Assets/Characters/FirstPersonCharacter/Scripts/HeadBob.cs.meta create mode 100644 Assets/Standard Assets/Characters/FirstPersonCharacter/Scripts/MouseLook.cs create mode 100644 Assets/Standard Assets/Characters/FirstPersonCharacter/Scripts/MouseLook.cs.meta create mode 100644 Assets/Standard Assets/Characters/FirstPersonCharacter/Scripts/RigidbodyFirstPersonController.cs create mode 100644 Assets/Standard Assets/Characters/FirstPersonCharacter/Scripts/RigidbodyFirstPersonController.cs.meta create mode 100644 Assets/Standard Assets/Characters/PhysicsMaterials.meta create mode 100644 Assets/Standard Assets/CrossPlatformInput.meta create mode 100644 Assets/Standard Assets/CrossPlatformInput/CrossPlatformInputGuidelines.txt create mode 100644 Assets/Standard Assets/CrossPlatformInput/CrossPlatformInputGuidelines.txt.meta create mode 100644 Assets/Standard Assets/CrossPlatformInput/Prefabs.meta create mode 100644 Assets/Standard Assets/CrossPlatformInput/Prefabs/CarTiltControls.prefab create mode 100644 Assets/Standard Assets/CrossPlatformInput/Prefabs/CarTiltControls.prefab.meta create mode 100644 Assets/Standard Assets/CrossPlatformInput/Prefabs/DualTouchControls.prefab create mode 100644 Assets/Standard Assets/CrossPlatformInput/Prefabs/DualTouchControls.prefab.meta create mode 100644 Assets/Standard Assets/CrossPlatformInput/Prefabs/MobileAircraftControls.prefab create mode 100644 Assets/Standard Assets/CrossPlatformInput/Prefabs/MobileAircraftControls.prefab.meta create mode 100644 Assets/Standard Assets/CrossPlatformInput/Prefabs/MobileSingleStickControl.prefab create mode 100644 Assets/Standard Assets/CrossPlatformInput/Prefabs/MobileSingleStickControl.prefab.meta create mode 100644 Assets/Standard Assets/CrossPlatformInput/Prefabs/MobileTiltControlRig.prefab create mode 100644 Assets/Standard Assets/CrossPlatformInput/Prefabs/MobileTiltControlRig.prefab.meta create mode 100644 Assets/Standard Assets/CrossPlatformInput/Scripts.meta create mode 100644 Assets/Standard Assets/CrossPlatformInput/Scripts/AxisTouchButton.cs create mode 100644 Assets/Standard Assets/CrossPlatformInput/Scripts/AxisTouchButton.cs.meta create mode 100644 Assets/Standard Assets/CrossPlatformInput/Scripts/ButtonHandler.cs create mode 100644 Assets/Standard Assets/CrossPlatformInput/Scripts/ButtonHandler.cs.meta create mode 100644 Assets/Standard Assets/CrossPlatformInput/Scripts/CrossPlatformInputManager.cs create mode 100644 Assets/Standard Assets/CrossPlatformInput/Scripts/CrossPlatformInputManager.cs.meta create mode 100644 Assets/Standard Assets/CrossPlatformInput/Scripts/InputAxisScrollbar.cs create mode 100644 Assets/Standard Assets/CrossPlatformInput/Scripts/InputAxisScrollbar.cs.meta create mode 100644 Assets/Standard Assets/CrossPlatformInput/Scripts/Joystick.cs create mode 100644 Assets/Standard Assets/CrossPlatformInput/Scripts/Joystick.cs.meta create mode 100644 Assets/Standard Assets/CrossPlatformInput/Scripts/MobileControlRig.cs create mode 100644 Assets/Standard Assets/CrossPlatformInput/Scripts/MobileControlRig.cs.meta create mode 100644 Assets/Standard Assets/CrossPlatformInput/Scripts/PlatformSpecific.meta create mode 100644 Assets/Standard Assets/CrossPlatformInput/Scripts/PlatformSpecific/MobileInput.cs create mode 100644 Assets/Standard Assets/CrossPlatformInput/Scripts/PlatformSpecific/MobileInput.cs.meta create mode 100644 Assets/Standard Assets/CrossPlatformInput/Scripts/PlatformSpecific/StandaloneInput.cs create mode 100644 Assets/Standard Assets/CrossPlatformInput/Scripts/PlatformSpecific/StandaloneInput.cs.meta create mode 100644 Assets/Standard Assets/CrossPlatformInput/Scripts/TiltInput.cs create mode 100644 Assets/Standard Assets/CrossPlatformInput/Scripts/TiltInput.cs.meta create mode 100644 Assets/Standard Assets/CrossPlatformInput/Scripts/TouchPad.cs create mode 100644 Assets/Standard Assets/CrossPlatformInput/Scripts/TouchPad.cs.meta create mode 100644 Assets/Standard Assets/CrossPlatformInput/Scripts/VirtualInput.cs create mode 100644 Assets/Standard Assets/CrossPlatformInput/Scripts/VirtualInput.cs.meta create mode 100644 Assets/Standard Assets/CrossPlatformInput/Sprites.meta create mode 100644 Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonAcceleratorOverSprite.png create mode 100644 Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonAcceleratorOverSprite.png.meta create mode 100644 Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonAcceleratorUpSprite.png create mode 100644 Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonAcceleratorUpSprite.png.meta create mode 100644 Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonArrowOverSprite.png create mode 100644 Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonArrowOverSprite.png.meta create mode 100644 Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonArrowUpSprite.png create mode 100644 Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonArrowUpSprite.png.meta create mode 100644 Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonBrakeOverSprite.png create mode 100644 Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonBrakeOverSprite.png.meta create mode 100644 Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonBrakeUpSprite.png create mode 100644 Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonBrakeUpSprite.png.meta create mode 100644 Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonCameraCycleUpSprite.png create mode 100644 Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonCameraCycleUpSprite.png.meta create mode 100644 Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonResetSprite.png create mode 100644 Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonResetSprite.png.meta create mode 100644 Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonSpacebarSprite.png create mode 100644 Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonSpacebarSprite.png.meta create mode 100644 Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonThumbstickOverSprite.png create mode 100644 Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonThumbstickOverSprite.png.meta create mode 100644 Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonThumbstickUpSprite.png create mode 100644 Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonThumbstickUpSprite.png.meta create mode 100644 Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonTimescaleFullUpSprite.png create mode 100644 Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonTimescaleFullUpSprite.png.meta create mode 100644 Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonTimescaleSlowUpSprite.png create mode 100644 Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonTimescaleSlowUpSprite.png.meta create mode 100644 Assets/Standard Assets/CrossPlatformInput/Sprites/SliderBackgroundSprite.png create mode 100644 Assets/Standard Assets/CrossPlatformInput/Sprites/SliderBackgroundSprite.png.meta create mode 100644 Assets/Standard Assets/CrossPlatformInput/Sprites/SliderHandleSprite.png create mode 100644 Assets/Standard Assets/CrossPlatformInput/Sprites/SliderHandleSprite.png.meta create mode 100644 Assets/Standard Assets/CrossPlatformInput/Sprites/TouchpadSprite.png create mode 100644 Assets/Standard Assets/CrossPlatformInput/Sprites/TouchpadSprite.png.meta create mode 100644 Assets/Standard Assets/PhysicsMaterials.meta create mode 100644 Assets/Standard Assets/PhysicsMaterials/Bouncy.physicmaterial create mode 100644 Assets/Standard Assets/PhysicsMaterials/Bouncy.physicmaterial.meta create mode 100644 Assets/Standard Assets/PhysicsMaterials/Ice.physicmaterial create mode 100644 Assets/Standard Assets/PhysicsMaterials/Ice.physicmaterial.meta create mode 100644 Assets/Standard Assets/PhysicsMaterials/MaxFriction.physicMaterial create mode 100644 Assets/Standard Assets/PhysicsMaterials/MaxFriction.physicMaterial.meta create mode 100644 Assets/Standard Assets/PhysicsMaterials/Metal.physicmaterial create mode 100644 Assets/Standard Assets/PhysicsMaterials/Metal.physicmaterial.meta create mode 100644 Assets/Standard Assets/PhysicsMaterials/Rubber.physicmaterial create mode 100644 Assets/Standard Assets/PhysicsMaterials/Rubber.physicmaterial.meta create mode 100644 Assets/Standard Assets/PhysicsMaterials/Wood.physicmaterial create mode 100644 Assets/Standard Assets/PhysicsMaterials/Wood.physicmaterial.meta create mode 100644 Assets/Standard Assets/PhysicsMaterials/ZeroFriction.physicMaterial create mode 100644 Assets/Standard Assets/PhysicsMaterials/ZeroFriction.physicMaterial.meta create mode 100644 Assets/Standard Assets/Utility.meta create mode 100644 Assets/Standard Assets/Utility/ActivateTrigger.cs create mode 100644 Assets/Standard Assets/Utility/ActivateTrigger.cs.meta create mode 100644 Assets/Standard Assets/Utility/AutoMobileShaderSwitch.cs create mode 100644 Assets/Standard Assets/Utility/AutoMobileShaderSwitch.cs.meta create mode 100644 Assets/Standard Assets/Utility/AutoMoveAndRotate.cs create mode 100644 Assets/Standard Assets/Utility/AutoMoveAndRotate.cs.meta create mode 100644 Assets/Standard Assets/Utility/CameraRefocus.cs create mode 100644 Assets/Standard Assets/Utility/CameraRefocus.cs.meta create mode 100644 Assets/Standard Assets/Utility/CurveControlledBob.cs create mode 100644 Assets/Standard Assets/Utility/CurveControlledBob.cs.meta create mode 100644 Assets/Standard Assets/Utility/DragRigidbody.cs create mode 100644 Assets/Standard Assets/Utility/DragRigidbody.cs.meta create mode 100644 Assets/Standard Assets/Utility/DynamicShadowSettings.cs create mode 100644 Assets/Standard Assets/Utility/DynamicShadowSettings.cs.meta create mode 100644 Assets/Standard Assets/Utility/EventSystemChecker.cs create mode 100644 Assets/Standard Assets/Utility/EventSystemChecker.cs.meta create mode 100644 Assets/Standard Assets/Utility/FOVKick.cs create mode 100644 Assets/Standard Assets/Utility/FOVKick.cs.meta create mode 100644 Assets/Standard Assets/Utility/FPSCounter.cs create mode 100644 Assets/Standard Assets/Utility/FPSCounter.cs.meta create mode 100644 Assets/Standard Assets/Utility/FollowTarget.cs create mode 100644 Assets/Standard Assets/Utility/FollowTarget.cs.meta create mode 100644 Assets/Standard Assets/Utility/ForcedReset.cs create mode 100644 Assets/Standard Assets/Utility/ForcedReset.cs.meta create mode 100644 Assets/Standard Assets/Utility/LerpControlledBob.cs create mode 100644 Assets/Standard Assets/Utility/LerpControlledBob.cs.meta create mode 100644 Assets/Standard Assets/Utility/ObjectResetter.cs create mode 100644 Assets/Standard Assets/Utility/ObjectResetter.cs.meta create mode 100644 Assets/Standard Assets/Utility/ParticleSystemDestroyer.cs create mode 100644 Assets/Standard Assets/Utility/ParticleSystemDestroyer.cs.meta create mode 100644 Assets/Standard Assets/Utility/PlatformSpecificContent.cs create mode 100644 Assets/Standard Assets/Utility/PlatformSpecificContent.cs.meta create mode 100644 Assets/Standard Assets/Utility/Prefabs.meta create mode 100644 Assets/Standard Assets/Utility/Prefabs/FramerateCounter.prefab create mode 100644 Assets/Standard Assets/Utility/Prefabs/FramerateCounter.prefab.meta create mode 100644 Assets/Standard Assets/Utility/SimpleActivatorMenu.cs create mode 100644 Assets/Standard Assets/Utility/SimpleActivatorMenu.cs.meta create mode 100644 Assets/Standard Assets/Utility/SimpleMouseRotator.cs create mode 100644 Assets/Standard Assets/Utility/SimpleMouseRotator.cs.meta create mode 100644 Assets/Standard Assets/Utility/SmoothFollow.cs create mode 100644 Assets/Standard Assets/Utility/SmoothFollow.cs.meta create mode 100644 Assets/Standard Assets/Utility/TimedObjectActivator.cs create mode 100644 Assets/Standard Assets/Utility/TimedObjectActivator.cs.meta create mode 100644 Assets/Standard Assets/Utility/TimedObjectDestructor.cs create mode 100644 Assets/Standard Assets/Utility/TimedObjectDestructor.cs.meta create mode 100644 Assets/Standard Assets/Utility/WaypointCircuit.cs create mode 100644 Assets/Standard Assets/Utility/WaypointCircuit.cs.meta create mode 100644 Assets/Standard Assets/Utility/WaypointProgressTracker.cs create mode 100644 Assets/Standard Assets/Utility/WaypointProgressTracker.cs.meta diff --git a/Assets/Editor.meta b/Assets/Editor.meta new file mode 100644 index 0000000..2819064 --- /dev/null +++ b/Assets/Editor.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 338c03449f7bdef4b9c785c79a2bad2e +folderAsset: yes +timeCreated: 1446924607 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Editor/CrossPlatformInput.meta b/Assets/Editor/CrossPlatformInput.meta new file mode 100644 index 0000000..714506c --- /dev/null +++ b/Assets/Editor/CrossPlatformInput.meta @@ -0,0 +1,6 @@ +fileFormatVersion: 2 +guid: 41e4f29e5dee9ec48a2538955ef1de71 +folderAsset: yes +DefaultImporter: + userData: + assetBundleName: diff --git a/Assets/Editor/CrossPlatformInput/CrossPlatformInputInitialize.cs b/Assets/Editor/CrossPlatformInput/CrossPlatformInputInitialize.cs new file mode 100644 index 0000000..7318107 --- /dev/null +++ b/Assets/Editor/CrossPlatformInput/CrossPlatformInputInitialize.cs @@ -0,0 +1,146 @@ +using System; +using System.Collections.Generic; +using UnityEditor; + +namespace UnityStandardAssets.CrossPlatformInput.Inspector +{ + [InitializeOnLoad] + public class CrossPlatformInitialize + { + // Custom compiler defines: + // + // CROSS_PLATFORM_INPUT : denotes that cross platform input package exists, so that other packages can use their CrossPlatformInput functions. + // EDITOR_MOBILE_INPUT : denotes that mobile input should be used in editor, if a mobile build target is selected. (i.e. using Unity Remote app). + // MOBILE_INPUT : denotes that mobile input should be used right now! + + static CrossPlatformInitialize() + { + var defines = GetDefinesList(buildTargetGroups[0]); + if (!defines.Contains("CROSS_PLATFORM_INPUT")) + { + SetEnabled("CROSS_PLATFORM_INPUT", true, false); + SetEnabled("MOBILE_INPUT", true, true); + } + } + + + [MenuItem("Mobile Input/Enable")] + private static void Enable() + { + SetEnabled("MOBILE_INPUT", true, true); + switch (EditorUserBuildSettings.activeBuildTarget) + { + case BuildTarget.Android: + case BuildTarget.iOS: + case BuildTarget.WP8Player: + case BuildTarget.BlackBerry: + case BuildTarget.PSM: + case BuildTarget.Tizen: + case BuildTarget.WSAPlayer: + EditorUtility.DisplayDialog("Mobile Input", + "You have enabled Mobile Input. You'll need to use the Unity Remote app on a connected device to control your game in the Editor.", + "OK"); + break; + + default: + EditorUtility.DisplayDialog("Mobile Input", + "You have enabled Mobile Input, but you have a non-mobile build target selected in your build settings. The mobile control rigs won't be active or visible on-screen until you switch the build target to a mobile platform.", + "OK"); + break; + } + } + + + [MenuItem("Mobile Input/Enable", true)] + private static bool EnableValidate() + { + var defines = GetDefinesList(mobileBuildTargetGroups[0]); + return !defines.Contains("MOBILE_INPUT"); + } + + + [MenuItem("Mobile Input/Disable")] + private static void Disable() + { + SetEnabled("MOBILE_INPUT", false, true); + switch (EditorUserBuildSettings.activeBuildTarget) + { + case BuildTarget.Android: + case BuildTarget.iOS: + case BuildTarget.WP8Player: + case BuildTarget.BlackBerry: + EditorUtility.DisplayDialog("Mobile Input", + "You have disabled Mobile Input. Mobile control rigs won't be visible, and the Cross Platform Input functions will always return standalone controls.", + "OK"); + break; + } + } + + + [MenuItem("Mobile Input/Disable", true)] + private static bool DisableValidate() + { + var defines = GetDefinesList(mobileBuildTargetGroups[0]); + return defines.Contains("MOBILE_INPUT"); + } + + + private static BuildTargetGroup[] buildTargetGroups = new BuildTargetGroup[] + { + BuildTargetGroup.Standalone, + BuildTargetGroup.WebPlayer, + BuildTargetGroup.Android, + BuildTargetGroup.iOS, + BuildTargetGroup.WP8, + BuildTargetGroup.BlackBerry + }; + + private static BuildTargetGroup[] mobileBuildTargetGroups = new BuildTargetGroup[] + { + BuildTargetGroup.Android, + BuildTargetGroup.iOS, + BuildTargetGroup.WP8, + BuildTargetGroup.BlackBerry, + BuildTargetGroup.PSM, + BuildTargetGroup.Tizen, + BuildTargetGroup.WSA + }; + + + private static void SetEnabled(string defineName, bool enable, bool mobile) + { + //Debug.Log("setting "+defineName+" to "+enable); + foreach (var group in mobile ? mobileBuildTargetGroups : buildTargetGroups) + { + var defines = GetDefinesList(group); + if (enable) + { + if (defines.Contains(defineName)) + { + return; + } + defines.Add(defineName); + } + else + { + if (!defines.Contains(defineName)) + { + return; + } + while (defines.Contains(defineName)) + { + defines.Remove(defineName); + } + } + string definesString = string.Join(";", defines.ToArray()); + PlayerSettings.SetScriptingDefineSymbolsForGroup(group, definesString); + } + } + + + private static List GetDefinesList(BuildTargetGroup group) + { + return new List(PlayerSettings.GetScriptingDefineSymbolsForGroup(group).Split(';')); + } + } +} diff --git a/Assets/Editor/CrossPlatformInput/CrossPlatformInputInitialize.cs.meta b/Assets/Editor/CrossPlatformInput/CrossPlatformInputInitialize.cs.meta new file mode 100644 index 0000000..56f7e86 --- /dev/null +++ b/Assets/Editor/CrossPlatformInput/CrossPlatformInputInitialize.cs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: db7667203062c644ea1877077e30ebd6 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: diff --git a/Assets/Prefab.meta b/Assets/Prefab.meta new file mode 100644 index 0000000..29c665d --- /dev/null +++ b/Assets/Prefab.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 2efb95ff6f96ef4449d122f4232f7823 +folderAsset: yes +timeCreated: 1446922465 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/maxScene.unity b/Assets/Scenes/maxScene.unity new file mode 100644 index 0000000..5cdf021 --- /dev/null +++ b/Assets/Scenes/maxScene.unity @@ -0,0 +1,532 @@ +%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!157 &3 +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_ReflectionCompression: 2 + m_LightmapSnapshot: {fileID: 0} + m_RuntimeCPUUsage: 25 +--- !u!196 &4 +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 &504302917 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 504302921} + - 33: {fileID: 504302920} + - 65: {fileID: 504302919} + - 23: {fileID: 504302918} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &504302918 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 504302917} + 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 &504302919 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 504302917} + 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 &504302920 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 504302917} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &504302921 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 504302917} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -.860000014, z: -.416000009} + m_LocalScale: {x: 4.98590565, y: .245846689, z: 4.98590422} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 +--- !u!1 &1726972099 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1726972101} + - 108: {fileID: 1726972100} + 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 &1726972100 +Light: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1726972099} + 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 &1726972101 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1726972099} + 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: 1 +--- !u!1 &1768239005 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1768239006} + - 114: {fileID: 1768239010} + - 143: {fileID: 1768239009} + - 54: {fileID: 1768239008} + - 82: {fileID: 1768239007} + m_Layer: 0 + m_Name: FirstPerson + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1768239006 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1768239005} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: .545000017, z: -.409999996} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1945388283} + m_Father: {fileID: 0} + m_RootOrder: 0 +--- !u!82 &1768239007 +AudioSource: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1768239005} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 0} + m_PlayOnAwake: 1 + m_Volume: 1 + m_Pitch: 1 + Loop: 0 + Mute: 0 + Spatialize: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 +--- !u!54 &1768239008 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1768239005} + 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!143 &1768239009 +CharacterController: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1768239005} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Height: 1.79999995 + m_Radius: .5 + m_SlopeLimit: 45 + m_StepOffset: .300000012 + m_SkinWidth: .0799999982 + m_MinMoveDistance: 0 + m_Center: {x: 0, y: 0, z: 0} +--- !u!114 &1768239010 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1768239005} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 05ec5cf00ca181d45a42ba1870e148c3, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IsWalking: 0 + m_WalkSpeed: 5 + m_RunSpeed: 10 + m_RunstepLenghten: .699999988 + m_JumpSpeed: 10 + m_StickToGroundForce: 10 + m_GravityMultiplier: 2 + m_MouseLook: + XSensitivity: 2 + YSensitivity: 2 + clampVerticalRotation: 1 + MinimumX: -90 + MaximumX: 90 + smooth: 0 + smoothTime: 5 + m_UseFovKick: 1 + m_FovKick: + Camera: {fileID: 0} + originalFov: 0 + FOVIncrease: 3 + TimeToIncrease: 1 + TimeToDecrease: 1 + IncreaseCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 2 + outSlope: 2 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_UseHeadBob: 1 + m_HeadBob: + HorizontalBobRange: .100000001 + VerticalBobRange: .100000001 + Bobcurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: .5 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1.5 + value: -1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 2 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + VerticaltoHorizontalRatio: 2 + m_JumpBob: + BobDuration: .200000003 + BobAmount: .100000001 + m_StepInterval: 5 + m_FootstepSounds: + - {fileID: 8300000, guid: 42e65e088b3f4374e851b8dbd38f3df9, type: 3} + - {fileID: 8300000, guid: 8bc94ec6ed537e743b481638bdcd503d, type: 3} + m_JumpSound: {fileID: 8300000, guid: 5897aeed9b676024fbb8c694b421a861, type: 3} + m_LandSound: {fileID: 8300000, guid: 3b09d59f4499d45428baa7a21e954296, type: 3} +--- !u!1 &1945388278 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1945388283} + - 20: {fileID: 1945388282} + - 92: {fileID: 1945388281} + - 124: {fileID: 1945388280} + - 81: {fileID: 1945388279} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &1945388279 +AudioListener: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1945388278} + m_Enabled: 1 +--- !u!124 &1945388280 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1945388278} + m_Enabled: 1 +--- !u!92 &1945388281 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1945388278} + m_Enabled: 1 +--- !u!20 &1945388282 +Camera: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1945388278} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: .192156866, g: .301960796, b: .474509805, a: .0196078438} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: .300000012 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: .0219999999 + m_StereoMirrorMode: 0 +--- !u!4 &1945388283 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1945388278} + m_LocalRotation: {x: 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: 1768239006} + m_RootOrder: 0 diff --git a/Assets/Scenes/maxScene.unity.meta b/Assets/Scenes/maxScene.unity.meta new file mode 100644 index 0000000..56a446d --- /dev/null +++ b/Assets/Scenes/maxScene.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ab953ba6726fd924a9064ef9a1419142 +timeCreated: 1446922438 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Script.meta b/Assets/Script.meta new file mode 100644 index 0000000..8a4d4f4 --- /dev/null +++ b/Assets/Script.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 76d6da14616ce77438d759af609d8368 +folderAsset: yes +timeCreated: 1446922454 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Script/FirstPersonController.cs b/Assets/Script/FirstPersonController.cs new file mode 100644 index 0000000..fdebed7 --- /dev/null +++ b/Assets/Script/FirstPersonController.cs @@ -0,0 +1,257 @@ +using System; +using UnityEngine; +using UnityStandardAssets.CrossPlatformInput; +using UnityStandardAssets.Utility; +using Random = UnityEngine.Random; + +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] 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 bool m_UseHeadBob; + [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. + + private Camera m_Camera; + private bool m_Jump; + private float m_YRotation; + private Vector2 m_Input; + private Vector3 m_MoveDir = Vector3.zero; + private CharacterController m_CharacterController; + private CollisionFlags m_CollisionFlags; + private bool m_PreviouslyGrounded; + private Vector3 m_OriginalCameraPosition; + private float m_StepCycle; + private float m_NextStep; + private bool m_Jumping; + private AudioSource m_AudioSource; + + // Use this for initialization + 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_StepCycle = 0f; + m_NextStep = m_StepCycle/2f; + m_Jumping = false; + m_AudioSource = GetComponent(); + m_MouseLook.Init(transform , m_Camera.transform); + } + + + // Update is called once per frame + 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_PreviouslyGrounded && m_CharacterController.isGrounded) + { + StartCoroutine(m_JumpBob.DoBobCycle()); + PlayLandingSound(); + m_MoveDir.y = 0f; + m_Jumping = false; + } + if (!m_CharacterController.isGrounded && !m_Jumping && m_PreviouslyGrounded) + { + m_MoveDir.y = 0f; + } + + m_PreviouslyGrounded = m_CharacterController.isGrounded; + } + + + private void PlayLandingSound() + { + m_AudioSource.clip = m_LandSound; + m_AudioSource.Play(); + m_NextStep = m_StepCycle + .5f; + } + + + private void FixedUpdate() + { + float 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; + + // 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); + desiredMove = Vector3.ProjectOnPlane(desiredMove, hitInfo.normal).normalized; + + m_MoveDir.x = desiredMove.x*speed; + m_MoveDir.z = desiredMove.z*speed; + + + if (m_CharacterController.isGrounded) + { + m_MoveDir.y = -m_StickToGroundForce; + + if (m_Jump) + { + m_MoveDir.y = m_JumpSpeed; + PlayJumpSound(); + m_Jump = false; + m_Jumping = true; + } + } + else + { + m_MoveDir += Physics.gravity*m_GravityMultiplier*Time.fixedDeltaTime; + } + m_CollisionFlags = m_CharacterController.Move(m_MoveDir*Time.fixedDeltaTime); + + ProgressStepCycle(speed); + UpdateCameraPosition(speed); + } + + + private void PlayJumpSound() + { + m_AudioSource.clip = m_JumpSound; + 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; + } + + if (!(m_StepCycle > m_NextStep)) + { + return; + } + + m_NextStep = m_StepCycle + m_StepInterval; + + PlayFootStepAudio(); + } + + + 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); + m_AudioSource.clip = m_FootstepSounds[n]; + 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) + { + Vector3 newCameraPosition; + if (!m_UseHeadBob) + { + return; + } + 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; + newCameraPosition.y = m_Camera.transform.localPosition.y - m_JumpBob.Offset(); + } + else + { + newCameraPosition = m_Camera.transform.localPosition; + newCameraPosition.y = m_OriginalCameraPosition.y - m_JumpBob.Offset(); + } + m_Camera.transform.localPosition = newCameraPosition; + } + + + private void GetInput(out float speed) + { + // Read input + 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); +#endif + // set the desired speed to be walking or running + speed = m_IsWalking ? m_WalkSpeed : m_RunSpeed; + m_Input = new Vector2(horizontal, vertical); + + // normalize input if it exceeds 1 in combined length: + 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()); + } + } + + + private void RotateView() + { + m_MouseLook.LookRotation (transform, m_Camera.transform); + } + + + 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) + { + return; + } + + if (body == null || body.isKinematic) + { + return; + } + body.AddForceAtPosition(m_CharacterController.velocity*0.1f, hit.point, ForceMode.Impulse); + } + } +} diff --git a/Assets/Script/FirstPersonController.cs.meta b/Assets/Script/FirstPersonController.cs.meta new file mode 100644 index 0000000..437171c --- /dev/null +++ b/Assets/Script/FirstPersonController.cs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 05ec5cf00ca181d45a42ba1870e148c3 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: diff --git a/Assets/Sound.meta b/Assets/Sound.meta new file mode 100644 index 0000000..17aa381 --- /dev/null +++ b/Assets/Sound.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: e2839cc8e19d8dc4098d710783dbac88 +folderAsset: yes +timeCreated: 1446922484 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Standard Assets.meta b/Assets/Standard Assets.meta new file mode 100644 index 0000000..6b5c75d --- /dev/null +++ b/Assets/Standard Assets.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 11b28a0449d9a784ea5506239ae029e9 +folderAsset: yes +timeCreated: 1446925255 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Standard Assets/Characters.meta b/Assets/Standard Assets/Characters.meta new file mode 100644 index 0000000..f633095 --- /dev/null +++ b/Assets/Standard Assets/Characters.meta @@ -0,0 +1,6 @@ +fileFormatVersion: 2 +guid: 8c32f58513a41ef4dab9cb7704c5fb92 +folderAsset: yes +DefaultImporter: + userData: + assetBundleName: diff --git a/Assets/Standard Assets/Characters/FirstPersonCharacter.meta b/Assets/Standard Assets/Characters/FirstPersonCharacter.meta new file mode 100644 index 0000000..d7dcdc3 --- /dev/null +++ b/Assets/Standard Assets/Characters/FirstPersonCharacter.meta @@ -0,0 +1,6 @@ +fileFormatVersion: 2 +guid: 943e057eaae705e43b9e9b2e53d6adb0 +folderAsset: yes +DefaultImporter: + userData: + assetBundleName: diff --git a/Assets/Standard Assets/Characters/FirstPersonCharacter/Audio.meta b/Assets/Standard Assets/Characters/FirstPersonCharacter/Audio.meta new file mode 100644 index 0000000..aa7e7f4 --- /dev/null +++ b/Assets/Standard Assets/Characters/FirstPersonCharacter/Audio.meta @@ -0,0 +1,6 @@ +fileFormatVersion: 2 +guid: 2dac79461900e0f4c93561031c2e6902 +folderAsset: yes +DefaultImporter: + userData: + assetBundleName: diff --git a/Assets/Standard Assets/Characters/FirstPersonCharacter/Audio/Footstep01.wav b/Assets/Standard Assets/Characters/FirstPersonCharacter/Audio/Footstep01.wav new file mode 100644 index 0000000000000000000000000000000000000000..6e52e7042ad5d9008c1affc0c0071d37fb514b51 GIT binary patch literal 49372 zcmd?SYgiOlw)kCD-7OFaD2M@sfI>te5Fjw#7#%elF*-16V9@9hmFS?+@q&L18XYw{ z;$`HhqmihiBaTLljz*0J4U7gEh!}||3R11FjsLCp?|-l=un&WmIo`^X zq(A>&mK3Rv^uZsNzAwr*4!5s$yHhI5|3jd(B_Bjh`+sl#w-W9DmvJvhU6s1#D@h8L z0;M31K&~PzP{*EKa(K1?!ltLWPhDuSC zgiAvmH6thwlVWHQE)A2Sxe|Sf)0eV9YQ<1HNE*!VQ2vUmp+E|uG{(_3l2&2TaA^c3 zemsu=lcA2Mq5O)v;*0>6KQR4)?ag0NV-zi;XeVlkvH4Rc1PH$WGlmdHe*^g|+76|+ z2zm+vei(Nl{0(=s3IWP5HG+9M&_M%#Y6)zI(p!Ii2UAnfEQsG<4sj()h5|*SP$s{>*FKYPlEBK?2bg+wAsMOT!L=JDeR!(s0*bez|2{nFPl-ZF5Z5-{s!L#N zk~H0!K6~?P

s8;klD!;aa6kk*s#6S~ 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 vDb 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 YZF==Qru-kiJGFiFrJJwP{cr8~KcI@)XaE2J literal 0 HcmV?d00001 diff --git a/Assets/Standard Assets/Characters/FirstPersonCharacter/Audio/Footstep02.wav.meta b/Assets/Standard Assets/Characters/FirstPersonCharacter/Audio/Footstep02.wav.meta new file mode 100644 index 0000000..08a7850 --- /dev/null +++ b/Assets/Standard Assets/Characters/FirstPersonCharacter/Audio/Footstep02.wav.meta @@ -0,0 +1,16 @@ +fileFormatVersion: 2 +guid: 8bc94ec6ed537e743b481638bdcd503d +AudioImporter: + serializedVersion: 5 + format: -1 + loadType: 1 + quality: -1 + sampleRate: 0 + forceToMono: 0 + preloadAudioData: 1 + loadInBackground: 0 + overrideSampleRate: 0 + optimizeSampleRate: 0 + 3D: 1 + userData: + assetBundleName: diff --git a/Assets/Standard Assets/Characters/FirstPersonCharacter/Audio/Footstep03.wav b/Assets/Standard Assets/Characters/FirstPersonCharacter/Audio/Footstep03.wav new file mode 100644 index 0000000000000000000000000000000000000000..f7967493af6782418a84bc7501f6d31233a4e8a9 GIT binary patch literal 54208 zcmeFaYg`uRx&J$d=iwj*6aoPP1&alhg;5F>m12Zw)j%O)F=(WaK(u0{9&lmRO4VS+ z=z^-%rA8MNtyYXwB1RV&TpG1nHBdDes2YhFEJP4^PV>yn{?4=i`_2FJ+3)td|8_p} zFmum+U-$Vs{H|-pxwB`^{OlisFn@a1jCTu4Rxgl*|KtBzIj6w|JU#oEc;;M-2dn1f2IBZfBwH1f&9GH zd9!W_LW}-LzoDVT*G{g!@*w8y$tAI1E1=)L-Y-mQy58#y%27X5<$ zR5uA8!XvKl>8;S{&;`M!hYI5bRd0i?4GJ1(4_8llKA?LGgZf>r1;MHh>h6Lcbvbkg zdCbC7UC}*+K*66CF_td&QQ`?@%t8qC96a+9!h|TED^OG^6Cechq@UUwX+xmkBXsLG zX!8?l@8{^!n@KlX+Cz;N{Wednv{|B*Kz+AeJrcN|AVg5JS-9xxu@^lK6+DG|+&$I( z=%Z2pQ|?4zGU?sWy}|vUt4p)uB;~MF7;a&2@ z(9c+57B$ZlQlJ?}z6rt%+K~aZc%H^FZvu1SPtPWiGL4itawJi1ELTC$Os3V7D4jq% zqoI=wT@UIFqkJf>kD**L6hgS4?xH=3(g7~|>B4%UkTh>-Eus&39P@ZGj*^K&8nuq5 z&KRgJ<>^@3noe8esV$wljP{LXbwoiekn2S9MhkOj-E{gsi>q`Y%auEZyCNZ1m`h3q z)MB7FpPH8QH;?|Ok)9$f5K3spLh{WZEtj@s3mIa#7%gUr8DgY3N}MCciV5OWak{uj zOcN8i_Y*zDWHD3B6PI!~Mx4R#JaLJbF6QvNL|h2Z96QM)6E7S>1!XUVm|UzeUfSbwbk;_08(y*T-glck^h zXWb9#mwx)qnR#cE&oBCX{1*d%yLj_#OV{1I_n-drrOu;W?|!%FUt{~;AM#d8glVQ) z_s_h(^?Ad8-m5j?;^?-~S&?6kIWjh3+`4~T`r5|W**_US<)?|#PcxF-rd9tm{HHC6 z&MBc&bEbw*T|VV6lMhW!pL8IuAvW!`oajkoEs>jk_|6Z0{%UnV{fNS00p?3$mD*-+ zu#6l$)t~hJ+@9Ef&3N|wyZ){VPgZ<;^YO2~IrAX6yoAlPMpZ_xT#GK#G zdOBl!Ns{#X1i zk9_9i=Kb^Gp2Mu}$IYJdQn69*R5v>(Dp~eQYoMilaPNT6i=Xu8_gnkEdLH@w^!I(e zTY8uG{;DVXUl+PpeD}+zi@QF1@~>~tcV2pY=kX_x|LgJD$6FrTzq#>f@ZldH{yXQZ z5C8t4@!_8zrF=8#adxNQx9@!$`sD9j?|=8zcN@ANJR8xouD9X)ThHI`e|ey6@PCGy zEf(va?adC0Qlmc7CJEETesQNXK@KsEGCwkxxuv)ly63yEa<6p{_GtF_rRPe|V$buQ z|ML97uwM^*ZJ5`vSB7oz{F$fcu#90RJ;!+-_ek@I_PFl8$UVvZQ#ZxD(fpSAXXb~d zEhaD1L3xhcBQ29k#e?wCy?UHptM#ah)H3IXN|)m!N0;5-UTq7qHCP+0-&i}Wf3z;O zPPP8rdcgX%Rki-s+G$yBZLoRS^KIp}6Shj*NA?Iulq1ct$#K`QRY`Q-buL$1)mZI} zwn0B2*u+k0s$44f$Tm}!Td4af_m@3#JbvzZc9_rb7sGeHw8T5jr`4x=#0Mi^^ZkWi z{L9+Qb^f0OeE!NW1BIZHpeI4kgF=FPf`9kw(pP`?YH-M=kl%$QhD-_hpI1M8^~$T8 zULEsl%B#P4^`F5TgM))pf_@t~CNTGvivddlLIeKhAK<_4<+Fa@`^Nfi9=UeJdY^Z^ zfALbz@Lzk4^V%_N&~t%jtw)5%4flSxI`avW*;FNWON*sY=^$KiKhovCo~O5K*_u_Y zRpZr5&T{8&r@!;8lBWbJqVlRzuB=fa;T%^S368(ny&Rd2bceU&s{MU?j6K(W$bQk@ zWdGdWZm+SQu>TjSIrj1P+4fTV2lfHmHe0dnV_Sgzh`r0M**nQuV_!p_CH8RpHe0eS z&K7DLXUnsd+Me4QY_d(Yp0-Z2hFAlv9hN|AzV(V_tfgsaF2}zOT_3C&{P|$W;JJa^ zf!cv}1O5Xq5B&W_%!|+Z|Jwg;f5?j;y^vo7zQ}yB;6=iVk{2sql)q?tG4+L||LgwG z`g{5#Uu=32H;^?jY+%B`&4H4^6N4KE-x&PGVAbH0!GNKPAz#Zl%S)CwEgxD2hJHV^ zZm4u<_fXSN=1|;F^U#%{J40 zEw*Las;sB1fwrZ#Q2Tm&r)`mKw(XC$FKr(7B742P%^u>I>gaUrRrV|03S8V-uXd_l zTDA5}^VhfN=|U&6qfwYF7Kz2;Rq?2JOYA|WUK1BeuSnaGfL>CV)GkhChiOutG+M5d zSIQgZWAbsiMZP5eLEa>{%eUn3B{Nqg@?~j-^hi1--4(wOXG`Oy9x+Htld7eiQZ2H0 zn%DsSBjQ7GjY}$yC*>4cKr;GMfbdu^*7s?u+NVZn3EDO_Mjfx7a27eII=!7&l|L(o zSW~S^wQ|+5*s%jiG|o}QIvMB4aC~e}wWr&C?PKlhSUZijX*M6*bM|DO?a#IYw*Rob zZ`)+^w#)Vg?#J7Dt>L5v*k{@o*}k%t*=E}3+LMj4wl{3OwqCo%{tLUw{>(Ps-fiFO zc*AkYZgPY<1jjEN*BvVy*X?!oR=eQP?5FHyti=TGQXLVj?Mi#N^?FH>AwLXSVd}!^o9i}weOXgcmI_wYqM@$AUk_Cd6%NTmR|aE-_7ANd@*27^_yLsN%3Yity5+@w<(((eu}^Hx#IzI)oBm2XV~}ID_9i?_5-#g>qx7Q zt;lxH`d`+E)<)}E>jU`x%hm?V3~Plo!}@{M!Pr(k*~`aIC4z;P50$}a8mqX-m`K0u^v{A~E&Wg*~fmg+DQAaO-qQ|3&cMDU+8g^d2o{W{%Ae^NBUj3-P zShr~{TDbmHo2GTCQQADMPR&3Q>{gpqMIEVmY7ts2do)wqrFm$})H2niom1aoZkDPC z)IMi5{fyAQQ|F>PhA`qjY810!R%@K$&JUcW>KgTi(?>n#oZvj}>~JRXbR4DksO@Sg zH2l?hNZHNsfxGG>^_F@^&DO4|KcxOH)uJ9&Yt&w~Lk-q^wIppH5_!M+k(x;xuBge{ zOl_i;sAbT4o956YUDR91GaIY5MO&^7hr=w=o3&W%>={@u5B0T3uNZ9dY;2_s`goo< zz!L`9nsnjBklOIZ>B@bz@bWge| zO_nmH2C0l=gA^>C7oUofbXx2cbESEbxAd-5hYaYIvglK|JVB}vcT4%ya9r9hJ>l3P zEtf)R{ZToc-V`G%R>{e%#w;0$Af?K|^nIqBNV6dBKp;0`I)qy@;;Ocmw!Xe zVaSiOQl+$w@m?=ILV_HTTClZ-vwBO#TA>R&sX-heoe;~#blTk_?qu}uFdxg^y$D=h}=whWsrR5&K&iCcvV?7lK=Ge5Bj ztF4#2L*jgDcqk6CZ*!!l*puyIA8XH({#Qt!iU&nMsgSYFW=2z_2xe`!G(*Z03&c2N z?s!R*E=&KE2D#q_KN+Bn6Qlw0r09cW&KDPp9b%=lg;l)@t9q{(Bl$|FL>uTE*_$Xw?UWOh4=J2?V1*)cd@IE>kq+Fu3|sV1^G!5 z^1%dpL8}gcPtAwVT;X{-Jf={XE>>Vi&j1(l7U~5XR_X!vTo*ka#CEL};>5>dsATjl z5AN4NUvgOs$E0S?Zsv5kJWUReFUlL3m9x?{R!pCCRX!=-WGzqNoW@KQO9|3U=}(jl zg##XAU3<&TaKccjla*74#hl5g21_@@O7?U#2tx<9^JXmJBZ4ZNVm1Q7J&J`!dRYhF zaY0{2-{Rn%qF@qsfG8O)Jq^C0GN%vpYy3`Tdcq*Cr{n|g9%Ln^pshWIPM!az1k9bqqFNmU#*ez7S z|H^6ED$tdA9A`iW#(@Vd0D+k-Y^0PQC{7*iP643_q|dp`&q-kb%-~(t>?TSVGjnr5 zMFp~?u*+&R?=8; zHldA`3@K?3`^S$t+ltoc1<&aLr^zR!gnbw$wILlx)Aur|k=-4}I4)oezkoBGXD@DI zRh=crO?1pA#>oSYkb%5&XYVZmr+FY)g)P*%26W}IVBkBu$axTyr$IO*+!3~l<7mOB z;#T(DZLpR|o>VeBE5L8k>5VG%BQXb9*Sna{Y0%z4?fKMONNsz?9h^1HN1oV>_Ip~& zkRqi^BHH4{OLz zTEJLdg!6w&E4D*r9_Jyh=d<${vad!+LF|uUIa;oh&XIFH^%xwmh~4KY<-pa$*oz~i z;k0^7{r+L=bFX877e!Gp0FflS;*&AM;{9BeB4*e2A%Uv`NbnVUhz$B%LKL?%8G zZ-^H7SRM#l4bPTn0@9Aj>txTpxcSQ}^TM8%imtxraHo_J5fDgvN6OJ&K(X8fLWW_?U5o*_k z6h^@tu5s73>JRdyld;IBhl|)f55!lH)2-+|hv0^j#VttU5TtLS)X09=%Ie%BwM$;| zZF05I*HKbEGq96YK0<1MRv{~@Qo17@kQOmpJz@kiHw$^To%GjPV|7viyJ96J(%4OT zXe{;2*Cx389L_Sdgze0ggLV8C7Hb!Bv6j8FLQ>fSovemcQaVy`K73>}5;IHcV|Jf1 z#v*%X87uuFy4O|dIJ>WnJ&?tooiFW@j!NY`YmhwAzK6@cvV?`(g^rSi?YkZ=EDc>E zOzxttF6oebAAQIdoqMs|Pnk~gO+a6Wl<%-A3#I$g3N)eP=wWZ6b38%gia{S7A)93n zB-TFJOZG=Mv#=iLppC?%e=I~xDxxKA(sf3m8r!;?HG5X_M;j?dzNNBmgP`0>i|4}) z7PE3^a4tl$sA2&lwuDmA(kAf&GJOQR_$;GgaNAed&Ed>Lr5M5LJ<3iTV1F)WXMF+Z zTm%R2f$s$}zdMms$)Yd&Fqr)q!%CYBH%(@p2g6qrIVQ3ehl|gVS&PVVRXB*$41|~8 zM?V`5#|%TxScC*P!x7}nd^`ioSpB2X;~Mco_^=KS!B2x>`h~2-jo=VvtS}qgqaEqF zmi4%T_4gFnvef0lIEw5V4SzX>EIB1y1_5tpy)H*PS%Eye#)`g4&0p{|1>GYLUxx>J z#RJlh3TMH_li>R2py;3#zT#65@*TofO5Q+DSF#gUQd1o}rI6M(Q{pytpJu-lvU3dF zyh%9EPANuG7V%q0%2Fh|FFL|3;Tc|`66%aYY6jx1k%TVvfgO6To}n+ny0htq=jO4# zO`ky8BYb2J@BsDbb$W$fua8EDn2tvzno$YIlQLgOc%0jJM6|nrK zaQbK#bplU&)dBT3r#s$)9yN~I&TExg43q=4QQ9N*23Fiv)f?+;wKhx3)sE5%MLn)2 zp*7ZP8?@2dPBmR!t!~Ax8%=8yur_CC8Yoq_noIlV)3yw3Iz{cFjwmfnTZG*i%iop! zW@!(!PA!LW)ucvf!Puiw)KZ~c#jZZjC2+C!{JMGd9K zQdM(Ssv7+l>1{jM!pCX|mgHUa86%)#g~noQ_Nzx2m1Sx@X@}L_>M8o&M&6m~EP7C; zmhd-2ouOKtz0M^1bBR1@>NGVRG-L&K>j|vkeC*sM^!_lEvQ=*ot_&<>GuG`Qs2@>3 zBxRhs5nFhxny6lP);dGf_sHKtJuB6njL}X?lw%#Qg?c)cw1+lQyG{Ob+CNsC&fP_7 zkkkZf+eRDjKy{m1fla+!ZNb8Rq&n2$^d^BLL~}5zSJbogX@NSDJcr1=iF=KaQE25m z)M#R6-8IHe4W`X&)%DQnQNLrhVwvHo{JJyOIjklhty)c?j`x_IP*y-I^+8rpO`oWzQ6^g7h_!W5x8UFH z*R%C7cFbIn ztg$GiSQm$gKSk9A>~72tF1A4wk7#stmrXB@h zX=3*4nNbiokd`)fSi5?f((kY)V`#m*Hjee=4&UejJ-MRq5>mx`l4^S7e$8`{=Xtjd zvD6u89q8A;Pwm;;z3jV%PyX|pM~{E-^qZbcYm@Z*VT#XRUiJ_EbJ(0wXMXTaP={~X zuw;{;cvU@Z|Km_ze@yR#?y&Af&vrhmc$V7xbzjL~mF=?9ukL`CE){*`XQp_!8240< zTF;DO-+GpM%yD~NUZ`(&);kv18ivjcTz?Th@b$nS2SY4>wNwoKelT)y^FZ8-ANBvf z@B8O>o`2oz~IPlN{XBpVp6Y%_M zr^TtTT3VGeN~v<+u^jKxA&~J}`!Tz}BTCT}MR~?K7f(zcNNkd_5?nV+*`zp>G_du> z&J5=#&Per|GuZiD=}>lnzm_<{!MrW@X^xSOHoFhh;vMyl5M`<|juuoX&7hed;mw)g zSm~&AeC#+58eae=UyYw(oU&E<3XFa#wSA~eP{xCLCULHD+U#Xy?p)3$L+w34b!QHqsHS~Ar+%-N*WgZ-{orYXae0f!Iio0P|n8;-F` zg7RZ!rm|VNs?;d&C|@~(lnl)3DuTIWUQT1K{+ z9_O=zCaQ`v0DLl>9dyo_ zPb5V%J93YuD z@FLQwR4ajtc_7d0k@cQv;P>HM6}o~H+XmY04L|UO=X)c0*CQhaKx5tErtMlVdAhV2 zdN~@v0eDkAkvE6gq09AN?G_v>N6XQZbYJIm`&Ii&My<^LiDmjgT%YA%FL!B$Hulsz(1&<3;E;N3=?tg;5xOK&Tt>N$5mtWk8Z|mF|62WhME{e) z74{T$yZ9S7^Keh!zXVPRZ;q;Z?eL_v(_(-2KR>Ve#dizq-;Mc|+w$-gYgW~*e!F;n z@qexMS@qVhdp=lJ_-M(t_xs-)miI=^Zx^<`{b5$vybs<=Ob<*uIOoEw<1-h$@nZTv zro|`uCF%)5KZ%K}pSW)P8`1BNS^lGcj{5uub+3*JT=sJRh?y^)^Zbijx8$xzD3h!Y z2K@V`^muirckS%F_UNMrpLc9%Z~OZDumAD&qpx4>NdD*O2k{U8`_a!H*L8mLt!LMF zPv>-Bd6wHV(EHW%g#L;b|2g136lra;<=W>umavNc=)9t4!JRIN6F^=)%pPt&?)~na z9`dl^Uf+7XKKysX?+xGmlAHGn@1hZ3j<`1B-H~SBK;J0e$-c{c=lT9~3Q7qubyvt{@vr4N1sQK=QWRc9)HD)9p!$*O>{r( zCb>N|?=-({zHN?m%XC}d_RM_WT2hBllQEms!&E^4e z95A0Yf9kfy{fPT~_c`tr?t9#~xF@^6?S8@imV2xFMfZQXn>}WD{K;d3#}7P)d;G|w z&HWXR*E~jeq)Er^H4BGq$ zd6w)Wuf^(kiY>8RoQ;*xE*wUaPZaKe_Fd6u>*;z9(smZ|F_){u=*A<6SW3a}Jc5S3 z3_E$0bPG?1AC}c=5ZX-nH}VqDy_xc_z>xz$kWb2ua<@FwblTKq@-lmyN0`0LL#C~! zOw&HopG-$h|82T&>NP2*Kj8hCVH#r^z}}jP^;L;Qco190j4hmvWLJ^mv(X3UBDEXP z4eHQJK0%*Ys~zL2nq6~B8_9m^)USi}9YEW@%I_Z9JPt3xA@-9Y;V0?0k?yhjJpCx8 z_G@Rg+xQw5>MQUjG@%>hVL6<^^2xGsl%i#<&^JImTK7hu$wFfYBSq3LqvdWvOY%Z{ zpQer1cA@$0MMF(f3)P!wsR7yqZ7D4rfbK#l9Kzn{(H!@q_%!owb5h;Un zoj{{%(*miX2>mFAI`Z^O=r+r+k37H{J_Y5t3c@l0n{y7f=6dj^tytjc;B-M)ncmU^ z5Sccy9=sqLv}Zq7SOhrt8TeVIo~rxMes_HfEzQOnNz~4ulUzb4x#ZmFOoT^QBQu66 z?s&=`I6frK=oS)XC6Z;5qmcUuhn@I|kw~2tj;|b{NS5_Twgl%)=O*W6ByKdGCl&6v zgt@H4yPd`ecB0Q^V!xecMgqa6>Ollrv3R3se;&v{9+q+?mcLEfAm7IFmay)t>z6Y+lj!L-V>0dDX! z^HbAVlW2a;Jk6YDK2GhrIl|4~t=YVR_RN4^ZZsD{YYi0B%n5K$FSlTxt~Af5ruo#c zn3^-p^URUvACNQI{MhuZ>AY#9X|bsQU(y=8DAl++Rt+3Vs$RqXDK*!1UIyF6d7B@VR}&&mni zOTVMtM7ubo?S(V#M03#880_Kqv`DQF{bRm%7+c*&+InpV`F3Cj?a)l{*Z|#v5B#Q9 zt9_+CM_XOSv4d3_LwY9u-CO#3_)4hWk4~SY`{|dk&CKl0YUcU~yK^pf`DV1z0c@*M z?3UYb$!2V=LG;!@_|q|t`K1OK$4Yq2Tvr71 zb=?beBofQ%st^H^J^)5E9>g;fG_*~$f)LLGr@IcO)gcwjSLHtuR}yFPH(kP8N=%g8 zC4WI$seF)VlaoYdh06QoR(TJSA=xz56k^IT%`siT!`KJ<7AEK7b&MoW8kn3v9@Bf^ ziw2f$0%N=cW_timRZRWf;G{OV+dX8_e*7UVoW;yhBj`{yI8iFt^c~>@5t<&LqBF#2 zv^x~rFaR952t0TiJD^X@0)@c79V}IWCb!{LybJoek+Ns`-A5}|!Fe~a*V<{-1xC*bf)(WQSQ)XP zdx)$x5n1kwujvAoYYTW-5lB`AUWyjvS0j1rK&tXVcsCPIt6&2M3+IqjVMG~Ep!7{7 zjS)NjF1GP?y&O7a;8B~IC2w&dvRo3cQO`|$O?mWq61e>=d}S(Y`2zC$tS}xFdkd|c z3RYMMYF#F7W=@acg?Wg-%D}VNgJQ;k;s)WJYz7%-Ux2%gXEwaSVcT7JY%DzF6_84s zI2`Y77nt#4@ZW6YObW>67Pz$!qqm#CMbad2`l+NANcqsXkEbw53IGKrW2%A4sUw|gisDI2JO44Vzxcw1!&00{RSP&+6_U3u@n%b`hU|pBML*u|o7O2xz z2R6sYaP#Hx_AiN4+3cJSCodurVz~2jywcM`dD{BqKLILJs9{-HdHoLQiiv_af)Iu%n(S8H(zt zb$mi3OfjvCP;L=tGYl(hq;d`0@*Bq>F_BLkk=U1CIev@fea+FzS&enMAA5EyR|g!M z>GcFCbzn!{C-P_<_TOSgCP3+B4CWG_{Em`HtkET`K0ik9fy0+^=_V#?4c50nxh$;u ze5idw)X|&N-bo$Z4uzI{=$Pp!N30lO9EX-UwP9$o}#WDu^$Ck8=UY+C?PY7M`s| zHw;2Mo~0)u2e+avuGKrC9I5%EEeqgzq1t8E-$k(GBlO`tG@jLN^&z(zX z^F#EQMsONWaIu?285J{bD;eb-&JuRw4enA&i)KV7sHYj{&#}mFgMb+baF_bIngd$g zf;GPw-84ySp^rJ5FV^%zw40x7ZB0$$|ViM;L6veC9v$@>*(X9D$S>%&Q1g0x?w z@6%KCXQZA7v7G`YKbN*;f~{vDffLzznwo+1%?2shjFj(1f3HA~U!tu^N)~N=U$kPhoSj({(;;}oTpcW0fy@3^Q80`2MGTy-E=d;TbX+eTk%Szh~w(J2d z3u|jPSiXqjfXn+0enDR9_+E)2CrU# zwCmA*(CQoT!7LO`=)q9!(=X!tDFTHpfYv5(+TGx?**u>|tW64UHq_EK!}i>YBwL7g z=8#^^^IqPdxCzhSL|H=ycw?Jh7m~4dVv+Le(bFDdzuhF3BMNzc4eMbmn!`NtI?}Kb zNfm)~GU0=-NA9ghcKhIieoO>HytEX*WFAqk^O4}!iF-YP%qu1D4LrJ|iK+5J=TOlv zs?i6M@YcPHKe7owWIh_fLOgs?$i5NsJoy%~uMAKBWjv-)$j&zDzMMq--zmI^-I5y- zRc`VHJcHi&CJz#I_6M}2Pl**P#ge%r4>vs~TI`ZsgvL}YcM>Jm%6W}EJLMTzJGbyZ zHgIR0hvi<`-&7a` z`7rq{lb^Ys=NWiY-@=ObFco1*EHi1u_ir&-O^eN)rq@l!sq=}PZhpn>825|Oz}J|} z=6=&!;@*D4?_yIHcEADt&H)Q}-Sp7(y{Xgm*wkUVY|>4U<}z@L3^^MO^0sM@IhA<- zBGaeXEuHdY(+JZF`64~_BreW_*f1m7`7stvvgrv($7HF5D1~aNOfIA+dDt8$p;Tp* zMaPLI24M~{9_QqTczY}4`HXwKoK2+KX)#ZVVl=%>lT6p-*YW-SiTOS#t(Uz`<4t!d zJzkp4>{rW+Onc>B#4jC|vYD$j@*EJ1MwbqiAg`5Qk(*dmHgw5YJmYqT#nYg?`qC&#(v^U|Wo<`Yp(IH$D7cq0+ zntmk{Uxem%Sez`4$D@5#dQ1e|O!}QFSD?q8MstovFH5IYCV3hWAz6&VRaR)3^gSN_ zXl&@2jI4AO!{D65c2@h!^v z6?L}W3J0pvPvG}T+HWN9&6y$&n=20DHhyt7na zjkP#Ks{tQ4qqb@BXzV^hf>w{MU+)AdqMmH6Lrq1(#~^7HaOFHLA8)0imLP$a<9BaG z>P6`XGy!RntHonGzUT6OY|&=HpUpzM{uu3WGx|X#(li!-k>MM*;Y%G*!_@b{6f!kK zLSEH#w7bsP&MVIAcr82ef`lMpC*XDN;3@_w7X$9F)2S+9&g;&3>N)(44d|@nkoeiO z{~4)s@m7VRceF!4Q?-C>%*8LW8gJxjv=qbVc?J2DfOcB%ybrcgq11t{9Cn^nUG=g#-=dYpEqao2*TdkW8OqI$(Hg+;BB;p=+~pH>0b`j-Emz3fss>_{k7i_^Yq|Pqr1f6pu^}bR_gS8_03wLK2|@6kK+n!b_1UK1X_3t4Z>YJ zt%-UW9^GKj0Z+XGl;Ae2@c=%H+xXq{0}QWcK6#tbPtM>?J&$G4g8!qC-yC$P zBIZ9CZDI?ULLi951@ewVM?B8T=wlRPKuGIJ+l|j-3p3o0R?!MgQSV^Pu1$( z0n5l>9t^6v^dth5;yl<@5Iw6$C+Q;JZtUHDM*NYsm71GDIO6ca31G1!iE&L4{F$+G z^aFSO6m8f@#Kt5_M>2Z#?51)?x&V!C2@#*i*|VwWFALd=IqZf$e%%c{huEqk%uNpX zqw#L@4o16OUrO}XX{_u6aEn#&ghpaF3yI>gVY5zykCnj*&%xgsu(B_}gTtgF#Ko2M|Jcx+85tJW8O=y@G5>L5hP z#}&)_j8)^0R;m)wB=L@LE3w%jl<6h1(0B{Doxc(}pL3@nGis1KTaj)%Ihu&H>LS)k z5}$(F)RA|9(nefVEl)lI`?^H_8sd9*f`Y9h!l{AhwXD?Z;5&QB*TCIY*6bdr77?9f zL_t-8D&^A7i$qY(2hS`eCU`lzwkJmlZw3wrYf2zb5g5FINL3P_@`k+;bv@qo-nj9_f=J@Htn8yezJ_oCRAx9)8Tie~F#>)WDm;hF zdGPgsD}2!)65G>{sKfu}^nmQ z#bPai6Gjn1@)RBv&+g5{{tDo465MYoydnY{XDXJA1pjD(>-y=Qx7s-2u=evl~XyW%g(x((p&uXrVkzgrYEeDmUSL?uJlCXk*h$Xif zX_P~*SzK+!f;$KDGhZ#jlbwwvyabA;)XUVc7-V4yIhPVgv;xf|4~<|6M>e@ju>!N8 zc?$Wrh^uYLz*E$}2RXi6-9hW>hz_g6Ha|rhjdty))+^-R%F_?YSEud+S-MO=o56~G zG;gfT0OW!%o+}T=sTBJ%94tE(Sz|=^%p#sB9nL)$t9L(E=4!Zg1;5MT?8C9vjd#)~ z(7yJz6GWZ*d3frEDSsLQeLSK_(bM&2Yw-$3k^ zptqEvx$I`FpYvW(Bdxr_Y=j`U*1IHnA~NnG8j>%%!vy*`5?Pi;*=E;xC#wQT-)3TS z=8{@U#8#7Y7H=sTUZ~~t;yCeO!7gvgZTcNRe~l=)N7NuDDA4_{b$o@X0XE&1XHgfO=a{MNq#}*LyRwR-?xWQ5+(Oo<>JxI1X zay`-R@az#K{Lm>PSlK?hif1eg{UC`IKaTZ1p43s?1wtVkt9hL(VlfAQ!Ad0GY+|I2 zfqCu(#rYU4WCOPKF7%0$ARqgYqAlz^KfXy~A#&;pU+pkZQ{zh=5<5Q}oi~h~90%@` z$Znm?`yZp(pAp13Oy&sVK7ts}$#8=@Q0ComnH_MG`*58y7hl>1?q0={kKi7)@GLLl zPCLMB&mc$Z;3G|N#|CmA;AtZ%wL%Yhdf`TOSoBZfcRg@S4|r-X9Pt*k&T#e6<<0aJ z&)~r`-Usj|rZkAi?E$VFyxZc1hTcoQ8}LMlw*Xr3Q+N<9>jUq7M%<}R>}U`%t6lgM zkI~}e@ZMIgd(ijq!%ZK$$~JPf6TT{m(bxcS#J~;^+3F)2Uw{aOdk=sBe^}GLbGtNTBKDO5+$u{gF_ej4vue6vYG(@f!)LOP7<0oPk%88-75SD<`DNrd$o)E=>;-49BFZ?QIDiGDRYGSi z?VrrE^*lQS)uZI75clKL*n;(z3yoFiG?k<+Mc2vazL*>bv8(n$A&0Wtxi;S3*h=0}G6gy|Xi^?)2 zeh$)qBi|5NfWKrtQhyIScoH7rHAwe^Jf8BjOLKYk%qo-2+GF$ zOUs~W;Dqy_5s#+e;ra$o8l{7&VF7g;?>^)Z17fti0D8&1&ovnuNwjl4JJrx?3dpg5 zHZP@5hW1rO&#LHs2I=+WDMyE?WkfH)cN*FAyU|^ak@i#=Ar68E`msyz5%)1d?1hV| z=y}80m!a(Z`)FSl!GnG4i3auruA}jE3^Qqb3FZ!b$e6(a=2#^x#Y-WHs)|O zgLRPL8ud}kSp;v9r7|N1hmT}d!nvBwQ<1MsS^27yG1JDkW{huF8Q)?G!doDaHUU)k z3Ezmih0n5+U&EIWf_C==y{?mJ`KNfuTfx&GVl_MXJ%>(riB#j=yBK6iD4L^#=Uqh6 zg}bg4Y8${NYvy=_N4*1FqKdS(c$uR#4&!wN(>8)ByTl$K4%z zWkmWPLz3QvhM|9+;B2H%&B)zca^5DTlCrbWHfMkqZ9>|vK>OUtIR)(#{0MC|nCBCb z;CZAMBk^N73X#|INcRU}AMJ{I?gwdzKqnBe>;3SqjDuzZ7QTqQPe9t^JiwA3iLTp& zp70fipbzldgSFhqQG=!5k5}gin(YKfm^C^%jUo^ZE=zli!?j}xww;H_BCk5U+?@+yX zD_}Ua+=jNKJ?FiI9w_&b%bn-9si$5&#_79!+q)@dijV}yQ6h>;N|_CoY&A-_fyMt4lC%P1s&AGH5a|EUigw?yq$5M_d7c1 ze-B4LZSiGZByG^u1_=+5J9t|=tq`~tnFCy;Y8LNa81E2_WxhPM)7U4z==CPbg^)5H zzxZ(N5q&T;_CV4Gn1g2G&Yv+7Av}4cMx*lvqy0{Sib6Yj$!(zp0j@S$$lV8y*2mo5 z=Wiby2l0#|+_i5zGMhjmL)>Hz80@nX(o)i*qvlCSB z0OwA$?I!j~4bO_u(vPC8mr>>rd#MHe`;gXvHE;lXu?NKNIdL^@yrCfKCRZ#$EIZmk zN(2_?H1OOW_MOJvNaF7zxwmRb_{J8pi!~w-v)}~_(Axvp-HSL@!KEtT0_kv`E%1?I zH1>4ZaO+F(x*Pg4-ket9e%C-6 zZ^8HOk$wgKtU;v_?%e6(l+SsmI#4jIiQDj4zPf-_Vesq2aL@))#|xw2=;OcwjIRwo zg+tqr7*}aoFWlc3`C)v+(D(|Sz_$~vx`82d@+=H_^N{;Ew2u;= z$=(I?{37L(90Olb8p(J2kBG7-%o z0}XT*mceAoW`jCOq_0E!FurVOe6wyGxs%YPC!=FTa2Lhj30Mx3`0GcG2~eI$?nrdd zNGNP1MHBq_HNKb^gsvKa#u|aGVtl7=HaR9k!?0IksDB>%t?@o|8M^XpT5o1|qL9CAb==$r>m)DbOe7|53)Mn6wh3Mmk z4xLBOqR_&RqL=TdL=EYisdXMSXFz`!rPDdK@gAz7WA6eXEl1xk2gNh2ozviq2C{dW zSRsdKCZ^~P?-d{B&MZ9zS*_wY!Fik-8bM!Mu?wz}qlvP$X!@tY0UvO8maA@_6kx+# z2Oad0TJbY!P#M4%e3SQqTlovy5`DorpYew4WRObZt=?|lj_npZXjcb$9^j+$qUI)W z$97lgF3`ri+_myn>np^G^$}6!1yuuud`3M%k~?0wemr9BP;iH8AKt37jK>#XlO3*@ z>`Qp9FY&&0hbtn=My%9%?#F;|j(}1(`8uKI0J#k%e(ihSS@r`x9nZVomuPzrG|YSz z!Vh1egZ|zouL*=Vn9=H`RrhF12Po+S+GwHHCVKh^^w#(e$0f$I4SF{jz01_z%nY2T zrJdxd!fxBm7`AbDgu5ner&=sJzQxCAUL~!G`P|J6?#AZ&lxKTMG0@c|oO`jTa#GhEJ-?O3D>SVNV}`fS#D8TMC^%lfRsW?V`eN_jq=G$VR1o$F=%j>pn0 zCGT=p&w6Y`^09(S3)G@AS9>lK? zfFy)LH<~qXU;)POaPma51Nz|3Obth&G#%Oog~?cgIarG0X`^A&uA@C`;O}(@~EYVT2rwpH$bZb8IXyknNL~6axSKp zWk{AZzH^#F{zc?l$g^F@o&rjyxa`}tP}@Lj=hM1C(hRFLi`phZF&jH~27MThERCY? zG03b4$l@6K94<@$63F~5N)N&ug`jchc&m)nlDW1x4fu5a)5 zA+rq$dy$l9NZa9H`8NJuLQiNyqCdq#Ys7{*=F$VMBEvm+_t}u#x4G`cnz{rf2j0dO zav649Ioih&w1Fd(Xh7bdLmMzGpu^}Lhq>Q_9IxT(IvR;#Ih{nK*-u(ISmb){jql_b zw$>J`oQ)umYrr{+i0)ZR%0}LRK8od21X^jt{ZycV6o6wcC08DP>dk0F^U$g?DZ3Ji zE3nlJo2rmJ30P4{JXwU6RLD64ziBD=320bp*jouaS%TG-O|E2)Vtk}VtkyW_%|hdv zg5I-;t0Z)+c#bfhFC=v_CE~EMVu@yp#NtZ9E=%V(iPFaPOuY8(_(}uO`vm-s;glRt zS`4{j@hdpAiP&eN-i?mv4jpfvkJimtYM$tPsus*sBUZbUh^rv5+i+56(3eLpq_-bm zX+MXVCnG8AOPxmDv9v`45AGx4djhpR)gEI3N@$)IYE(57zUn68y;bzmI2YZ~yu;d~ zg^|}AO5I@3U79a-`Rfm%9|{$JT4O?=?S{fgT09(l`3YLCr|zNm@%Jvdg7CNwLiIW4 za9S~(9DVp;ebH-;FLd=%(#l;JwFE&uig6fA?;<+Hx_b8W;U?s8on;rTw+U^%PSD6yB^#XL9G^;%L7urCgiQh*(Q zggQz|F^~b{4dYYnn?vk_HmmB zFOY~(8E_%>cSzM-o-zR)+xWh81YSGC<7OZ;A>d8WgQ zj9Bvm=!T(F&x8vuQXrNemLq$?pBd& z3w(W-OP+j0*$PTj!T$}EayOj!0EkrwIM`iqs|HHlL)$)$M%>}TIWHpfBxK=ZP_jle z>TBdVMF|6~drD3NFTI2;6VaXxS!bYXJ>8_8?aS zk)4J%9uAW3jr8q9W?sb?;EhM(2`JnV5V<=3cF?K^)OeNDr)cP5lrm)SM6~O1Nc|vc zw}2IfBDpmog!?gQ6W&Pgr|8!jGFHKZYsl;YQjE6^TAm5O)zJSVNT^+m z&jDs)6EpD<(((*BK4KIN&+krt>$u;AK2XM76*KE=NL|QWZ)1)PEI5nxGQ%aMHzA1< zSq*tepF~zdhD#z(MvhHJJ{kCHE-NITQdyKp=4leLFcBNgSap7UW8IgPXMDLl7CX(0 zG~=7`3hTd(73%=adk(T^MZR2OcPL!7Agz2sd;58EgS~NsT~fndX-A&yV;^s24_31q z_wu&}JdZE#y7tWhe7;-Qe>>UXd)dJoUHoAcyV2P3=kR$gg%7NR)6ay<NkV&OfrNl$>gCcwXE@S6e$Du5e>k|z_sY(zDWCto7Z=fj~436q4Jm;i5{0N+aG z=}1ZykQU(L^Akvkh9mmJ`v&3J?&J>!7pNfys2wicf^SbD^#Q2CIZ_5WufV zB}m^iFuYV3){zAcV&Efhg3&DnX-Os5T+o#$;%i2Mr$pn+oCv}aOe9(`XpaZR&M1CI zlEc8ez5~G-4q~H#=v)WS=>$K!59(!ceVyVXeB6dVyAcfO3E0+M@T^7ZRWj$LVUPqz`E9{6?k&Df_YVfyImyLPJG$blsgJu zR!Ob`Xnlg0yO{frsI>ww^*R2|C93=ss97yhc88#`3tBZ$%)u|dhVpx$wH~i|KJ<=L z!zNNUL46bXwn5qWE=RGe>`rRgiC1|wM>aL>r^YnCno-VQBZ__<={tGTVm`icBer@I zKJ<@xx*9)wsq5Kl@@?aZ@myx9-I^bAzchuJo8xjp0fz ze0<~u+6q!v^VfI-VHvC0h`UH6e-iJXHSqQNN-(`BN)>4a8eIgQmj{M@mROC$ycf40 z?|eDPTrD2*F7UfU=r_&moxA)VXQypt-&_E{tLJYszmLghAaf4zWN z$Ytnvh8`KieLOs4x=Xh)-V(@!6BWQQ-s5*YIaZ;A6u^^;(HyRzp|9sEA74N%oU9z~ zw+()_3;t(deEZNwYVbpBfaC3VMZg&UkH>L1WIuS_BW!>Uw2KD#=0&i#9-eig>l=QK zN9Y*$;HxUuz*u;AJTasu>;iZ2H9vUtL^$|(j>+(7A2@IfT-}JLpAB!1;#n&Ee>xoB zuzw2R^r@V)kpopo_4P;?!%~WX_ZwE!BBaqeoa;a)Ugf$1IcIo0tB{6< z96dli$EmLsD(x=G+X3}2&?1_suN9g8jMO$Hz7LYw1_m|;Tlyw?#vu7GakfFL4r=$w zX?$_86Hl83neHwQ@>k&-cE50>cNEegZCWZ>M$tYaj>N-TAxi#Wz@Kiqnv(}lV=NmH&SXZS4MlPp|Y1!yGbpE z)>hiEkx|%0N*V1s?W%tb$Y33~)Nv>rq_hzSP|3AHwUA>gl*%Z#krEB0zC~;6$+MXr zY~VC7$jXW`8GtM!V+v&OS zRm)}6Qv;H=pK;1&rfR5vH8~4-VxU{=U9^noi*zv767kox@qK7l(W;$1FX32A?#<$V z&@-d{-&48-Dtp9_n6(A0%vIF0iZo-cjBht=A;)&{Lw>Vpm+^c#m{%U_=?|3JO6q7< z>uB+p;=j|cw>jRWobkTs8u2&8PNcb3a3bsOUB+h>BazMD#iV9%Wvr%Of|HG9Ezc2O z7k|#a@go*zlK2bm{!M)4|7z^a!*#6I$Nz3*9z&!-N=_*yB_)+1l6jVl+q9AK7^BQ3 zCn3_2lt@ZWC2^Dn$*FMonmRc$M&@}Q_kO>h&sy#4obPr0{`l?Zdf)eX*1Fey-)p+3 zwVt)H#Y+(Ze3X$}iSb{MSh#a;KlAEdX2_q&shM&!sd<H^CrQ~f;a(({*v9>%ZSyRqqjr%#s%r4B1p%TQx zi$k|)$_+r`WB`+kNZX-Ae&DaeOIX8o8riU!&vDA`=Q@O3SrK*&{R-7w><&#&WJ4yL zNL(WCJ9xP+ARHATA;K+^zZpCD!u!jpudXoP&H^fLvZc z`JYJF$M_Zbd6uUcNYACj@}`nDj_X}y_yY4v>Y*Lm;wQBrr48Ou8ko8TpZTFg15%rDp9Vy; z#M405Mw<=>TX$Mz3^>~+s-k6|BHjP%jWy-I0X|q4%5~(f0@ouv)g-4QTsDJFJMMLv1?3T@|d9T09lu zDo;uc;48vu8GakUQyuDi4^QR6)h6&M-AZ6@0jJjK4%(_DP zXrAcB(?Hs$OyW_}Dkkn`-%@R;`d_bZ!SKIrl2?zi?f5peGIePSCI5p~6RwUt zkEYLB0W%2Cx)1Hxn|7%P2aiCv7B!ULCOq3ZoY_Y8vCVHC!0e?ho{s#4B9GflT9hG~X`(GmMm}jNQSE=ZU0F zV?0j;UoTPy@a*0#PG+MIpJ8si9j^Z1?MG^FFw6pPbM8k`lXn?cJwkeO`rYv{20o`F zAwEnjX8uiu`=MYOM(S|xCXzD;iqFIE?8H}zHv^5@ta_&MW1)3=le1WThXW0cpk(oa~wU&Sm?;;c!Jr`ic#H|eyz^fNCTojQsEW& z8VGm9tp?9U=+F1GGu+Hf8BxeC)NBMeS~EIElG_Bx#-zRgPulVg!PAG!U4hjZP3>uq zrnJ)2jFGOyBCD|zARj4%pj4L`^*A#lJ^2U}nt`Vl(&KJ^oyGn?xhk~j)8M>=*<6ZU zYR0RofwMg`zb;Qz$g9IFt`DVl%-q7vw{pmnLd^fd%(WbeTj`T3#6PcLPvLodpfjv^ zxZ|K0KF|sLq`agSB&K?f?;E&M*vGaic`jKtk(H|;<<=0h%FBHMKC^IUCC&@hl=(89 zs>vslx8t|oN=)qGWE-Mjweei_W1k}4Rg&m_A=U{>CaJJZyEWC{d*FPZ&h4j zhfF^1iVy)S2V@CWJqm?YgJby1Nqp@j@vefbn`H2O8DBaD_&mu=83*yZzr-`&o$(uf z{4(zL;<>NL_ys?HD<%GvEXW?3+{xXf6u`4~XIz4(l|cVM$xV3Vi-;R+#D_o0F8LF@ zyZ$Zd-v@7g4f)@Jb$NhWnei1k*Fj+w*gQ4sFnAVZtj;(cVsSr$=`&!K@YzWIuCQBw z9~72@Wi{#Z!Mq{kBhDL}1CQIFw1L>ew;3Oh_ajhW5rg=c?=_@tA?C1#Qa?f8I<6sQ z1<{99qC-J#HhXwVZG4cNul2}}dQKNLzvlSWdqI}xX0P&ab)3_J{l%5&je z#nB;h+9l%^qEFpPZ^_=UL6q-DD=($iuMyjtNIMK5bu5^AfMXu*W!ny-?2FX-ZyE2> zvvawYLTwM@rd8%F9>u*}PtNvna#0u;^BF1Ma4ifFOBvxt zlivZ;Y(~aLIn2*<3fPJu3wDFyH0yzlh@XaH9X16w{ewZb%?e-!BbI6 zRAU|ZA+Xj?-VL@t5&QSOTvuK1K?XiRULB-daq`_C*9HmNB-x&v$5^9m64scNaMh5c zeUY$f$lFHA29#-)e34IGuqlsSpLjU=bbxsk$?U1cb-*w^`7Usyk<)#VzY~&!k*_0? zL!r~0yQkr;Mp*xTj+KoUS&>LXUiT$lI47)vyq)}n>vN)g!@x9~Sm8*tz*IEHd{!cj z0?tPdm@)w!A+7nWLB5LiS+4<*6=mY5fBIMr&l>exa=T(TR3a}83*v|OS+*{aiT4UPkpYb#W3-_;BcayM& z-XPyI%-+Z9oP`Cr94mVwww!MQ=n2dul4-uVE3x-hVwrx6mG~;K^T4$b8~1≤|D! zC4RqD@>Ii2$sj^e^z`c_`*5S7T@v6JP zRED1M%5DMDfzVT!k1`d!n(uiPsI~)0muIJU0rkEs59l=IR4% zNA4%442PF`U~NXc&9}1Jq&yi)_a@FaEoBsOyLM3XO{ftejys(wy`@>}? z%5(%*9b(y)`LqUObyC|?6C>Hpi1*c{l`4Xo&aiLD{|G;OCiBjfhc}s(i%46`_hG2)#OHLrFJhJ~4l{Q#aIfKk z>g#??-WSLZ;}PTW^j-qvd-#H*@H1b)Q*$SVd*Q|+8;oa-$5-qL)L6WxG02-H{PsX* z^+Ue3L&`PBkJFFs&V5aAcEgkPB&U8zIO7se@OcXF%os`?JhXd==9EEFHbH(qf^;o_ z=X3{hvN|&Jesc1XR}R=`kfmkVwNjk26}ijJelvHer6={#D&nD?=KdPqBg%!3bpf4n zo^`8J$b9n?>|QI050{U;EJ*+SM3M62ZCywnLF24P4}Ff`^b! z_{>I^58!HujnEO#sy@32CZTn!vbHw}3PZ36h9;+=MW4qK7>SPU#9E$bp}ALK6fkYD zJ=~4d9xv=EtcZvCl*9HYk5870MNyBtd)Tkg2c6ylo2CkR<-%Trr@{3o7Da39iu%|G zUGUVJa&)k9S(HMA7{Vh$&>-eojT4gMm(%43Iv4irF`!IM5ka7xt%Xf~; zky8pk%Kc!Kv88Up!n%kxb`<;UF7RH(Ham*dmyX@&RRDV|JO14jQm?_n%9GrWby%F| zy;zDxvA?e3l{1FO7ND_5z_M{kK;{UkF|ChtpCE=%tBr7 z24fOxh4Bnso7H+e3*H2trnZ=L50I|Uc!Ik#*sKZ4$o%7yj51iOw*Yw;I6P^)4mN6iMnoshDk#VJx{dN>X&e3SN9gm0Seg%DA3h08 zZN@`2tk=?EjkyUUq&!y*>gcGb2Igvvn@(KS!QoS7_;)0ghucS?buYY@BK09SuELn9 z30yU>)+7CKMs01QV{l2f*42jvMpcjTzApOpO`w!=d*KRH|Xg zj$lL&2(#iTo?2kT4qy(ngZKK3y;l4-3N@|{wc0$@0dIZg&PUA3iP**6iC_$6-b`mU zj_3XvcpAa4r_KyvUUg$W_D;S`nrGEM4o1(d9Y%>}@H`NDGnl{cVk3{on*AF%r!r3` zlQx-oY23tU$w;j1SCYN>{uU|Xn}gGsz272Fz5;$MbA1ld<_GNOnb^*wu$TV|e@l@j zOPK3lAW4?7g1?pBc>e?Z>!hqFg7YnsU~3elZ4$fmhK?7-6fja*O9 zTY{y#2OK{FA?4*zm#I)NNs0Q@=L>B)|y&4JWTPiDoY&Wk*Ehk(}h zJw(%T68G{wpq=a|SP4dV9o~e6or5b$9j+p!3u0m4K`N(w5j9K4eot~zVnv?MQ^%{k z2c%uC#eF^6;C8I^VqngTY`>AG1n+=Wz;-t$KM)mps=}uhX%7%ft%Yv!z2Q6H?oO=l zZhYFKZSD*d+l6>*RbX17<@%$kN~1N(p|w&e*@zgVam6ZVGp+Ba(ORJ^dt#*z3en5n z*zT=?>jO+bVx6stQKtS8>l}~v><8|u;Bxh(GCJ}W__~Lbws;ywfZG7!&T`LGX-0ZY z;+qYr>r>!VD?WkWQ6J6uFdPnn3pKc2f_v^dLGJ}hb|yyJ3Ecg`&l`cJ%W+`@bFCbCE{J2CgG~y^L2e53Db;7BPu-n1$V8blFvco_GnbQ$7t` zt}MCE=UUeQTFLbg&T&~qE0`D~Jl7a9tj(g+qA7anUg5PoA zpFru!KuFCuo~MJaAL(CWN3EglUJcJP;bKI9btUjU@QH0Ud8x$bYhu;7pTvD9y+|8H zDOVd^Zy6Ti@M*NJ(e75Xz$h?Gr#5ebVHh=@3fHevo4WMzXzoA3`trmIIdpx|b9de$ z$MbOdfw2b^hJob;TH>X!PT?Af7M0%H3yiPf+&8Di{~XpjUZw7Tro=@0@=5$k*LL~= z^E}@@gNK<0owsOn-#;*JKb;nGZDcgKx-hcp(f9UVW1w48kC9NBOdAa%s$PRJSPjqB zk@z&@xFI#^L9HfIo2EcFphd>;+zrZ28FR+e+hWb70{Iw_t)VxX-fu?yyd`O#5Y&>K zN?@(PXdDHmKQq=laep5cpnh@-a?6un2Z+b80v~0>*MQ5?*nLkhciO=7!$6b+?k>_E zqTWq_Xbc|L#wrGAzm4hF0Po#k*6+`UoXLk=s0_ER{JE>SGA%ZQUTy#_SM9C^XH#%! zmF8#HX*N=dAlI}WbMjn}GNq6oHovARPk_At=O@VD6ZVLC#>)z>AJHf7C;N==1<5yf+DEyg zls|$7S&D{R3BJ{6qort*OXTcEpR9uJ0q*vIcO5$MCvuMxyE%-``aAk+0g5 zd!WCKoUK591I2%^Q+FBow!rhj5J&oq95vJqYWFo7_*JyxPtK-GQtYR^s7!T+?g2wVriyNfin?h<%e$*>EEGM z*8zWk63g%sP9}@cPY39W^>DidiW`71mZdN7HIcJLKz+{LR&ahx+H&gfB`tK6b~_87 zd*J1JT46P9yPnqEP3do-yOrN%eE&{c>;!5v*2f26_#RGoQ-@#p{gJde;9O7cKI*#* zXro{2D8HZlReXFK;5YL3f^Rjne+hN@jqhz-o^igBwmDD#ZRN>0-1pq=;&}&k*+iQB ztpw{K>Y0QC%F1tHER~|nhg{?+6|RKZySC@s6g%jf zZO|%>hOWdsSI(56{LM%wS7z^I4(GyVD1$Xnom$;bN*TC_mWL&3P%=N%svv#xGband z_g zfnFJobaf|;@1=D?hCK?dJCU7DC|M1zjZb>Mf1_X#3_wS8M8~v8E_Vi#8nOfYG(hjW z=IhRw7tuE3LIkouI>UFHU*`EaWylMkjo;ZYt030^z=pj?{7{8h-?3 zCUCbH+V4Q68#>KhITPT(c*TooUEd&C$!8`{lhCs2S9ka<;+hM_cWEX6`@tCCr*e%T zcP;tC52hWb^E``^?~%5Ydc2F4UI3hU+#{+jTR5MNYLP8Dc6b8eaM*!rr9ByItyx(sfn%OP9g1uLDabeknUgbl$tkypUb^{ zGaajAI=wf7^3!SUX`z=~i+`Q+gMojR^3T(5J^Agy^%v}osoW3Z&b?CB`)w?f_jn$F zo^Bg7cYpf+IYvwa(#F8ycwmQ+Hj!wOrH9Z9&9F`;1k2`m_#6-Iv7~rf%tX@P!D8rx zUhWID{5N6LRSXu7Z_Kx&?oAlyJ+L6OZu(K@R7$sE9QFxy=z--?g*nrRaoK}WRtvpa zn~|@L*$=($P9WctYz}UBmh@*9c7e+l(CEn3klCXR(20ECrff&)7JMpU!8{4JXP{US zt$aOpK$kGy>oMDW-{f(y*Tpla3=VDR>hMtq&YCilee1DA(C^NBPb0jYnI88DJ;eOI zo6Gh4e9ZJ*iG#?U>yRVau@-Wnw_Q)jhHNQ{bh&_Jy25GYS&>LbkXe_}_)5?sNQOg5 zy))p*A4;Vo;ZI;o+(f=o@c{DnBogTWIz?UZk06CTLtzav@t-{FpDiPIJCauKZ5?SV zSs~dB%#T5z{2C;@+U^Q|*eT@v8Mr>eXEDCt_dI)=joNf0pC#zVkI{Zhp|*{j*?5&J z$eDvj>VKD=h>xi@n})YLI(UvV@E+&j(S8cWPf44O2Jmf8&IE>!HNn3e1@uUK}%95P^6Bj*Q5SCii(h11RY(2_qM2L>^M% zz}*xh$uoX1hzN%7nzke!Hwp}YAwG}_r(=l{^dN6IF~J^`OACAU$5E~ooDL-J(3u!r zTcU5(h-h@7)DX&dr9KV8G?HjWUs6(uWY}(_!0{x}JWsD2Nc5yJ-~EYYw5F`lolexC z13YwtXWx!&1*X&xYpDi?zO+dPAY50J=3~TV9tWdm2{tAkQh_*6P2xAc<@zX*l?S=6 zPJF2bu@`rQ^rW?#1x~t$R`+eprleOTE_6TfFyCruMY&2uo@!9ny1;gWVh1>@!*eG- z4dJLYS4T=dM!$`M`=(IsKs&S`HxA(5bsWm)EoSI6X3lJK<}*VUz>Pb2rjs`b zjBi25=+H-C83M+?0kaa>pxwME%#@kLnm%H7eZk!J{WtNyLwx#EKJ%I5eaLvkDu{^RwoY@(<+3dT1@;TE*QKB*D)}ru1M>Z$x^X zL=xyv90GPba_um7+D`7aA!WYD*7^adc#M>d*qVDOWrXP>{*039A`)>MHgZbhck*{4 z2X_UG3H+|(24@kh&l|Alits6bWtJ^Kc=lXL zth^iWy|SZiN&s1ar=pZC$x|7=3z06=t)$&YT5d4k$g_J`^>3?V;oXb$FO2W|2zsd; zdBsS-4_Y?@>l$@MbW|lY(zU=92h&YZDI5Ib5|ny~PepWG)u7cpsm=E%wK^LB^Azb- zdA=STk3qjOn$Ep$MZj1ST&4Jw3mDvgdlyu0;M*9QyJefAP1~YlpXRADPlW; zth-TIcCM-Q1al|K8buLO`t2#_>YDFOw*ixuwkH^RxgupzeC45$qy z-7`M?k1N{yeM8-h?sS4DZN$Mq*>^o?ue#uJmu+w8cjPme(Nu%S{Z@xG>A4r92hSbJX~lOp zC>wF~?2eYe*hj;$Y291zKGr^@^d_YT{nQrB?sqlKlPIe~p+57XCihP=7iz(S>z}^M z?1`53>5cB>+y`#^Bc2n|jk4}@*DG_UY7?MqG4>k(?>QoE$oJ%rGqDI==!bWbSfiJ5o7jd-47zLrI%+z*W^ z!2<3`$x0!|o$rq!IqoCh{p@9#+4B1UUS$0lJjH?)20uVj!McQFIS z)db47F{h2-8GoyY^t=}N;@WK`sW!fgt`*cg-C%Ar52sy3wpMma4 za9T=M1mpDsP&Tm1h{f-vBik{07ILQ@Kj)46-@{QVD1oJO=6h^RI zGdhdUVub8S(5kD^=>EUEJ>=!1&bf(NWaVQVGk<91($vA7&HDq7t_N)k{3a6eo{ctf zU-Pj*$z9GD1CQzOWE?dIc+zRLtkmQTIkt8NUQsT3Bn8+MG;$H(vKaP6U!MoVKDgTs zJ!6a3*;8mv04aAD!yc{+_)_ZRSjN7Q6z^^ITW4f(~)-(|+1M7c^`=Yi^%ipkK}al}_*EB~=UM z05+3W&u*w@Q04&C&ePI|sm0;Yn%RLoA0m=+o(IlTu#b|-8yNS+dCCDtC&7J@^4Z}> zj&0pD;BkNY3EJ;6SWQ14>?)&k*6IpnlB8#F=U(<3;nLRj1d+V-)M;R@Qsyvx>&G5p z1Q~hThb_00vi7{A!3f<^cH9*V{eOuR$CABcyxG&jufUm>TYg%>GhHvz9|<@!N-1}G z&z|^@oBHj-qTCNZC!w5$`DI%hO}|PT_-h|pzr(b(zV2C`ZSzZDG0N#Fg6HW`XQ;G| z3dTOV2(>Nb>BZ}h|IV}TMepO+eTW-q9kHzE-qOwodDK@wPAlyr$G$rCN9&z|i{tQI z1bn9`a|oRK!S8r99_~2ugj!EyxdfM3t_aR(4R_2Tm3j# zu3$y4VrFmW=_2zXNeRcrF=}lcF2K3-$MZ7IQpOQ>fVsN^ia8i1yTR{@fU)v3@aAfO zXYF1kZ5zLPfso@v{H`Oaunv0v4yBY=+sQc>YGtffyhhD;(F)&yB}R0&ld^#{X&R6I zCv9L&xAJ6U!rh_9E;f?l>5qB>YoO%23v2K!+#71NV>x%5DXX_(410C(7gphiEG1U4 z43EXQi2tp~m4WyM#7aCATgUi_F^#R{S$++x1>fO${D6n_J218c#rR|&aj$3O2|;s1MCK!Wy2Ws_f|QTKE(FgF{wZ+10!Z87!#{Q% z%mvRI)Zr5->!B?PHF}TduYg(rjxX^TXApz=5FgUFNj!IG4yC5>y9|n-L(7$h&!9br z)K`fSOb#&fNcFtYm+(7d>}N8*D;N$Y)LM6;mgS;{Ym z7>c`yUjvgTh??U0MicRYhvU<_b7BbI_GGBP4*tJVpEtoQ9c%YCZS*$`zkq!T+#A0diO>B4w4~$zGx!u-@+@9YGxe0`mx-OE;=8{_DR*?p z<13`<;mhkp>OGm1N!(As-yZ_U@-qz%O&?9UcX^rwHqVBV-ZZXPC^??bYoxtIt!BZg zXPwQb4zCgK7(sl%vclS)lZiz1C-udU=gCyB28yG29uH+X8;7?)ft*QTA4~c$s2L3y zL%DIpK1M)qA~}<2JI}Ws2ZZNkjpoktT*m@G0!mZhaSE+6jsE(WywPEYid3dS)8CiD zK7o39N|rTxgC}WE;$sWV;Nza~*g^|JUwlm8Ob6R*VH}R5jFFIOVHCu3V`qf>H=*_p z)?=m13@#I)-aeI+(TSz$w)b2oa2l8b* zI`UtnyB4^Y>lnW~pz#Zm_%N_1!J}4D>YDGW^A$A4X(*fn@&K2*$EeD&04q&bg%1XO zas_TqqVZ0no3(UKp?}nC#$>LLqqa#wOKC+M1m+T{T7X7ev=!aIc|BTDyTbJ`SL2Fd z#jB6C7qsCDq3g7Ya-j2za+eeMi{z^HQ_z80;n$Ftot*sGWd-;yf<0h7JukNVZTJT6 z;?X)U1_o`RtJt2mVAE^ATm$5d!Y_P;a{5eq1GjVM3gQD?o{@hK zm@Mg=%wjkH9zMS9Yc0h42yvXpNHs=tKRFLlwmjJNac(2!aqisT^a$63!4vhJgvWzl zXk@57>Hfb3JxM*pvXrfYk5rqui$0_!?*!_8xObnCQJ#iG1nTnp6qlZ!?@m6BXIC}c zx5B@y3RlK<8sfnlS!e+^cW}54Wa(z4Gy>lDN!4~>Or?I z{&jpe+PxpmDQUc?3x2J*THsOZf49NI_dgGKrgL5HeD~D6#^ki&t~F_T`{r~2haPnO zfWx;z>q4(NxoyDf8J``<@qPM^L=_^Rji|NJs5Yd#=Gu%nMk;Wg`>a=Ql*!dv>t#$w zY{ssPF1W_pl20c}8zt&a{$R?*I87>X8_xmtJRIXj&4KkKv{rck{*Q{T#2GqK&b?X# zDcdEa8WC|N)jeLWp>-zrS)we)nYsbritjG`ns4l+Be1?T?0@TURndr)5gPNJ1*>r! zBRNJ_29oDa97`Bqi!r*EA%^1V1jeV_6*qz?k5MME*&~0ZR_<0y<% z7Fx)DH{xTNPGD~io(|N|mNecm1g^XDokofrcMUO~9<-My1@xqxX9*a=GPgBQ^|_3h z83}9zHls+-LeKbIS4#QjZ?{mcJtf)#*Bywqq{?R(t`2-W)75q}s$+k(g^I0dEBB?e z@8#5>T!RoymeV{NUdnXx6;AR~4oe`)YwE2f5#>7+aPim+Z z=85S>be`n5F)d>(s}ZxwdEwayj>9MTcK&#xL3wDmpf>h(18^8ib_PcW47))@a)<0$R1CR@ce|@l(~zXI#71Ldlo}QXksb5Og3Fy#w^O-Z4pNOuJph)wk$|28;eVETfO7W&`zM}CfYms;lGrFx z5it68S7Gjo2AWD}_g>tDj&P5KxULWK_GV($Yp|gw#7~L>#kd=>7En_2BNzV?3 zd?E6pzng(B&V#l~=Ql}NQ=)cF@TPh6&b0>Aj#tpG=g_}Lf^IdAqYr*2SOebaD_#JP z(V0C!`Np|EpPt|upyS$!JBRf()$*6%KwYbE=X%UJQnyoP2fpsMV0Y}oD|E+~9_mKQ zxkt&pJ?`#Ff!mXKf_lk^;7cm{@%pp7f&PUYX}QX6Y5lVe;N3>L9-(&6&y?SW1*5$p zcGu2#2FiOV&L*dz6$B4f7c5v>)8r;X&*$OuQSDbMZ zZP~qG-4^l=@x2quUPgNUMY_=!_mXKF{|+8w3OfP~BP}tyaS=@Wps*M02g6)3I&+%Q z?JhviuyeO$Ja0iR9OtLWF&1bfMmzTysan!n&8I16gj7q`d3c36YOKhW%;P{h&rXMN zXbpTaW_3Q4OJ~NM3Zpi`{5HaAbkVqRE@pjp@SF-Ur<~Zb>71dbWty8D<7Ms>Rf1@r z8W-e+mOx$kVw^H-kTK$Lcf9-TjiqYw8llS@J~3{bpOhTIE-s2JQI07gjaq8$W+5#n zyv695Dc+fzjdK1E&lug#&$DN+8WT0z?5_KQe0xT)($sa&;vvp$%1z|uBQHOt3j{i1 zblHw|t>w}$pN3fe+*)&Rj10QKAflG%c*8;TA3xXv^zm2cv z}l^DAxNOR)8B zgu3eiw}3le_$>y#8%TGxx7Z)Q#X}vH^75tclAk*@LexQJ0=Mc8*As4mLUC$e1};jW zm&%284r?L2UdFBDyMF8`L&boWmUVKEVo5ZmZD_63Z~8w)@feJZm*Bb{&V^DV76H#~ zK?Q6=7Ko$n0VMgRt{zxIpZh$iM*K~6wLqROA+?l2%CoabDJ8p9 z&!Ah45G(1FdC|I%mt>G)-WePAQob2kmO@;`I2|ORJ1>-;MhcFR7p;iXz_})L1Rjoa zXAJrj5_3Ok#xdkkUgYR_kf}nNV_ZYXz3_OHyK_JowfK#1SAn!&j9QrQs*UgeA0#bC zvX2Iw)JYuh?E{AoE-eiMzr5KMissR$D^NWXo9- zEjZUSq6H_#sGrW!Lhj!8|1TJOkvsQ+AAuv+X!cXr-F(z~QTHAHgP!euBHX(&d4aqA z;Yp5cL1|dR{yWX3PIMLJEcx!=SL+$~ISmK$>W-b`wQreY6s!B^B2p_Wr?F3@TrpCEJJ#({wYc}@ zorGU^8L7MF&@^?nbX`}Gzmoyl7B~h*XNqwwXO(qxCixxh3tQPS8{5C)Qt1 zOf!BcKT5?Ydri-R+|PR5!p_(Imkg~=djYqmporM+Y^Kk3huzdL>F4A{BQ(rH$th|{Q*GJU}(z4F}=|f4`b#pbG zy9*M0q#s+`+NguXa3z$A?dP+YFY#@gY8{GCjU)xNm0HEpnXtxDU2WFq^ECZ9*6c$^ zmOYsPH`X`SPj1ztLikpwmQK`&YCLOcZPek?N})Auaobr8wpMP^h0OvNdC>T|>6x5B z%aJ`2^`C8{&ulx3PfXTBeEa}qdPYc#wRWZ2vbKd~<5<+gcC^?BLi=QC^`d$9x_vKg zwYGIt2m9?fzslvCSaKpA>DubiQ;&7F-)!&P0k2qvu+6p99ltSNZS7(mGcANTK5RkD z#Mrjcg3P+ev-Nf4$fGkyE5UoY71C#Cl06k$HOhs^t!*VtoV8ae6D5E(vpsDMd&*vN zr-K~ZZ7L1>I9g_L4$7hFmbA@{<3}!S#~cBJquD+a zYaFk!p0U-k(uP+lYfFp88E>n}xhwhhgl%ox#a4?gA1RB;c8K%UJEJj5h=?hUaOG}n zl?W@v*j`b#O2OG7&Nw5jf1DBS&p8vGgtG0F)XK0+P|6&K(vSOUA`kYXd}bhPrDdDO z-9ciBHIWO)d+crV<>@jdJn2Gy;uU9#eSSG;8dKFKYFKr!&rx%DK8E(A@=O_PKS#S# z$tFE>VqJ{_38ijOjw^5dL>p2aqqTSet*5rIw(d<*ODZd)K8tcbwsgd6zB5ooNDg9)Xam@yTC!rdt+dumkFwfUur)73S&iyWB!4ZhrdGq9C)Yc< zwRim1QqpdT97k?!?Q@j1PL2chk#%!dN9<*>+kWO-J9{(M(^isRW*qukuBvcaaPJ}Y%6UF=V-Jm z{Em0xjy8;U_Koc&9(i)aTHE*>&jWK#nP&S$Np4TXK8Uj=wt;DmQfnw4sXPAT{Ey$x zPG@3FbtK09P*MNK*0Ge7qK*_sNot-ryz^U5B0a~xDM~c|lxj*^KuA?~N>iySPW4!( zu8ev-!dpk@g%UaXrRHkMXz6&Vqm@2>)Ll_8YfD6nNB=o{NVkOANjt!E(2N5qne~vP zmn}A*#G!p8HrHJvhMWP~NRL;}pwA;6<6Xu8jCy6~*IaQ48|irG+OE&uXRhd4${ZtN z(Kq*5uRlWS&1*U6>l*{gO^%-ee8(qu7a9{VTH$4`F)gD2Vl>7jtPtjiuRzE(THzbx zv79;DC+5c#;|kJ@xaCXS+B@1Xau`d**i^m%D^<(;c6R)TQ%=Qc)T3a)BA*2Vf0l@` zmVBY!wx9JCBBuM~p2K`0HP+EK62G{ukC0-wj+t<=<$SAM-n6`8YsaXWaIxoOz09?} z#FQJ1MzbPJY;oyCJi9P8#r{LUKZf}<{u6~8kfEMvYO;T_dN$8m1i zSOcFO%jQeTS>wovcp@jxtO#vhv<~BZ(iV(qVs}hAPouRfoaN&Dj`KXuXG@tUTxPl{ z#=e}{N`v?u=eto}<%~9&7M*Z$&#$XfN(p6hsa z>1oA$VKP6;Wj~e@$|vo|co%W_E&obz^Zm<&j5U#?Oi6CO(6L13lN4fEQy`N{bfhkfW%Na2 zEusfuu4Q8H#oAk=ST2*h%;*2+BBn)*nI*&?IW{-`d6(H2|4Gfvi*$X8_#$sHH#0S} z4iPpb@#ijSz1xtP*$-v8Up?}H@k_gX^HOHX(rKA@@pt5R|M$00-=3+@b@_AquKnBh z>M|g;XZ!o}P0w2UWVS5LUt735dALKLL4&&A{L2i~5%5cS;$P0XhwEwgW>8AXD{tfKa Ny>szDVEUei5(*E-R?W4m@Y*Gf{K zmc82!9Wi}Me?|IV|F7Gm3DG?#Oc*=)|6?YGC3c!xuYLE?Bf5+mGGs{mG5>e5y737K zaq)HI5|R??Hm;Y{I6nUWF7dzh{nK$%qDwG%nXAoiN&2?0EGbe6Y20VyKNab7*QW0o zb@iew|IY-C7&|VZ`~P|Q-#Tgkzl?kMkSRlcStUu^q|MT7X}h#unl25Mrb-K?{?cG+ zgtUyOo;*#J7E4RHkC7%y1Ep?K7ils%vq_mJ?czRInklU!Wd`qkq()L#X{^*+8YIn? zW>IsFG>V$t$zLK(AZNTZ(xf_4T1m=qDPD>rcPMQqON+=G3H4Rd8t5iVKTvAIQC)IABNdi*aT$>uwIx4%`uK0Bg^P1dlvZZm0CjFZ#O?NgmnpJ60 zuI0E^7u#HH|4qk79d~uu(!NZGMQvv^-_&G&qv;Jh*WaITDqc!hS|>U#BQB`Mu*!2P z?u&|yu$8%3@^!KK)+bsY_rHY=@(;c3p1bDJjoV>&w%qD_ZQ!N2w0URUrxu^_ri@RK z&on$)`kzOq=bYMbs_L1w=SrsbOKW*K^@{6qR@&Co*tFAWh5uH)c;s@@^>yj#*K^aS zX7s!<^*{IRYne@Mx4ZTItpzvF-1_Okua944rDtV48v1nAvrk`?ef`_plKG)_dr>Xt z`>y(~>&~67N#5Ohcd5QSLhWgd^vf^SKX`G8uS+f}Wt3i2rd-*&5q-;*t1zcx{g{;4 zz15c2SXy&mTyDbc`U?|Z*AGl=+u%)uRt-BRooqC!ac-luq>V{h(vb#9^>@@C+HiWK zeT|Zma_UWruNOZyzH*(jHQ%r1tP))F+%zj|1qd|v5MBE(sg~ap6;$- zf0MU1Z`+%HU#@!Qeq8Y2^Skr!tjuh5b3*!>YcbdKD>pC2U96qvpZfjz3+Ll6yuA>e zIy-gXzx&g!UJSl8^OFCS)T{TeFUsh2Ga~bsyPw=&@UZry`;X(Y-{w?)IX?Hz+lBT~ zMOB?mJTtTiskU-etzcbf`^euKSSR>?iI7sCl=?p8T4+vqrE+~EKdG=WdR4_;6)RUN zsrJ$A*1}a zXFYflC8A`Yp2_R3FGsB!8)uzQVWHqdEU^ zBs<0x^(b@~CKNgC|JtJpH`qJdo7jgG+|QQ^mgN7N*CB6t-jcjhZzJD)|0X_fUS8w8 zG5Npdf1JM}|Eq%bg~>%b9Ur*1xM-%GSJzcMV{lxm= ziOU)kHkj5Rp<(kRd(!eo0gcldZEAe~{WHxPH0jaMKXGfl6A8uRN7t!Y=W?Cm2_x$c zs#m-I`g;2kO2!A*Nv%CE&R)Y>{r9RftK6ydHaaV+W`(WgxYYUGk6A@Ne`f^CU zQe8@{46gQGYT%+`PXj&)*y(@U?~HA}b*yEJ8mbOb;^d1)s(wY=>|5hK;mLLvxMsOZ zyP}{ht9@NMD4!b(M*i|!PC>R9baaV+N2 z9C6NG&g#xPR*%p)b47LdZ1nkJ+o6AuXWbWYwh&y`Ym14GxXVdlAcM4%UUIEpYJSJ zq&7<%rOoiQ^nUDZ=^f%3>CSV_a6NZ6bS-y9yHw{yN1S70QA*)qyQARSg8Bt=L79Rp z`3Lfc6@=P{*rV--3w|zGSWvH^bHU|;g9XD1mKQ|ZFWJ)y|0}xZ_{RB%Gt9Ni)yDnO z{evgP^P8uh*Xm31ZSy5-8QMH;h;~uiueWCICg~%M7m}Z{MTt?DsiiC{El(}~SxQ)1 zsK=C3idBtJGnDH}qMD+#RZ1ydd5~N}nrd`4mg)VqyS|ULL3&4Y>{?^Bk#Fe6VPme* z$!Kn58e64N@_KoqtVxfhE^>X@E)9|97*6Kl7&9|QYo)F8E%E*5)4WSPUiT(Xh9}W; z%stcH&wbW4lJS@4>f!vw@ql%y?wDD$wdhpQuA+uT^9o%F#Gd#sTF`f~gboYGs zH1`Vk8h2Iqc$ehToLijzou!-)Xr(*SIn@#GsOPv_w617y(VfD9g=-7f6?*J{*{|58 z!m@=G3awnl3hnk&_PzH1>=~q=wQsd2+ZWq^wBNAX?X|e>*z@ey>^)%^+q#;&?l^n9Cb%lQ&N}ZoA3Mi8KXmSOUUx1g zKghM)Inw!)Gue66dDhvH5ngocb=-3VIqNy!I#xKAI9@sKI>tGcJI**F9qz)P3x6vN zD;n+Cg^blInp@O^w!1oiab9pdq+hLyUKiafT3a-*=$pc$g{O*2IsPk(cl3a_cQ|q# z8y!pO=S4?Zr;q1<9M4$oE6z5q_g!JGsm{yJS+41>Ypy8wYu80r6L@2y+kza9;%dq| zjq|qimh$Cm&3v)W;;yD%kE^RI$g{&U(qr+A^Td0nvVynW)p;K5>F8PQ*}z?MM|+Yy z^*miXPdp!cJ9x)?3%yHyTYXiv>e@r!N?#_jXh+WDy*<3sz2m$g-dWyk?*nghUsIpI zZ=JWdH`LqAd(?ZK{A^DbZ+CAi?^$xk~UC!-xb#u=_4nB6bb02ek;ri4) z&(qEO#9PC+6dm=1nd$7aGr}lz$9CU5-!U}aPM^nDQ=6#OMwgA&^0dqPMxzs+G2kGO{!+p>~ALxZzZG9?UVM%?t zzDu8`chwX1p86vFnC{RE^&`5jha0+{uV2tB8Uu`3Mib+ieo?=w2c!M^8xxFFW1HbL zhU0n8m#(1Y9!oCif~3ev@?7-ZXnCWYBiBG@hA8D3|7m5tVo^J(QEG9u3$`mp?V(1i z4kb|aSL>_m)CAJzsj=!4B}yHDCLW|V=evtqO4XGo%1b4iImu8;sFT#LY72Fsx=XcM z4yr$@+3IA=X-m50Ps=XLNlU6F!*bA)VtHdJZ*6NGX`O7XX`N(sS+`p^Sx;McT8~&Y z>q^@KTW8xs+d11)Tb9jh3-hb&S7;mIch;}JUmd^Jehd8O_)YM;;uq)d^IPdRi1+z^ zd;A*tC;8|59rIi5chc{i-%Y<}{-yk1`$hN%`v2|srQZm@Riy6rv-|n{6#qv4r>NP* zzq9{izjpq^{jL7r`u*+K#J@7{NBs8rt@DfUll=zzmG|@63T-!S|Jm-^PS~c|f^0?B zzP7%$I<^|N9P2vk4Qpkai!ltap0q~VLTsn3Y1U`fyVhma1Z!*SX0BG&PS%drKGcv2ssqHYo6tnuw< z%OuNE%a4|iEIloumR;&;^&xBWQY})QYL1$r9^>7mu2rk5N8s$^N{X@vo?opTLk3)O zrW~S7Lkj$rW%32tCGV7z<*THn%gg1p@@6b(KGJf5?`QG=WW=JpkdMh7mN>{6da_Z#AfRuYFAdOk#j`Zt*pb>m`cgHd@rI86KVfDWvMcs z{7uMu3&vSi>8*@V#wcBso=_a9{Hfem@|nHqlwL#0j!J9NyDDKy6H2WoHI6=(Rq|!K z+*6rHIiW2QY2zh5S+AUA<6?;lPfA2@=STLyn~t3nf2-NY&goy4tb1G`=}l@+Hz05jR)mXGu12V zVKoAt7;b4{DPyT=u~@FEWh?=f1L|P)BXy-ZO`U}#w^j4ea29nNBT7;7(05xHbxqb} zklFi5N*U#te3U*8l_$$xrxI;bVn%x#3cuxYoGB0K9~a^EYpZ5YHlaF zNLx)>8ae&YUSo_w#%SZJ;W2I++tG=cMxN1?xOthBA{~{o&|jOS;T}4^bf>fXKt9O)CL!T9%O-&Gx{#c!k;A|afXClZ*0;@S%+DcE-r3duo0zFs=Cp2Pa!zH_+vEmNwRVee_ z75wJ1WMOp=(ONTBT9;l+2c?^=Uvs%BBYVwiPDbl2mM77dmW--Dy%1~LU+yFKpwxJ5 zT!{P-+v|~{;fn1bGdb|o6J}&Qtvg8%hHuU?in-EG+S@6eBX>9B*Q5}6H`vYuW_lAC zQ8Pv{UD`pNe9G?wxf#LRWq7flbP`_ArV>6V_SFTg9P4&9ST z+%{t&?ME0@jmkz3V+FC07fzdGtmAo!G0><8cShks3@{duG8k?jj-;+N#!|9|kx2YB z2(Fw2m8nK6D0QU|5A=BYoM0T#$LfpWWEmc>!RS(qjmB={fKeTqfkq*Ii$a~zj8vmc z6Gku!`q5C|MPK@x)aDp-jFHS!dD4e7A5)FmMh@~5WSr2m_4-DhK9cJ^a??|vsqfU& zb$`a=9ogE%tmIMRwO)$;L>Slg&PZM?^A=4n z=kRSoE@v>x2*XMb{8%T6`R&Avl;R_1Y&hRXskL7}sXyjAk3Sa4?DV1km8tPoPtm9A zae8IFl|E5V)2+rXbixx#wqx95nUO=RLB7!)f3%|%BITm-HnH;Kncr5-_)=pLJy^_& zZiFYMlDEUiFeZc=)ZvDG+&1V!OfT0tjUp|3hgvG8qe zu1=IXN&S}KoTKqQ$B^3=J{=CvhQXl?;qb-qbSkY%@O(=tK*~3Qq+m46S^AS`bRlOI ztF(#nmp5XVqa%2i{g~Hb#%5-2m+>F5wPtigU#5fZ9_GFPng*JC9Uku%bm;+FtV++K z(FJ3rLS(HWZ|l(Pr_tL_z+cxP>j6mYJ>*j8=gM+6+Cq^pgPQ(;n%93|I8 z3v@3Wc4W-BM=Vi2V2#9hC z={74ABsq4yPOUcs~W*WJ-v2 z?oH1JB8%nuBr%4%aC|4U(`qR7ghzTHwN1zkLaO|c>n=uXs6WBx+2Q>SNaJh$tUeEG zH$~rw^w&kU()7y4M5tCaVxct?Z{Rl8{~){+&V1)Hj}wftNWYc7u7KuCWG)8HG>>sy zgzx*&hq|<~%6LfMXQHuE44D;pKyD+rx{;KPJXlz(aOC6#v-%7UzlzQs!`d{a#!BOa zk8Z2)g%MrhMCZ^N*XK-aLI{^OffRhNpb~cl|#z_k6SC z+wB*3)Y`LW|K9e&@>Ar*eR_NEG|MmVe`Um#+ z>({2wN4q@U~ zycqhT@$;w84rJHO?wZ{zdrfw7c53!-&w_Hkf7bNb$!Fbjj_1sNKI}#O%SNw$e$_bl zuh)OS+4#0nekr?Lm{uq|_B#8!yLona+iCsrkp445=Wr+2d z^(ax~VPdmQR^9TYZ_pRrk=aHu&cuJ-x(7VXH1SDoAm`XlKU>b;JhG#SwOT71rXP|eY&+EJE zJHRIt#G$ih(H{F=_{wXu!B-FHwXs`W;nk}~2tMR;lUrlaCWp{2i=}yRbzS4U{upew zlwJsp3%*!iw0EH=+mq?3${tSj7A-Bkb* zH`Unzbfyv*-C{7BPu-8)7eH`2cqVyAFk9K)RvREL>6-j-rwJ zON)##`YCuX3w?G<`$lW7?efj^%>hjd^sV;(=PB-O4!1;kPPnIdhI^j4&$}Xv!h@O9$~R0@0>*(dJ|D z@Gcrtv41zE=5o4RjmUPRlB%=@g~=htQ`8|u@n5Q|)UPdRmPVF0>Hy0X%QLVRtF?mF z1{zV*+SEGK`m43GHO*22^k9c&x}}fhM>U3s{3Ce=y05Er0=tt-Ye(@UgRttgrJZQI z!|2V?Msed7TDz%!n^hbQhmT_KU=vrKR#w-wd)h71uWHfyXuX5p4(})e59&N#TRU|1 z2t1|`EJG;X%szDVVra&qk+&KCSZIZ)%Oyo%zo&r<Zzk039#y?%}%a40lC=kUK%!tu6=nay{1z=V<2~p5j5Cw>bYnw#M^b-DP!kb2f7x za!zngbZ+J|5qX>EoWb`xXJsVup408@2#)#M+06AZ`y*>zKOm!9T?br0anEq|cX^=x zlWVoBnX8ZMAJ=anoC&TCu76z*U2E96yhsmfyHqIEaCLUoqWnVFKG!4Hf3Abzp^seE z-EBZYgWbK|``y2QrT*pK4a$5S)OZSfmFF4dUFcoGmF(RKQrykg$JY#0_qaFRJBi(k zjlK;&2O6%r=Jf?>3EFNgLeJ3FAc^66m~Pd}>s7%U%j*$*Prxz{Ar@`O_XJ{CyXJ>~ zy&Efif|*{X&)2tc-^$!~H98wjvG<$sMQ_3{*ZIB(pM>C-hGK1R6Rlmr1MC9AdXzY- z6P{Iq94a3pPP&5kbsZ0{8U9-$F}FXfpMw8aLyjP#?1|0o15#Q8J{T*H0%5ubz7(ri zL1hC$TQqQx3vwa2WxCu>Uc~bt=uSgsTcSgPi2TM9`&s29P<)1V4UwL~)x(Ilr{i;F z>DP&|os4M)(j`2VUC7*Rybuvr1;OPtC^sE{BoM2<3%^A+Hd1y0*A?a@fykq(9?BkC zS@7BV`c=)L^@HDCTCz4@`%inIEzzcM&DXYSZ?&q-YqoX}-FF*VKh2(7GP_!L(Hk>a zft}hZZI?D(>#z00PJF|T(`@Y!r8jDGwVs>;2xPS$`fh{EdwpSAtR`Wj#-Ld*gLtQb z#UIDQglbN>Jxt5+`BSXrjOr(i!rm2OIX=KdylQ!+SV z50IdRAXa0P{@`yppn+b{s(f&{L@=n2KkxPMx9dQFF0ONAWc7sh2=dkJ8E(dQd~{ zpvI{$m9rpYPn1lq05wqE1A6)cy8?fLnymwKT&au)zZCb;>@VzK-j=a*X;Y7aNj{`z znlhWzH%eu-gnCuUQG!6-Qo-ADl~~oH27|&UsvSY`bV?6o)Uj$eY-F-Jg7i7+RWQBV zAh{R$L|9V6cHgLlY6(kyOC3f~-V$a>uq0aMTLxGRHPrGo*!y_PXCT6VV;x>tWH95a zmSdpIDVF_~s}>IyqqeoZH3n?CGgpkY5l;eB?q=PHB^_vOVNC+nj>Xn4w)VgZXIb}K z2Z4FptrcwLLCDM6I@k6elw#v4;wr14#;NQKmUdNIhu>J?? zJ_|H_qjdrpdkt%4dfL?5%=*%D-;zY%f~*fMMeIHFWW4h&-7IanPqH*&W+GVQik8Ye z)wKkIioQ|LVLy+n6Vx57_GGoE+D{z|655Tq4pcQIn0seZ{Z$Vr=sB?EgREB}Yy2Ht zz6lPs^HxT+vhz`wGPU{c41PMFeUeS;LUq0RD^Dl6Myio&Z(3WdP9!arJ(7p&K6NA9 zw3OYH&%oiQvEF$~0-U8Qjo2kfgi;rHzZ<#D)!M9o8FdTx{|9!cE-JUdr&}Q>N8qLJ zlzsGQ2w3xI(Af@3GxTL^MVA{<+M*ngccCp8f{Psnu{(v|wFCTp8BueLT$N}$N)9LX zUX2#Gjpoeao+Vj9-X7znmPJPk&3&9$XgT=TW{|r>Xo)m5_ib`kqw80awhnu}7(b~# z2w;8ChbAVrcbB;J1fE58qU22QpamuZ)Q|Y9Dv@L;zD`%-$k%!Z_(wQ+P+Rb#I5SSR z7`gZm4?(XMfT@hqWA)~sTV3%nYU?3buMqr=31~Ql{jveNq*ugy>HzARpyy%XbgdgG zY*X;pHPl^(9XrM8oO@`%y{6v3g(V9yN}~5)qa$|_TVCKC#0s9S_g(cc?=Q}9LpG51be za-Lu&d#F=M>*|ZaYixqG9_Sm52f5ML+t-$yMeMY;^-cHPLdQ=)(_bOyI43v)wNhGn z?E@`IE3U<8jnVbxwYq5e)tnf6sRhsrKRrv6>4~gg*Ggf}Gqo350;kGmfOI3ot<%;*cQD@V7*2_dpry;cX3+Sj}bF(q&lMso2m}tiTj)m{wT}(CkDbM=5=P`AqR0 z;`t({4f31f$fwbm)x@(iP4cPNpoQPSb9c5+4Yn$;KI`f{-IhhT3 zyn`q;TRVp5F^6^At{uU%m_)g4S}OSmC_i0miDxhuuOt<(-N7nX*K2}JZh@OWfL~f6 zCF4P6mLMgGaL6_|e44%k2{??roX|bQu#54R9J)&{3+54rgf`_q2BdNw_}40AxD!ZB zTcd-~lJw#D6wB}jmw;%k0#On;aYtlaV5CVz-s|wlHi1Fq8+LYssz^`4YC3^hcH!O( z|F5}J4Ggj|zF;{%BcyuLXPoKm19JF2`8B~Vr=x+EaGvr3p5#~3$Do6Mqlt1r`~2kh zz7%iTc=`>+o=mfgq|XuY4<$vh+H%6EvSob0ugP@c22{xf~FRM00?@v>QsrA&>YEz=z`g~fF8i7Y6Y)vy#BC#8hY8|wFUvz$J zXcH)D6U(1wcb%fojOZOHgUF6Ayeo9UdCNKqas&$)t0 zOIJ!W!b+4(V^=W?D|%9KC_d$1zB4KDnEqF1hRWdqJtgI?a*c9<>VDSYC*@mZh1ts# ze5qf^yMdRulYZ>M)7pfGl}u|VO|NS^JD&&W=?dj5?!WQ*6+4}*e8YVi>(+_g+Yao= zHfLog;KhzmK2`#h2FhS|forg%8?St-EMfO{0N!hT*1ZCy`%$Yi-m2LBj3#e{5)5y- z=cRODBg1vU(A0A~^x3d#IfYO6``iFH{&zMd#=L?m;7|~_s`V#B$11ofdan8fj zTm+TbP?*fy5Lz0{&U6cWfC_w%P|DGlV8u^)$!@!yK1bmpv{rIuLv|wx4mpH!@3Yt4 zkkRDgEr|X3Ey&Jnd8#}GnHtZTkytSIF7l7^CgOsz@-VqQ>F*<5V~N^7Vo$a;ayL}| zf_Q8iNc~Nsw`=UzZy;*BkE9jQ&OxZImG`rEpMgK}6H@sdGMA6keQoZ{_QezVO#YJg zcd|P>Np6G0PLmhNz2su-^R@!_e@_mS1Nan5abPn~*)>SR3(1vUN^gn!?(mjM)VW9c zmEFm7ko}qLXJ+A}jFdiL=V3ZNiH&{KNcKlUq)O7KARpC8YXssO!yZMVQ~)CE0%cbu zukp%wVicgInn?}V56MKIEdX8KX>1_+?Eo6l!}tb-V+p%Vqm3`neqmhw(12k?kVzor zb@49*_7TOCfhNslhw8lU)2kW9jHmb+Dd^mB>`SF_tws;`CmubH=3S<*N9&GaKWz=Z z$qGD{zj;4|9bWVN6)F`E{{ zM|vz6{#;gN6*2zD#^;};FC&H1uRZq(^e&6ky`N_ z4=1&kdQmn2-paW-t@?K(jR?fxWy!c2w#iORuQ2n-SXBf4PYV@H4xW zVkc`mdxQ6wb2}K3%Xq~8(k^zuZyK-JIouAF6L=95sC$U#bmJwnlSS!#u)#CNxA+tt zDYui={ezSe(tGs9A|2qg+iv4G<1_Z0!;Ch@Y$#>0dvxCT3woRJFwQ}5pLuFxK4sY} zz`yvK-5eilzsa~pG?D>o5&|=CV51rCZW{Q^#D!0|`enWlJ}>9&nBz7hSZAvj=zCzsv?z&IRub zmM!vK&I6u?s?cG<@^QQunG-6h5+|Kyht!(=%vf+y2j^M3$={+^%kXAM4)oY7b}}DG z?ZLi2NB1@*dV344LaC2Dk~prIoQei4A^Y(hFMmvQ*9m=^!~W|LdYeyVSB&=Zp>$IE z4zFqv>37Ik0k`}C$1Y<$`?&e{kx>T_0nJo}f+(5*Y+r6J~yd@LHbJ96EF(-9ruj2QOYgN%x1lo*N^TGOat z__NdRkCr$MuJ=O!NBG7cS+j3ye6uB*hJe=Gfc;>1t%uh3Zo&`!Jy; zsGTKkJ83sb+i&8Jr|I_#w0s_E>FD~GT8>s68?aN$#SRqly;#e}0@N_=MSbQWOn;$C zSdb{9ToLakU~ej7F-n4g);FVVjX4QqZkvP0+qe|Hf?kaI4AyUHg_;2xs!;nq(jB0r zxmp?U$ROyp&>N6;j$YrQ7uod6U^ZScGsWnUgVg^j&KByzkVOYS$U(AyV&>`Zv_}Lnl+aL&^P=xI{el2la1j z=QNGE5NmOZXgYwgS{SoI>IX#rZ<%R7RySXBYvmdJ6G{f?+3>_^uIt#%2v7ixJ{#=i zSQ&jZb6{oEA~N@f$ErXx7S8&Bp2xz2HQ}=kSnbcSiLtsxZ-m8c04I(mZ>h<#+p&Q2 zKpzfZ^HQ;_+lj|cgH7Dl&)_B8#UD72-*8e_L9B%nK@3Ujx07TDO=#y;_(i)oS8#-#q^)T51Jqy4 zxrJY;HIb4XjiE^OY;^P?${t30?*e(BO{tYg{bD||>E#Ku!5-v4nO4_8Wd+uKFm2A{ zJ{m1Ck+Uz8xzD1tnVb+9PQ3Y(c{<`t>WecHca2}@)dJ{l=ly3=PC{`$J!r`u{#?AZ zMaCI=x7_#>-E$ht@h^7k30mo@v6u8W_z&mFNyBEiptc_yoGx6rld%1lu{0jEpBIlZ55J&@?^@`^rkp9zu}eBF(2a)Of;d(ozwnW4kR9cFkmoUn(v*+VaHGMeM&I{e27QdzgdrsdsF{k!-G zLaS@EyB`Xo?Nf|fob5Wy++3rCgS3~7?IlkVHnb_)Je(PL%dGuJ4N<=@zSA{wOJNBT zh~w*FY2)ye<`d`l!h89MUsw*4zQyu^IizeO;vbG*a{{z+0i}M& znuW?Q$oYWxZ0R}YjS7eXo??4bq<^uM3RplCClwvU1GhQTn2Du)z!{_WWG}h7*wS*? z&=y1yenb@hoGVnZjcLRU&)J#$o9j#Bg$49y7FPTK_F0@RwNv*17IQ6UnEu5srr>oY z({8SGhCcrw{VeUpx^Bd_e#>V%ecuf-`ZMJx;}1@O)jKE{0kZ{cs=&VvB|j`xtpsLz@4)@h#eSpy$)5r)4aasJW`hU}FpFvETD zVN}+`AO9oA^o4SmO)F~=LQWuSByoSq?7E<$f;bzJ4NvI_IP-PlIxEkCVAPTLIDypC zS+$xoI zS*2un?|Z%%61Vmwbv;x@5NXt)ZVSAtR>;EuB&`Iv0+np1J;~3v)S{^~(H2SoQ z(XD2j6X@|;IASgHafCj8!zg-^FKAAN*P5cm+LHD;^@idfCK64xgx(0=#=?!g;k+++ z7V*JUr$a~Vv^xd7OT02bvSCS;x^WA zHT~H_?^dubd*Ip&@W(~^x03f=tZgzh_i+72y_Kx$3Z7DFZ#{K>hRzv$^5c|UPH*N= zW)af!6;awmQ_AMyG0$QIy_uO$$=kxLc4sz6^E{K3ai*MhCpw(KoDO2NeVL^pl>dl{|&4r$MgTiAqCSeM2v)=DPko@ji9 zHTedsy#R~)CHDCXtoUrK@nmAOo_Gjfu;ct8C~+&JFHiMBfyG(o>Ub$)ucsoOOH)o6 zmc?gj#;#CR&f|vi7Hd9L#P@gWCCTZBeaFuL+4fUR(a{Bfa z``ZSm=krL*=8UCFFGp%V`$)m~I(h8>+~Nd)47Juoj`1Kf)w!DD4aBhjA8z_eQ}Lpz zQ(^>|bsSj3Wc-eroWr(I<|B~o4;fQmB9Jgz58>2f2l~~M(hZGrTv7Ba(g=o9Lq<>& znu(-@^41D!G59^bjC#}=#-}CTSugyjB*r4pqOK-R{xM~yagAk`IxrWx?171~R^}A) z3%vjo$)T6Q-wR|!5$vCpXJ#vLFN-Hv7m7{kMHxOX@f00ILtf5ZKVmNO+0hDun#5@b zhwf!2vY3fuU{0w#xk#5txADp2Ig+t?^eUW*uyI!N1?Wpf+Im4bEB$E78IU^6k?{Ny z>2-7Z+Q*E+2GjGwtWae})QZt1b7HeI=*$H22f!6w$Q=g%kaJgUU442+>f_%2(R-hUd&N=UP4ZS zzzKr!oT?%5-IW;f@cBJo5@VGUKewCuzJinkz;&p;3X@tc*8HZkc`!4lU2GYFTf@LoYK zE>{P`tp(Ngas%$Yp;1$ANH5Bo*1A6JG{EAPlcTZHiJ%EB$!iE2JDjq;!5ls|pFX5+ zH?9F-we#6!7QX`$CwL};3ODA&_B8t5Q0_?nu z2X6&0-YOsBz8aKy5BT#`(BHYdZUDQEFJu|s@Pz>)WWGoO}IsrP`LoeYq8T@L0{ibZjQdI$2WF$bqx@<|U+6n>%g z0!-g6zXh$*7Nq4kI{I2cJFyAUOyWPxHf^-J)cCl}G* ze0qP+q@2N+o>4l5-(6i|Y(H_&r^h++4eH!wq~|!XlgxZ>m45+89|vwfj5V4k&jDfI zz^}%>WnSlSU&4&9A$=t)_9JUHj@9VJd8&`W^M|l5Em*rQta)AdOy+F84yXFzmpS-l zjs-O8IcSw^ddyaQI+5@{6aE>m>|dnh7~YleDTMw06T7^g_XE`2#M36M_6qZ9E#(&=byJbVy<|PI4Ku{PZz>- zD7cp0C<&6BjXllfOu7dvEYkAPRU&fIczQ{slx14zJET14Nsh);W-$2>+ zPA)Aai4|kp1ughN0)%@#$_x=AUz)4#g#)16yfl1=@ZEPwVN~3NVJnQ2QKoVJ4pr zSd(VFCsXI_<*jivaQb{b+o!>~RP*r>*|-yM7OzA=TG zpHWWyW@!R`hd2fJId-}W?<280{pj&1Z0(1%IDj_W;SU>B~22|PDCRC}}i#&{F$d2c{YFZxphKcKN`i5q}*d_a%7L8&X4$0&N-gAq)} zKbl29#P10DV>A2lJe+<`XI@88ZUp`R0-N~-zC{Ph_a&ttlsZv<0Qc6=8BMufq>F11 zW!q7*H@V`M5z|0WM^dXjElgqVzcFWcDAYz{X}^N*$6Ql*o<+&Qtk`sXw{i5K52F?R z?126L1bU-Qyk$JS8_bNZgD<`}Yt5yOz=>u+c^d086Mh&(PsY&84y?^`R{JY@K9x%# zPMfIRpZ+d}PdAY}mmL^^Fo`q5v+2*L%+gSv#4kDK@)0=D_h3jXD6tf75WiYU=6M3# zHq@NKv5aafB`1(7TAl{A1yGns%9r$OA?myD2%3?-iu1C*=zAbq$>85Hj}=@Awe1wi!%qv+*OJcYK@zI&zfq>*(o8 zQ$91uJAw?Yg2FFI$shE85q;T;hjR!oMtCjzkh^3?yWOlOWby}ky$XM5gNd&kptn0n znF!StlooG`7||xi@e3=rhTeZc?ib`QBSriY>;Tfegf>s}w2qnB%J(rwAP}M7p}UUz zIk2K#TtfZ?=C+a1E@#JOCtj2o*IGVHn3e6c_A~1+o%xt``t&x0q%(d!>*aRoIG zQhpU{B@n+Kskeyv`HiO|wDhw%tEnb-B=pi;+7N5DhnhmyEP$@~jq4oVzu|2OeMv^{ zhQLiD;7lR0Bl-Re>FEQ9^nvqRB4>iHC&Ph}Jh$U&LEZplqbdGqeWb5BS3}Z!k=_+< z>0#~*_NHDNyyON*r|`&|8P(7l@%XY;dGABI_=QspCF+u15`9vOC-DoVl6d06WA93t zXwcFK(_@b!J(g#2h2VjQagQV>XiP7fvkRF>X@SAEhK|sO;_3;%%|uFC6CH?M8 z7uA%jhB*sjA1#SKwWMroYSg1tPg-rv+zet~I*|Se>7qw9xpyL6v`~*W>M^oJ?oG%~ zB&rCZAAOmx^2|zAT8yMd8zQ$l)M`pf1x8wtyl{FNLWC4UD^-ostVjqY8&a|^(MbUH zMD$gTdpLLT%P|`*RVAlD52R#c=!8;2Atj33U}jp}6~m>AHp5NKJBX-H*Gr?R6PYO+ z`|3HwE-}27C1QI@#1l+B^FY6$|EIqt=6TJp2d?VHh;%IM$OmxtFN5exg0`Pg#FLBb zCb5!;gf!x&eCo)=jUvh_32nDtmDsQr92QRx6M3#dG^CIh0#~$T7D5lB}nC3?$eRfBV23IDtpm857A^7 zi19Pg3g^%i=kOse;)C3$&JJ|lV>HG&^3Iru`FXS49ngVW_$a3-`xKpc1|62l_YH7^ z^JuqhVy~NMz6|^n54)=Z(H6c?1yJlLyrAMzS+L(o&Qc`elf~mt4KU-bM6jVwTy4xf z#nzz04e-&L;a7>183GAuPvka`^Q3LTK?EY&30$NvDMR`0fhQ=?wOM$40g8hPxfgo52~c^1YVUcM%J&AZH0rN2v8T<@e*q z?xfTjX#T<50jTaUz1ss&KQCQlFZLuJa5_<8K9S-zGhWOA-8_ole2;do;yYgje|CXp zUm{KXmi{F<_o*rNm?ix2Y~sqdT+cx~Gq`Sofn`%Jjk@QkeT+{g=w$)d1D>+}XJ5J; ze!hcU?WcJ9PoyGtid_H#Z#h@@K=Sh2_ouum{PlnwJbM-YKZy9T8h<%Kp`2*b4yyWs za(3!EsS!z(T7uX!N)986eM>*@GCu+*7f5cNiSm}BO@s3a{zSXAh*~QW>sFw2C@F46 zQqok5H_A*`zHSRKsOU%t1;&2x|eZqSdYo5ZaJtnddvwxdWTm>@}d;a2A z|95CZoI830N-gR?VRl}^B^f5A8}LUivnPHP{lZ*{tE@&oYbSbg9~?mJLZtI?k^htw zv1*U0aS6(A&E1R~qN4Mx-BJ2+3*K2r`x)Q{d93b5A|yfk29*ASzy5%G#BZBV(8GV= z+||g#ddeJyOV_}ayWqC(K`@d{JaY$}x`BML&v1ZRN8!j_aAq=`|07cKH8QfEw-s>r zDq^b7%=FdN67^?u%`h>NiNsD~f1(F6`Z2OIhx}lKttrMxi zL{Xz5yKMsTsYtvP$`!z09&s3@*f9&^&CiU&G^2=JvXbbaYD8@zpr;z=KQu~(uy-aR zu1vI=omfj@S55;t6}y0b?AW~|{Vw+xAgvG4jIYsindrSV-ipw6k3dufrDxQ7L3}47 zx@-_T9t|s_@JXp#ST}5B-MK>QXy~jP&JBdzTfUmU~|7$erfiMU1h-g8acB>u+1mu3Vq5|8aO(|&cwAL+-{9S>+UrTSv)I-5R^h=_VoT418R zpfip#op>LEwHryQh)OzBrYqh`XVM4oEq+5UensDh=%p84N@J+^fqFYLU&MBOC@VZX z;pvE9xVOWicEUsGL*2>DK~pTMu&a~l^Ef=qv3Q3Qco!r2j*)cdX$a2~C?R67+05n` z>JBwWIgd9n6Z6RXk{I+W)@d2D_8lcZqee0_`#p2~&LEiBVwU>L=3{$7ykBSb4}J#cM)Fk_muvY(%Yf8iS=B=%KgOmDk!g~ z1rd#Gh3aPBH^C8m@xiyjC5Pb*5pSHQ<__BZ1I{~6sXb;~@DJX?e(H%R;WTODZ_ON{ z%z0{@;}Y)|;m@1!;(kzu8%RJVPp9GV8>9*Ty##NHGgp7Wx4-j!0?Zg;v4`T}jGzR% z^B(*3C8T2J-g^*uje<@oL3%Lz@#1`(*mIXmjHet(@q2hQVwbxFTBQV7b4~P0MZU{J zLHyO1n&_w)E^)Rlj87apcVfr83VN{|daDMdBYCb5Zj{J(1Z9&*iN!ODr*11WpFpkS zpcO|C648-$DI?CSwL*8cKnpg)Pig>S-Icc(G@&@FDsZeuct#(COZBE)XUbP0trPE} zW=l$o(_3B8qaC3s{Hjm*G$ExUE!LywHTZ4?{idY1LGy}zs}4~5i0@ALWA8&r^sX7b zZ%D1y^r1B+TbezJF|~6i=(QoW0j)}1y(FV)OYPdU)_{44XVkIGLrw6u zD6X1l_Gt2}F!y4XA{ljQ&hLpcmNGLh{ysw(^DO2}l&(ZdFzGQ+Ds9eoC?$lJ4`78- zk*y|DGx=ZSc8B!0F%nz(ol%B$kHF`9YZSvTy@rm>pi~M{B+fDjU7yRjg?@~{h4kHl zbL!B$QjEGfe{Le#FxHarTs$)*_9_}PUmsB;iTNnUdsWKolo5X; zB#LJX92@~|DVf|G&Rj$@{`W|W!r~>;=V)fakM|19PZ&9&P!egv4n}adLPbahB%oHD zvK~&BD2!ONAtXfMsS4C;Q7({_GOUY0O9h1hzC&4qVrCDlPzX2Wp)@U(p~q#Q7fL&& zC}}aD#Xd|Vy^A2dJS|jap8c4Y1fF7Or3}4{Fr}d}vrvfJYbk8GkQDLv zm7;iyVw6IvYE!2cR}xfWn7bOxV>o$@C@ti;3T-6v`~fps#pGd;*TQ^i1ZUS}#+$G* zVlSuxsiH?sp%V^uL9G_+-k7HZKB2S~M~V08hxkk64UvbM+{NDn@4$K|F^-Cq5%T>G zPfj8=4oPhfm3GKWb=rud%{VC3re;IR33=#1nHaN9EWNHpPm9y{n&i|Zy%wJY+Nwi| zYS1Xnw~!n$E1|4#EuP{t}$RF*Q7&0M=1Ri;83kT_@0MamrSl zSQ6S$ta%YyRGfhhU}XbMohVLmhEq$l6Twpms~*7l&G)DynI&+@NfoD#4b$rqv|Z@g zAh_BKHF4@mL-vA@Batqs+n^xUzc@VzqE#<@)-F6N2ijfy#eNswQ!dmL+EvVRRQcwc z&dFc}t`#RpMLPz3Y~u>7ThRKIEmQ`z;6_N ztw8Al`k706f^&V8)2RK9mO&Yf-U(~sq|Y)XLb!@^veiZ}{Kyr)qwoqP##qFg!F-Fn z5^ya+h)Gqfg2p+oNZNHl^F7Akr6utfn1nn9LsRGik?MhxLhn5E!oqtx_Dr0w3W8!V z?TS4FAG09-Zjj813Rx9%;$uDpl`>{;bb9UM^AsJYQu94VF3wa-JcpXRBTnXu9f|<* z!c5vii;6u}A?xKRBRD94dnxk882!yv4}n7?$qyy9Dpw`AMC_i#nEI#;yi<}|q90L| zDowgL&me4OS>`Pgxr(91(nzxe#bUH2R!nFip;bhyVn&38ey4Rru7#0`bLwKeCCT$J z{s>BiQ@R}Y5?sPAL?c->$PrqtB)uvRJqtYJK_s+fHh zBP#)Iv1=Sk8KI@3coV;2tAiv6jT~p{oQkwnoAHa2(L&F}A=53`9c4 zqD&)7C(-UZ?UG2JVxb^B0P(v9u|h(d32JflMCdg!f+%LA7PO)$Qx7dyli3n2)TdT^ zJPKivMf?=UyBI@DMq1GvtEew@cs!r-=E}!1;}ItH`uG9$%-&WfCyrSZTp;`y!6jvB zMWhS;6-!;=4OJvna7R5#)g(pe#2Awcghi;pN(hZ1v`{ej7&zuV>PMJ-DOR&2d?T5w zZRM$i$)#nW5n`4RR#Wh~;QA2qO3@z|HeYxPAcIKKVa=dsEL6r9AF6>rGs0u9=W{hnRCzhItU>#4kevXia!t@$f+i6icvb!YdSG7rutj{dHOU zIPyirEo3Lk)OG~JJBtI``G|L5G%D&1g?}d6j6RB54U`-v#Fc(bJlg6B;OrJTW3MD-}ttM|+~> znv6lLyqM(>^2@+`Vt&ezFMg?FWi~9#Oeke5nPZEhj96VU3&CbhVW&%Rm4T9Ivm(6= z<6UsIpi~+fC7~efco=kq9V-o|mRtcF9f8|r`dyD<-w|u`LMc^#Y@V8ZV*PTdDAycY?;w6pWQV>7s=4I5p(0Kw zE7;9^?gqK9u(v^QuH*mhRW5xKabZ69TOAH~T z?>2QkM86r>=Nw9izvw5T&@5tPQS&)v9uqfbnE28Y%G}|6^dtHvC_1=5q1+3`Dk2b( zFY4ZfYBptF(%UEITQ1*Oq&%hN3?k)wyRnP8x<_oCNvVgV?qRh`&gA%JWs~idA?_-85o!fqnf)x!WchCQvMK zPClFW9JBmI^6rwFZjSFUt=*)RG-`=_F{VtO#i(ELoz3@S`kh6YboL;w(snlV9@6@A zo}Tmk*37#P)oVPxhR!QKubEBJ?tShqN{ci2PZ;R~#wmWQ_Lg3Y-`|P)S!PT3Nqt1B zX#E~JqQzHco|wbuW_`gC**rZUrHB?@P*%_pD8p^q(9D&;N8FfBYa-o2>$3SbJ>U6! z!hbD>ga}Wukh+EB3eFZQ{EEAf1i_)Xv>^OM;axs6IqIz`34)ge59ZRA;7|`Oi!q2E zzMw6^?V`5eQNcfU>WdSe65hV>j)j#HElYTTqMqfueNyufh8NCny> z=1@qQczezK2>exyIh*yflb!`P=dj*6Tw2VQM^BH*oX`&zE*BXylVn+i>N5=sjju#Ha)={BHF{ER$za%c9ORcwOw4JtJSN*DYv0FnReYb#vgE zY}yoc1=8?Rl`UPNxwxr<-5+~6ayIk6Wgu)P0B7gBfCyzVgGRC4~I#$~=! z*e^T}&X>mbX^`qPQq#DOQ{o6{Un;+b5x<2IzxMf)`=69LZsLvttNx1`sb<*}p3ayx z&YBd(&SNTVq*Cf6*x?b{Na0(Y^1Muafn1&hRony3bLbF(ONuj~7tDNd3M!SJp821i zr%>`AdUb&^X`~Ab{+ijZ6muMBKq2>;$ma>OJ%PI)rnW#C#qVXrX=rgC`n=go(e^vE z{xUhon7N&KGp1ZB?Ct~j3|FjMiXn>3#PHuKN$BxXyD@v3kW)cHAgg;B`6X&zg33u|OpN0q>m{V}4lSoqBZYinbHpg_ zn%YU|<%jfFpjr>$sZ2998*O*fEP0KZB8GfQsk@}yGr8fOIbXNvPpU~# z@hM!EOBunN`?$OE_9p+v*@$1h(a!IK;b1)n@`GJdh~8rMrid1X8r#om+vI;6|FvD zmV^w6eqCkVgv4b-QS>;Aw+B$VXQm3-&nH*V6{qUo{y&}F+pnEP83yp~?jCIk^Z=!$ z)~56bJt!30v=PNiyfg7i6C?o)35Wp?@!o&Hzrs6Xxbn_RgF?YtT4^PCj<8>`9UyMDXnMK4n!9B-@@!!G0@qz9x01;%o4SO9w86)Mm#yDPCnJ zm=Y5trg0^!gCUoteQe{kAV-{u9^Oo^#Q5SatdOY2D&K_H5VhQu_pM-tdTG04(0&NYNMsFvC#gsq9yULxci~BCr-u=A4)BKI+!dgEiKu9yEAv)_y(OR6E6fAtvblb#Qq1LzgAkqKz@$XS ztHx-fX>rD$_-ReX((RGPn68VY@wX|TVzO1yZ%m1rjVaOB{kgl!u@NFXqhFjZUdKsT zuUH<9G~;E(dNGsP_i60TjeM)Lp78-oR zqnwYni|HG^{Kf3B=6c4Oy7Si}bt(7O({h)uMWzwC`_pI4|G77fb#dXdc>>p?w^58I zPQ%ATo+mUee5Xvrb0s~3qo*PHA*{W~(&@5rph1DjD+;H(tfmd{OjuZ}dH1naXtUIE`@u47Jc>E&o})hknio77jm zSeQ9$er`xjj6P107qo(mH!;iC#g?%uED)w` z`aF@gM`B&ta{V}~b&*~lY3m8N$W3_;^kB2@PTKky+s?Z0$Qc$7YldIM99oap_SSKI zm{k1aj_AP|Vq!g2wfGLaA088f=!x@MG;hrLw$#B4V%5rCZi|=NlG^K&PjW|krqtEJ z7u)ijd#?2B(F9{`OWD2oq*p$##KY~3Cgof5!kpS4;M#UXUhg&~f6wUQgip14@j&{p zJGoX4ics*eJi0vy+Sj*TIrB?5aEn&qAnO6p4RippU|x5RHhKHqV?ANt@cg_sU%xl? zcgG`tJ6_$&t5)q_I1sH?Dz`+>z2n--X!7RPVE0Adx`tofI+)LIj+*un?2pz5qQPn| zT(K{09EuDMnr3@PA5IPX4<1SG?r3pk5Q0@vYbITx(EDA}ft-1cuGM|EZ$d47{LYXrdh7a;Ct?qUv1T;v9Zz{* zp7Zv!=6mI?405xU0!>L92@j_2?!0iVdS^trt}W3eXH#0=m)6Y@qaRQ0h+l`VnsaBg znN8-4J79gntYs(h&zo}Gm`_#?=WiAo{qCZj0$6iL^N`&!Tg$1luI%KBXn@~pE$G5b zZx}7$>aBUKjU?M)rG%ZcOTjw0)T&rDUIM0B8A-O*ilb7Nnq|@lHeYPR0<2FtdsIur z??6*ah9zPtA-VM_T^*0d>sX1Fg3;`O;Gr4`!Aoo|>r4{61snKWnd8mWTN2*{ZG193 z6wgb8bxP~Gi-+gJs>|W2#eg?+{(p?G-c3=V=-uwZ_R1g_!< zX%ks07c;^_7gCOiz7%XBqQ#b~3)M}IWUr*$|0sgC#MWmcgRwe4FvZpJ+COqUlYYDt`6JPeGw@AhSNX=! zZa14fZ=!nFg?B%bG92N%k@TOyj)he@5-E(xt4ZVX^v_kO=j`=xGHw6Ok;eMyz29?D zaxDDEk!U!TV`cF?*d!%*CAmk#pkV!8N&d^pcTY~_*k4I|DU1<5=}69B9{P`@94qwq zyzxc$<1Oee~XSoEp8?&tvHw?(1lBUrw%Hr6J+!tuypGdtY(0Rwwk_)%!kzXYp!2je+-4 z{$`G(jUUhTc zxH0+u81vRT%$T#0#OL9ou~=pVJ_+Zfhvt&#!|WGXXhVEqy$FwOE{jv7t!Ln%tgKzm zo0YKw<=k8_AFV2N_2Q#pXT)B$AXiiRamvIbtd4RPhz)XXRl-Vx^+3$NU#X}?6E{NW zqCawC12LpX#~O$TLYlNFMVptBx|)<2Pc$Ja6scH$U?c6;(ZckId)Z!?SPY=F@c`TH zoXzyxOmb)PidZ6IQ48Bl-mZYIZ(^(FqE!p(D-$huMRrQnLz@puwztc`hKd;Y9wnuJ*6wtR{{p#Sa^;HT&=%O)D(x5PR85^o2? zL(}{t?RN7hCn;)JHBx-v%Jjz$S20JU1FP`%IyL4JXWX8;dc#Z7Eau@oH{^&d5xYQv zqLq4HlDxH@3afME#d+ECFU9Ckdi}0l8|2Em@a-^yxP&AOEM^iJK?TJJz8lb%%j7{H zq6glc%sokqUsk1cNL@4m-#`@Wf?lAQ%}F75>R52B~3XLdML4?fOV?dZa*d5N}-Vq?@uzkQ5; z@%*aH3MkF2(Gr{{=ElRVjaG9^J@d@V{2}F7gxQ&44$y5zn4`Eg^GmKsTY5!ixX9m} zYkz!Cg|z)S=9IMk&1N3{g0+w*hIi)3hS~Ep6`L|WBx-ZI`_S5~J&^2yeM;p3Ss-jV zolEj&v*60v@F;A692U}%#at5GW?yLS8+?huxtYA#@yRN(Z)&iEOH!9Ec9U(zMX|d0 zAE=h4<_~Z}Rvtc$)wWWBonm((RqNMX?Zx-t(6D|aw5=w;z>ip^xE3w2E1CKzUZMLo zFm1dLf5ory67@p-hIBof)oQCm&?_$r=|Z3wIe4|Jx6ZBD;}iKwzL1ZEN#)yt;9Ccf z>&1~rQ?=U3!PDBiVy%o$TpsUDJ3a98`}u@Ey7R*-u`_k84a2fLI1Hd>{XOIWcR&ty zP^eS>5K5H?AwbN~?x~Sd4n@EpMW4>Spbe$a5bO#O`Q8%j4A0O2`@qWTLo(2+9OzE2 zmFD(QS`Q{Aa2S0s-^qMh@uNYx>#(Be7pQ2L))q`y{g9emtJunl&Go_B-MgcfJm~Xu zG`Oaoy_G%`skyqh$31x~IqoB5*8BX<=xK5L{2e+T`K}X^Bia2ay?ZB9AIc&RHM$;m z0rnRk=*h{XJv+Htb*H4Y>={FHw9?(kK`i6xdS>mPr%jfmwzOtsbZm5V8H?C$2-j<} z(pXK!eO)bW3})mRjYhD!VjQ@0#5 zFOK;oYSg0HV$KvKnNE1?p18Z|yM_#R$y(F+Bp4%ELJWBTSq-l_E z=QSy z%cq=0LABO_@bu)G2gO#tzF|6k0rS95z^{vM)o+c;kmqmcl!B}=9P024yp1-c?T_ba z>{{g2c({5w7}!cM6kD#ib$KRu7-C*Bjy#_-`Fta7O6pt!PweS)*pp4^q&hMd0H%c`tzSEVLNy{VSACa>2g<&Nk_89GR*SJWEazdb)TTDSd~ zJU63>#AL+uIU0eq8j+KG*|Bd_8+ncRCNrX#vE$tshu3;+ZS$bmt~$+u`8tg)E75sj zK2!!CG{-up%o#nNmr|>J(KE8uLuMk^TGiAvK6G(j>S(7&a}>&iNX=>2;EXi+>Ad9l zl!iHb9i-^1oV?c70$nUgOD9NH4o%ARfo&jD6x=*Irf$`4dn{Y=vf5g#mPvhQwDzc1 z(zSzZTaj|LldFZJvzWZ+_EoZoi-&ykSi_0DWBb$IXhZpYZqq)sPMpNPt`szrvG|4Z|+nN@&JpWRo*1opCnp)o8VMY9jC;B3(FKx4N%Upa@ z&(+n694V5mL9!ZXvog$swU6>Asn(fjluK@EXyo<8Ig>NmE7{uWR%`tut*zsmPd)qJ z&xtOQv^kQQyywrgG_QyByeB5b|I*epKV2qil2-}+^RBmUZ!773sa*~8$N7|!UcEMo z1}4(gC%-v!bI(8dv!DND$jM!hm7fI*Ui#hkKOgwv!`~kn`FQQoN$RVQcm3j-$AA0e z^N&6C!ecKy_sr8zJp1G?AAjbt{fid<==Xp6%iM=QeeT!4dFsVfb+`U_>*xe~ChrG% zKlUKehmz^CTjJwp}CXgb<7_twl&|T9lOGgWY2bBIaWDA z&KjprPUVho91hvPv^{6zZS};$*otuKRIO5{XclNEv`1k(p-E^j9HEn=GpG}#yGnPC?k?T;y61J> zb)V~m>a^mWnuBg_c) zS{to3(H_<`sh_Lk)N|BF)P1TjRfK9rS; zn37J-OqEULO#PeuGx=k3-{js&ugM1!eiIMrm+8;xY4kw)_wk`Iud#(=!!#aELkpl) zP+h1`DHaqRN;+i)Wr}P-*+l6i=aQF@@nlPK@#u=t%+YP5siW^koktIi=#F59j}Ao- z6%Muz#1AO@U-iG~f8F2Jj~MVDxHnKb@NHn>(1G5Kg2GaV8{i42`eW&^= z`bzqi_LcM|_O9#=>rDXX%-)gS>%G*T(w^HrAA4$hZuGqDVf1|J$?D1Pxz&@@+uhsP z`@Q!@FR9m}ueW!+ccS-hFSD1}7uR_d3a8^}D@U&m-tT?T`S2g?UqSnLyIu#Pd$8}}kPc

=3+T_*bCWn*%vv_xbJyf{&j(lh%Y)R-YnTCMaw2-S#p}ZRgpR4sNAM9P`9XV zs2wy+b-8*%6|Q=rtenZ8kcUlZYgCgL^;58tfg-5{ap?}aZxQz}~ z2d1ac8$u8b9w0BG7$_zBx}gj$L9aI~Fg$E%X-Ggfp_r&ZbQ^k}VS*vdNZ0tMvBo&t zq{!r)Nv(;>#LpCM8fsc=df9Bd`Frye^9AOQ&HXLDTXb7ovIwx)V3BSiGjB7WXYtzN zh{a)xDvKgZ2?lF@%6iB;!N$xc+NRQmVY37K3u|ZVWP8DOp4|sKjUC>eU|(y0+#%6n z(q3wB?tpbDwa>I)Yi|jTH2Y5bYI|>oB@Wvh0v&4{eVo=gy>*)H{MdP`Gu(OH$;i3E z*~#US3*ANS;^Mm9b=@$c~G@a1?Zejec};R(T<5J_kxN z6>myNBfKQ^6Vi!3L>1`&D*_u|j9-R##m~mC1f^35;e<~7OT0T_1Gw5l;1DpxF@l^B zPRt>mA^t~vMeGHshA1aKBnA^riIaqKLL;%9SnV(OJ>$2>Ux0h-$Minrk>?uX7;W>( z9B-mUKG*rDLP-wusca9%T(FwG9S<3A98Vh;jGvl(%ec+LaW-%ca*lDa{O{BLqP3D2 zl78_8ag}(L)Kl?Oc}HEXy`Ur0??$JXtg$3wtsI^^!`-92B7A-D7D1k~-i7N$^~DA( zF_*5`Ld-s39sXx#&krA<`U;@3GolSj(_c2>1FP**!6}}oWp)Q zq-_{>4ps--Vl#%Fu+6jEZ(r+R?zGo=m&+#C826_hu3mq=_xq;f^zem*r$pbt=wM#R z_0T=DGG{-U?K=k-wl&;$?%H`-5zzeM`4=M7qP!O9MK6kpUWkl+9%~$z6}N8D=%ShU zy9w$9RAN=)q9vP`>{x!4)@oyJR$3?{T#PSz9F1!@Oi2fO^ ziSCHbi+&W1iiwE9#5{|3iq?y+UT}Cp-GVs_K198bS{h{;wK3{UR72FuD2ph1tFqH?1!QN*YyQ2JtIPGmw$mbvrL{cJWM?HwjjxvoJiTo6q5E&FXG5^N=t@DQ?WnE zpKyC{Lcef7bH7nvitlUR7~fOAyL`|2@_j3Oule5aed)X0caiUQ-(=rMzA!(&Z?CV? z*VeDncb)GxUrXO&pZ|Oo`mnrDczbz!c>nfF_gW9uk{Ph7_eZXyro0(g` z>r2-Z*JM|MtJGz`i_rO_^K$17Cl9B`j!h1W9M0RnvU9Ubuswhsu~}nNYHezrX@#~L z#~`h`Fus^@ONGTh3s(!VIo14#xs~}mlyYL9Bow0W8kjg97`8d7(tcByOC>(!=e zgc<|VLzSLtKv|^RrA$-~&9u*)pD~*yHQ^^=wXj3@N+=gl!A7_p^zo;X45Bpw!Zh^V3x(IZe_8K^NqR3^LwxX2JR z2{Hwc;P>>^>2uRX(_kAjeSvSqkL4HfEBFujsr=3S0zls^emEb&hwBlFA!n>*USVc31DHlkB6A0G33DAtJDKm9XPMubFPX=fZvx^hPiQ_0Z$=qP>N^T@Kp4-Ts&1>T6 z^O-z0&yXL%f5ktXG+r@}!870+@X`E-ygNJ^Z;*F}_m9T` zWrRFOemSp?7r~F>kMpkZmh(J$94?1T<|cD3xj#6mU=B$+zc@`CYwkhr8!nrh&2!_= z@Kn5${Bk~rujTKYz60ihuD}oM0O-?pg4u%q1atvHI7@g1%xp5q`$SmrVzEjzDH;%A z#00UUcrTE2Z^gr6x>zVaE;%m=lbi&{8lLH^X1S3*kj@OPwMeoNlMCyWT53W5l?g zNbep3sXs?QQQtzJf@npIBkc6)h)ak!hz>*};vC{KViZw_KaDLsP$v(EbB09 zcWZ`Kx>cl=g;h6(g1L-YkJ*Shg86`XirIsCglWS(z&ybyF*qv^t4hon%x%nXjFXiD zQ-DbYzih@V#bkh#huMLtz{FU6v0_?{TOG1Ww%TAN!JNY2Fmad^%&_HF%e|HxEhjCW zTjW`+vBhyXtEfz zs0Huru?V%;0p3rwNU->4{?)w1{EfN9+{eNPJXvH>X@18%*8HVej9Itolxc?9YO^h7 zo6Y{1GE7a)FlLTsCry`|Za1qm^D_HkdH`Hon8ujY89y?PGQMoI#b~2Zkdeaho8bz> z2*Y!RJ%)3Pn1*V@79)3KxzR@>ve9N^m647S(gy(k!~no6bv{Sp0-`s?+V0XaEKKT2N&Y&_o(pAZ7XelSPd5l;~nh~J10h+ha3 zeLMaCIqm}%pmU%kTz{p0EJ$|xg@`qX!RadI_s<)}vsBP8fRnJxTfZd@}DVu4W zxiqtDCU}N0BUTvAn9lrE)GJ06BZ@x?Z-s{69=emnC+RF>$@P6RaR-#gSr`h$MP1x-V)HA;sq6a#1$8&J;nSzruAwr0^YBi;fB| z2wn*03mDVd>21Jbku9(j^iRK;u9-e0&c>g%OBGT(S(=P13ze^uACSk% z56K_MkAoFTB>yS@A%7%aAwL1uDURGqK~SVC<|wA*ixg>!C5m+*M<{fF<%KR^tf0#) zwWL~nM*K`%DXtOU6=#S8#B9-s z=(;FEWG;FvED$yd&k3bKqJI>85=;nifPbxmtAd?^G{I@XWr3TZXL`@Hh;KXH$luR5 zR;a2nW;faRxy zeUM$udIi!=W)O1&Ga1Og79bC8mbpWsGx-$tmp=oFST;o}x|No%%f0H}z)< zn0cmpr-r7sOz|cyrq+Tx8wQ54k@1lsWq302%tg#E%*CucRwJu|b)J>W@?rV2F0ss5 zMa=WeDkhiN&HT-L&CCWe_!qO2smGenienL3PONXNmFzh7Ms^=NnsbsP=gb2X|Kp;8 z%xvR{cuqiXaOIowDTrTk0$Dt_GbA;5>D)0*jaHBu}~;T&d?rcDYO!bfF1*TGGAMz#lh-e z=V4RYJK77{Z`x+hrT1xe0ekgpjV-WCzW~>lH4im!H8(W|nltJQ z^*Xhk`nF1;`m27a)>kuB2UX`(N$O&Cxca?nsp_mMKpmnERI5~7s#KL$nXBqo)v30s ztW~zE&q^nyjxtF3RoSA92f~=@mfld&*}3jYr8xP51LJ@cVd2c%Q&LR`I%l)_jZifwzyZ;F<9% zxjkHnr{Xqn4{=FcKKBcEBiE5@#g%ZnIS|)`JI-kVTJL z`pBNe=CCfacCogz*v$RRj|@A8JEMT{nsI?Ki{UgCI~g{a4bu0C8hSW=di=t8&G?mZ z-q`vv0Zl{`(3)vqY1uRzS`&3IRYo~SF{04OB62r5pS*%RJt`YnJmNZHHgbDdGqiE2 zelU4(*`RE|cA&5SKtH|jNMBxGYTupS!Jfe$UeD7W$DV`T=x$!u)~@l+oK8hYVuzr; zyxpPQ``?_u@7k=|+FMVw(px-Rem9piUv0K+4r@C2=h1KE@47}(wSBcGYd6#~Y8KYK_=)`4Q$1Zx{OSHPue#(1 zzv^~XM-{#5U{&Au`0u1|Uf=Y;J+FLUv9#h#MQz3L3b%?+og-({Q1bjwbZ`j>7lohrRhy1$fL zswzENh9HHJmXY#E&j8g`q`#!#^3~;j<;Zd>=?du*sgfimF-W~69_b(H4(SCbd5455 z?;;_}ZOgsO{mU1XXO^EWZzpw?HJ3dt`&fo2?I*1zT_9~C*^wN<)6-?iW%J64%c{zF zWyYirWwf&GfHVH2IFbiRhcsTclXSWKK>0z^WZC1gnzFg1)1>31-6Un15$OzR1K=I3 zJOb3;T>fAA7|ELSw`>Dxw7jKaeMM0Den9su(tVP7xqF3u<#0uN`PK5l^1tQr6_knt zl^vDsm6?^@mD|5bzFq$A_Wj{E=Wnda+HdQt*8kY_qp#|1)o@kTk5$z#t23+bS1)_WslR=Y3OFv!of``lt1E>x$Nkt$J{iwDUn1vfHd%r~AL|H$BF^9lfHy1N~TF10Nl{GxT>zGq`E+=YalT;LzgX zRU_>qB_rQPj*ldaG>r^`^V|{V5g%}l8MPwsAt#gLfE9WR$frixBgoOA(O2XIN)=^- zQcS^8y2!`LUgT5cTNHn43e}&wgi=e^r5vXGN6n)(P{%1H6hEpd?I|sh7DIhY>7gv3 zR#4B<{?IniOlc&lH`R^0np#JNXvx$r3K7`7FVddTbZ7^uanxd}h8j$>rbW_{fJHoz zI-jzD!XPgo>r)0PbPADjlpIMuPnMFW$al%UY$*gm#KQR zozxo8`zPdJ%17!+S}X8@BvamiC*hP^lwFkfl$+E)R5@iKJZOHjYqVNgG|htcnU+gCOlzU( zj0KKep#7wN0_g^gGq!JBJhpo5AgzYlOAVnxVP zCl3Q}6?-a?F*SvmN}O6bC7BdY7EUo3k663eR_v?HMT~t6J_F6d0ej0E_6fEd`w062 z=QUT&CGrH^rQFZlBfL0%?(|2&1E5ts6C?`g)Ay$#aMvg77Ilh#1Iq^y_(%MueNv+A ziqr#Wa<8S!WwYfh`B8;Rv2>$!t^04l;ZnK_iEwW0meqp`FCLWt? z3)w5|*E+vJR#Ld+^uLS)mmnqaja2aznyGRiU(5)^i%> z7=Rmv)rPBc zS52;JUhTVvwi>(U@tTcm##hf-^J&fMwGQk4uC-qGY~8_i{p&RA_OJi7{?hu1^)EIY z+OTH>dgJs4+l}KJKW%c_oW6+x&c2)1Y_{BTY|G;<#an8&?AxldEn{oQ*3fPHw#|T} z!S|(!F_60QWh!mZRUf_t(j$+XEPsX7H8UL{>T`}2*@!Y<8(%NMtsJVjF%bTGa52(W%Q(X0@_IFx6(JHqtYAGIBAV(AJWRwcBRFp#iw=e z-@HF!zt8@4`_Jun+Am0j_BW&!rXo}C@2lTev+vHnpZhBI-Q8ERZzs4~m5NGrOx>57 znwkqZ(vcdw|I~ik{(>}Q`sH*)20CMX#^(%5#=Oj3nHMrgGo7+_Wp!osW=&?fWXEJL z%67_LmHjX~IXf@ADSI$ml#M<>II!lxuLIfxu?MdlOgmV3kbY2m(D0DUA*(|nhn5{m zKU8-JnR7JfP0qHQA36M-;GDTR%W{4nGSAtQqn8t#vohyZPVC_$hkqaLJN)8s$6@m$ z_D2|pyALZ4yB={la`%Y*2=3^^qxDA@A8R>=IUaTV+VO_tl;iFv5>Mow7(THycVX_a z+{d|+Tw(6_+`in7+&{S^xtDUib6s-jC%&9$I5BoYb7EKS*4)Bea<1jcM<-b)RVT$K z87E(#{CaZir0uCCr--M#P8px7Jo)A1r;}kP|I78r{d%JC1mOhlIQw|_@i)i!9uGNg zdK`27`?1VpuE#DPjXlaba_Pw0BVI@94qrLE=CJPJ-kkQF$2l1}$vG#$)v=rlIWKay z<^<#z`Jg|yVP zyTA8sjGBXy;yl@ zrRmE06-F!0F85x3K3TJjy)>sy+>f|S z;Okl*D_?ke;hz|@n2pf`3j!8giL#Em5ebjnF<%kU8nHH_YM$G?dvmSlHipN9kB03D zyEjKXd;RPkvo?fY4Y?6~IA~ws3*cd*5E2QacpdyK|MxgFZkgW;UzBgC&v|cx_qf+` zum3z*9(o?>?#}Mp-5$AqabY>9I3IPIbbRDkB=$!SsRu`m6c~ zeZP7`dVloH>ABcF+!fsQv(vjXx}&Dut3B>t*5AKv6RpE7kD3dce*UTdZU4KYaYtis z!|?{4hA;IQ^_KMyes$KF*IlR$ul-wdvBtIL;LktRde!zn4phDPe*K&Ax6sN56`XQH zxter@q%M0^w!Vy9`k>UX^i#>65_rkguk*i3zP$Y6_oeAG>2vhwicbeWE%;>gY53!j zk9r?-Kk(kae1GV@^Lxg-+wbPTb9e{6d;E6!+sZeDH`Ldzuh+gRdin5$@r%pPzdo~k z_U5U{(^pSUJxO|E{p8i-dyg+X);#*}k^14ChYk-T9xS{6=-%Ley?4X!uDj!O+wRuN zn|E*2Ul(7yaE)7>SnN>DyZZL(t*e<=!>^iMJ$OZaIq&k&rKn3C7xOO`Ui^A7^kVvj z_vcg3uRL#do_lWM?5Z>D!hwRV1q%yw3hMHU@{RJX^6%xJ%eT#k^2hRO^M2&r%e$60 zH?RA&QQo?|?Rl^AT=Vnt-{l|3Kb!w7|9O6UetkYC-?_lIz_CEDpeuiAzJIkKa6xLp-hz1rvkLh6xAOb)cN9z)6c$z$!V32loGRcHJT9~=npMOryjf^ac%@)@ z!HEKDfl1;1!W)Ih3bPCM6?zo13xoyqg0h0Z0$71{fhfN-|8ss?eqsJ_zH!02g0X_h zg7SjF0_(!u!kR*1VPesxqL)RQqT^>Solm%sb0O+N%7yU@0T=5o`d!+2Y0;(Imk5{3 zE}y;f{z}c2mshdHqN|R@FN>Rs3D=HZyMHbE`jhMbu7}(hxpDiZ$*rlIxwjl|ueiPW z_Ws-GJI;6J-D$lu|E|&9C3hG6C-~3vp5?t~_j2y@?mIjXKPY%;@yPS>=f~8?@TW6R z*F1auJnn_b%MGv6UVnTY_GZ)Dtap-kd*A1L*!ofL)4xv-KI?vAetGsaxWuWnrL?;2 z3Ta_^NQFt|Oy$>aR^QKm_o|XqJ^Zn-dfiXMn%o*v&BfZRy8Cr@zeavNsV6qrHoE-& z?|0;%!9Vgpf;%pOjveqMh4MD?hItG5ZU8wJ z0BmG)L^hJ6(kfZIe9g=crCha9gMiI}y5T=`YxLeDiu4Z{oJOKiqo_yd+lCEBt;SRn zs%fX$eDfId?dH?wQx+R7n=Pv_-d3-yzFJGH71nh&m(jUDegZgK2%eCBk_-6Gwk?)4t0JVl;Yyl#3y-p{?8z4!Wb z`MK#Eto{#X|ruvz$0YI7N6v7zfCZM*-sj<$>iv zNx`IGoe(m>H~57PhA2XxgnkQ|2r&q?56ui&7xFvgP)Kv|$zXKwfuK!6@<6@7-~bNs zH}MLwi1>>*LOf0^CRP($iDkqT;(ld@; z%aDN(o6z&26QQ}G?xAs^Lm>x($AUbAoq|>bE)4t-;1@t9HW4=viwH)9S%fKk3Vx0M zb=+QDgWngwJU_axjW6FP#^-_ejCZ6@f={jYYHyNvhIhHwU9S&bb>KMUS>$Qy#q><{ zH1~vi+IueblzUJ-B0T4Lc6n^|*x}*gu?6V*Sogbbe_R_}>YYoSA30|^U2`;W^mGh! z%yoG0(CF~SeyP2=eG))F-L%WHJ7BlcPHZc)723YDEw)`}JB)?f-o~0^w_q!=+pr&P z-q>ulxei8eolS&|kBz;Jjg2n$BDNmuYddQDz%JCj-u|_Nu~Vc|my^gj-eryp9JESy zPH-`HIquxxpk0SuyktLVMxHvogS(D1V1S3?27Jp>uz45JK943UNsbR7B@>K(v7+(PG}PoRfUuBcel zVbp)9V$?;{26UC-dr;=8VZ0H>c&+hUBPq%YWrEscutGl#QKQ?fvq0y9j*;FvgWsqc zR4YOhRud_BdXB@qf167jD8s=8Xg0lND-Qa4m0GV2hkQr4~_hcf{o;c z-G<>tSYu0Lwb2=4GZVV;FJnEEFq2f{cq4nG^M*?dV-3-UiJ)J{P`OBdgCPA^2)SN@ z-fG=xcsAq(yP_#oT~S_~VaYei@X}~WhB!w=7Q6)>N)^x>pJ?JEMj&)q=Sk*yoU(nw9FYRB;--b3>Yj7*R#lQJL)9F9Ae>?v!YYc6S zY_x1dG`Q8r*8iywZLn*IZ|G}S+E~yiZ(RBN=I{5v)s4x&%YT!8xBNc#=SEXbQ*_hX zW{VbfGqEM21=kYYda~_L+f>`Hw%=`Se{22)wJ&Tx(f+yPRi{lCq5D+Ny`JQrZ9Tm` zOL{-_V*2X(Jo;VwJNwrRG!4WI<_~TgIzK#b#A&o?bYS!+`5R@75=Pxa^BpT23mun@ zE9tu?(kGLq)-x6}+nEbk)2z9`w&2cr$kF2xxmURX0JmTV@C|FGw@zOYObeSuy5eV| z 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 literal 0 HcmV?d00001 diff --git a/Assets/Standard Assets/Characters/FirstPersonCharacter/Audio/Jump.wav.meta b/Assets/Standard Assets/Characters/FirstPersonCharacter/Audio/Jump.wav.meta new file mode 100644 index 0000000..d8d8678 --- /dev/null +++ b/Assets/Standard Assets/Characters/FirstPersonCharacter/Audio/Jump.wav.meta @@ -0,0 +1,16 @@ +fileFormatVersion: 2 +guid: 5897aeed9b676024fbb8c694b421a861 +AudioImporter: + serializedVersion: 5 + format: -1 + loadType: 1 + quality: -1 + sampleRate: 0 + forceToMono: 0 + preloadAudioData: 1 + loadInBackground: 0 + overrideSampleRate: 0 + optimizeSampleRate: 0 + 3D: 1 + userData: + assetBundleName: diff --git a/Assets/Standard Assets/Characters/FirstPersonCharacter/Audio/Land.wav b/Assets/Standard Assets/Characters/FirstPersonCharacter/Audio/Land.wav new file mode 100644 index 0000000000000000000000000000000000000000..23d185b61ff395cdf41fb89f7188ff76dd33f522 GIT binary patch literal 45462 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 0 && rigidbodyFirstPersonController.Grounded) + { + Camera.transform.localPosition = motionBob.DoHeadBob(rigidbodyFirstPersonController.Velocity.magnitude*(rigidbodyFirstPersonController.Running ? RunningStrideLengthen : 1f)); + newCameraPosition = Camera.transform.localPosition; + newCameraPosition.y = Camera.transform.localPosition.y - jumpAndLandingBob.Offset(); + } + else + { + newCameraPosition = Camera.transform.localPosition; + newCameraPosition.y = m_OriginalCameraPosition.y - jumpAndLandingBob.Offset(); + } + Camera.transform.localPosition = newCameraPosition; + + if (!m_PreviouslyGrounded && rigidbodyFirstPersonController.Grounded) + { + StartCoroutine(jumpAndLandingBob.DoBobCycle()); + } + + m_PreviouslyGrounded = rigidbodyFirstPersonController.Grounded; + // m_CameraRefocus.SetFocusPoint(); + } + } +} diff --git a/Assets/Standard Assets/Characters/FirstPersonCharacter/Scripts/HeadBob.cs.meta b/Assets/Standard Assets/Characters/FirstPersonCharacter/Scripts/HeadBob.cs.meta new file mode 100644 index 0000000..4cff284 --- /dev/null +++ b/Assets/Standard Assets/Characters/FirstPersonCharacter/Scripts/HeadBob.cs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 83c81407209f85e4c87c0cda8b32868e +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: diff --git a/Assets/Standard Assets/Characters/FirstPersonCharacter/Scripts/MouseLook.cs b/Assets/Standard Assets/Characters/FirstPersonCharacter/Scripts/MouseLook.cs new file mode 100644 index 0000000..255be97 --- /dev/null +++ b/Assets/Standard Assets/Characters/FirstPersonCharacter/Scripts/MouseLook.cs @@ -0,0 +1,73 @@ +using System; +using UnityEngine; +using UnityStandardAssets.CrossPlatformInput; + +namespace UnityStandardAssets.Characters.FirstPerson +{ + [Serializable] + public class MouseLook + { + public float XSensitivity = 2f; + public float YSensitivity = 2f; + public bool clampVerticalRotation = true; + public float MinimumX = -90F; + public float MaximumX = 90F; + public bool smooth; + public float smoothTime = 5f; + + + private Quaternion m_CharacterTargetRot; + private Quaternion m_CameraTargetRot; + + + public void Init(Transform character, Transform camera) + { + m_CharacterTargetRot = character.localRotation; + m_CameraTargetRot = camera.localRotation; + } + + + public void LookRotation(Transform character, Transform camera) + { + float yRot = CrossPlatformInputManager.GetAxis("Mouse X") * XSensitivity; + float xRot = CrossPlatformInputManager.GetAxis("Mouse Y") * YSensitivity; + + m_CharacterTargetRot *= Quaternion.Euler (0f, yRot, 0f); + m_CameraTargetRot *= Quaternion.Euler (-xRot, 0f, 0f); + + if(clampVerticalRotation) + m_CameraTargetRot = ClampRotationAroundXAxis (m_CameraTargetRot); + + if(smooth) + { + character.localRotation = Quaternion.Slerp (character.localRotation, m_CharacterTargetRot, + smoothTime * Time.deltaTime); + camera.localRotation = Quaternion.Slerp (camera.localRotation, m_CameraTargetRot, + smoothTime * Time.deltaTime); + } + else + { + character.localRotation = m_CharacterTargetRot; + camera.localRotation = m_CameraTargetRot; + } + } + + + Quaternion ClampRotationAroundXAxis(Quaternion q) + { + q.x /= q.w; + q.y /= q.w; + q.z /= q.w; + q.w = 1.0f; + + float angleX = 2.0f * Mathf.Rad2Deg * Mathf.Atan (q.x); + + angleX = Mathf.Clamp (angleX, MinimumX, MaximumX); + + q.x = Mathf.Tan (0.5f * Mathf.Deg2Rad * angleX); + + return q; + } + + } +} diff --git a/Assets/Standard Assets/Characters/FirstPersonCharacter/Scripts/MouseLook.cs.meta b/Assets/Standard Assets/Characters/FirstPersonCharacter/Scripts/MouseLook.cs.meta new file mode 100644 index 0000000..2e6a76f --- /dev/null +++ b/Assets/Standard Assets/Characters/FirstPersonCharacter/Scripts/MouseLook.cs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 37e60a97f2c87ae41b6cdc1055d78cb9 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: diff --git a/Assets/Standard Assets/Characters/FirstPersonCharacter/Scripts/RigidbodyFirstPersonController.cs b/Assets/Standard Assets/Characters/FirstPersonCharacter/Scripts/RigidbodyFirstPersonController.cs new file mode 100644 index 0000000..d193704 --- /dev/null +++ b/Assets/Standard Assets/Characters/FirstPersonCharacter/Scripts/RigidbodyFirstPersonController.cs @@ -0,0 +1,264 @@ +using System; +using UnityEngine; +using UnityStandardAssets.CrossPlatformInput; + +namespace UnityStandardAssets.Characters.FirstPerson +{ + [RequireComponent(typeof (Rigidbody))] + [RequireComponent(typeof (CapsuleCollider))] + public class RigidbodyFirstPersonController : MonoBehaviour + { + [Serializable] + public class MovementSettings + { + public float ForwardSpeed = 8.0f; // Speed when walking forward + public float BackwardSpeed = 4.0f; // Speed when walking backwards + public float StrafeSpeed = 4.0f; // Speed when walking sideways + public float RunMultiplier = 2.0f; // Speed when sprinting + public KeyCode RunKey = KeyCode.LeftShift; + public float JumpForce = 30f; + public AnimationCurve SlopeCurveModifier = new AnimationCurve(new Keyframe(-90.0f, 1.0f), new Keyframe(0.0f, 1.0f), new Keyframe(90.0f, 0.0f)); + [HideInInspector] public float CurrentTargetSpeed = 8f; + +#if !MOBILE_INPUT + private bool m_Running; +#endif + + public void UpdateDesiredTargetSpeed(Vector2 input) + { + if (input == Vector2.zero) return; + if (input.x > 0 || input.x < 0) + { + //strafe + CurrentTargetSpeed = StrafeSpeed; + } + if (input.y < 0) + { + //backwards + CurrentTargetSpeed = BackwardSpeed; + } + if (input.y > 0) + { + //forwards + //handled last as if strafing and moving forward at the same time forwards speed should take precedence + CurrentTargetSpeed = ForwardSpeed; + } +#if !MOBILE_INPUT + if (Input.GetKey(RunKey)) + { + CurrentTargetSpeed *= RunMultiplier; + m_Running = true; + } + else + { + m_Running = false; + } +#endif + } + +#if !MOBILE_INPUT + public bool Running + { + get { return m_Running; } + } +#endif + } + + + [Serializable] + public class AdvancedSettings + { + public float groundCheckDistance = 0.01f; // distance for checking if the controller is grounded ( 0.01f seems to work best for this ) + public float stickToGroundHelperDistance = 0.5f; // stops the character + public float slowDownRate = 20f; // rate at which the controller comes to a stop when there is no input + public bool airControl; // can the user control the direction that is being moved in the air + } + + + public Camera cam; + public MovementSettings movementSettings = new MovementSettings(); + public MouseLook mouseLook = new MouseLook(); + public AdvancedSettings advancedSettings = new AdvancedSettings(); + + + private Rigidbody m_RigidBody; + private CapsuleCollider m_Capsule; + private float m_YRotation; + private Vector3 m_GroundContactNormal; + private bool m_Jump, m_PreviouslyGrounded, m_Jumping, m_IsGrounded; + + + public Vector3 Velocity + { + get { return m_RigidBody.velocity; } + } + + public bool Grounded + { + get { return m_IsGrounded; } + } + + public bool Jumping + { + get { return m_Jumping; } + } + + public bool Running + { + get + { + #if !MOBILE_INPUT + return movementSettings.Running; +#else + return false; +#endif + } + } + + + private void Start() + { + m_RigidBody = GetComponent(); + m_Capsule = GetComponent(); + mouseLook.Init (transform, cam.transform); + } + + + private void Update() + { + RotateView(); + + if (CrossPlatformInputManager.GetButtonDown("Jump") && !m_Jump) + { + m_Jump = true; + } + } + + + private void FixedUpdate() + { + GroundCheck(); + Vector2 input = GetInput(); + + if ((Mathf.Abs(input.x) > float.Epsilon || Mathf.Abs(input.y) > float.Epsilon) && (advancedSettings.airControl || m_IsGrounded)) + { + // always move along the camera forward as it is the direction that it being aimed at + Vector3 desiredMove = cam.transform.forward*input.y + cam.transform.right*input.x; + desiredMove = Vector3.ProjectOnPlane(desiredMove, m_GroundContactNormal).normalized; + + desiredMove.x = desiredMove.x*movementSettings.CurrentTargetSpeed; + desiredMove.z = desiredMove.z*movementSettings.CurrentTargetSpeed; + desiredMove.y = desiredMove.y*movementSettings.CurrentTargetSpeed; + if (m_RigidBody.velocity.sqrMagnitude < + (movementSettings.CurrentTargetSpeed*movementSettings.CurrentTargetSpeed)) + { + m_RigidBody.AddForce(desiredMove*SlopeMultiplier(), ForceMode.Impulse); + } + } + + if (m_IsGrounded) + { + m_RigidBody.drag = 5f; + + if (m_Jump) + { + m_RigidBody.drag = 0f; + m_RigidBody.velocity = new Vector3(m_RigidBody.velocity.x, 0f, m_RigidBody.velocity.z); + m_RigidBody.AddForce(new Vector3(0f, movementSettings.JumpForce, 0f), ForceMode.Impulse); + m_Jumping = true; + } + + if (!m_Jumping && Mathf.Abs(input.x) < float.Epsilon && Mathf.Abs(input.y) < float.Epsilon && m_RigidBody.velocity.magnitude < 1f) + { + m_RigidBody.Sleep(); + } + } + else + { + m_RigidBody.drag = 0f; + if (m_PreviouslyGrounded && !m_Jumping) + { + StickToGroundHelper(); + } + } + m_Jump = false; + } + + + private float SlopeMultiplier() + { + float angle = Vector3.Angle(m_GroundContactNormal, Vector3.up); + return movementSettings.SlopeCurveModifier.Evaluate(angle); + } + + + private void StickToGroundHelper() + { + RaycastHit hitInfo; + if (Physics.SphereCast(transform.position, m_Capsule.radius, Vector3.down, out hitInfo, + ((m_Capsule.height/2f) - m_Capsule.radius) + + advancedSettings.stickToGroundHelperDistance)) + { + if (Mathf.Abs(Vector3.Angle(hitInfo.normal, Vector3.up)) < 85f) + { + m_RigidBody.velocity = Vector3.ProjectOnPlane(m_RigidBody.velocity, hitInfo.normal); + } + } + } + + + private Vector2 GetInput() + { + + Vector2 input = new Vector2 + { + x = CrossPlatformInputManager.GetAxis("Horizontal"), + y = CrossPlatformInputManager.GetAxis("Vertical") + }; + movementSettings.UpdateDesiredTargetSpeed(input); + return input; + } + + + private void RotateView() + { + //avoids the mouse looking if the game is effectively paused + if (Mathf.Abs(Time.timeScale) < float.Epsilon) return; + + // get the rotation before it's changed + float oldYRotation = transform.eulerAngles.y; + + mouseLook.LookRotation (transform, cam.transform); + + if (m_IsGrounded || advancedSettings.airControl) + { + // Rotate the rigidbody velocity to match the new direction that the character is looking + Quaternion velRotation = Quaternion.AngleAxis(transform.eulerAngles.y - oldYRotation, Vector3.up); + m_RigidBody.velocity = velRotation*m_RigidBody.velocity; + } + } + + + /// sphere cast down just beyond the bottom of the capsule to see if the capsule is colliding round the bottom + private void GroundCheck() + { + m_PreviouslyGrounded = m_IsGrounded; + RaycastHit hitInfo; + if (Physics.SphereCast(transform.position, m_Capsule.radius, Vector3.down, out hitInfo, + ((m_Capsule.height/2f) - m_Capsule.radius) + advancedSettings.groundCheckDistance)) + { + m_IsGrounded = true; + m_GroundContactNormal = hitInfo.normal; + } + else + { + m_IsGrounded = false; + m_GroundContactNormal = Vector3.up; + } + if (!m_PreviouslyGrounded && m_IsGrounded && m_Jumping) + { + m_Jumping = false; + } + } + } +} diff --git a/Assets/Standard Assets/Characters/FirstPersonCharacter/Scripts/RigidbodyFirstPersonController.cs.meta b/Assets/Standard Assets/Characters/FirstPersonCharacter/Scripts/RigidbodyFirstPersonController.cs.meta new file mode 100644 index 0000000..cad5637 --- /dev/null +++ b/Assets/Standard Assets/Characters/FirstPersonCharacter/Scripts/RigidbodyFirstPersonController.cs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 81c9795a96c094f4cbde4d65546aa9b2 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: diff --git a/Assets/Standard Assets/Characters/PhysicsMaterials.meta b/Assets/Standard Assets/Characters/PhysicsMaterials.meta new file mode 100644 index 0000000..9c1c9e5 --- /dev/null +++ b/Assets/Standard Assets/Characters/PhysicsMaterials.meta @@ -0,0 +1,6 @@ +fileFormatVersion: 2 +guid: ea2a5216ffb8d4b319d09e8d7782120c +folderAsset: yes +DefaultImporter: + userData: + assetBundleName: diff --git a/Assets/Standard Assets/CrossPlatformInput.meta b/Assets/Standard Assets/CrossPlatformInput.meta new file mode 100644 index 0000000..b295aee --- /dev/null +++ b/Assets/Standard Assets/CrossPlatformInput.meta @@ -0,0 +1,6 @@ +fileFormatVersion: 2 +guid: eb6d0d11aa24844488ea026462c8b6aa +folderAsset: yes +DefaultImporter: + userData: + assetBundleName: diff --git a/Assets/Standard Assets/CrossPlatformInput/CrossPlatformInputGuidelines.txt b/Assets/Standard Assets/CrossPlatformInput/CrossPlatformInputGuidelines.txt new file mode 100644 index 0000000..461c8df --- /dev/null +++ b/Assets/Standard Assets/CrossPlatformInput/CrossPlatformInputGuidelines.txt @@ -0,0 +1,32 @@ + +Importing the CrossPlatformInput package adds a menu item to Unity, "CrossPlatformInput", which allows you to enable or disable the CrossPlatformInput in the editor. You must enable the CrossPlatformInput in order to see the control rigs in the editor, and to start using Unity Remote to control your game. + +The CrossPlatformInput sample assets contains two main sections. + +1) The folder of prefabs provide a variety of ready-to-use "MobileControlRigs". Each control rig is suitable for a different purpose, and each implements the touch or tilt-based equivalent of some of the default standalone axes or buttons. These are ready to drop into your scene, and to use them you simply need to read the axes via the CrossPlatformInput class, rather than Unity's regular Input class. + +2) The set of scripts provided are the scripts we used to put together the control rigs prefabs. They provide a simplified way of reading basic mobile input, such as tilt, taps and swipe gestures. They are designed so that various mobile controls can be read in the same way as regular Unity axes and buttons. You can use these scripts to build your own MobileControlRigs. + + + +For example the Car control rig feeds the tilt input of the mobile device to the "Horizontal" axis, and has an accelerator and brake touch button which are fed as a pair into the "Vertical" axis. These are virtual equivalents of the real "Horizontal" and "Vertical" axes defined in Unity's Input Manager. + +Therefore when you read CrossPlatformInput.GetAxis("Horizontal"), you will either get the "real" input value - if your build target is non-mobile, or the value from the mobile control rig - if your build target is set to a mobile platform. + +The CrossPlatformInput scripts and prefabs are provided together as an example of how you can implement a cross-platform control solution in Unity. They also allow us to provide our other sample scenes in a form that can be published as standalone or to mobile targets with no modification. + +To use the CrossPlatformInput, you need to drop a "Mobile Control Rig" into your scene (or create your own), and then make calls to CrossPlatformInput functions, referring to the axes and buttons that the Rig implements. + +When reading input from the CrossPlatformInput class, the values returned will be taken either from Unity's Input Manager settings, or from the mobile-specific controls set up, depending on which build target you have selected. + +The CrossPlatformInput class is designed to be called instead of Unity's own Input class, and so mirrors certain parts of the Input API - specifically the functions relating to Axes and Buttons: + GetAxis, GetAxisRaw + GetButton, GetButtonDown, GetButtonUp + +Notes for coders: +This package sets two compiler define symbols. One is always set automatically, the other is optionally set from a menu item. + +Importing the "CrossPlatformInput" package will automatically add a compiler define symbol, "CROSS_PLATFORM_INPUT". This enables the CrossPlatformInput functions defined in some of the other Sample Asset packages (such as the Characters, Planes, etc). Without this symbol defined, those packages use Unity's regular Input class, which means they can be imported alone and still work without the CrossPlatformInput package. + +The optional define (which is set by default, but can be disabled using the "Mobile Input" menu), is "MOBILE_INPUT". This causes the MobileControlRigs to become active when a mobile build target is selected. It also enables certain mobile-specific control nuances in some of the packages, which make more sense when the character or vehicle is being controlled using mobile input (such as auto-leveling the character's look direction). This define is optional because some developers prefer to use standalone input methods instead of the Unity Remote app, when testing mobile apps in the editor's play mode. + diff --git a/Assets/Standard Assets/CrossPlatformInput/CrossPlatformInputGuidelines.txt.meta b/Assets/Standard Assets/CrossPlatformInput/CrossPlatformInputGuidelines.txt.meta new file mode 100644 index 0000000..bc74ece --- /dev/null +++ b/Assets/Standard Assets/CrossPlatformInput/CrossPlatformInputGuidelines.txt.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: a3b997593a4f12c4c991490593f3b513 +TextScriptImporter: + userData: + assetBundleName: diff --git a/Assets/Standard Assets/CrossPlatformInput/Prefabs.meta b/Assets/Standard Assets/CrossPlatformInput/Prefabs.meta new file mode 100644 index 0000000..0cb2f3a --- /dev/null +++ b/Assets/Standard Assets/CrossPlatformInput/Prefabs.meta @@ -0,0 +1,6 @@ +fileFormatVersion: 2 +guid: f030ca9293dfc164c8bc07b982e19f38 +folderAsset: yes +DefaultImporter: + userData: + assetBundleName: diff --git a/Assets/Standard Assets/CrossPlatformInput/Prefabs/CarTiltControls.prefab b/Assets/Standard Assets/CrossPlatformInput/Prefabs/CarTiltControls.prefab new file mode 100644 index 0000000..9f5e2f2 --- /dev/null +++ b/Assets/Standard Assets/CrossPlatformInput/Prefabs/CarTiltControls.prefab @@ -0,0 +1,461 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &100000 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22400000} + - 223: {fileID: 22300000} + - 114: {fileID: 11400002} + - 114: {fileID: 11400000} + m_Layer: 5 + m_Name: CarTiltControls + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100002 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22400002} + - 222: {fileID: 22200002} + - 114: {fileID: 11400010} + - 114: {fileID: 11400008} + m_Layer: 5 + m_Name: LookUpAndDownTouchpad + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!1 &100004 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400000} + - 114: {fileID: 11400012} + m_Layer: 0 + m_Name: TiltSteerInput + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!1 &100006 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22400004} + - 222: {fileID: 22200004} + - 114: {fileID: 11400016} + - 114: {fileID: 11400014} + - 114: {fileID: 11436680} + m_Layer: 5 + m_Name: Brake + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!1 &100008 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22400006} + - 222: {fileID: 22200000} + - 114: {fileID: 11400006} + - 114: {fileID: 11400004} + - 114: {fileID: 11455192} + m_Layer: 5 + m_Name: Accelerator + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!4 &400000 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100004} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -118.998169, y: -211.682297, z: -502.618439} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22400000} + m_RootOrder: 2 +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100000} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 71398ce7fbc3a5b4fa50b50bd54317a7, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &11400002 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100000} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1301386320, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Priority: 3 + ignoreReversedGraphics: 1 + blockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &11400004 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100008} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9ab98b66288df7b4fa182075f2f12bd6, type: 3} + m_Name: + m_EditorClassIdentifier: + axisName: Vertical + axisValue: 1 + responseSpeed: 999 + returnToCentreSpeed: 3 +--- !u!114 &11400006 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100008} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 21300000, guid: f588d850485d0ae479d73cf3bd0b7b00, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11400008 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100002} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1caf40fc8bebb6b43b2550c05ca791d6, type: 3} + m_Name: + m_EditorClassIdentifier: + axesToUse: 0 + controlStyle: 2 + horizontalAxisName: Mouse X + verticalAxisName: Mouse Y + Xsensitivity: 1 + Ysensitivity: 1 +--- !u!114 &11400010 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100002} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: .13333334} + m_Sprite: {fileID: 21300000, guid: e4f1fee3de32377429fd1348fae62b10, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11400012 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100004} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5c2d84226fbbaf94e9c1451f1c39b06a, type: 3} + m_Name: + m_EditorClassIdentifier: + mapping: + type: 0 + axisName: Horizontal + tiltAroundAxis: 0 + fullTiltAngle: 50 + centreAngleOffset: 0 +--- !u!114 &11400014 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100006} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9ab98b66288df7b4fa182075f2f12bd6, type: 3} + m_Name: + m_EditorClassIdentifier: + axisName: Vertical + axisValue: -1 + responseSpeed: 999 + returnToCentreSpeed: 3 +--- !u!114 &11400016 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100006} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 21300000, guid: 827c9cd4a3943534f909ac6473e17288, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11436680 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100006} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 2 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: .960784316, g: .960784316, b: .960784316, a: 1} + m_PressedColor: {r: .784313738, g: .784313738, b: .784313738, a: 1} + m_DisabledColor: {r: .784313738, g: .784313738, b: .784313738, a: .501960814} + m_ColorMultiplier: 1 + m_FadeDuration: .100000001 + m_SpriteState: + m_HighlightedSprite: {fileID: 21300000, guid: 5b1a64ea234fb2343b8d0686c51280de, + type: 3} + m_PressedSprite: {fileID: 21300000, guid: 5b1a64ea234fb2343b8d0686c51280de, type: 3} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11400016} + m_OnClick: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &11455192 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100008} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 2 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: .960784316, g: .960784316, b: .960784316, a: 1} + m_PressedColor: {r: .784313738, g: .784313738, b: .784313738, a: 1} + m_DisabledColor: {r: .784313738, g: .784313738, b: .784313738, a: .501960814} + m_ColorMultiplier: 1 + m_FadeDuration: .100000001 + m_SpriteState: + m_HighlightedSprite: {fileID: 21300000, guid: eb5f6e2757c821940b69cf1456f7865a, + type: 3} + m_PressedSprite: {fileID: 21300000, guid: eb5f6e2757c821940b69cf1456f7865a, type: 3} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11400006} + m_OnClick: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!222 &22200000 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100008} +--- !u!222 &22200002 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100002} +--- !u!222 &22200004 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100006} +--- !u!223 &22300000 +Canvas: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100000} + m_Enabled: 1 + serializedVersion: 2 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 1 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!224 &22400000 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100000} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 22400006} + - {fileID: 22400004} + - {fileID: 400000} + - {fileID: 22400002} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!224 &22400002 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100002} + m_LocalRotation: {x: 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: 22400000} + m_RootOrder: 3 + m_AnchorMin: {x: .200000003, y: .300000012} + m_AnchorMax: {x: .800000012, y: .800000012} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22400004 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100006} + m_LocalRotation: {x: 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: 22400000} + m_RootOrder: 1 + m_AnchorMin: {x: .0199999996, y: .0299999993} + m_AnchorMax: {x: .0799999982, y: .180000007} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22400006 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100008} + m_LocalRotation: {x: 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: 22400000} + m_RootOrder: 0 + m_AnchorMin: {x: .920000017, y: .0299999993} + m_AnchorMax: {x: .980000019, y: .180000007} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 100000} + m_IsPrefabParent: 1 diff --git a/Assets/Standard Assets/CrossPlatformInput/Prefabs/CarTiltControls.prefab.meta b/Assets/Standard Assets/CrossPlatformInput/Prefabs/CarTiltControls.prefab.meta new file mode 100644 index 0000000..6c76391 --- /dev/null +++ b/Assets/Standard Assets/CrossPlatformInput/Prefabs/CarTiltControls.prefab.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 174090ae7f9eff84abe76f0ff062efac +NativeFormatImporter: + userData: + assetBundleName: diff --git a/Assets/Standard Assets/CrossPlatformInput/Prefabs/DualTouchControls.prefab b/Assets/Standard Assets/CrossPlatformInput/Prefabs/DualTouchControls.prefab new file mode 100644 index 0000000..50de521 --- /dev/null +++ b/Assets/Standard Assets/CrossPlatformInput/Prefabs/DualTouchControls.prefab @@ -0,0 +1,578 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &100000 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22400000} + - 223: {fileID: 22300000} + - 114: {fileID: 11400002} + - 114: {fileID: 11400000} + m_Layer: 5 + m_Name: DualTouchControls + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100002 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22400002} + - 222: {fileID: 22200002} + - 114: {fileID: 11400006} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100004 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22400004} + - 222: {fileID: 22200000} + - 114: {fileID: 11400004} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100006 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22400006} + - 222: {fileID: 22200004} + - 114: {fileID: 11400012} + - 114: {fileID: 11400010} + - 114: {fileID: 11400008} + m_Layer: 5 + m_Name: Jump + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!1 &100008 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22400008} + - 222: {fileID: 22200008} + - 114: {fileID: 11400022} + - 114: {fileID: 11400020} + m_Layer: 5 + m_Name: TurnAndLookTouchpad + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!1 &100010 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22400010} + - 222: {fileID: 22200006} + - 114: {fileID: 11400016} + - 114: {fileID: 11400014} + m_Layer: 5 + m_Name: MoveTouchpad + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!1 &100012 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22400012} + - 222: {fileID: 22200010} + - 114: {fileID: 11400026} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100000} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 71398ce7fbc3a5b4fa50b50bd54317a7, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &11400002 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100000} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1301386320, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Priority: 3 + ignoreReversedGraphics: 1 + blockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &11400004 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100004} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: .227450982} + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 5 + m_MaxSize: 72 + m_Alignment: 4 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Turn/Look Touch Area +--- !u!114 &11400006 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100002} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: .227450982} + m_FontData: + m_Font: {fileID: 12800000, guid: b51a3e520f9164da198dc59c8acfccd6, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 5 + m_MaxSize: 72 + m_Alignment: 4 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Move Touch Area +--- !u!114 &11400008 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100006} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 85bf3be603548374ca46f521a3aa7fda, type: 3} + m_Name: + m_EditorClassIdentifier: + Name: Jump +--- !u!114 &11400010 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100006} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -1862395651, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + delegates: + - eventID: 2 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 11400008} + m_MethodName: SetDownState + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: Jump + m_BoolArgument: 0 + m_CallState: 1 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + - eventID: 3 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 11400008} + m_MethodName: SetUpState + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: Jump + m_BoolArgument: 0 + m_CallState: 1 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null +--- !u!114 &11400012 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100006} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: .13333334} + m_Sprite: {fileID: 21300000, guid: 3d8675433a508ec47b8f895201eacf20, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11400014 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100010} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1caf40fc8bebb6b43b2550c05ca791d6, type: 3} + m_Name: + m_EditorClassIdentifier: + axesToUse: 0 + controlStyle: 0 + horizontalAxisName: Horizontal + verticalAxisName: Vertical + Xsensitivity: 1 + Ysensitivity: 1 +--- !u!114 &11400016 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100010} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: .13333334} + m_Sprite: {fileID: 21300000, guid: e4f1fee3de32377429fd1348fae62b10, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11400020 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100008} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1caf40fc8bebb6b43b2550c05ca791d6, type: 3} + m_Name: + m_EditorClassIdentifier: + axesToUse: 0 + controlStyle: 2 + horizontalAxisName: Mouse X + verticalAxisName: Mouse Y + Xsensitivity: 1 + Ysensitivity: 1 +--- !u!114 &11400022 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100008} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: .13333334} + m_Sprite: {fileID: 21300000, guid: e4f1fee3de32377429fd1348fae62b10, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11400026 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100012} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: .188235298} + m_FontData: + m_Font: {fileID: 12800000, guid: 01cd679a1b9ee48bf9c546f6ce2cb97e, type: 3} + m_FontSize: 26 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 5 + m_MaxSize: 72 + m_Alignment: 4 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: JUMP +--- !u!222 &22200000 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100004} +--- !u!222 &22200002 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100002} +--- !u!222 &22200004 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100006} +--- !u!222 &22200006 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100010} +--- !u!222 &22200008 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100008} +--- !u!222 &22200010 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100012} +--- !u!223 &22300000 +Canvas: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100000} + m_Enabled: 1 + serializedVersion: 2 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 1 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!224 &22400000 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100000} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 22400010} + - {fileID: 22400008} + - {fileID: 22400006} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!224 &22400002 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100002} + m_LocalRotation: {x: 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: 22400010} + m_RootOrder: 0 + m_AnchorMin: {x: .100000001, y: .419999987} + m_AnchorMax: {x: .899999976, y: .579999983} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22400004 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100004} + m_LocalRotation: {x: 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: 22400008} + m_RootOrder: 0 + m_AnchorMin: {x: .100000001, y: .419999987} + m_AnchorMax: {x: .899999976, y: .579999983} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22400006 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100006} + m_LocalRotation: {x: 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: 22400012} + m_Father: {fileID: 22400000} + m_RootOrder: 2 + m_AnchorMin: {x: .540000021, y: .0199999996} + m_AnchorMax: {x: .959999979, y: .170000002} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22400008 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100008} + m_LocalRotation: {x: 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: 22400004} + m_Father: {fileID: 22400000} + m_RootOrder: 1 + m_AnchorMin: {x: .504999995, y: .200000003} + m_AnchorMax: {x: .99000001, y: .899999976} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22400010 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100010} + m_LocalRotation: {x: 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: 22400002} + m_Father: {fileID: 22400000} + m_RootOrder: 0 + m_AnchorMin: {x: .00999999978, y: .200000003} + m_AnchorMax: {x: .495000005, y: .899999976} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22400012 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100012} + m_LocalRotation: {x: 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: 22400006} + m_RootOrder: 0 + m_AnchorMin: {x: .0500000007, y: .180000007} + m_AnchorMax: {x: .949999988, y: .819999993} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 100000} + m_IsPrefabParent: 1 diff --git a/Assets/Standard Assets/CrossPlatformInput/Prefabs/DualTouchControls.prefab.meta b/Assets/Standard Assets/CrossPlatformInput/Prefabs/DualTouchControls.prefab.meta new file mode 100644 index 0000000..d70a960 --- /dev/null +++ b/Assets/Standard Assets/CrossPlatformInput/Prefabs/DualTouchControls.prefab.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 2169821f0567671499a5c10104c69c24 +NativeFormatImporter: + userData: + assetBundleName: diff --git a/Assets/Standard Assets/CrossPlatformInput/Prefabs/MobileAircraftControls.prefab b/Assets/Standard Assets/CrossPlatformInput/Prefabs/MobileAircraftControls.prefab new file mode 100644 index 0000000..caac418 --- /dev/null +++ b/Assets/Standard Assets/CrossPlatformInput/Prefabs/MobileAircraftControls.prefab @@ -0,0 +1,972 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &100000 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22400000} + - 223: {fileID: 22300000} + - 114: {fileID: 11400000} + - 114: {fileID: 11400030} + m_Layer: 5 + m_Name: MobileAircraftControls + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100002 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22400002} + - 222: {fileID: 22200000} + - 114: {fileID: 11400002} + m_Layer: 5 + m_Name: Handle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100004 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22400004} + m_Layer: 5 + m_Name: Sliding Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100006 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22400006} + - 222: {fileID: 22200002} + - 114: {fileID: 11400004} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100008 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400000} + - 114: {fileID: 11400014} + m_Layer: 0 + m_Name: TiltSteerInputH + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100010 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400002} + - 114: {fileID: 11400028} + m_Layer: 0 + m_Name: TiltSteerInputV + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100012 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22400008} + - 114: {fileID: 11494550} + - 114: {fileID: 11483774} + m_Layer: 5 + m_Name: Throttle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100014 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22400010} + - 222: {fileID: 22200006} + - 114: {fileID: 11400020} + - 114: {fileID: 11400018} + - 114: {fileID: 11400016} + m_Layer: 5 + m_Name: Brake + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100016 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22400012} + - 222: {fileID: 22200004} + - 114: {fileID: 11400012} + - 114: {fileID: 11400010} + - 114: {fileID: 11400008} + - 114: {fileID: 11424508} + m_Layer: 5 + m_Name: Right + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100018 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22400014} + - 222: {fileID: 22200008} + - 114: {fileID: 11400026} + - 114: {fileID: 11400024} + - 114: {fileID: 11400022} + - 114: {fileID: 11443148} + m_Layer: 5 + m_Name: Left + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100020 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22400016} + - 222: {fileID: 22200010} + - 114: {fileID: 11400032} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &400000 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100008} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -542.68457, y: -205.718719, z: -62.2698517} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22400000} + m_RootOrder: 5 +--- !u!4 &400002 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100010} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -542.68457, y: -205.718719, z: -62.2698517} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22400000} + m_RootOrder: 4 +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100000} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1301386320, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Priority: 3 + ignoreReversedGraphics: 1 + blockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &11400002 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100002} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 21300000, guid: e4f1fee3de32377429fd1348fae62b10, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11400004 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100006} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: .13333334} + m_Sprite: {fileID: 21300000, guid: ea5873cfd9158664f89459f0c9e1d853, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11400008 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100016} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 85bf3be603548374ca46f521a3aa7fda, type: 3} + m_Name: + m_EditorClassIdentifier: + Name: Horizontal +--- !u!114 &11400010 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100016} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -1862395651, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + delegates: + - eventID: 2 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 11400008} + m_MethodName: SetAxisPositiveState + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IntArgument: 0 + m_FloatArgument: 1 + m_StringArgument: Horizontal + m_BoolArgument: 0 + m_CallState: 1 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + - eventID: 3 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 11400008} + m_MethodName: SetAxisNeutralState + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: Horizontal + m_BoolArgument: 0 + m_CallState: 1 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null +--- !u!114 &11400012 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100016} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: .588} + m_Sprite: {fileID: 21300000, guid: 4db017495c69e8140a56a0e2b669e3f8, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11400014 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100008} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5c2d84226fbbaf94e9c1451f1c39b06a, type: 3} + m_Name: + m_EditorClassIdentifier: + mapping: + type: 0 + axisName: Mouse X + tiltAroundAxis: 0 + fullTiltAngle: 50 + centreAngleOffset: 0 +--- !u!114 &11400016 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100014} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 85bf3be603548374ca46f521a3aa7fda, type: 3} + m_Name: + m_EditorClassIdentifier: + Name: Fire1 +--- !u!114 &11400018 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100014} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -1862395651, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + delegates: + - eventID: 2 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 11400016} + m_MethodName: SetAxisPositiveState + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IntArgument: 1 + m_FloatArgument: 0 + m_StringArgument: Fire1 + m_BoolArgument: 0 + m_CallState: 1 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + - eventID: 3 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 11400016} + m_MethodName: SetAxisNegativeState + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: Fire1 + m_BoolArgument: 0 + m_CallState: 1 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null +--- !u!114 &11400020 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100014} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: .13333334} + m_Sprite: {fileID: 21300000, guid: 3d8675433a508ec47b8f895201eacf20, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11400022 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100018} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 85bf3be603548374ca46f521a3aa7fda, type: 3} + m_Name: + m_EditorClassIdentifier: + Name: Horizontal +--- !u!114 &11400024 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100018} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -1862395651, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + delegates: + - eventID: 2 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 11400022} + m_MethodName: SetAxisNegativeState + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IntArgument: 0 + m_FloatArgument: -1 + m_StringArgument: Horizontal + m_BoolArgument: 0 + m_CallState: 1 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + - eventID: 3 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 11400022} + m_MethodName: SetAxisNeutralState + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: Horizontal + m_BoolArgument: 0 + m_CallState: 1 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null +--- !u!114 &11400026 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100018} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: .588} + m_Sprite: {fileID: 21300000, guid: 4db017495c69e8140a56a0e2b669e3f8, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11400028 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100010} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5c2d84226fbbaf94e9c1451f1c39b06a, type: 3} + m_Name: + m_EditorClassIdentifier: + mapping: + type: 0 + axisName: Mouse Y + tiltAroundAxis: 1 + fullTiltAngle: -35 + centreAngleOffset: 45 +--- !u!114 &11400030 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100000} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 71398ce7fbc3a5b4fa50b50bd54317a7, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &11400032 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100020} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: .635294139} + m_FontData: + m_Font: {fileID: 12800000, guid: 01cd679a1b9ee48bf9c546f6ce2cb97e, type: 3} + m_FontSize: 26 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 5 + m_MaxSize: 72 + m_Alignment: 4 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: BRAKE +--- !u!114 &11424508 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100016} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 2 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: .960784316, g: .960784316, b: .960784316, a: 1} + m_PressedColor: {r: .784313738, g: .784313738, b: .784313738, a: 1} + m_DisabledColor: {r: .784313738, g: .784313738, b: .784313738, a: .501960814} + m_ColorMultiplier: 1 + m_FadeDuration: .100000001 + m_SpriteState: + m_HighlightedSprite: {fileID: 21300000, guid: 49b611e658efbf443b686a4036f74fe3, + type: 3} + m_PressedSprite: {fileID: 21300000, guid: 49b611e658efbf443b686a4036f74fe3, type: 3} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11400012} + m_OnClick: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &11443148 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100018} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 2 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: .960784316, g: .960784316, b: .960784316, a: 1} + m_PressedColor: {r: .784313738, g: .784313738, b: .784313738, a: 1} + m_DisabledColor: {r: .784313738, g: .784313738, b: .784313738, a: .501960814} + m_ColorMultiplier: 1 + m_FadeDuration: .100000001 + m_SpriteState: + m_HighlightedSprite: {fileID: 21300000, guid: 49b611e658efbf443b686a4036f74fe3, + type: 3} + m_PressedSprite: {fileID: 21300000, guid: 49b611e658efbf443b686a4036f74fe3, type: 3} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11400026} + m_OnClick: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &11483774 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100012} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -2061169968, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: .960784316, g: .960784316, b: .960784316, a: 1} + m_PressedColor: {r: .784313738, g: .784313738, b: .784313738, a: 1} + m_DisabledColor: {r: .784313738, g: .784313738, b: .784313738, a: .501960814} + m_ColorMultiplier: 1 + m_FadeDuration: .100000001 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 0} + m_HandleRect: {fileID: 22400002} + m_Direction: 2 + m_Value: .5 + m_Size: .200000003 + m_NumberOfSteps: 0 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 11494550} + m_MethodName: HandleInput + m_Mode: 0 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 1 + m_TypeName: UnityEngine.UI.Scrollbar+ScrollEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &11494550 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100012} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7d3269566d48b8447bb48d2259e28f8b, type: 3} + m_Name: + m_EditorClassIdentifier: + axis: Vertical +--- !u!222 &22200000 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100002} +--- !u!222 &22200002 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100006} +--- !u!222 &22200004 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100016} +--- !u!222 &22200006 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100014} +--- !u!222 &22200008 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100018} +--- !u!222 &22200010 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100020} +--- !u!223 &22300000 +Canvas: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100000} + m_Enabled: 1 + serializedVersion: 2 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 1 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!224 &22400000 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100000} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 22400014} + - {fileID: 22400012} + - {fileID: 22400010} + - {fileID: 22400008} + - {fileID: 400002} + - {fileID: 400000} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!224 &22400002 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100002} + m_LocalRotation: {x: 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: 22400004} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22400004 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100004} + m_LocalRotation: {x: 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: 22400002} + m_Father: {fileID: 22400006} + m_RootOrder: 0 + m_AnchorMin: {x: .0900000036, y: 0} + m_AnchorMax: {x: .870000005, y: 1} + m_AnchoredPosition: {x: 2, y: 0} + m_SizeDelta: {x: -2, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22400006 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100006} + m_LocalRotation: {x: 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: 22400004} + m_Father: {fileID: 22400008} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22400008 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100012} + m_LocalRotation: {x: 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: 22400006} + m_Father: {fileID: 22400000} + m_RootOrder: 3 + m_AnchorMin: {x: .0199999996, y: .256999999} + m_AnchorMax: {x: .0799999982, y: .860000014} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22400010 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100014} + m_LocalRotation: {x: 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: 22400016} + m_Father: {fileID: 22400000} + m_RootOrder: 2 + m_AnchorMin: {x: .349999994, y: .0299999993} + m_AnchorMax: {x: .649999976, y: .129999995} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22400012 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100016} + m_LocalRotation: {x: 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: 22400000} + m_RootOrder: 1 + m_AnchorMin: {x: .920000017, y: .0299999993} + m_AnchorMax: {x: .980000019, y: .180000007} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22400014 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100018} + m_LocalRotation: {x: 0, y: 0, z: 1, w: -1.62920685e-07} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 22400000} + m_RootOrder: 0 + m_AnchorMin: {x: .0199999996, y: .0299999993} + m_AnchorMax: {x: .0799999982, y: .180000007} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22400016 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100020} + m_LocalRotation: {x: 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: 22400010} + m_RootOrder: 0 + m_AnchorMin: {x: .0199999996, y: .140000001} + m_AnchorMax: {x: .980000019, y: .860000014} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 100000} + m_IsPrefabParent: 1 diff --git a/Assets/Standard Assets/CrossPlatformInput/Prefabs/MobileAircraftControls.prefab.meta b/Assets/Standard Assets/CrossPlatformInput/Prefabs/MobileAircraftControls.prefab.meta new file mode 100644 index 0000000..6576b7a --- /dev/null +++ b/Assets/Standard Assets/CrossPlatformInput/Prefabs/MobileAircraftControls.prefab.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 3369231b1ed7ad34e84d9240a571db81 +NativeFormatImporter: + userData: + assetBundleName: diff --git a/Assets/Standard Assets/CrossPlatformInput/Prefabs/MobileSingleStickControl.prefab b/Assets/Standard Assets/CrossPlatformInput/Prefabs/MobileSingleStickControl.prefab new file mode 100644 index 0000000..1b677f8 --- /dev/null +++ b/Assets/Standard Assets/CrossPlatformInput/Prefabs/MobileSingleStickControl.prefab @@ -0,0 +1,376 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &100000 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22400000} + - 223: {fileID: 22300000} + - 114: {fileID: 11400000} + - 114: {fileID: 11400012} + m_Layer: 5 + m_Name: MobileSingleStickControl + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100002 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22400002} + - 222: {fileID: 22200002} + - 114: {fileID: 11400010} + - 114: {fileID: 11400008} + m_Layer: 5 + m_Name: MobileJoystick + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100004 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22400004} + - 222: {fileID: 22200000} + - 114: {fileID: 11400006} + - 114: {fileID: 11400004} + - 114: {fileID: 11400002} + m_Layer: 5 + m_Name: JumpButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100006 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22400006} + - 222: {fileID: 22200004} + - 114: {fileID: 11400016} + - 114: {fileID: 11400014} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100000} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1301386320, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + ignoreReversedGraphics: 1 + blockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &11400002 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100004} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 85bf3be603548374ca46f521a3aa7fda, type: 3} + m_Name: + m_EditorClassIdentifier: + Name: Jump +--- !u!114 &11400004 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100004} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -1862395651, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + delegates: + - eventID: 2 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 11400002} + m_MethodName: SetDownState + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: Jump + m_BoolArgument: 0 + m_CallState: 1 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + - eventID: 3 + callback: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 11400002} + m_MethodName: SetUpState + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: Jump + m_BoolArgument: 0 + m_CallState: 1 + m_TypeName: UnityEngine.EventSystems.EventTrigger+TriggerEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null +--- !u!114 &11400006 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100004} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 21300000, guid: 3d8675433a508ec47b8f895201eacf20, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11400008 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100002} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 00c3c865782347f41b6358d9fba14b48, type: 3} + m_Name: + m_EditorClassIdentifier: + MovementRange: 100 + axesToUse: 0 + horizontalAxisName: Horizontal + verticalAxisName: Vertical +--- !u!114 &11400010 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100002} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Sprite: {fileID: 21300000, guid: 9866a92691696b346901281f2b329034, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11400012 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100000} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 71398ce7fbc3a5b4fa50b50bd54317a7, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &11400014 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100006} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1573420865, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_EffectColor: {r: 0, g: 0, b: 0, a: .125490203} + m_EffectDistance: {x: 2, y: -2} + m_UseGraphicAlpha: 1 +--- !u!114 &11400016 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100006} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: .643137276} + m_FontData: + m_Font: {fileID: 12800000, guid: 01cd679a1b9ee48bf9c546f6ce2cb97e, type: 3} + m_FontSize: 26 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Jump +--- !u!222 &22200000 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100004} +--- !u!222 &22200002 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100002} +--- !u!222 &22200004 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100006} +--- !u!223 &22300000 +Canvas: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100000} + m_Enabled: 1 + serializedVersion: 2 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 1 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!224 &22400000 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100000} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 22400004} + - {fileID: 22400002} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!224 &22400002 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100002} + m_LocalRotation: {x: 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: 22400000} + m_RootOrder: 1 + m_AnchorMin: {x: .160000011, y: .200000003} + m_AnchorMax: {x: .160000011, y: .200000003} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 80, y: 80} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22400004 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100004} + m_LocalRotation: {x: 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: 22400006} + m_Father: {fileID: 22400000} + m_RootOrder: 0 + m_AnchorMin: {x: .779999971, y: .00999999978} + m_AnchorMax: {x: .99000001, y: .150000006} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!224 &22400006 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100006} + m_LocalRotation: {x: 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: 22400004} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: .5, y: .5} +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 100000} + m_IsPrefabParent: 1 diff --git a/Assets/Standard Assets/CrossPlatformInput/Prefabs/MobileSingleStickControl.prefab.meta b/Assets/Standard Assets/CrossPlatformInput/Prefabs/MobileSingleStickControl.prefab.meta new file mode 100644 index 0000000..8d63434 --- /dev/null +++ b/Assets/Standard Assets/CrossPlatformInput/Prefabs/MobileSingleStickControl.prefab.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 9529ecc3d479da5499993355e6c2cb4f +NativeFormatImporter: + userData: + assetBundleName: diff --git a/Assets/Standard Assets/CrossPlatformInput/Prefabs/MobileTiltControlRig.prefab b/Assets/Standard Assets/CrossPlatformInput/Prefabs/MobileTiltControlRig.prefab new file mode 100644 index 0000000..5356909 --- /dev/null +++ b/Assets/Standard Assets/CrossPlatformInput/Prefabs/MobileTiltControlRig.prefab @@ -0,0 +1,144 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &100000 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400000} + - 114: {fileID: 11400004} + m_Layer: 0 + m_Name: MobileTiltControlRig + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100002 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400002} + - 114: {fileID: 11400000} + m_Layer: 0 + m_Name: TiltSteerInputH + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &100004 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 400004} + - 114: {fileID: 11400002} + m_Layer: 0 + m_Name: TiltSteerInputV + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &400000 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100000} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 385.509033, y: 268.018066, z: -62.2695312} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 400004} + - {fileID: 400002} + m_Father: {fileID: 0} + m_RootOrder: 0 +--- !u!4 &400002 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100002} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -928.193604, y: -473.736786, z: -.00032043457} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 400000} + m_RootOrder: 1 +--- !u!4 &400004 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100004} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -928.193604, y: -473.736786, z: -.00032043457} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 400000} + m_RootOrder: 0 +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100002} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5c2d84226fbbaf94e9c1451f1c39b06a, type: 3} + m_Name: + m_EditorClassIdentifier: + mapping: + type: 0 + axisName: Horizontal + tiltAroundAxis: 0 + fullTiltAngle: 50 + centreAngleOffset: 0 +--- !u!114 &11400002 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100004} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5c2d84226fbbaf94e9c1451f1c39b06a, type: 3} + m_Name: + m_EditorClassIdentifier: + mapping: + type: 0 + axisName: Vertical + tiltAroundAxis: 1 + fullTiltAngle: -35 + centreAngleOffset: 45 +--- !u!114 &11400004 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100000} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 71398ce7fbc3a5b4fa50b50bd54317a7, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 100000} + m_IsPrefabParent: 1 diff --git a/Assets/Standard Assets/CrossPlatformInput/Prefabs/MobileTiltControlRig.prefab.meta b/Assets/Standard Assets/CrossPlatformInput/Prefabs/MobileTiltControlRig.prefab.meta new file mode 100644 index 0000000..271d5a2 --- /dev/null +++ b/Assets/Standard Assets/CrossPlatformInput/Prefabs/MobileTiltControlRig.prefab.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 999388b68bb99b44099461bfbed94358 +NativeFormatImporter: + userData: + assetBundleName: diff --git a/Assets/Standard Assets/CrossPlatformInput/Scripts.meta b/Assets/Standard Assets/CrossPlatformInput/Scripts.meta new file mode 100644 index 0000000..5c45353 --- /dev/null +++ b/Assets/Standard Assets/CrossPlatformInput/Scripts.meta @@ -0,0 +1,6 @@ +fileFormatVersion: 2 +guid: d88a0b7dd92c5524aaf2d65e569a6213 +folderAsset: yes +DefaultImporter: + userData: + assetBundleName: diff --git a/Assets/Standard Assets/CrossPlatformInput/Scripts/AxisTouchButton.cs b/Assets/Standard Assets/CrossPlatformInput/Scripts/AxisTouchButton.cs new file mode 100644 index 0000000..622138b --- /dev/null +++ b/Assets/Standard Assets/CrossPlatformInput/Scripts/AxisTouchButton.cs @@ -0,0 +1,75 @@ +using System; +using UnityEngine; +using UnityEngine.EventSystems; + +namespace UnityStandardAssets.CrossPlatformInput +{ + public class AxisTouchButton : MonoBehaviour, IPointerDownHandler, IPointerUpHandler + { + // designed to work in a pair with another axis touch button + // (typically with one having -1 and one having 1 axisValues) + public string axisName = "Horizontal"; // The name of the axis + public float axisValue = 1; // The axis that the value has + public float responseSpeed = 3; // The speed at which the axis touch button responds + public float returnToCentreSpeed = 3; // The speed at which the button will return to its centre + + AxisTouchButton m_PairedWith; // Which button this one is paired with + CrossPlatformInputManager.VirtualAxis m_Axis; // A reference to the virtual axis as it is in the cross platform input + + void OnEnable() + { + if (!CrossPlatformInputManager.AxisExists(axisName)) + { + // if the axis doesnt exist create a new one in cross platform input + m_Axis = new CrossPlatformInputManager.VirtualAxis(axisName); + CrossPlatformInputManager.RegisterVirtualAxis(m_Axis); + } + else + { + m_Axis = CrossPlatformInputManager.VirtualAxisReference(axisName); + } + FindPairedButton(); + } + + void FindPairedButton() + { + // find the other button witch which this button should be paired + // (it should have the same axisName) + var otherAxisButtons = FindObjectsOfType(typeof(AxisTouchButton)) as AxisTouchButton[]; + + if (otherAxisButtons != null) + { + for (int i = 0; i < otherAxisButtons.Length; i++) + { + if (otherAxisButtons[i].axisName == axisName && otherAxisButtons[i] != this) + { + m_PairedWith = otherAxisButtons[i]; + } + } + } + } + + void OnDisable() + { + // The object is disabled so remove it from the cross platform input system + m_Axis.Remove(); + } + + + public void OnPointerDown(PointerEventData data) + { + if (m_PairedWith == null) + { + FindPairedButton(); + } + // update the axis and record that the button has been pressed this frame + m_Axis.Update(Mathf.MoveTowards(m_Axis.GetValue, axisValue, responseSpeed * Time.deltaTime)); + } + + + public void OnPointerUp(PointerEventData data) + { + m_Axis.Update(Mathf.MoveTowards(m_Axis.GetValue, 0, responseSpeed * Time.deltaTime)); + } + } +} \ No newline at end of file diff --git a/Assets/Standard Assets/CrossPlatformInput/Scripts/AxisTouchButton.cs.meta b/Assets/Standard Assets/CrossPlatformInput/Scripts/AxisTouchButton.cs.meta new file mode 100644 index 0000000..241497f --- /dev/null +++ b/Assets/Standard Assets/CrossPlatformInput/Scripts/AxisTouchButton.cs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 9ab98b66288df7b4fa182075f2f12bd6 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: diff --git a/Assets/Standard Assets/CrossPlatformInput/Scripts/ButtonHandler.cs b/Assets/Standard Assets/CrossPlatformInput/Scripts/ButtonHandler.cs new file mode 100644 index 0000000..3b48f25 --- /dev/null +++ b/Assets/Standard Assets/CrossPlatformInput/Scripts/ButtonHandler.cs @@ -0,0 +1,50 @@ +using System; +using UnityEngine; + +namespace UnityStandardAssets.CrossPlatformInput +{ + public class ButtonHandler : MonoBehaviour + { + + public string Name; + + void OnEnable() + { + + } + + public void SetDownState() + { + CrossPlatformInputManager.SetButtonDown(Name); + } + + + public void SetUpState() + { + CrossPlatformInputManager.SetButtonUp(Name); + } + + + public void SetAxisPositiveState() + { + CrossPlatformInputManager.SetAxisPositive(Name); + } + + + public void SetAxisNeutralState() + { + CrossPlatformInputManager.SetAxisZero(Name); + } + + + public void SetAxisNegativeState() + { + CrossPlatformInputManager.SetAxisNegative(Name); + } + + public void Update() + { + + } + } +} diff --git a/Assets/Standard Assets/CrossPlatformInput/Scripts/ButtonHandler.cs.meta b/Assets/Standard Assets/CrossPlatformInput/Scripts/ButtonHandler.cs.meta new file mode 100644 index 0000000..1aadb06 --- /dev/null +++ b/Assets/Standard Assets/CrossPlatformInput/Scripts/ButtonHandler.cs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 85bf3be603548374ca46f521a3aa7fda +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: diff --git a/Assets/Standard Assets/CrossPlatformInput/Scripts/CrossPlatformInputManager.cs b/Assets/Standard Assets/CrossPlatformInput/Scripts/CrossPlatformInputManager.cs new file mode 100644 index 0000000..9d368c8 --- /dev/null +++ b/Assets/Standard Assets/CrossPlatformInput/Scripts/CrossPlatformInputManager.cs @@ -0,0 +1,318 @@ +using System; +using UnityEngine; +using UnityStandardAssets.CrossPlatformInput.PlatformSpecific; + +namespace UnityStandardAssets.CrossPlatformInput +{ + public static class CrossPlatformInputManager + { + public enum ActiveInputMethod + { + Hardware, + Touch + } + + + private static VirtualInput activeInput; + + private static VirtualInput s_TouchInput; + private static VirtualInput s_HardwareInput; + + + static CrossPlatformInputManager() + { + s_TouchInput = new MobileInput(); + s_HardwareInput = new StandaloneInput(); +#if MOBILE_INPUT + activeInput = s_TouchInput; +#else + activeInput = s_HardwareInput; +#endif + } + + public static void SwitchActiveInputMethod(ActiveInputMethod activeInputMethod) + { + switch (activeInputMethod) + { + case ActiveInputMethod.Hardware: + activeInput = s_HardwareInput; + break; + + case ActiveInputMethod.Touch: + activeInput = s_TouchInput; + break; + } + } + + public static bool AxisExists(string name) + { + return activeInput.AxisExists(name); + } + + public static bool ButtonExists(string name) + { + return activeInput.ButtonExists(name); + } + + public static void RegisterVirtualAxis(VirtualAxis axis) + { + activeInput.RegisterVirtualAxis(axis); + } + + + public static void RegisterVirtualButton(VirtualButton button) + { + activeInput.RegisterVirtualButton(button); + } + + + public static void UnRegisterVirtualAxis(string name) + { + if (name == null) + { + throw new ArgumentNullException("name"); + } + activeInput.UnRegisterVirtualAxis(name); + } + + + public static void UnRegisterVirtualButton(string name) + { + activeInput.UnRegisterVirtualButton(name); + } + + + // returns a reference to a named virtual axis if it exists otherwise null + public static VirtualAxis VirtualAxisReference(string name) + { + return activeInput.VirtualAxisReference(name); + } + + + // returns the platform appropriate axis for the given name + public static float GetAxis(string name) + { + return GetAxis(name, false); + } + + + public static float GetAxisRaw(string name) + { + return GetAxis(name, true); + } + + + // private function handles both types of axis (raw and not raw) + private static float GetAxis(string name, bool raw) + { + return activeInput.GetAxis(name, raw); + } + + + // -- Button handling -- + public static bool GetButton(string name) + { + return activeInput.GetButton(name); + } + + + public static bool GetButtonDown(string name) + { + return activeInput.GetButtonDown(name); + } + + + public static bool GetButtonUp(string name) + { + return activeInput.GetButtonUp(name); + } + + + public static void SetButtonDown(string name) + { + activeInput.SetButtonDown(name); + } + + + public static void SetButtonUp(string name) + { + activeInput.SetButtonUp(name); + } + + + public static void SetAxisPositive(string name) + { + activeInput.SetAxisPositive(name); + } + + + public static void SetAxisNegative(string name) + { + activeInput.SetAxisNegative(name); + } + + + public static void SetAxisZero(string name) + { + activeInput.SetAxisZero(name); + } + + + public static void SetAxis(string name, float value) + { + activeInput.SetAxis(name, value); + } + + + public static Vector3 mousePosition + { + get { return activeInput.MousePosition(); } + } + + + public static void SetVirtualMousePositionX(float f) + { + activeInput.SetVirtualMousePositionX(f); + } + + + public static void SetVirtualMousePositionY(float f) + { + activeInput.SetVirtualMousePositionY(f); + } + + + public static void SetVirtualMousePositionZ(float f) + { + activeInput.SetVirtualMousePositionZ(f); + } + + + // virtual axis and button classes - applies to mobile input + // Can be mapped to touch joysticks, tilt, gyro, etc, depending on desired implementation. + // Could also be implemented by other input devices - kinect, electronic sensors, etc + public class VirtualAxis + { + public string name { get; private set; } + private float m_Value; + public bool matchWithInputManager { get; private set; } + + + public VirtualAxis(string name) + : this(name, true) + { + } + + + public VirtualAxis(string name, bool matchToInputSettings) + { + this.name = name; + matchWithInputManager = matchToInputSettings; + } + + + // removes an axes from the cross platform input system + public void Remove() + { + UnRegisterVirtualAxis(name); + } + + + // a controller gameobject (eg. a virtual thumbstick) should update this class + public void Update(float value) + { + m_Value = value; + } + + + public float GetValue + { + get { return m_Value; } + } + + + public float GetValueRaw + { + get { return m_Value; } + } + } + + // a controller gameobject (eg. a virtual GUI button) should call the + // 'pressed' function of this class. Other objects can then read the + // Get/Down/Up state of this button. + public class VirtualButton + { + public string name { get; private set; } + public bool matchWithInputManager { get; private set; } + + private int m_LastPressedFrame = -5; + private int m_ReleasedFrame = -5; + private bool m_Pressed; + + + public VirtualButton(string name) + : this(name, true) + { + } + + + public VirtualButton(string name, bool matchToInputSettings) + { + this.name = name; + matchWithInputManager = matchToInputSettings; + } + + + // A controller gameobject should call this function when the button is pressed down + public void Pressed() + { + if (m_Pressed) + { + return; + } + m_Pressed = true; + m_LastPressedFrame = Time.frameCount; + } + + + // A controller gameobject should call this function when the button is released + public void Released() + { + m_Pressed = false; + m_ReleasedFrame = Time.frameCount; + } + + + // the controller gameobject should call Remove when the button is destroyed or disabled + public void Remove() + { + UnRegisterVirtualButton(name); + } + + + // these are the states of the button which can be read via the cross platform input system + public bool GetButton + { + get { return m_Pressed; } + } + + + public bool GetButtonDown + { + get + { + return m_LastPressedFrame - Time.frameCount == -1; + } + } + + + public bool GetButtonUp + { + get + { + return (m_ReleasedFrame == Time.frameCount - 1); + } + } + } + } +} diff --git a/Assets/Standard Assets/CrossPlatformInput/Scripts/CrossPlatformInputManager.cs.meta b/Assets/Standard Assets/CrossPlatformInput/Scripts/CrossPlatformInputManager.cs.meta new file mode 100644 index 0000000..ea900aa --- /dev/null +++ b/Assets/Standard Assets/CrossPlatformInput/Scripts/CrossPlatformInputManager.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6ac1ce5a5adfd9f46adbf5b6f752a47c +labels: +- Done +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: -1010 + icon: {instanceID: 0} + userData: + assetBundleName: diff --git a/Assets/Standard Assets/CrossPlatformInput/Scripts/InputAxisScrollbar.cs b/Assets/Standard Assets/CrossPlatformInput/Scripts/InputAxisScrollbar.cs new file mode 100644 index 0000000..c524fc2 --- /dev/null +++ b/Assets/Standard Assets/CrossPlatformInput/Scripts/InputAxisScrollbar.cs @@ -0,0 +1,17 @@ +using System; +using UnityEngine; + +namespace UnityStandardAssets.CrossPlatformInput +{ + public class InputAxisScrollbar : MonoBehaviour + { + public string axis; + + void Update() { } + + public void HandleInput(float value) + { + CrossPlatformInputManager.SetAxis(axis, (value*2f) - 1f); + } + } +} diff --git a/Assets/Standard Assets/CrossPlatformInput/Scripts/InputAxisScrollbar.cs.meta b/Assets/Standard Assets/CrossPlatformInput/Scripts/InputAxisScrollbar.cs.meta new file mode 100644 index 0000000..956782c --- /dev/null +++ b/Assets/Standard Assets/CrossPlatformInput/Scripts/InputAxisScrollbar.cs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 7d3269566d48b8447bb48d2259e28f8b +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: diff --git a/Assets/Standard Assets/CrossPlatformInput/Scripts/Joystick.cs b/Assets/Standard Assets/CrossPlatformInput/Scripts/Joystick.cs new file mode 100644 index 0000000..b01f5ef --- /dev/null +++ b/Assets/Standard Assets/CrossPlatformInput/Scripts/Joystick.cs @@ -0,0 +1,118 @@ +using System; +using UnityEngine; +using UnityEngine.EventSystems; + +namespace UnityStandardAssets.CrossPlatformInput +{ + public class Joystick : MonoBehaviour, IPointerDownHandler, IPointerUpHandler, IDragHandler + { + public enum AxisOption + { + // Options for which axes to use + Both, // Use both + OnlyHorizontal, // Only horizontal + OnlyVertical // Only vertical + } + + public int MovementRange = 100; + public AxisOption axesToUse = AxisOption.Both; // The options for the axes that the still will use + public string horizontalAxisName = "Horizontal"; // The name given to the horizontal axis for the cross platform input + public string verticalAxisName = "Vertical"; // The name given to the vertical axis for the cross platform input + + Vector3 m_StartPos; + bool m_UseX; // Toggle for using the x axis + bool m_UseY; // Toggle for using the Y axis + CrossPlatformInputManager.VirtualAxis m_HorizontalVirtualAxis; // Reference to the joystick in the cross platform input + CrossPlatformInputManager.VirtualAxis m_VerticalVirtualAxis; // Reference to the joystick in the cross platform input + + void OnEnable() + { + CreateVirtualAxes(); + } + + void Start() + { + m_StartPos = transform.position; + } + + void UpdateVirtualAxes(Vector3 value) + { + var delta = m_StartPos - value; + delta.y = -delta.y; + delta /= MovementRange; + if (m_UseX) + { + m_HorizontalVirtualAxis.Update(-delta.x); + } + + if (m_UseY) + { + m_VerticalVirtualAxis.Update(delta.y); + } + } + + void CreateVirtualAxes() + { + // set axes to use + m_UseX = (axesToUse == AxisOption.Both || axesToUse == AxisOption.OnlyHorizontal); + m_UseY = (axesToUse == AxisOption.Both || axesToUse == AxisOption.OnlyVertical); + + // create new axes based on axes to use + if (m_UseX) + { + m_HorizontalVirtualAxis = new CrossPlatformInputManager.VirtualAxis(horizontalAxisName); + CrossPlatformInputManager.RegisterVirtualAxis(m_HorizontalVirtualAxis); + } + if (m_UseY) + { + m_VerticalVirtualAxis = new CrossPlatformInputManager.VirtualAxis(verticalAxisName); + CrossPlatformInputManager.RegisterVirtualAxis(m_VerticalVirtualAxis); + } + } + + + public void OnDrag(PointerEventData data) + { + Vector3 newPos = Vector3.zero; + + if (m_UseX) + { + int delta = (int)(data.position.x - m_StartPos.x); + delta = Mathf.Clamp(delta, - MovementRange, MovementRange); + newPos.x = delta; + } + + if (m_UseY) + { + int delta = (int)(data.position.y - m_StartPos.y); + delta = Mathf.Clamp(delta, -MovementRange, MovementRange); + newPos.y = delta; + } + transform.position = new Vector3(m_StartPos.x + newPos.x, m_StartPos.y + newPos.y, m_StartPos.z + newPos.z); + UpdateVirtualAxes(transform.position); + } + + + public void OnPointerUp(PointerEventData data) + { + transform.position = m_StartPos; + UpdateVirtualAxes(m_StartPos); + } + + + public void OnPointerDown(PointerEventData data) { } + + void OnDisable() + { + // remove the joysticks from the cross platform input + if (m_UseX) + { + m_HorizontalVirtualAxis.Remove(); + } + if (m_UseY) + { + m_VerticalVirtualAxis.Remove(); + } + } + } +} \ No newline at end of file diff --git a/Assets/Standard Assets/CrossPlatformInput/Scripts/Joystick.cs.meta b/Assets/Standard Assets/CrossPlatformInput/Scripts/Joystick.cs.meta new file mode 100644 index 0000000..aaac767 --- /dev/null +++ b/Assets/Standard Assets/CrossPlatformInput/Scripts/Joystick.cs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 00c3c865782347f41b6358d9fba14b48 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: diff --git a/Assets/Standard Assets/CrossPlatformInput/Scripts/MobileControlRig.cs b/Assets/Standard Assets/CrossPlatformInput/Scripts/MobileControlRig.cs new file mode 100644 index 0000000..9cea0d9 --- /dev/null +++ b/Assets/Standard Assets/CrossPlatformInput/Scripts/MobileControlRig.cs @@ -0,0 +1,86 @@ +using System; +#if UNITY_EDITOR +using UnityEditor; +#endif +using UnityEngine; + + +namespace UnityStandardAssets.CrossPlatformInput +{ + [ExecuteInEditMode] + public class MobileControlRig : MonoBehaviour + { + // this script enables or disables the child objects of a control rig + // depending on whether the USE_MOBILE_INPUT define is declared. + + // This define is set or unset by a menu item that is included with + // the Cross Platform Input package. + +#if !UNITY_EDITOR + void OnEnable() + { + CheckEnableControlRig(); + } + #endif + + private void Start() + { +#if UNITY_EDITOR + if (Application.isPlaying) //if in the editor, need to check if we are playing, as start is also called just after exiting play +#endif + { + UnityEngine.EventSystems.EventSystem system = GameObject.FindObjectOfType(); + + if (system == null) + {//the scene have no event system, spawn one + GameObject o = new GameObject("EventSystem"); + + o.AddComponent(); + o.AddComponent(); + o.AddComponent(); + } + } + } + +#if UNITY_EDITOR + + private void OnEnable() + { + EditorUserBuildSettings.activeBuildTargetChanged += Update; + EditorApplication.update += Update; + } + + + private void OnDisable() + { + EditorUserBuildSettings.activeBuildTargetChanged -= Update; + EditorApplication.update -= Update; + } + + + private void Update() + { + CheckEnableControlRig(); + } +#endif + + + private void CheckEnableControlRig() + { +#if MOBILE_INPUT + EnableControlRig(true); + #else + EnableControlRig(false); +#endif + } + + + private void EnableControlRig(bool enabled) + { + foreach (Transform t in transform) + { + t.gameObject.SetActive(enabled); + } + } + } +} diff --git a/Assets/Standard Assets/CrossPlatformInput/Scripts/MobileControlRig.cs.meta b/Assets/Standard Assets/CrossPlatformInput/Scripts/MobileControlRig.cs.meta new file mode 100644 index 0000000..0ee49e8 --- /dev/null +++ b/Assets/Standard Assets/CrossPlatformInput/Scripts/MobileControlRig.cs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 71398ce7fbc3a5b4fa50b50bd54317a7 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: diff --git a/Assets/Standard Assets/CrossPlatformInput/Scripts/PlatformSpecific.meta b/Assets/Standard Assets/CrossPlatformInput/Scripts/PlatformSpecific.meta new file mode 100644 index 0000000..830670b --- /dev/null +++ b/Assets/Standard Assets/CrossPlatformInput/Scripts/PlatformSpecific.meta @@ -0,0 +1,6 @@ +fileFormatVersion: 2 +guid: f3f33f034733d9f4f9d439d80e26bdce +folderAsset: yes +DefaultImporter: + userData: + assetBundleName: diff --git a/Assets/Standard Assets/CrossPlatformInput/Scripts/PlatformSpecific/MobileInput.cs b/Assets/Standard Assets/CrossPlatformInput/Scripts/PlatformSpecific/MobileInput.cs new file mode 100644 index 0000000..0416715 --- /dev/null +++ b/Assets/Standard Assets/CrossPlatformInput/Scripts/PlatformSpecific/MobileInput.cs @@ -0,0 +1,133 @@ +using System; +using UnityEngine; + +namespace UnityStandardAssets.CrossPlatformInput.PlatformSpecific +{ + public class MobileInput : VirtualInput + { + private void AddButton(string name) + { + // we have not registered this button yet so add it, happens in the constructor + CrossPlatformInputManager.RegisterVirtualButton(new CrossPlatformInputManager.VirtualButton(name)); + } + + + private void AddAxes(string name) + { + // we have not registered this button yet so add it, happens in the constructor + CrossPlatformInputManager.RegisterVirtualAxis(new CrossPlatformInputManager.VirtualAxis(name)); + } + + + public override float GetAxis(string name, bool raw) + { + if (!m_VirtualAxes.ContainsKey(name)) + { + AddAxes(name); + } + return m_VirtualAxes[name].GetValue; + } + + + public override void SetButtonDown(string name) + { + if (!m_VirtualButtons.ContainsKey(name)) + { + AddButton(name); + } + m_VirtualButtons[name].Pressed(); + } + + + public override void SetButtonUp(string name) + { + if (!m_VirtualButtons.ContainsKey(name)) + { + AddButton(name); + } + m_VirtualButtons[name].Released(); + } + + + public override void SetAxisPositive(string name) + { + if (!m_VirtualAxes.ContainsKey(name)) + { + AddAxes(name); + } + m_VirtualAxes[name].Update(1f); + } + + + public override void SetAxisNegative(string name) + { + if (!m_VirtualAxes.ContainsKey(name)) + { + AddAxes(name); + } + m_VirtualAxes[name].Update(-1f); + } + + + public override void SetAxisZero(string name) + { + if (!m_VirtualAxes.ContainsKey(name)) + { + AddAxes(name); + } + m_VirtualAxes[name].Update(0f); + } + + + public override void SetAxis(string name, float value) + { + if (!m_VirtualAxes.ContainsKey(name)) + { + AddAxes(name); + } + m_VirtualAxes[name].Update(value); + } + + + public override bool GetButtonDown(string name) + { + if (m_VirtualButtons.ContainsKey(name)) + { + return m_VirtualButtons[name].GetButtonDown; + } + + AddButton(name); + return m_VirtualButtons[name].GetButtonDown; + } + + + public override bool GetButtonUp(string name) + { + if (m_VirtualButtons.ContainsKey(name)) + { + return m_VirtualButtons[name].GetButtonUp; + } + + AddButton(name); + return m_VirtualButtons[name].GetButtonUp; + } + + + public override bool GetButton(string name) + { + if (m_VirtualButtons.ContainsKey(name)) + { + return m_VirtualButtons[name].GetButton; + } + + AddButton(name); + return m_VirtualButtons[name].GetButton; + } + + + public override Vector3 MousePosition() + { + return virtualMousePosition; + } + } +} diff --git a/Assets/Standard Assets/CrossPlatformInput/Scripts/PlatformSpecific/MobileInput.cs.meta b/Assets/Standard Assets/CrossPlatformInput/Scripts/PlatformSpecific/MobileInput.cs.meta new file mode 100644 index 0000000..e0ffb74 --- /dev/null +++ b/Assets/Standard Assets/CrossPlatformInput/Scripts/PlatformSpecific/MobileInput.cs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 9703d53e47195aa4190acd11369ccd1b +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: diff --git a/Assets/Standard Assets/CrossPlatformInput/Scripts/PlatformSpecific/StandaloneInput.cs b/Assets/Standard Assets/CrossPlatformInput/Scripts/PlatformSpecific/StandaloneInput.cs new file mode 100644 index 0000000..374a1f5 --- /dev/null +++ b/Assets/Standard Assets/CrossPlatformInput/Scripts/PlatformSpecific/StandaloneInput.cs @@ -0,0 +1,79 @@ +using System; +using UnityEngine; + +namespace UnityStandardAssets.CrossPlatformInput.PlatformSpecific +{ + public class StandaloneInput : VirtualInput + { + public override float GetAxis(string name, bool raw) + { + return raw ? Input.GetAxisRaw(name) : Input.GetAxis(name); + } + + + public override bool GetButton(string name) + { + return Input.GetButton(name); + } + + + public override bool GetButtonDown(string name) + { + return Input.GetButtonDown(name); + } + + + public override bool GetButtonUp(string name) + { + return Input.GetButtonUp(name); + } + + + public override void SetButtonDown(string name) + { + throw new Exception( + " This is not possible to be called for standalone input. Please check your platform and code where this is called"); + } + + + public override void SetButtonUp(string name) + { + throw new Exception( + " This is not possible to be called for standalone input. Please check your platform and code where this is called"); + } + + + public override void SetAxisPositive(string name) + { + throw new Exception( + " This is not possible to be called for standalone input. Please check your platform and code where this is called"); + } + + + public override void SetAxisNegative(string name) + { + throw new Exception( + " This is not possible to be called for standalone input. Please check your platform and code where this is called"); + } + + + public override void SetAxisZero(string name) + { + throw new Exception( + " This is not possible to be called for standalone input. Please check your platform and code where this is called"); + } + + + public override void SetAxis(string name, float value) + { + throw new Exception( + " This is not possible to be called for standalone input. Please check your platform and code where this is called"); + } + + + public override Vector3 MousePosition() + { + return Input.mousePosition; + } + } +} \ No newline at end of file diff --git a/Assets/Standard Assets/CrossPlatformInput/Scripts/PlatformSpecific/StandaloneInput.cs.meta b/Assets/Standard Assets/CrossPlatformInput/Scripts/PlatformSpecific/StandaloneInput.cs.meta new file mode 100644 index 0000000..d4c99a6 --- /dev/null +++ b/Assets/Standard Assets/CrossPlatformInput/Scripts/PlatformSpecific/StandaloneInput.cs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 9961032f4f02c4f41997c3ea399d2f22 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: diff --git a/Assets/Standard Assets/CrossPlatformInput/Scripts/TiltInput.cs b/Assets/Standard Assets/CrossPlatformInput/Scripts/TiltInput.cs new file mode 100644 index 0000000..658fddd --- /dev/null +++ b/Assets/Standard Assets/CrossPlatformInput/Scripts/TiltInput.cs @@ -0,0 +1,145 @@ +using System; +using UnityEngine; +#if UNITY_EDITOR +using UnityEditor; +#endif + +namespace UnityStandardAssets.CrossPlatformInput +{ + // helps with managing tilt input on mobile devices + public class TiltInput : MonoBehaviour + { + // options for the various orientations + public enum AxisOptions + { + ForwardAxis, + SidewaysAxis, + } + + + [Serializable] + public class AxisMapping + { + public enum MappingType + { + NamedAxis, + MousePositionX, + MousePositionY, + MousePositionZ + }; + + + public MappingType type; + public string axisName; + } + + + public AxisMapping mapping; + public AxisOptions tiltAroundAxis = AxisOptions.ForwardAxis; + public float fullTiltAngle = 25; + public float centreAngleOffset = 0; + + + private CrossPlatformInputManager.VirtualAxis m_SteerAxis; + + + private void OnEnable() + { + if (mapping.type == AxisMapping.MappingType.NamedAxis) + { + m_SteerAxis = new CrossPlatformInputManager.VirtualAxis(mapping.axisName); + CrossPlatformInputManager.RegisterVirtualAxis(m_SteerAxis); + } + } + + + private void Update() + { + float angle = 0; + if (Input.acceleration != Vector3.zero) + { + switch (tiltAroundAxis) + { + case AxisOptions.ForwardAxis: + angle = Mathf.Atan2(Input.acceleration.x, -Input.acceleration.y)*Mathf.Rad2Deg + + centreAngleOffset; + break; + case AxisOptions.SidewaysAxis: + angle = Mathf.Atan2(Input.acceleration.z, -Input.acceleration.y)*Mathf.Rad2Deg + + centreAngleOffset; + break; + } + } + + float axisValue = Mathf.InverseLerp(-fullTiltAngle, fullTiltAngle, angle)*2 - 1; + switch (mapping.type) + { + case AxisMapping.MappingType.NamedAxis: + m_SteerAxis.Update(axisValue); + break; + case AxisMapping.MappingType.MousePositionX: + CrossPlatformInputManager.SetVirtualMousePositionX(axisValue*Screen.width); + break; + case AxisMapping.MappingType.MousePositionY: + CrossPlatformInputManager.SetVirtualMousePositionY(axisValue*Screen.width); + break; + case AxisMapping.MappingType.MousePositionZ: + CrossPlatformInputManager.SetVirtualMousePositionZ(axisValue*Screen.width); + break; + } + } + + + private void OnDisable() + { + m_SteerAxis.Remove(); + } + } +} + + +namespace UnityStandardAssets.CrossPlatformInput.Inspector +{ +#if UNITY_EDITOR + [CustomPropertyDrawer(typeof (TiltInput.AxisMapping))] + public class TiltInputAxisStylePropertyDrawer : PropertyDrawer + { + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + EditorGUI.BeginProperty(position, label, property); + + float x = position.x; + float y = position.y; + float inspectorWidth = position.width; + + // Don't make child fields be indented + var indent = EditorGUI.indentLevel; + EditorGUI.indentLevel = 0; + + var props = new[] {"type", "axisName"}; + var widths = new[] {.4f, .6f}; + if (property.FindPropertyRelative("type").enumValueIndex > 0) + { + // hide name if not a named axis + props = new[] {"type"}; + widths = new[] {1f}; + } + const float lineHeight = 18; + for (int n = 0; n < props.Length; ++n) + { + float w = widths[n]*inspectorWidth; + + // Calculate rects + Rect rect = new Rect(x, y, w, lineHeight); + x += w; + + EditorGUI.PropertyField(rect, property.FindPropertyRelative(props[n]), GUIContent.none); + } + + // Set indent back to what it was + EditorGUI.indentLevel = indent; + EditorGUI.EndProperty(); + } + } +#endif +} diff --git a/Assets/Standard Assets/CrossPlatformInput/Scripts/TiltInput.cs.meta b/Assets/Standard Assets/CrossPlatformInput/Scripts/TiltInput.cs.meta new file mode 100644 index 0000000..93f79bf --- /dev/null +++ b/Assets/Standard Assets/CrossPlatformInput/Scripts/TiltInput.cs.meta @@ -0,0 +1,13 @@ +fileFormatVersion: 2 +guid: 5c2d84226fbbaf94e9c1451f1c39b06a +labels: +- Not +- Fully +- Implemented +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: -1001 + icon: {instanceID: 0} + userData: + assetBundleName: diff --git a/Assets/Standard Assets/CrossPlatformInput/Scripts/TouchPad.cs b/Assets/Standard Assets/CrossPlatformInput/Scripts/TouchPad.cs new file mode 100644 index 0000000..4012331 --- /dev/null +++ b/Assets/Standard Assets/CrossPlatformInput/Scripts/TouchPad.cs @@ -0,0 +1,156 @@ +using System; +using UnityEngine; +using UnityEngine.EventSystems; +using UnityEngine.UI; + +namespace UnityStandardAssets.CrossPlatformInput +{ + [RequireComponent(typeof(Image))] + public class TouchPad : MonoBehaviour, IPointerDownHandler, IPointerUpHandler + { + // Options for which axes to use + public enum AxisOption + { + Both, // Use both + OnlyHorizontal, // Only horizontal + OnlyVertical // Only vertical + } + + + public enum ControlStyle + { + Absolute, // operates from teh center of the image + Relative, // operates from the center of the initial touch + Swipe, // swipe to touch touch no maintained center + } + + + public AxisOption axesToUse = AxisOption.Both; // The options for the axes that the still will use + public ControlStyle controlStyle = ControlStyle.Absolute; // control style to use + public string horizontalAxisName = "Horizontal"; // The name given to the horizontal axis for the cross platform input + public string verticalAxisName = "Vertical"; // The name given to the vertical axis for the cross platform input + public float Xsensitivity = 1f; + public float Ysensitivity = 1f; + + Vector3 m_StartPos; + Vector2 m_PreviousDelta; + Vector3 m_JoytickOutput; + bool m_UseX; // Toggle for using the x axis + bool m_UseY; // Toggle for using the Y axis + CrossPlatformInputManager.VirtualAxis m_HorizontalVirtualAxis; // Reference to the joystick in the cross platform input + CrossPlatformInputManager.VirtualAxis m_VerticalVirtualAxis; // Reference to the joystick in the cross platform input + bool m_Dragging; + int m_Id = -1; + Vector2 m_PreviousTouchPos; // swipe style control touch + + +#if !UNITY_EDITOR + private Vector3 m_Center; + private Image m_Image; +#else + Vector3 m_PreviousMouse; +#endif + + void OnEnable() + { + CreateVirtualAxes(); + } + + void Start() + { +#if !UNITY_EDITOR + m_Image = GetComponent(); + m_Center = m_Image.transform.position; +#endif + } + + void CreateVirtualAxes() + { + // set axes to use + m_UseX = (axesToUse == AxisOption.Both || axesToUse == AxisOption.OnlyHorizontal); + m_UseY = (axesToUse == AxisOption.Both || axesToUse == AxisOption.OnlyVertical); + + // create new axes based on axes to use + if (m_UseX) + { + m_HorizontalVirtualAxis = new CrossPlatformInputManager.VirtualAxis(horizontalAxisName); + CrossPlatformInputManager.RegisterVirtualAxis(m_HorizontalVirtualAxis); + } + if (m_UseY) + { + m_VerticalVirtualAxis = new CrossPlatformInputManager.VirtualAxis(verticalAxisName); + CrossPlatformInputManager.RegisterVirtualAxis(m_VerticalVirtualAxis); + } + } + + void UpdateVirtualAxes(Vector3 value) + { + value = value.normalized; + if (m_UseX) + { + m_HorizontalVirtualAxis.Update(value.x); + } + + if (m_UseY) + { + m_VerticalVirtualAxis.Update(value.y); + } + } + + + public void OnPointerDown(PointerEventData data) + { + m_Dragging = true; + m_Id = data.pointerId; +#if !UNITY_EDITOR + if (controlStyle != ControlStyle.Absolute ) + m_Center = data.position; +#endif + } + + void Update() + { + if (!m_Dragging) + { + return; + } + if (Input.touchCount >= m_Id + 1 && m_Id != -1) + { +#if !UNITY_EDITOR + + if (controlStyle == ControlStyle.Swipe) + { + m_Center = m_PreviousTouchPos; + m_PreviousTouchPos = Input.touches[m_Id].position; + } + Vector2 pointerDelta = new Vector2(Input.touches[m_Id].position.x - m_Center.x , Input.touches[m_Id].position.y - m_Center.y).normalized; + pointerDelta.x *= Xsensitivity; + pointerDelta.y *= Ysensitivity; +#else + Vector2 pointerDelta; + pointerDelta.x = Input.mousePosition.x - m_PreviousMouse.x; + pointerDelta.y = Input.mousePosition.y - m_PreviousMouse.y; + m_PreviousMouse = new Vector3(Input.mousePosition.x, Input.mousePosition.y, 0f); +#endif + UpdateVirtualAxes(new Vector3(pointerDelta.x, pointerDelta.y, 0)); + } + } + + + public void OnPointerUp(PointerEventData data) + { + m_Dragging = false; + m_Id = -1; + UpdateVirtualAxes(Vector3.zero); + } + + void OnDisable() + { + if (CrossPlatformInputManager.AxisExists(horizontalAxisName)) + CrossPlatformInputManager.UnRegisterVirtualAxis(horizontalAxisName); + + if (CrossPlatformInputManager.AxisExists(verticalAxisName)) + CrossPlatformInputManager.UnRegisterVirtualAxis(verticalAxisName); + } + } +} \ No newline at end of file diff --git a/Assets/Standard Assets/CrossPlatformInput/Scripts/TouchPad.cs.meta b/Assets/Standard Assets/CrossPlatformInput/Scripts/TouchPad.cs.meta new file mode 100644 index 0000000..0b176aa --- /dev/null +++ b/Assets/Standard Assets/CrossPlatformInput/Scripts/TouchPad.cs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 1caf40fc8bebb6b43b2550c05ca791d6 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: diff --git a/Assets/Standard Assets/CrossPlatformInput/Scripts/VirtualInput.cs b/Assets/Standard Assets/CrossPlatformInput/Scripts/VirtualInput.cs new file mode 100644 index 0000000..5ffec5a --- /dev/null +++ b/Assets/Standard Assets/CrossPlatformInput/Scripts/VirtualInput.cs @@ -0,0 +1,134 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + + +namespace UnityStandardAssets.CrossPlatformInput +{ + public abstract class VirtualInput + { + public Vector3 virtualMousePosition { get; private set; } + + + protected Dictionary m_VirtualAxes = + new Dictionary(); + // Dictionary to store the name relating to the virtual axes + protected Dictionary m_VirtualButtons = + new Dictionary(); + protected List m_AlwaysUseVirtual = new List(); + // list of the axis and button names that have been flagged to always use a virtual axis or button + + + public bool AxisExists(string name) + { + return m_VirtualAxes.ContainsKey(name); + } + + public bool ButtonExists(string name) + { + return m_VirtualButtons.ContainsKey(name); + } + + + public void RegisterVirtualAxis(CrossPlatformInputManager.VirtualAxis axis) + { + // check if we already have an axis with that name and log and error if we do + if (m_VirtualAxes.ContainsKey(axis.name)) + { + Debug.LogError("There is already a virtual axis named " + axis.name + " registered."); + } + else + { + // add any new axes + m_VirtualAxes.Add(axis.name, axis); + + // if we dont want to match with the input manager setting then revert to always using virtual + if (!axis.matchWithInputManager) + { + m_AlwaysUseVirtual.Add(axis.name); + } + } + } + + + public void RegisterVirtualButton(CrossPlatformInputManager.VirtualButton button) + { + // check if already have a buttin with that name and log an error if we do + if (m_VirtualButtons.ContainsKey(button.name)) + { + Debug.LogError("There is already a virtual button named " + button.name + " registered."); + } + else + { + // add any new buttons + m_VirtualButtons.Add(button.name, button); + + // if we dont want to match to the input manager then always use a virtual axis + if (!button.matchWithInputManager) + { + m_AlwaysUseVirtual.Add(button.name); + } + } + } + + + public void UnRegisterVirtualAxis(string name) + { + // if we have an axis with that name then remove it from our dictionary of registered axes + if (m_VirtualAxes.ContainsKey(name)) + { + m_VirtualAxes.Remove(name); + } + } + + + public void UnRegisterVirtualButton(string name) + { + // if we have a button with this name then remove it from our dictionary of registered buttons + if (m_VirtualButtons.ContainsKey(name)) + { + m_VirtualButtons.Remove(name); + } + } + + + // returns a reference to a named virtual axis if it exists otherwise null + public CrossPlatformInputManager.VirtualAxis VirtualAxisReference(string name) + { + return m_VirtualAxes.ContainsKey(name) ? m_VirtualAxes[name] : null; + } + + + public void SetVirtualMousePositionX(float f) + { + virtualMousePosition = new Vector3(f, virtualMousePosition.y, virtualMousePosition.z); + } + + + public void SetVirtualMousePositionY(float f) + { + virtualMousePosition = new Vector3(virtualMousePosition.x, f, virtualMousePosition.z); + } + + + public void SetVirtualMousePositionZ(float f) + { + virtualMousePosition = new Vector3(virtualMousePosition.x, virtualMousePosition.y, f); + } + + + public abstract float GetAxis(string name, bool raw); + + public abstract bool GetButton(string name); + public abstract bool GetButtonDown(string name); + public abstract bool GetButtonUp(string name); + + public abstract void SetButtonDown(string name); + public abstract void SetButtonUp(string name); + public abstract void SetAxisPositive(string name); + public abstract void SetAxisNegative(string name); + public abstract void SetAxisZero(string name); + public abstract void SetAxis(string name, float value); + public abstract Vector3 MousePosition(); + } +} diff --git a/Assets/Standard Assets/CrossPlatformInput/Scripts/VirtualInput.cs.meta b/Assets/Standard Assets/CrossPlatformInput/Scripts/VirtualInput.cs.meta new file mode 100644 index 0000000..8f6c44d --- /dev/null +++ b/Assets/Standard Assets/CrossPlatformInput/Scripts/VirtualInput.cs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 0f57aeb1b8dce3342bea5c28ac17db24 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: diff --git a/Assets/Standard Assets/CrossPlatformInput/Sprites.meta b/Assets/Standard Assets/CrossPlatformInput/Sprites.meta new file mode 100644 index 0000000..ed9098a --- /dev/null +++ b/Assets/Standard Assets/CrossPlatformInput/Sprites.meta @@ -0,0 +1,6 @@ +fileFormatVersion: 2 +guid: 4c4bc148459cd764dbb1d4e94e49299b +folderAsset: yes +DefaultImporter: + userData: + assetBundleName: diff --git a/Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonAcceleratorOverSprite.png b/Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonAcceleratorOverSprite.png new file mode 100644 index 0000000000000000000000000000000000000000..ebf8eddcb2bb49819fcd8db35e63830df2ef5282 GIT binary patch literal 10618 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 literal 0 HcmV?d00001 diff --git a/Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonAcceleratorUpSprite.png.meta b/Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonAcceleratorUpSprite.png.meta new file mode 100644 index 0000000..1ec1baa --- /dev/null +++ b/Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonAcceleratorUpSprite.png.meta @@ -0,0 +1,52 @@ +fileFormatVersion: 2 +guid: f588d850485d0ae479d73cf3bd0b7b00 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + 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: -1 + maxTextureSize: 256 + textureSettings: + filterMode: 1 + aniso: 16 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 1 + 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: 8 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: diff --git a/Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonArrowOverSprite.png b/Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonArrowOverSprite.png new file mode 100644 index 0000000000000000000000000000000000000000..e8d1848506019b900b22339e49bcf0e3c1d31bc3 GIT binary patch literal 8229 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 literal 0 HcmV?d00001 diff --git a/Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonArrowOverSprite.png.meta b/Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonArrowOverSprite.png.meta new file mode 100644 index 0000000..8af76bc --- /dev/null +++ b/Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonArrowOverSprite.png.meta @@ -0,0 +1,52 @@ +fileFormatVersion: 2 +guid: 49b611e658efbf443b686a4036f74fe3 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + 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: -1 + maxTextureSize: 256 + textureSettings: + filterMode: 1 + aniso: 16 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 1 + 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: 8 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: diff --git a/Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonArrowUpSprite.png b/Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonArrowUpSprite.png new file mode 100644 index 0000000000000000000000000000000000000000..11b1e8c90416382b12472be09e9b90d0cc1653a8 GIT binary patch literal 8376 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 literal 0 HcmV?d00001 diff --git a/Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonArrowUpSprite.png.meta b/Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonArrowUpSprite.png.meta new file mode 100644 index 0000000..05148c9 --- /dev/null +++ b/Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonArrowUpSprite.png.meta @@ -0,0 +1,52 @@ +fileFormatVersion: 2 +guid: 4db017495c69e8140a56a0e2b669e3f8 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + 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: -1 + maxTextureSize: 256 + textureSettings: + filterMode: 1 + aniso: 16 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 1 + 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: 8 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: diff --git a/Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonBrakeOverSprite.png b/Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonBrakeOverSprite.png new file mode 100644 index 0000000000000000000000000000000000000000..684d53a48ff0cf6c7ab5c793b85b1e40da7475d6 GIT binary patch literal 5818 zcmaJ_2{@Ep-#;^BS9p|=FeFiyv5c{1?8d$oD(jfh2s00pJtj-GEJZ0LO9}0gBqn1? z#7II@mh>n^3fZ^u-SfOp@AqEc^BEdT)6j)S9;ZG8%NPj{gDbz@QrlCn5NeVEMcSqZ!>?vl1 z6C~@HFoJ80gBw2PBwjB--uMvGFiIaX5JI5(A)`WqL&No>jO72es}Io}wz@p>ZxQNA zBl&*?RXj>V8;Q|V(?IKB^e`$&O=zr+(pA?)siO4s(OUW_P2@k9 zJmf7bfT-_cZuyTdXk;XRf=Z?6tE)#wMyf?>sgc71)iw0=^wd$B>YAFWkc4V@bSTv? zN;Ncm?{5p{gm8Qqi9#ijLy;Vde*WZBR3mvP(to88Lb131x8cz6e+mVaOg+kvqOPHa zQV$8?2SAb3PIh45KcZ7hKKMV?)|L{)$ady#1Vv|(RU0ZL7?~r zo0IXULI|N$oVk%aG@}+k3eYD6p#3pu9Zgk2fS#7Bw!b!B)enUxs%mNwb@kAC+S&oS z{=e<~H+>y5w6-P+t%=dHG}F+q(AG1x)YY}XXquT}Ec7%nroVM@q2W}&P(0zcZxZDD zA6(Zd4nIMrAkEDFMjff-P6`bmM}{kNVER|q=7ca( z1R=mOj2wdeyUzNg{}O{A0qw7c(ZQ>t{QR_4{r$8xRQ4G^yK&|wZc!hmi$cy_8YpUiy=^a9 zejEH(pQ5e6Apa)|CsSo10tJzucC*AY^BFGv@t+GvEPriJuXkR5 z?ml25cfPbNlX&-1fyjySE=ARuj&1VLB8uIN7V6Q`5^kN3X=2BBzW9V_?cR7@e}Dbj zdi_lJ?GHmk(%@#^?)4kDZ)e!FQNeQ&z^pueIk;gpH~ z%+{#9*ChwyWOBjgW-hh2f7t1xse0Rvh81_O)g+MitTXnGFu_K}K(lZ*OUAbjSvxbc+ zFdtb!3=HpAJ--`u+OxF;7vp;L0ZP{%$466={P>e)EN_HdtdJLbamXUdHpar_VN#d~ z@Vmk$qJ?o?doaIRT0)Wc^G2N{;w<#|XvlNMN0U^yl`w%kGpxx37Xi`?o%>>D~Q$<{wrxjHtLAUtXeq|WN17;O>D9$ zv_$(eD+Y4}5|@>^VYxYTfmNQW%$vK@|1z5-aX0JOn1Iik&*`MPBZbUfYwcs@VgiX? zTma_VE_-W2aT0Nz_ z**0Bb@EH-%iDFwDkN9-3&caz^1>C9pw3WhyGsT1335I5Wu+%zi^VYQe{1FWD-FnM4 zF}%bphHc-gn;|C(J3#L0{)X=MKTe%HrnL7->zrr`LmVeSGdEh1pC9_VR_q&J33P59 zn!~GTDERY~I81)6APH+Z$N}%VFXcqUR}XkHnJrsMqFyo628k^~2A(%XRs?Nnv)x;+ z=wiQkKA2Q^@v4TzvD^4y_Wu50>Zjr?-pLp3qn5_I>Ul+S=Y9kfef1)0InXM7ujU=v zRgstFA1RETXu>gLNJ8V=Or<_I2X#MTBYH`cl459 z(52_iwmsB%Hj?wc!&MqF??}0_IoytVf>dOAZ1(1O!ArR2hq4==qz+lP?`+#9RdZ}p zB3tD=op($y5ObJE^AfV1WpXRLP-@Efiwu}ZUGT$4*}4V72QJGZ>2gle8uLT;d0Cfb zMR&ucZbaZ8>YGl~<=E>OM9iG|?2nHP&p#x8H#=?hM|M@wNc%{$BtG@z#PmgP7Io;!!ZGzQn58H2lO%YHi<$nK{$n1E%jC@}55PSo38p@-%GhW9h_2 zZ)=0DmSIO^{(jh|+5su)iaEGM#L+n;=Jv%I?p1rUXld5Wr@*18>O5gAZ^cc6q+vX2 z*6PgWPdXH1iPS{8<;?lEQN+W04euE{keIwis|(_QjpbhY!Taq>YLa1`LT)TzKUFiR zuE1;xQoMrkZ)6XzNj$=a!q<}Yx5jku3zmpXtF#y#h(?l}FtB&N@wCLM`O)+lQLOtG zcTl{Q4}2$+UdY`j)v%A2FhnXCU-YKA=*rpOZPOXQ=nZd7TZP#WE06%c9ips+E47L&2EU8rs=MC50{@Fbfyh;YG^tv(wMDIXTGePJV zpuIvJtD)TrV}e(^faccrpa|Q#H&#Fl-=u9KN6`qfrM*NMV_(!WV^#HSf!Ahg)oP7) z8XH!rd#~?aA@`n~SKG!UyM;w0k{Z9Z6vMtv89QguYulE*L9^dbn*E@PuRBYNRttel zxlLcTVLRH?uf2BBy80aOrMw?a`ou-^u$KkNucn;f*iJ1+rrngV$N??7IHDMKw`>WV z_dQ$!8^f$!wj6=UH*3#yGKj#@C7fnG7l4G7+`Ljs)L-OD+xhkjQY)dxT`-L&AK;uB)kJ>JTuU!qyR2C5B=O|oh|)|sdJ?6UBhpbJUn`g zd2h+7(0yJ2*l+#7H_i3eYGtNwKXvf?)bZ^nHyG80$9~)sE|D6i2X^ToqLK?Es%En` zhmGHjOwGnec|db_)k}0=dt*Sp0%E`rYh*Crb`S4W>`hlP@9>cI@WEnaW=B<{c__vG z#W4}H%Sk6ko*s?BW(o|75AN?xXOA}Q<7J2jy}uG`l~uyGfZMYYjf0gax2Xp0uEg`w zYiF;;&HD=cp>fwSCfw}S!5VsM=5?4#*!1$dbY(*(Z_*m2?!Qa6ys_I!j;y5CL9r>`AWJ)F^>daBBtE#+MKD5SI@OIPIsI zyNnyfGr?H5F)cugUI8wfp9Z4Lo7dsK@I{!l_Kq+fT7qXu_8L$qd^Rnf^e7OFD=a;O zTkFsp-!*VE%!3fQ0*Vs?U~mg4HwfoS1AL_*_JBm*L15`BPIE&Q0)PaXFjOt6LHcg{ zpBOOd`*3+9QVZN?1LbSnA^>pFq%4ep%ZtisAYsZOav{Q!LpVXFA86+Txl8+?CzJ z_b|$Jj_SM$40yngm!@#Im!`o}JC3U_(?A!;A#iX&<0$e0V7+7iBgB~QBCsX{6arY! ziH?at1F=+yi{ucz`~bii^%G}fVpV2$qG8tD6^&mF=-b*<0Mf!efn#YU8_~~=6x-7w z1{$iM!mx@Cf(U1*Fb@y9gXxQE&Qdh<@XlCzIMBxQC)^>*a*DnVm6i#f3WMCT#f1BS zh2ucd13|*enKg(Jpb@LGc0>5;%*+kLdWW47jxfLW^CQp4{e-ZTq|Iq?P#$Tt=OE8% zf!umwiaApz2x^w4C{BC$2H)}q>GBm755&OLN^xu%%gq|ZDHN3wLHgLaWokTZ%xBjM zjnjX^k9@$ZKpx*l#}OdfjHVB}f?x`J+n*p!wSZnACbaoY~EL(bdbwcXpDaDw_ z>(9?P1TV^{#Xz2L(gwP5b7clAXoPBzN3q98?0)uq%oeg3c&HbZU-GPuSx~YlaV+cc zoEhnZV_nnU291_om)>~y>Bi5K_jS%UueGdk>CatS4(-$e<6=|qO}ff$f7T+lY~|z= z7gHAbcm90e2*=|5rTBkkPzbxid=!7JgFpZtZe|AeA|9&Y;@&`MV0WzFT*fZUdbw3#}$hK!-=rW0(IU;$^OG7N%tIe*`P`%&z-rzo9q4GEDrl(3t?ei2=f(&*Fu z?YJ5E9KCoUyG|oc4mG%Qje8&^{)}k*lU) zJ>XnLl`*z5|8w&NXv?dyXC7Gt$emAOgwO5(*Tu3=BVdUWkCv|sqCq~kp})~C0dT$Q z8jbzLL;I>+b@334FZsxfo_IQN5|wtZDU6541Eb+@_`vJ=zW6nslCtS#@9^^iVBduw z7gm)v5l+rBi{6<>z>3I2Gjs3q9B`oJ&M02(0+h>f{~RLiS6F{+mxVsacY5OfHf&9> zwVe%Qq)YF z0f^&^`*dJdQW0w!Jsf-Mul&dRJWB0CKCowkWNszE?stCI+%o2w%X(D}@i%Nf;A9b> z11grSeYx}zvo$o?%2m7Fb_s~M)FQ2fiu>#Y{wb-m8VCwoJg&DoOM-E@TTqyX#J=N} zIyW>We%g`wU^0?+aN|R)JO%Cpr+Nypyc4^=C0J{G4`BP8oy#)wgi}9hkOc9-<<+j4 zGrfGLc*X)@n5tE$XGL>B`LCQlJFm?qq3^tDE!!BY@a_U3lp=B;%cEHK*6ITn>6DRr$ z{N>ZV;J!4x`1TbuK5R?3@ynbLD-HUOd<|X3n4pvFVEMT{SQ#zY!7;m+;cyYz;JZEN9jOwtvd4$msb;Z)X8pSERXL7hq&TzPZ;kR$~4hs>39pDt-WG3gytGzw8_5j=Wu*{QYYVz2eVlp5l`EL84>Q$4pU5t z6anA;ORQ4q*ZV&e;MzoyR(y6x=5M*Zj7rh;4_s8`pK6o21YW4~-%a{Sxn{HNOKW?d zG)^-?z5wVE5lh{SJAF>=sGVo%-8GNn-WEiyi8mC zq_bp`vV9ZvHW7Fc5rc1@yy>v1x;R&S^ysF<*=yf;lOx3SPh?zIjO!ze>L#x|G>g%h6#gXwnz@^| z71ZN5w9*qTsCKqZ7Y935WL-Jua1+%3IiQa}l2V6>Y$2a|GR^ulNrqzlDMo5Fl3%4X z+3xvCfbZb8X*OeTAHpT!fQxgF4H@^KW5Ga)7ba4Ul&G9IL`o0Hk(&2)j(*4+IgK+K z`bMCidtF-1h5g(*whNtkbG_U%*~IzQM@70S`qjcqCFpa+JJiD@dvTkk;O3D&aQi}@ zRv+&L=(I2Auzy+vDx6k$o6w~s2l{sM{rz2JXO&`U zQ|Q%&`h~f}owHUF++2Xlm3TS>H9)v-__)MS}F$o%OQp{hS9cT_~z`=xRjlm7X2IX_ZpR6i9OJ6CqtD z*AR+L``6UJA6%UL<>Qsxv))wqwA*VX&x<--mwLa@TajEU?k@vCt^?bL1_R;qrM30G R8%hAWa25{c_f35h{|B-o8KwXL literal 0 HcmV?d00001 diff --git a/Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonBrakeOverSprite.png.meta b/Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonBrakeOverSprite.png.meta new file mode 100644 index 0000000..ae89df0 --- /dev/null +++ b/Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonBrakeOverSprite.png.meta @@ -0,0 +1,52 @@ +fileFormatVersion: 2 +guid: 5b1a64ea234fb2343b8d0686c51280de +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + 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: -1 + maxTextureSize: 256 + textureSettings: + filterMode: 1 + aniso: 16 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 1 + 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: 8 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: diff --git a/Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonBrakeUpSprite.png b/Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonBrakeUpSprite.png new file mode 100644 index 0000000000000000000000000000000000000000..578c00ceb2c2ee4070c96ea58fbd16ad1b3e4120 GIT binary patch literal 5873 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 literal 0 HcmV?d00001 diff --git a/Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonCameraCycleUpSprite.png.meta b/Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonCameraCycleUpSprite.png.meta new file mode 100644 index 0000000..3394885 --- /dev/null +++ b/Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonCameraCycleUpSprite.png.meta @@ -0,0 +1,52 @@ +fileFormatVersion: 2 +guid: a3983c59ebf804b4abba687bd7c9e92f +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + 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: -1 + maxTextureSize: 256 + textureSettings: + filterMode: 1 + aniso: 16 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 1 + 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: 8 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: diff --git a/Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonResetSprite.png b/Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonResetSprite.png new file mode 100644 index 0000000000000000000000000000000000000000..c5d88d99eba43b8a61f5fbfea115c9a8d2bb39e0 GIT binary patch literal 8412 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 literal 0 HcmV?d00001 diff --git a/Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonThumbstickOverSprite.png.meta b/Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonThumbstickOverSprite.png.meta new file mode 100644 index 0000000..11b1a1d --- /dev/null +++ b/Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonThumbstickOverSprite.png.meta @@ -0,0 +1,52 @@ +fileFormatVersion: 2 +guid: 5485e2f56028a3c4cb54f5caa167377e +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + 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: -1 + maxTextureSize: 256 + textureSettings: + filterMode: 1 + aniso: 16 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 1 + 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: 8 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: diff --git a/Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonThumbstickUpSprite.png b/Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonThumbstickUpSprite.png new file mode 100644 index 0000000000000000000000000000000000000000..0a4df1dd80fe8588d5fc5c90a979dbcdcaee6ef7 GIT binary patch literal 8278 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 literal 0 HcmV?d00001 diff --git a/Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonTimescaleFullUpSprite.png.meta b/Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonTimescaleFullUpSprite.png.meta new file mode 100644 index 0000000..efb87d8 --- /dev/null +++ b/Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonTimescaleFullUpSprite.png.meta @@ -0,0 +1,52 @@ +fileFormatVersion: 2 +guid: 0c6271a290ef75b4c97d58746c86c5b8 +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + 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: -1 + maxTextureSize: 256 + textureSettings: + filterMode: 1 + aniso: 16 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 1 + 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: 8 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: diff --git a/Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonTimescaleSlowUpSprite.png b/Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonTimescaleSlowUpSprite.png new file mode 100644 index 0000000000000000000000000000000000000000..e14ec79187e517cac99c31e0f37ad4cb2f1eb1bd GIT binary patch literal 9144 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 literal 0 HcmV?d00001 diff --git a/Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonTimescaleSlowUpSprite.png.meta b/Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonTimescaleSlowUpSprite.png.meta new file mode 100644 index 0000000..2296fcc --- /dev/null +++ b/Assets/Standard Assets/CrossPlatformInput/Sprites/ButtonTimescaleSlowUpSprite.png.meta @@ -0,0 +1,52 @@ +fileFormatVersion: 2 +guid: 9d7c6e4896067aa4fa512a00f692ac1c +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + 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: -1 + maxTextureSize: 256 + textureSettings: + filterMode: 1 + aniso: 16 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 1 + 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: 8 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: diff --git a/Assets/Standard Assets/CrossPlatformInput/Sprites/SliderBackgroundSprite.png b/Assets/Standard Assets/CrossPlatformInput/Sprites/SliderBackgroundSprite.png new file mode 100644 index 0000000000000000000000000000000000000000..64db848dfc16fd000f9d1f7db5d149d06753d83a GIT binary patch literal 2309 zcmdT_Yfuwc6uzi{MJU#S9gCyeSX!)I_K}2SBS9d65*4sO#i@vHc5iTTlMR~<1hkl{ z)7B0?rd1oORh(9Hc03ghiX3PR0Kn?>y_aOO|CoZ?huRc=BC@EX8NF}rgK@uyNA!4%9 z1uzTJY-!P67!N?VATDQ=G%9_#juEV}v=0;Ovf5=f0P#aycAA+0CBzI1IGbK^rDm%F z;aI&QSDlWh+YN9$msTdi?6Qm;rfdR3v5FxHNW4oY3s|8L>(K4GB}|^G*m31j?++@w-HiaW4IP0aTKR?YNZY*k+w%6 zXA@bAF3XtOmP=mg72_qzuEVgBl9JdGWvn0;U<5@`7*1j&iOLAnQEHQD7ix11Xjd>o z2P1NJi4$yyPmwkYPD!tjojy8()t;W-A#8KB6-q7{=A!Kw5sPD1tM6QXv_r~*k8L~? z?Z_#$Lo5qA1gFTz_hA{(PL^xed7^e8%XHxEPLcPYlVvc-Lo2jN4%rmpcO*O4Ws019 zfi!Ov7^m;6$*5O2ogAxE8%bPCkt#}=oN7!a2#Qc8Y1I^NR1#`jYtZ_V`2?OM$~&>F z%#9$d#jju-szA;-!@_}_?rWX$>nUUP~sTqyUjMgP~?gsn<@%c#D5(+?ins97^fj{ zHI8cIG-lKcRSZf~7Kq}E*`lSCP(_$=MH`=eqIB&QAW6o|swfg=DHfs@l?tMik~X6n zHKn9*N=rhLRba9ymeEO^#KX3JP2#1ti06DgqvL5?fm|Gvg%;Y$ONxYSo@1eyEKgs7 zC^&6wwq4{T7?1gSljmfzKYFBtJ)!R3exjM%k@AH2!j93D7ahY5ZSq8m^5_n$Dr%5_ z5$2kVNja{TOGk;coT9$luGOf%=-JY;Gb!5s%bB#a<)$4+lOhW3Mf|Gu+XsG`H#I1@ zZXQ1r@0Hg#@ZI1dN2n%yl?lCVW*ExTpWJ?li?}l*IVx`DlJ%_U!Cg~FKpRy z*t=`^&Wc^3b>2Gf`_V^gPI;z!E_-fz4tjPRuAN%AAQv3;{6SnX=YKOfST{`cOx``I z;_keM54Lv2d##PgUORTrj0VqL&krN3y(d1ZzSraYVDZjtV++q88Z+LxtNdtWVrKn0 z4>xhzkfzso;8}7in-n%_YS3R0R8)x$1GgoeV`b&4{9RRJ zBHgFA47uC7GhpzPpIWN(?%&^Mx`A$s`nZ3Hfaou_<^^2Z9oiBeaV)=n#I2CZvsVpV z=(2)`Bsf*vWhuERY}@h=5?54Mx?cS)p)zM*_rbnK&Mwo%t;h9u;u43K@}b zFt`|;i3SL81JDI@?=0A#6dyh=A$se{o4FZ7Zk^s6v-nO#aZuw6p3JRGzjI!uwU_c@ zc5|O|$5C*nUuQzklk90smvMnlZ*^++dBFc!;NMC9XOa>58zN61_}WuVJ!oEh*Xx{F zxH&)bVb$osIalu21cKvTK{wD7B>MizJAzMpy0gD`XHgA7C-%sVHFHfs^Xl-JxnJ=h z?o!vGa6pv%%B_HXUV0=#6LgZoH#IV(M>tbtS_#2KS-o6 z*M-(CRE-UI9rLX1AG2=L?vuiciDuOD>&(j8y_=Nzn=bUOTr$W)S$^J9iH|fdWA?4V zYA>t?dk57odkI_@D1B2wL#zGh)DJ(KIBmY?cI2#=-L<;(#;e0`ZE0OL+HDy?3?tNk zPdn0FF@M&f!ka@c$M@Bi1~)QqFuxBfpWa>iuBHwG#A~h7 z9}t_1!*BnkJzFVWyD@n0_OUal+J?a!hXMDLJA<}?_e$r4uylevH2|1WGK?#e$4&VM D(of}V literal 0 HcmV?d00001 diff --git a/Assets/Standard Assets/CrossPlatformInput/Sprites/SliderBackgroundSprite.png.meta b/Assets/Standard Assets/CrossPlatformInput/Sprites/SliderBackgroundSprite.png.meta new file mode 100644 index 0000000..b9d74d9 --- /dev/null +++ b/Assets/Standard Assets/CrossPlatformInput/Sprites/SliderBackgroundSprite.png.meta @@ -0,0 +1,53 @@ +fileFormatVersion: 2 +guid: ea5873cfd9158664f89459f0c9e1d853 +TextureImporter: + fileIDToRecycleName: + 21300000: SliderBackground + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + 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: -1 + maxTextureSize: 256 + textureSettings: + filterMode: 1 + aniso: 16 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 31, y: 15, z: 31, w: 15} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 8 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: diff --git a/Assets/Standard Assets/CrossPlatformInput/Sprites/SliderHandleSprite.png b/Assets/Standard Assets/CrossPlatformInput/Sprites/SliderHandleSprite.png new file mode 100644 index 0000000000000000000000000000000000000000..0dd9c199f361f30893a4b7aaf0d50d287fc22937 GIT binary patch literal 1671 zcmb_dZ%hIYSOZ|`wlj6yXWrW z9bnCc*Z>tto0_6cu^+0`1X4@?1RHy~Yi(=VC^cznQ&a-fLJgp((bg!^cfe6U7(bZq zhuwMa&HQHOH#2WriVI&#Te4~i03fYkld}YX$B+oZi<8m&(wDvQgACo}(YGl+J;qBtgrcD&5&rrZGstdcg>t8iO=VX07GEwCcKaRZhU;t+rz>O2N$4u3+wPlhl zDnV^syiBuMJE1D=gkrv`_^}zDIq3m0&{oj~d5R}&CXpv-6T=WT9+66>M~s=m z=j_G%_?zuhw1e^pB*Nhs-f9wz6ic9#j08S}C`2;eI`_3w zVhiaw3r_)D5H5&(cqBH=`jG34i-3bOGEwR{XOoi+~r~Z=gZiU#?+MT;jWnB z(&DOcexV$D@92W(kFU&VIlJQR;fgE!R;DyW_PWB~wMC0oWsJXBaro~)%0E#1mJKpf zpDx5e7@>m2;8BIxnyK*(@04)I*N*1wYZ~+1@RarR`7?KIIo7jUxOnQ-?{khdjNE=> zAQ-)zjJ7^4Fm#wv4`|at-g5&hvvxiGZ z@0`qvUD%NO`N*j@@aJ@M<*k(Wzvvj>)%Nk#%jV+6xe<~=}iCX)Y!ZBMxQ-1H5NhNi8H~U*dTe}hx+VezrRqmIpbEBXY89GSa;<5 za7UzZY0kWCpUH> zk|s5<<67tPtaG0o$_!uYxZQq}obC+v-Dv}hqR)=1!X$U@>j9^&w|A0=6b{J4?I)(X st{jZ^-3Wm2FGC;29<2!`7v4*yfa_(IJm_o)p+5sCa1}Z~$*XAm7rtC34*&oF literal 0 HcmV?d00001 diff --git a/Assets/Standard Assets/CrossPlatformInput/Sprites/SliderHandleSprite.png.meta b/Assets/Standard Assets/CrossPlatformInput/Sprites/SliderHandleSprite.png.meta new file mode 100644 index 0000000..a323916 --- /dev/null +++ b/Assets/Standard Assets/CrossPlatformInput/Sprites/SliderHandleSprite.png.meta @@ -0,0 +1,52 @@ +fileFormatVersion: 2 +guid: 0626b924325d1c34cafa6b22297f4e4f +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + 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: -1 + maxTextureSize: 256 + textureSettings: + filterMode: 1 + aniso: 16 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 1 + 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: 8 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: diff --git a/Assets/Standard Assets/CrossPlatformInput/Sprites/TouchpadSprite.png b/Assets/Standard Assets/CrossPlatformInput/Sprites/TouchpadSprite.png new file mode 100644 index 0000000000000000000000000000000000000000..9b86e30d8c798957305f7b45625bab0ff2fd8cc8 GIT binary patch literal 3828 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 literal 0 HcmV?d00001 diff --git a/Assets/Standard Assets/CrossPlatformInput/Sprites/TouchpadSprite.png.meta b/Assets/Standard Assets/CrossPlatformInput/Sprites/TouchpadSprite.png.meta new file mode 100644 index 0000000..fc51dbc --- /dev/null +++ b/Assets/Standard Assets/CrossPlatformInput/Sprites/TouchpadSprite.png.meta @@ -0,0 +1,53 @@ +fileFormatVersion: 2 +guid: e4f1fee3de32377429fd1348fae62b10 +TextureImporter: + fileIDToRecycleName: + 21300000: JumpButton + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + 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: -1 + maxTextureSize: 1024 + textureSettings: + filterMode: 1 + aniso: 16 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spriteBorder: {x: 65, y: 65, z: 65, w: 65} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 8 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: + assetBundleName: diff --git a/Assets/Standard Assets/PhysicsMaterials.meta b/Assets/Standard Assets/PhysicsMaterials.meta new file mode 100644 index 0000000..167a666 --- /dev/null +++ b/Assets/Standard Assets/PhysicsMaterials.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 5eebb5849c50a2c4ea24ded96e6f3aac +folderAsset: yes +timeCreated: 1427462663 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Standard Assets/PhysicsMaterials/Bouncy.physicmaterial b/Assets/Standard Assets/PhysicsMaterials/Bouncy.physicmaterial new file mode 100644 index 0000000..63101ab --- /dev/null +++ b/Assets/Standard Assets/PhysicsMaterials/Bouncy.physicmaterial @@ -0,0 +1,19 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!134 &13400000 +PhysicMaterial: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Bouncy + dynamicFriction: .300000012 + staticFriction: .300000012 + bounciness: 1 + frictionCombine: 0 + bounceCombine: 3 + frictionDirection2: {x: 0, y: 0, z: 0} + dynamicFriction2: 0 + staticFriction2: 0 +--- !u!1002 &13400001 +EditorExtensionImpl: + serializedVersion: 6 diff --git a/Assets/Standard Assets/PhysicsMaterials/Bouncy.physicmaterial.meta b/Assets/Standard Assets/PhysicsMaterials/Bouncy.physicmaterial.meta new file mode 100644 index 0000000..e61af05 --- /dev/null +++ b/Assets/Standard Assets/PhysicsMaterials/Bouncy.physicmaterial.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9f93f63d068b08c459038c40fce897d8 +timeCreated: 1427463081 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Standard Assets/PhysicsMaterials/Ice.physicmaterial b/Assets/Standard Assets/PhysicsMaterials/Ice.physicmaterial new file mode 100644 index 0000000..badde0f --- /dev/null +++ b/Assets/Standard Assets/PhysicsMaterials/Ice.physicmaterial @@ -0,0 +1,19 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!134 &13400000 +PhysicMaterial: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Ice + dynamicFriction: .100000001 + staticFriction: .100000001 + bounciness: 0 + frictionCombine: 2 + bounceCombine: 2 + frictionDirection2: {x: 0, y: 0, z: 0} + dynamicFriction2: 0 + staticFriction2: 0 +--- !u!1002 &13400001 +EditorExtensionImpl: + serializedVersion: 6 diff --git a/Assets/Standard Assets/PhysicsMaterials/Ice.physicmaterial.meta b/Assets/Standard Assets/PhysicsMaterials/Ice.physicmaterial.meta new file mode 100644 index 0000000..867b252 --- /dev/null +++ b/Assets/Standard Assets/PhysicsMaterials/Ice.physicmaterial.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ba92fb44336020f40bdf294bb66bc9da +timeCreated: 1427463081 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Standard Assets/PhysicsMaterials/MaxFriction.physicMaterial b/Assets/Standard Assets/PhysicsMaterials/MaxFriction.physicMaterial new file mode 100644 index 0000000..ed55da9 --- /dev/null +++ b/Assets/Standard Assets/PhysicsMaterials/MaxFriction.physicMaterial @@ -0,0 +1,16 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!134 &13400000 +PhysicMaterial: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: MaxFriction + dynamicFriction: 1 + staticFriction: 1 + bounciness: 0 + frictionCombine: 3 + bounceCombine: 0 + frictionDirection2: {x: 0, y: 0, z: 0} + dynamicFriction2: 0 + staticFriction2: 0 diff --git a/Assets/Standard Assets/PhysicsMaterials/MaxFriction.physicMaterial.meta b/Assets/Standard Assets/PhysicsMaterials/MaxFriction.physicMaterial.meta new file mode 100644 index 0000000..9e5494f --- /dev/null +++ b/Assets/Standard Assets/PhysicsMaterials/MaxFriction.physicMaterial.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e52fb17f9b1e7fd48b8955f1391d3688 +timeCreated: 1427463081 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Standard Assets/PhysicsMaterials/Metal.physicmaterial b/Assets/Standard Assets/PhysicsMaterials/Metal.physicmaterial new file mode 100644 index 0000000..13c5df6 --- /dev/null +++ b/Assets/Standard Assets/PhysicsMaterials/Metal.physicmaterial @@ -0,0 +1,19 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!134 &13400000 +PhysicMaterial: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Metal + dynamicFriction: .150000006 + staticFriction: .150000006 + bounciness: 0 + frictionCombine: 1 + bounceCombine: 0 + frictionDirection2: {x: 0, y: 0, z: 0} + dynamicFriction2: 0 + staticFriction2: 0 +--- !u!1002 &13400001 +EditorExtensionImpl: + serializedVersion: 6 diff --git a/Assets/Standard Assets/PhysicsMaterials/Metal.physicmaterial.meta b/Assets/Standard Assets/PhysicsMaterials/Metal.physicmaterial.meta new file mode 100644 index 0000000..7bbef68 --- /dev/null +++ b/Assets/Standard Assets/PhysicsMaterials/Metal.physicmaterial.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 01571ba68fb2dad46aa03094ab219579 +timeCreated: 1427463081 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Standard Assets/PhysicsMaterials/Rubber.physicmaterial b/Assets/Standard Assets/PhysicsMaterials/Rubber.physicmaterial new file mode 100644 index 0000000..1260bec --- /dev/null +++ b/Assets/Standard Assets/PhysicsMaterials/Rubber.physicmaterial @@ -0,0 +1,19 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!134 &13400000 +PhysicMaterial: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Rubber + dynamicFriction: 1 + staticFriction: 1 + bounciness: .5 + frictionCombine: 3 + bounceCombine: 0 + frictionDirection2: {x: 0, y: 0, z: 0} + dynamicFriction2: 0 + staticFriction2: 0 +--- !u!1002 &13400001 +EditorExtensionImpl: + serializedVersion: 6 diff --git a/Assets/Standard Assets/PhysicsMaterials/Rubber.physicmaterial.meta b/Assets/Standard Assets/PhysicsMaterials/Rubber.physicmaterial.meta new file mode 100644 index 0000000..99c8d4e --- /dev/null +++ b/Assets/Standard Assets/PhysicsMaterials/Rubber.physicmaterial.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 52baaeb214519f347a35cf0edfd262ff +timeCreated: 1427463081 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Standard Assets/PhysicsMaterials/Wood.physicmaterial b/Assets/Standard Assets/PhysicsMaterials/Wood.physicmaterial new file mode 100644 index 0000000..b6305f7 --- /dev/null +++ b/Assets/Standard Assets/PhysicsMaterials/Wood.physicmaterial @@ -0,0 +1,19 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!134 &13400000 +PhysicMaterial: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Wood + dynamicFriction: .449999988 + staticFriction: .449999988 + bounciness: 0 + frictionCombine: 0 + bounceCombine: 0 + frictionDirection2: {x: 0, y: 0, z: 0} + dynamicFriction2: 0 + staticFriction2: 0 +--- !u!1002 &13400001 +EditorExtensionImpl: + serializedVersion: 6 diff --git a/Assets/Standard Assets/PhysicsMaterials/Wood.physicmaterial.meta b/Assets/Standard Assets/PhysicsMaterials/Wood.physicmaterial.meta new file mode 100644 index 0000000..d814eca --- /dev/null +++ b/Assets/Standard Assets/PhysicsMaterials/Wood.physicmaterial.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3aeb7dadc0c69d54d9e5777e9d5631f1 +timeCreated: 1427463081 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Standard Assets/PhysicsMaterials/ZeroFriction.physicMaterial b/Assets/Standard Assets/PhysicsMaterials/ZeroFriction.physicMaterial new file mode 100644 index 0000000..4a45cf3 --- /dev/null +++ b/Assets/Standard Assets/PhysicsMaterials/ZeroFriction.physicMaterial @@ -0,0 +1,16 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!134 &13400000 +PhysicMaterial: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: ZeroFriction + dynamicFriction: 0 + staticFriction: 0 + bounciness: 0 + frictionCombine: 2 + bounceCombine: 0 + frictionDirection2: {x: 0, y: 0, z: 0} + dynamicFriction2: 0 + staticFriction2: 0 diff --git a/Assets/Standard Assets/PhysicsMaterials/ZeroFriction.physicMaterial.meta b/Assets/Standard Assets/PhysicsMaterials/ZeroFriction.physicMaterial.meta new file mode 100644 index 0000000..a3a5eae --- /dev/null +++ b/Assets/Standard Assets/PhysicsMaterials/ZeroFriction.physicMaterial.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c2815a7ab32e42c4bb42f59caacb8ec1 +timeCreated: 1427463081 +licenseType: Pro +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Standard Assets/Utility.meta b/Assets/Standard Assets/Utility.meta new file mode 100644 index 0000000..c4b44b3 --- /dev/null +++ b/Assets/Standard Assets/Utility.meta @@ -0,0 +1,6 @@ +fileFormatVersion: 2 +guid: 8fb26caddeedb41c9ae5c09a23c52942 +folderAsset: yes +DefaultImporter: + userData: + assetBundleName: diff --git a/Assets/Standard Assets/Utility/ActivateTrigger.cs b/Assets/Standard Assets/Utility/ActivateTrigger.cs new file mode 100644 index 0000000..1687533 --- /dev/null +++ b/Assets/Standard Assets/Utility/ActivateTrigger.cs @@ -0,0 +1,95 @@ +using System; +using UnityEngine; +using Object = UnityEngine.Object; + +namespace UnityStandardAssets.Utility +{ + public class ActivateTrigger : MonoBehaviour + { + // A multi-purpose script which causes an action to occur when + // a trigger collider is entered. + public enum Mode + { + Trigger = 0, // Just broadcast the action on to the target + Replace = 1, // replace target with source + Activate = 2, // Activate the target GameObject + Enable = 3, // Enable a component + Animate = 4, // Start animation on target + Deactivate = 5 // Decativate target GameObject + } + + public Mode action = Mode.Activate; // The action to accomplish + public Object target; // The game object to affect. If none, the trigger work on this game object + public GameObject source; + public int triggerCount = 1; + public bool repeatTrigger = false; + + + private void DoActivateTrigger() + { + triggerCount--; + + if (triggerCount == 0 || repeatTrigger) + { + Object currentTarget = target ?? gameObject; + Behaviour targetBehaviour = currentTarget as Behaviour; + GameObject targetGameObject = currentTarget as GameObject; + if (targetBehaviour != null) + { + targetGameObject = targetBehaviour.gameObject; + } + + switch (action) + { + case Mode.Trigger: + if (targetGameObject != null) + { + targetGameObject.BroadcastMessage("DoActivateTrigger"); + } + break; + case Mode.Replace: + if (source != null) + { + if (targetGameObject != null) + { + Instantiate(source, targetGameObject.transform.position, + targetGameObject.transform.rotation); + DestroyObject(targetGameObject); + } + } + break; + case Mode.Activate: + if (targetGameObject != null) + { + targetGameObject.SetActive(true); + } + break; + case Mode.Enable: + if (targetBehaviour != null) + { + targetBehaviour.enabled = true; + } + break; + case Mode.Animate: + if (targetGameObject != null) + { + targetGameObject.GetComponent().Play(); + } + break; + case Mode.Deactivate: + if (targetGameObject != null) + { + targetGameObject.SetActive(false); + } + break; + } + } + } + + + private void OnTriggerEnter(Collider other) + { + DoActivateTrigger(); + } + } +} diff --git a/Assets/Standard Assets/Utility/ActivateTrigger.cs.meta b/Assets/Standard Assets/Utility/ActivateTrigger.cs.meta new file mode 100644 index 0000000..fd86651 --- /dev/null +++ b/Assets/Standard Assets/Utility/ActivateTrigger.cs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: c8634e062924929664361c08745211fb +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: diff --git a/Assets/Standard Assets/Utility/AutoMobileShaderSwitch.cs b/Assets/Standard Assets/Utility/AutoMobileShaderSwitch.cs new file mode 100644 index 0000000..681c480 --- /dev/null +++ b/Assets/Standard Assets/Utility/AutoMobileShaderSwitch.cs @@ -0,0 +1,199 @@ +using System; +using System.Collections.Generic; +using UnityEngine; +#if UNITY_EDITOR +using UnityEditor; +#endif + +namespace UnityStandardAssets.Utility +{ + public class AutoMobileShaderSwitch : MonoBehaviour + { + [SerializeField] private ReplacementList m_ReplacementList; + + // Use this for initialization + private void OnEnable() + { +#if UNITY_IPHONE || UNITY_ANDROID || UNITY_WP8 || UNITY_BLACKBERRY + var renderers = FindObjectsOfType(); + Debug.Log (renderers.Length+" renderers"); + var oldMaterials = new List(); + var newMaterials = new List(); + + int materialsReplaced = 0; + int materialInstancesReplaced = 0; + + foreach(ReplacementDefinition replacementDef in m_ReplacementList.items) + { + foreach(var r in renderers) + { + Material[] modifiedMaterials = null; + for(int n=0; n 0) + { + for (int i = -1; i < items.arraySize; ++i) + { + var item = items.GetArrayElementAtIndex(i); + + float rowX = x; + for (int n = 0; n < props.Length; ++n) + { + float w = widths[n]*inspectorWidth; + + // Calculate rects + Rect rect = new Rect(rowX, y, w, lineHeight); + rowX += w; + + if (i == -1) + { + // draw title labels + EditorGUI.LabelField(rect, titles[n]); + } + else + { + if (props[n] == "-" || props[n] == "^" || props[n] == "v") + { + if (GUI.Button(rect, props[n])) + { + switch (props[n]) + { + case "-": + items.DeleteArrayElementAtIndex(i); + items.DeleteArrayElementAtIndex(i); + changedLength = true; + break; + case "v": + if (i > 0) + { + items.MoveArrayElement(i, i + 1); + } + break; + case "^": + if (i < items.arraySize - 1) + { + items.MoveArrayElement(i, i - 1); + } + break; + } + } + } + else + { + SerializedProperty prop = item.FindPropertyRelative(props[n]); + EditorGUI.PropertyField(rect, prop, GUIContent.none); + } + } + } + + y += lineHeight + k_Spacing; + if (changedLength) + { + break; + } + } + } + + // add button + var addButtonRect = new Rect((x + position.width) - widths[widths.Length - 1]*inspectorWidth, y, + widths[widths.Length - 1]*inspectorWidth, lineHeight); + if (GUI.Button(addButtonRect, "+")) + { + items.InsertArrayElementAtIndex(items.arraySize); + } + + y += lineHeight + k_Spacing; + + // Set indent back to what it was + EditorGUI.indentLevel = indent; + EditorGUI.EndProperty(); + } + + + public override float GetPropertyHeight(SerializedProperty property, GUIContent label) + { + SerializedProperty items = property.FindPropertyRelative("items"); + float lineAndSpace = k_LineHeight + k_Spacing; + return 40 + (items.arraySize*lineAndSpace) + lineAndSpace; + } + } +#endif +} diff --git a/Assets/Standard Assets/Utility/AutoMobileShaderSwitch.cs.meta b/Assets/Standard Assets/Utility/AutoMobileShaderSwitch.cs.meta new file mode 100644 index 0000000..4108156 --- /dev/null +++ b/Assets/Standard Assets/Utility/AutoMobileShaderSwitch.cs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 9c4978ff6447f9040b84acc89b0bbdc8 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: diff --git a/Assets/Standard Assets/Utility/AutoMoveAndRotate.cs b/Assets/Standard Assets/Utility/AutoMoveAndRotate.cs new file mode 100644 index 0000000..edbce0e --- /dev/null +++ b/Assets/Standard Assets/Utility/AutoMoveAndRotate.cs @@ -0,0 +1,41 @@ +using System; +using UnityEngine; + +namespace UnityStandardAssets.Utility +{ + public class AutoMoveAndRotate : MonoBehaviour + { + public Vector3andSpace moveUnitsPerSecond; + public Vector3andSpace rotateDegreesPerSecond; + public bool ignoreTimescale; + private float m_LastRealTime; + + + private void Start() + { + m_LastRealTime = Time.realtimeSinceStartup; + } + + + // Update is called once per frame + private void Update() + { + float deltaTime = Time.deltaTime; + if (ignoreTimescale) + { + deltaTime = (Time.realtimeSinceStartup - m_LastRealTime); + m_LastRealTime = Time.realtimeSinceStartup; + } + transform.Translate(moveUnitsPerSecond.value*deltaTime, moveUnitsPerSecond.space); + transform.Rotate(rotateDegreesPerSecond.value*deltaTime, moveUnitsPerSecond.space); + } + + + [Serializable] + public class Vector3andSpace + { + public Vector3 value; + public Space space = Space.Self; + } + } +} diff --git a/Assets/Standard Assets/Utility/AutoMoveAndRotate.cs.meta b/Assets/Standard Assets/Utility/AutoMoveAndRotate.cs.meta new file mode 100644 index 0000000..30b395a --- /dev/null +++ b/Assets/Standard Assets/Utility/AutoMoveAndRotate.cs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: a1347817507220a4384f3ff6f7c24546 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: diff --git a/Assets/Standard Assets/Utility/CameraRefocus.cs b/Assets/Standard Assets/Utility/CameraRefocus.cs new file mode 100644 index 0000000..26f1c9b --- /dev/null +++ b/Assets/Standard Assets/Utility/CameraRefocus.cs @@ -0,0 +1,58 @@ +using System; +using UnityEngine; + +namespace UnityStandardAssets.Utility +{ + public class CameraRefocus + { + public Camera Camera; + public Vector3 Lookatpoint; + public Transform Parent; + + private Vector3 m_OrigCameraPos; + private bool m_Refocus; + + + public CameraRefocus(Camera camera, Transform parent, Vector3 origCameraPos) + { + m_OrigCameraPos = origCameraPos; + Camera = camera; + Parent = parent; + } + + + public void ChangeCamera(Camera camera) + { + Camera = camera; + } + + + public void ChangeParent(Transform parent) + { + Parent = parent; + } + + + public void GetFocusPoint() + { + RaycastHit hitInfo; + if (Physics.Raycast(Parent.transform.position + m_OrigCameraPos, Parent.transform.forward, out hitInfo, + 100f)) + { + Lookatpoint = hitInfo.point; + m_Refocus = true; + return; + } + m_Refocus = false; + } + + + public void SetFocusPoint() + { + if (m_Refocus) + { + Camera.transform.LookAt(Lookatpoint); + } + } + } +} diff --git a/Assets/Standard Assets/Utility/CameraRefocus.cs.meta b/Assets/Standard Assets/Utility/CameraRefocus.cs.meta new file mode 100644 index 0000000..9300ded --- /dev/null +++ b/Assets/Standard Assets/Utility/CameraRefocus.cs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: d1e2e7a54dcc8694ab1eca46d072f264 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: diff --git a/Assets/Standard Assets/Utility/CurveControlledBob.cs b/Assets/Standard Assets/Utility/CurveControlledBob.cs new file mode 100644 index 0000000..b3951b7 --- /dev/null +++ b/Assets/Standard Assets/Utility/CurveControlledBob.cs @@ -0,0 +1,54 @@ +using System; +using UnityEngine; + + +namespace UnityStandardAssets.Utility +{ + [Serializable] + public class CurveControlledBob + { + public float HorizontalBobRange = 0.33f; + public float VerticalBobRange = 0.33f; + public AnimationCurve Bobcurve = new AnimationCurve(new Keyframe(0f, 0f), new Keyframe(0.5f, 1f), + new Keyframe(1f, 0f), new Keyframe(1.5f, -1f), + new Keyframe(2f, 0f)); // sin curve for head bob + public float VerticaltoHorizontalRatio = 1f; + + private float m_CyclePositionX; + private float m_CyclePositionY; + private float m_BobBaseInterval; + private Vector3 m_OriginalCameraPosition; + private float m_Time; + + + public void Setup(Camera camera, float bobBaseInterval) + { + m_BobBaseInterval = bobBaseInterval; + m_OriginalCameraPosition = camera.transform.localPosition; + + // get the length of the curve in time + m_Time = Bobcurve[Bobcurve.length - 1].time; + } + + + public Vector3 DoHeadBob(float speed) + { + float xPos = m_OriginalCameraPosition.x + (Bobcurve.Evaluate(m_CyclePositionX)*HorizontalBobRange); + float yPos = m_OriginalCameraPosition.y + (Bobcurve.Evaluate(m_CyclePositionY)*VerticalBobRange); + + m_CyclePositionX += (speed*Time.deltaTime)/m_BobBaseInterval; + m_CyclePositionY += ((speed*Time.deltaTime)/m_BobBaseInterval)*VerticaltoHorizontalRatio; + + if (m_CyclePositionX > m_Time) + { + m_CyclePositionX = m_CyclePositionX - m_Time; + } + if (m_CyclePositionY > m_Time) + { + m_CyclePositionY = m_CyclePositionY - m_Time; + } + + return new Vector3(xPos, yPos, 0f); + } + } +} diff --git a/Assets/Standard Assets/Utility/CurveControlledBob.cs.meta b/Assets/Standard Assets/Utility/CurveControlledBob.cs.meta new file mode 100644 index 0000000..3b9374f --- /dev/null +++ b/Assets/Standard Assets/Utility/CurveControlledBob.cs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 492f54f4accf00440828ffcb9e4fcc19 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: diff --git a/Assets/Standard Assets/Utility/DragRigidbody.cs b/Assets/Standard Assets/Utility/DragRigidbody.cs new file mode 100644 index 0000000..b0f5c35 --- /dev/null +++ b/Assets/Standard Assets/Utility/DragRigidbody.cs @@ -0,0 +1,96 @@ +using System; +using System.Collections; +using UnityEngine; + +namespace UnityStandardAssets.Utility +{ + public class DragRigidbody : MonoBehaviour + { + const float k_Spring = 50.0f; + const float k_Damper = 5.0f; + const float k_Drag = 10.0f; + const float k_AngularDrag = 5.0f; + const float k_Distance = 0.2f; + const bool k_AttachToCenterOfMass = false; + + private SpringJoint m_SpringJoint; + + + private void Update() + { + // Make sure the user pressed the mouse down + if (!Input.GetMouseButtonDown(0)) + { + return; + } + + var mainCamera = FindCamera(); + + // We need to actually hit an object + RaycastHit hit = new RaycastHit(); + if ( + !Physics.Raycast(mainCamera.ScreenPointToRay(Input.mousePosition).origin, + mainCamera.ScreenPointToRay(Input.mousePosition).direction, out hit, 100, + Physics.DefaultRaycastLayers)) + { + return; + } + // We need to hit a rigidbody that is not kinematic + if (!hit.rigidbody || hit.rigidbody.isKinematic) + { + return; + } + + if (!m_SpringJoint) + { + var go = new GameObject("Rigidbody dragger"); + Rigidbody body = go.AddComponent(); + m_SpringJoint = go.AddComponent(); + body.isKinematic = true; + } + + m_SpringJoint.transform.position = hit.point; + m_SpringJoint.anchor = Vector3.zero; + + m_SpringJoint.spring = k_Spring; + m_SpringJoint.damper = k_Damper; + m_SpringJoint.maxDistance = k_Distance; + m_SpringJoint.connectedBody = hit.rigidbody; + + StartCoroutine("DragObject", hit.distance); + } + + + private IEnumerator DragObject(float distance) + { + var oldDrag = m_SpringJoint.connectedBody.drag; + var oldAngularDrag = m_SpringJoint.connectedBody.angularDrag; + m_SpringJoint.connectedBody.drag = k_Drag; + m_SpringJoint.connectedBody.angularDrag = k_AngularDrag; + var mainCamera = FindCamera(); + while (Input.GetMouseButton(0)) + { + var ray = mainCamera.ScreenPointToRay(Input.mousePosition); + m_SpringJoint.transform.position = ray.GetPoint(distance); + yield return null; + } + if (m_SpringJoint.connectedBody) + { + m_SpringJoint.connectedBody.drag = oldDrag; + m_SpringJoint.connectedBody.angularDrag = oldAngularDrag; + m_SpringJoint.connectedBody = null; + } + } + + + private Camera FindCamera() + { + if (GetComponent()) + { + return GetComponent(); + } + + return Camera.main; + } + } +} diff --git a/Assets/Standard Assets/Utility/DragRigidbody.cs.meta b/Assets/Standard Assets/Utility/DragRigidbody.cs.meta new file mode 100644 index 0000000..42579c5 --- /dev/null +++ b/Assets/Standard Assets/Utility/DragRigidbody.cs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 58650e15a2607e44daa0f150e0061d89 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: diff --git a/Assets/Standard Assets/Utility/DynamicShadowSettings.cs b/Assets/Standard Assets/Utility/DynamicShadowSettings.cs new file mode 100644 index 0000000..bedb568 --- /dev/null +++ b/Assets/Standard Assets/Utility/DynamicShadowSettings.cs @@ -0,0 +1,51 @@ +using System; +using UnityEngine; + +namespace UnityStandardAssets.Utility +{ + public class DynamicShadowSettings : MonoBehaviour + { + public Light sunLight; + public float minHeight = 10; + public float minShadowDistance = 80; + public float minShadowBias = 1; + public float maxHeight = 1000; + public float maxShadowDistance = 10000; + public float maxShadowBias = 0.1f; + public float adaptTime = 1; + + private float m_SmoothHeight; + private float m_ChangeSpeed; + private float m_OriginalStrength = 1; + + + private void Start() + { + m_OriginalStrength = sunLight.shadowStrength; + } + + + // Update is called once per frame + private void Update() + { + Ray ray = new Ray(Camera.main.transform.position, -Vector3.up); + RaycastHit hit; + float height = transform.position.y; + if (Physics.Raycast(ray, out hit)) + { + height = hit.distance; + } + + if (Mathf.Abs(height - m_SmoothHeight) > 1) + { + m_SmoothHeight = Mathf.SmoothDamp(m_SmoothHeight, height, ref m_ChangeSpeed, adaptTime); + } + + float i = Mathf.InverseLerp(minHeight, maxHeight, m_SmoothHeight); + + QualitySettings.shadowDistance = Mathf.Lerp(minShadowDistance, maxShadowDistance, i); + sunLight.shadowBias = Mathf.Lerp(minShadowBias, maxShadowBias, 1 - ((1 - i)*(1 - i))); + sunLight.shadowStrength = Mathf.Lerp(m_OriginalStrength, 0, i); + } + } +} diff --git a/Assets/Standard Assets/Utility/DynamicShadowSettings.cs.meta b/Assets/Standard Assets/Utility/DynamicShadowSettings.cs.meta new file mode 100644 index 0000000..1bf45ee --- /dev/null +++ b/Assets/Standard Assets/Utility/DynamicShadowSettings.cs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 8566902b50d5bfb4fb7f8b89f9cdbe8b +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: diff --git a/Assets/Standard Assets/Utility/EventSystemChecker.cs b/Assets/Standard Assets/Utility/EventSystemChecker.cs new file mode 100644 index 0000000..2910450 --- /dev/null +++ b/Assets/Standard Assets/Utility/EventSystemChecker.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections; +using UnityEngine; +using UnityEngine.EventSystems; + +public class EventSystemChecker : MonoBehaviour +{ + //public GameObject eventSystem; + + // Use this for initialization + void Awake () + { + if(!FindObjectOfType()) + { + //Instantiate(eventSystem); + GameObject obj = new GameObject("EventSystem"); + obj.AddComponent(); + obj.AddComponent().forceModuleActive = true; + obj.AddComponent(); + } + } +} diff --git a/Assets/Standard Assets/Utility/EventSystemChecker.cs.meta b/Assets/Standard Assets/Utility/EventSystemChecker.cs.meta new file mode 100644 index 0000000..3b131fa --- /dev/null +++ b/Assets/Standard Assets/Utility/EventSystemChecker.cs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 9c0578910bbe00d43919a92c7b9893fe +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: diff --git a/Assets/Standard Assets/Utility/FOVKick.cs b/Assets/Standard Assets/Utility/FOVKick.cs new file mode 100644 index 0000000..fbfab58 --- /dev/null +++ b/Assets/Standard Assets/Utility/FOVKick.cs @@ -0,0 +1,73 @@ +using System; +using System.Collections; +using UnityEngine; + +namespace UnityStandardAssets.Utility +{ + [Serializable] + public class FOVKick + { + public Camera Camera; // optional camera setup, if null the main camera will be used + [HideInInspector] public float originalFov; // the original fov + public float FOVIncrease = 3f; // the amount the field of view increases when going into a run + public float TimeToIncrease = 1f; // the amount of time the field of view will increase over + public float TimeToDecrease = 1f; // the amount of time the field of view will take to return to its original size + public AnimationCurve IncreaseCurve; + + + public void Setup(Camera camera) + { + CheckStatus(camera); + + Camera = camera; + originalFov = camera.fieldOfView; + } + + + private void CheckStatus(Camera camera) + { + if (camera == null) + { + throw new Exception("FOVKick camera is null, please supply the camera to the constructor"); + } + + if (IncreaseCurve == null) + { + throw new Exception( + "FOVKick Increase curve is null, please define the curve for the field of view kicks"); + } + } + + + public void ChangeCamera(Camera camera) + { + Camera = camera; + } + + + public IEnumerator FOVKickUp() + { + float t = Mathf.Abs((Camera.fieldOfView - originalFov)/FOVIncrease); + while (t < TimeToIncrease) + { + Camera.fieldOfView = originalFov + (IncreaseCurve.Evaluate(t/TimeToIncrease)*FOVIncrease); + t += Time.deltaTime; + yield return new WaitForEndOfFrame(); + } + } + + + public IEnumerator FOVKickDown() + { + float t = Mathf.Abs((Camera.fieldOfView - originalFov)/FOVIncrease); + while (t > 0) + { + Camera.fieldOfView = originalFov + (IncreaseCurve.Evaluate(t/TimeToDecrease)*FOVIncrease); + t -= Time.deltaTime; + yield return new WaitForEndOfFrame(); + } + //make sure that fov returns to the original size + Camera.fieldOfView = originalFov; + } + } +} diff --git a/Assets/Standard Assets/Utility/FOVKick.cs.meta b/Assets/Standard Assets/Utility/FOVKick.cs.meta new file mode 100644 index 0000000..50d5df6 --- /dev/null +++ b/Assets/Standard Assets/Utility/FOVKick.cs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 6045a93fb05b9c74884821030da2c46c +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: diff --git a/Assets/Standard Assets/Utility/FPSCounter.cs b/Assets/Standard Assets/Utility/FPSCounter.cs new file mode 100644 index 0000000..6f9bc54 --- /dev/null +++ b/Assets/Standard Assets/Utility/FPSCounter.cs @@ -0,0 +1,38 @@ +using System; +using UnityEngine; +using UnityEngine.UI; + +namespace UnityStandardAssets.Utility +{ + [RequireComponent(typeof (Text))] + public class FPSCounter : MonoBehaviour + { + const float fpsMeasurePeriod = 0.5f; + private int m_FpsAccumulator = 0; + private float m_FpsNextPeriod = 0; + private int m_CurrentFps; + const string display = "{0} FPS"; + private Text m_Text; + + + private void Start() + { + m_FpsNextPeriod = Time.realtimeSinceStartup + fpsMeasurePeriod; + m_Text = GetComponent(); + } + + + private void Update() + { + // measure average frames per second + m_FpsAccumulator++; + if (Time.realtimeSinceStartup > m_FpsNextPeriod) + { + m_CurrentFps = (int) (m_FpsAccumulator/fpsMeasurePeriod); + m_FpsAccumulator = 0; + m_FpsNextPeriod += fpsMeasurePeriod; + m_Text.text = string.Format(display, m_CurrentFps); + } + } + } +} diff --git a/Assets/Standard Assets/Utility/FPSCounter.cs.meta b/Assets/Standard Assets/Utility/FPSCounter.cs.meta new file mode 100644 index 0000000..8b9f3b8 --- /dev/null +++ b/Assets/Standard Assets/Utility/FPSCounter.cs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 22bbf57ec543cee42a5aa0ec2dd9e457 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: diff --git a/Assets/Standard Assets/Utility/FollowTarget.cs b/Assets/Standard Assets/Utility/FollowTarget.cs new file mode 100644 index 0000000..e7b91d9 --- /dev/null +++ b/Assets/Standard Assets/Utility/FollowTarget.cs @@ -0,0 +1,18 @@ +using System; +using UnityEngine; + + +namespace UnityStandardAssets.Utility +{ + public class FollowTarget : MonoBehaviour + { + public Transform target; + public Vector3 offset = new Vector3(0f, 7.5f, 0f); + + + private void LateUpdate() + { + transform.position = target.position + offset; + } + } +} diff --git a/Assets/Standard Assets/Utility/FollowTarget.cs.meta b/Assets/Standard Assets/Utility/FollowTarget.cs.meta new file mode 100644 index 0000000..28aa661 --- /dev/null +++ b/Assets/Standard Assets/Utility/FollowTarget.cs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 246cc59c7a84ea44f87f6b70acfe30c5 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: diff --git a/Assets/Standard Assets/Utility/ForcedReset.cs b/Assets/Standard Assets/Utility/ForcedReset.cs new file mode 100644 index 0000000..efd39d1 --- /dev/null +++ b/Assets/Standard Assets/Utility/ForcedReset.cs @@ -0,0 +1,17 @@ +using System; +using UnityEngine; +using UnityStandardAssets.CrossPlatformInput; + +[RequireComponent(typeof (GUITexture))] +public class ForcedReset : MonoBehaviour +{ + private void Update() + { + // if we have forced a reset ... + if (CrossPlatformInputManager.GetButtonDown("ResetObject")) + { + //... reload the scene + Application.LoadLevelAsync(Application.loadedLevelName); + } + } +} diff --git a/Assets/Standard Assets/Utility/ForcedReset.cs.meta b/Assets/Standard Assets/Utility/ForcedReset.cs.meta new file mode 100644 index 0000000..56690a5 --- /dev/null +++ b/Assets/Standard Assets/Utility/ForcedReset.cs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 9b886447cba80f74e820adb3c9e70c76 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: diff --git a/Assets/Standard Assets/Utility/LerpControlledBob.cs b/Assets/Standard Assets/Utility/LerpControlledBob.cs new file mode 100644 index 0000000..8d6b92c --- /dev/null +++ b/Assets/Standard Assets/Utility/LerpControlledBob.cs @@ -0,0 +1,45 @@ +using System; +using System.Collections; +using UnityEngine; + +namespace UnityStandardAssets.Utility +{ + [Serializable] + public class LerpControlledBob + { + public float BobDuration; + public float BobAmount; + + private float m_Offset = 0f; + + + // provides the offset that can be used + public float Offset() + { + return m_Offset; + } + + + public IEnumerator DoBobCycle() + { + // make the camera move down slightly + float t = 0f; + while (t < BobDuration) + { + m_Offset = Mathf.Lerp(0f, BobAmount, t/BobDuration); + t += Time.deltaTime; + yield return new WaitForFixedUpdate(); + } + + // make it move back to neutral + t = 0f; + while (t < BobDuration) + { + m_Offset = Mathf.Lerp(BobAmount, 0f, t/BobDuration); + t += Time.deltaTime; + yield return new WaitForFixedUpdate(); + } + m_Offset = 0f; + } + } +} diff --git a/Assets/Standard Assets/Utility/LerpControlledBob.cs.meta b/Assets/Standard Assets/Utility/LerpControlledBob.cs.meta new file mode 100644 index 0000000..5321d93 --- /dev/null +++ b/Assets/Standard Assets/Utility/LerpControlledBob.cs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: c1bbfafbde15c854681023b9e01e12dd +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: diff --git a/Assets/Standard Assets/Utility/ObjectResetter.cs b/Assets/Standard Assets/Utility/ObjectResetter.cs new file mode 100644 index 0000000..d019fa6 --- /dev/null +++ b/Assets/Standard Assets/Utility/ObjectResetter.cs @@ -0,0 +1,57 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace UnityStandardAssets.Utility +{ + public class ObjectResetter : MonoBehaviour + { + private Vector3 originalPosition; + private Quaternion originalRotation; + private List originalStructure; + + private Rigidbody Rigidbody; + + // Use this for initialization + private void Start() + { + originalStructure = new List(GetComponentsInChildren()); + originalPosition = transform.position; + originalRotation = transform.rotation; + + Rigidbody = GetComponent(); + } + + + public void DelayedReset(float delay) + { + StartCoroutine(ResetCoroutine(delay)); + } + + + public IEnumerator ResetCoroutine(float delay) + { + yield return new WaitForSeconds(delay); + + // remove any gameobjects added (fire, skid trails, etc) + foreach (var t in GetComponentsInChildren()) + { + if (!originalStructure.Contains(t)) + { + t.parent = null; + } + } + + transform.position = originalPosition; + transform.rotation = originalRotation; + if (Rigidbody) + { + Rigidbody.velocity = Vector3.zero; + Rigidbody.angularVelocity = Vector3.zero; + } + + SendMessage("Reset"); + } + } +} diff --git a/Assets/Standard Assets/Utility/ObjectResetter.cs.meta b/Assets/Standard Assets/Utility/ObjectResetter.cs.meta new file mode 100644 index 0000000..4bcdef9 --- /dev/null +++ b/Assets/Standard Assets/Utility/ObjectResetter.cs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 643c971818f68d3439e84b5d8bdafe07 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: diff --git a/Assets/Standard Assets/Utility/ParticleSystemDestroyer.cs b/Assets/Standard Assets/Utility/ParticleSystemDestroyer.cs new file mode 100644 index 0000000..7c99fce --- /dev/null +++ b/Assets/Standard Assets/Utility/ParticleSystemDestroyer.cs @@ -0,0 +1,61 @@ +using System; +using System.Collections; +using UnityEngine; +using Random = UnityEngine.Random; + +namespace UnityStandardAssets.Utility +{ + public class ParticleSystemDestroyer : MonoBehaviour + { + // allows a particle system to exist for a specified duration, + // then shuts off emission, and waits for all particles to expire + // before destroying the gameObject + + public float minDuration = 8; + public float maxDuration = 10; + + private float m_MaxLifetime; + private bool m_EarlyStop; + + + private IEnumerator Start() + { + var systems = GetComponentsInChildren(); + + // find out the maximum lifetime of any particles in this effect + foreach (var system in systems) + { + m_MaxLifetime = Mathf.Max(system.startLifetime, m_MaxLifetime); + } + + // wait for random duration + + float stopTime = Time.time + Random.Range(minDuration, maxDuration); + + while (Time.time < stopTime || m_EarlyStop) + { + yield return null; + } + Debug.Log("stopping " + name); + + // turn off emission + foreach (var system in systems) + { + system.enableEmission = false; + } + BroadcastMessage("Extinguish", SendMessageOptions.DontRequireReceiver); + + // wait for any remaining particles to expire + yield return new WaitForSeconds(m_MaxLifetime); + + Destroy(gameObject); + } + + + public void Stop() + { + // stops the particle system early + m_EarlyStop = true; + } + } +} diff --git a/Assets/Standard Assets/Utility/ParticleSystemDestroyer.cs.meta b/Assets/Standard Assets/Utility/ParticleSystemDestroyer.cs.meta new file mode 100644 index 0000000..ac73e15 --- /dev/null +++ b/Assets/Standard Assets/Utility/ParticleSystemDestroyer.cs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 29014cd42b6d273408e0ceefd336c0b3 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: diff --git a/Assets/Standard Assets/Utility/PlatformSpecificContent.cs b/Assets/Standard Assets/Utility/PlatformSpecificContent.cs new file mode 100644 index 0000000..ebd17b6 --- /dev/null +++ b/Assets/Standard Assets/Utility/PlatformSpecificContent.cs @@ -0,0 +1,108 @@ +using System; +using UnityEngine; +#if UNITY_EDITOR +using UnityEditor; +#endif + +namespace UnityStandardAssets.Utility +{ +#if UNITY_EDITOR + + [ExecuteInEditMode] +#endif + public class PlatformSpecificContent : MonoBehaviour + { + private enum BuildTargetGroup + { + Standalone, + Mobile + } + + [SerializeField] private BuildTargetGroup m_BuildTargetGroup; + [SerializeField] private GameObject[] m_Content = new GameObject[0]; + [SerializeField] private MonoBehaviour[] m_MonoBehaviours = new MonoBehaviour[0]; + [SerializeField] private bool m_ChildrenOfThisObject; + +#if !UNITY_EDITOR + void OnEnable() + { + CheckEnableContent(); + } +#endif + +#if UNITY_EDITOR + + private void OnEnable() + { + EditorUserBuildSettings.activeBuildTargetChanged += Update; + EditorApplication.update += Update; + } + + + private void OnDisable() + { + EditorUserBuildSettings.activeBuildTargetChanged -= Update; + EditorApplication.update -= Update; + } + + + private void Update() + { + CheckEnableContent(); + } +#endif + + + private void CheckEnableContent() + { +#if (UNITY_IPHONE || UNITY_ANDROID || UNITY_WP8 || UNITY_BLACKBERRY ) + if (m_BuildTargetGroup == BuildTargetGroup.Mobile) + { + EnableContent(true); + } else { + EnableContent(false); + } +#endif + +#if !(UNITY_IPHONE || UNITY_ANDROID || UNITY_WP8 || UNITY_BLACKBERRY ) + if (m_BuildTargetGroup == BuildTargetGroup.Mobile) + { + EnableContent(false); + } + else + { + EnableContent(true); + } +#endif + } + + + private void EnableContent(bool enabled) + { + if (m_Content.Length > 0) + { + foreach (var g in m_Content) + { + if (g != null) + { + g.SetActive(enabled); + } + } + } + if (m_ChildrenOfThisObject) + { + foreach (Transform t in transform) + { + t.gameObject.SetActive(enabled); + } + } + if (m_MonoBehaviours.Length > 0) + { + foreach (var monoBehaviour in m_MonoBehaviours) + { + monoBehaviour.enabled = enabled; + } + } + } + } +} diff --git a/Assets/Standard Assets/Utility/PlatformSpecificContent.cs.meta b/Assets/Standard Assets/Utility/PlatformSpecificContent.cs.meta new file mode 100644 index 0000000..55d1acb --- /dev/null +++ b/Assets/Standard Assets/Utility/PlatformSpecificContent.cs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: b27507c5d0efbbd47ac8c1de9a1a0a35 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: diff --git a/Assets/Standard Assets/Utility/Prefabs.meta b/Assets/Standard Assets/Utility/Prefabs.meta new file mode 100644 index 0000000..161603d --- /dev/null +++ b/Assets/Standard Assets/Utility/Prefabs.meta @@ -0,0 +1,6 @@ +fileFormatVersion: 2 +guid: b43a4ef15621158419a2b639f7a98245 +folderAsset: yes +DefaultImporter: + userData: + assetBundleName: diff --git a/Assets/Standard Assets/Utility/Prefabs/FramerateCounter.prefab b/Assets/Standard Assets/Utility/Prefabs/FramerateCounter.prefab new file mode 100644 index 0000000..ac9ce8d --- /dev/null +++ b/Assets/Standard Assets/Utility/Prefabs/FramerateCounter.prefab @@ -0,0 +1,183 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &100000 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22409990} + - 223: {fileID: 22323452} + - 114: {fileID: 11403178} + - 114: {fileID: 11448042} + m_Layer: 5 + m_Name: FramerateCounter + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &167734 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22488988} + - 222: {fileID: 22250932} + - 114: {fileID: 11410038} + - 114: {fileID: 11400482} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &11400482 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 167734} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 22bbf57ec543cee42a5aa0ec2dd9e457, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!114 &11403178 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100000} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1980459831, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!114 &11410038 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 167734} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: .196078435, g: .196078435, b: .196078435, a: 1} + m_FontData: + m_Font: {fileID: 12800000, guid: b51a3e520f9164da198dc59c8acfccd6, type: 3} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_RichText: 0 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'FPS + +' +--- !u!114 &11448042 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100000} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1301386320, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!222 &22250932 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 167734} +--- !u!223 &22323452 +Canvas: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100000} + m_Enabled: 1 + serializedVersion: 2 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!224 &22409990 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 100000} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 22488988} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!224 &22488988 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 167734} + m_LocalRotation: {x: 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: 22409990} + m_RootOrder: 0 + m_AnchorMin: {x: .5, y: 1} + m_AnchorMax: {x: .5, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 160, y: 30} + m_Pivot: {x: .5, y: 1} +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 100000} + m_IsPrefabParent: 1 diff --git a/Assets/Standard Assets/Utility/Prefabs/FramerateCounter.prefab.meta b/Assets/Standard Assets/Utility/Prefabs/FramerateCounter.prefab.meta new file mode 100644 index 0000000..7b185b7 --- /dev/null +++ b/Assets/Standard Assets/Utility/Prefabs/FramerateCounter.prefab.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 81154777d5417884981849c5243f6c01 +NativeFormatImporter: + userData: + assetBundleName: diff --git a/Assets/Standard Assets/Utility/SimpleActivatorMenu.cs b/Assets/Standard Assets/Utility/SimpleActivatorMenu.cs new file mode 100644 index 0000000..bab71fc --- /dev/null +++ b/Assets/Standard Assets/Utility/SimpleActivatorMenu.cs @@ -0,0 +1,38 @@ +using System; +using UnityEngine; + +namespace UnityStandardAssets.Utility +{ + public class SimpleActivatorMenu : MonoBehaviour + { + // An incredibly simple menu which, when given references + // to gameobjects in the scene + public GUIText camSwitchButton; + public GameObject[] objects; + + + private int m_CurrentActiveObject; + + + private void OnEnable() + { + // active object starts from first in array + m_CurrentActiveObject = 0; + camSwitchButton.text = objects[m_CurrentActiveObject].name; + } + + + public void NextCamera() + { + int nextactiveobject = m_CurrentActiveObject + 1 >= objects.Length ? 0 : m_CurrentActiveObject + 1; + + for (int i = 0; i < objects.Length; i++) + { + objects[i].SetActive(i == nextactiveobject); + } + + m_CurrentActiveObject = nextactiveobject; + camSwitchButton.text = objects[m_CurrentActiveObject].name; + } + } +} diff --git a/Assets/Standard Assets/Utility/SimpleActivatorMenu.cs.meta b/Assets/Standard Assets/Utility/SimpleActivatorMenu.cs.meta new file mode 100644 index 0000000..45823d1 --- /dev/null +++ b/Assets/Standard Assets/Utility/SimpleActivatorMenu.cs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 69b69a5b0e0a85b4aa97a7edc40c37d1 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: diff --git a/Assets/Standard Assets/Utility/SimpleMouseRotator.cs b/Assets/Standard Assets/Utility/SimpleMouseRotator.cs new file mode 100644 index 0000000..5b1ef5a --- /dev/null +++ b/Assets/Standard Assets/Utility/SimpleMouseRotator.cs @@ -0,0 +1,113 @@ +using System; +using UnityEngine; +using UnityStandardAssets.CrossPlatformInput; + +namespace UnityStandardAssets.Utility +{ + public class SimpleMouseRotator : MonoBehaviour + { + // A mouselook behaviour with constraints which operate relative to + // this gameobject's initial rotation. + // Only rotates around local X and Y. + // Works in local coordinates, so if this object is parented + // to another moving gameobject, its local constraints will + // operate correctly + // (Think: looking out the side window of a car, or a gun turret + // on a moving spaceship with a limited angular range) + // to have no constraints on an axis, set the rotationRange to 360 or greater. + public Vector2 rotationRange = new Vector3(70, 70); + public float rotationSpeed = 10; + public float dampingTime = 0.2f; + public bool autoZeroVerticalOnMobile = true; + public bool autoZeroHorizontalOnMobile = false; + public bool relative = true; + + + private Vector3 m_TargetAngles; + private Vector3 m_FollowAngles; + private Vector3 m_FollowVelocity; + private Quaternion m_OriginalRotation; + + + private void Start() + { + m_OriginalRotation = transform.localRotation; + } + + + private void Update() + { + // we make initial calculations from the original local rotation + transform.localRotation = m_OriginalRotation; + + // read input from mouse or mobile controls + float inputH; + float inputV; + if (relative) + { + inputH = CrossPlatformInputManager.GetAxis("Mouse X"); + inputV = CrossPlatformInputManager.GetAxis("Mouse Y"); + + // wrap values to avoid springing quickly the wrong way from positive to negative + if (m_TargetAngles.y > 180) + { + m_TargetAngles.y -= 360; + m_FollowAngles.y -= 360; + } + if (m_TargetAngles.x > 180) + { + m_TargetAngles.x -= 360; + m_FollowAngles.x -= 360; + } + if (m_TargetAngles.y < -180) + { + m_TargetAngles.y += 360; + m_FollowAngles.y += 360; + } + if (m_TargetAngles.x < -180) + { + m_TargetAngles.x += 360; + m_FollowAngles.x += 360; + } + +#if MOBILE_INPUT + // on mobile, sometimes we want input mapped directly to tilt value, + // so it springs back automatically when the look input is released. + if (autoZeroHorizontalOnMobile) { + m_TargetAngles.y = Mathf.Lerp (-rotationRange.y * 0.5f, rotationRange.y * 0.5f, inputH * .5f + .5f); + } else { + m_TargetAngles.y += inputH * rotationSpeed; + } + if (autoZeroVerticalOnMobile) { + m_TargetAngles.x = Mathf.Lerp (-rotationRange.x * 0.5f, rotationRange.x * 0.5f, inputV * .5f + .5f); + } else { + m_TargetAngles.x += inputV * rotationSpeed; + } +#else + // with mouse input, we have direct control with no springback required. + m_TargetAngles.y += inputH*rotationSpeed; + m_TargetAngles.x += inputV*rotationSpeed; +#endif + + // clamp values to allowed range + m_TargetAngles.y = Mathf.Clamp(m_TargetAngles.y, -rotationRange.y*0.5f, rotationRange.y*0.5f); + m_TargetAngles.x = Mathf.Clamp(m_TargetAngles.x, -rotationRange.x*0.5f, rotationRange.x*0.5f); + } + else + { + inputH = Input.mousePosition.x; + inputV = Input.mousePosition.y; + + // set values to allowed range + m_TargetAngles.y = Mathf.Lerp(-rotationRange.y*0.5f, rotationRange.y*0.5f, inputH/Screen.width); + m_TargetAngles.x = Mathf.Lerp(-rotationRange.x*0.5f, rotationRange.x*0.5f, inputV/Screen.height); + } + + // smoothly interpolate current values to target angles + m_FollowAngles = Vector3.SmoothDamp(m_FollowAngles, m_TargetAngles, ref m_FollowVelocity, dampingTime); + + // update the actual gameobject's rotation + transform.localRotation = m_OriginalRotation*Quaternion.Euler(-m_FollowAngles.x, m_FollowAngles.y, 0); + } + } +} diff --git a/Assets/Standard Assets/Utility/SimpleMouseRotator.cs.meta b/Assets/Standard Assets/Utility/SimpleMouseRotator.cs.meta new file mode 100644 index 0000000..4c2b617 --- /dev/null +++ b/Assets/Standard Assets/Utility/SimpleMouseRotator.cs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: cadd54e4832aeef4b9359f44cbe335cd +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: diff --git a/Assets/Standard Assets/Utility/SmoothFollow.cs b/Assets/Standard Assets/Utility/SmoothFollow.cs new file mode 100644 index 0000000..01881dc --- /dev/null +++ b/Assets/Standard Assets/Utility/SmoothFollow.cs @@ -0,0 +1,61 @@ +using UnityEngine; + +namespace UnityStandardAssets.Utility +{ + public class SmoothFollow : MonoBehaviour + { + + // The target we are following + [SerializeField] + private Transform target; + // The distance in the x-z plane to the target + [SerializeField] + private float distance = 10.0f; + // the height we want the camera to be above the target + [SerializeField] + private float height = 5.0f; + + [SerializeField] + private float rotationDamping; + [SerializeField] + private float heightDamping; + + // Use this for initialization + void Start() { } + + // Update is called once per frame + void LateUpdate() + { + // Early out if we don't have a target + if (!target) + return; + + // Calculate the current rotation angles + var wantedRotationAngle = target.eulerAngles.y; + var wantedHeight = target.position.y + height; + + var currentRotationAngle = transform.eulerAngles.y; + var currentHeight = transform.position.y; + + // Damp the rotation around the y-axis + currentRotationAngle = Mathf.LerpAngle(currentRotationAngle, wantedRotationAngle, rotationDamping * Time.deltaTime); + + // Damp the height + currentHeight = Mathf.Lerp(currentHeight, wantedHeight, heightDamping * Time.deltaTime); + + // Convert the angle into a rotation + var currentRotation = Quaternion.Euler(0, currentRotationAngle, 0); + + // Set the position of the camera on the x-z plane to: + // distance meters behind the target + transform.position = target.position; + transform.position -= currentRotation * Vector3.forward * distance; + + // Set the height of the camera + transform.position = new Vector3(transform.position.x ,currentHeight , transform.position.z); + + // Always look at the target + transform.LookAt(target); + } + } +} \ No newline at end of file diff --git a/Assets/Standard Assets/Utility/SmoothFollow.cs.meta b/Assets/Standard Assets/Utility/SmoothFollow.cs.meta new file mode 100644 index 0000000..8e0ee92 --- /dev/null +++ b/Assets/Standard Assets/Utility/SmoothFollow.cs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: f76806479d916a64aa03f8e3eba7912f +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: diff --git a/Assets/Standard Assets/Utility/TimedObjectActivator.cs b/Assets/Standard Assets/Utility/TimedObjectActivator.cs new file mode 100644 index 0000000..e219e77 --- /dev/null +++ b/Assets/Standard Assets/Utility/TimedObjectActivator.cs @@ -0,0 +1,215 @@ +using System; +using System.Collections; +using UnityEngine; +#if UNITY_EDITOR +using UnityEditor; +#endif + +namespace UnityStandardAssets.Utility +{ + public class TimedObjectActivator : MonoBehaviour + { + public enum Action + { + Activate, + Deactivate, + Destroy, + ReloadLevel, + Call, + } + + + [Serializable] + public class Entry + { + public GameObject target; + public Action action; + public float delay; + } + + + [Serializable] + public class Entries + { + public Entry[] entries; + } + + + public Entries entries = new Entries(); + + + private void Awake() + { + foreach (Entry entry in entries.entries) + { + switch (entry.action) + { + case Action.Activate: + StartCoroutine(Activate(entry)); + break; + case Action.Deactivate: + StartCoroutine(Deactivate(entry)); + break; + case Action.Destroy: + Destroy(entry.target, entry.delay); + break; + + case Action.ReloadLevel: + StartCoroutine(ReloadLevel(entry)); + break; + } + } + } + + + private IEnumerator Activate(Entry entry) + { + yield return new WaitForSeconds(entry.delay); + entry.target.SetActive(true); + } + + + private IEnumerator Deactivate(Entry entry) + { + yield return new WaitForSeconds(entry.delay); + entry.target.SetActive(false); + } + + + private IEnumerator ReloadLevel(Entry entry) + { + yield return new WaitForSeconds(entry.delay); + Application.LoadLevel(Application.loadedLevel); + } + } +} + + +namespace UnityStandardAssets.Utility.Inspector +{ +#if UNITY_EDITOR + [CustomPropertyDrawer(typeof (TimedObjectActivator.Entries))] + public class EntriesDrawer : PropertyDrawer + { + private const float k_LineHeight = 18; + private const float k_Spacing = 4; + + + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + EditorGUI.BeginProperty(position, label, property); + + float x = position.x; + float y = position.y; + float width = position.width; + + // Draw label + EditorGUI.PrefixLabel(position, GUIUtility.GetControlID(FocusType.Passive), label); + + // Don't make child fields be indented + var indent = EditorGUI.indentLevel; + EditorGUI.indentLevel = 0; + + var entries = property.FindPropertyRelative("entries"); + + if (entries.arraySize > 0) + { + float actionWidth = .25f*width; + float targetWidth = .6f*width; + float delayWidth = .1f*width; + float buttonWidth = .05f*width; + + for (int i = 0; i < entries.arraySize; ++i) + { + y += k_LineHeight + k_Spacing; + + var entry = entries.GetArrayElementAtIndex(i); + + float rowX = x; + + // Calculate rects + Rect actionRect = new Rect(rowX, y, actionWidth, k_LineHeight); + rowX += actionWidth; + + Rect targetRect = new Rect(rowX, y, targetWidth, k_LineHeight); + rowX += targetWidth; + + Rect delayRect = new Rect(rowX, y, delayWidth, k_LineHeight); + rowX += delayWidth; + + Rect buttonRect = new Rect(rowX, y, buttonWidth, k_LineHeight); + rowX += buttonWidth; + + // Draw fields - passs GUIContent.none to each so they are drawn without labels + + if (entry.FindPropertyRelative("action").enumValueIndex != + (int) TimedObjectActivator.Action.ReloadLevel) + { + EditorGUI.PropertyField(actionRect, entry.FindPropertyRelative("action"), GUIContent.none); + EditorGUI.PropertyField(targetRect, entry.FindPropertyRelative("target"), GUIContent.none); + } + else + { + actionRect.width = actionRect.width + targetRect.width; + EditorGUI.PropertyField(actionRect, entry.FindPropertyRelative("action"), GUIContent.none); + } + + EditorGUI.PropertyField(delayRect, entry.FindPropertyRelative("delay"), GUIContent.none); + if (GUI.Button(buttonRect, "-")) + { + entries.DeleteArrayElementAtIndex(i); + break; + } + } + } + + // add & sort buttons + y += k_LineHeight + k_Spacing; + + var addButtonRect = new Rect(position.x + position.width - 120, y, 60, k_LineHeight); + if (GUI.Button(addButtonRect, "Add")) + { + entries.InsertArrayElementAtIndex(entries.arraySize); + } + + var sortButtonRect = new Rect(position.x + position.width - 60, y, 60, k_LineHeight); + if (GUI.Button(sortButtonRect, "Sort")) + { + bool changed = true; + while (entries.arraySize > 1 && changed) + { + changed = false; + for (int i = 0; i < entries.arraySize - 1; ++i) + { + var e1 = entries.GetArrayElementAtIndex(i); + var e2 = entries.GetArrayElementAtIndex(i + 1); + + if (e1.FindPropertyRelative("delay").floatValue > e2.FindPropertyRelative("delay").floatValue) + { + entries.MoveArrayElement(i + 1, i); + changed = true; + break; + } + } + } + } + + + // Set indent back to what it was + EditorGUI.indentLevel = indent; + // + + + EditorGUI.EndProperty(); + } + + + public override float GetPropertyHeight(SerializedProperty property, GUIContent label) + { + SerializedProperty entries = property.FindPropertyRelative("entries"); + float lineAndSpace = k_LineHeight + k_Spacing; + return 40 + (entries.arraySize*lineAndSpace) + lineAndSpace; + } + } +#endif +} diff --git a/Assets/Standard Assets/Utility/TimedObjectActivator.cs.meta b/Assets/Standard Assets/Utility/TimedObjectActivator.cs.meta new file mode 100644 index 0000000..e2fd0fc --- /dev/null +++ b/Assets/Standard Assets/Utility/TimedObjectActivator.cs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 3a7cedf246fca744f90cbdc9dbe41166 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: diff --git a/Assets/Standard Assets/Utility/TimedObjectDestructor.cs b/Assets/Standard Assets/Utility/TimedObjectDestructor.cs new file mode 100644 index 0000000..fdf5e07 --- /dev/null +++ b/Assets/Standard Assets/Utility/TimedObjectDestructor.cs @@ -0,0 +1,27 @@ +using System; +using UnityEngine; + +namespace UnityStandardAssets.Utility +{ + public class TimedObjectDestructor : MonoBehaviour + { + [SerializeField] private float m_TimeOut = 1.0f; + [SerializeField] private bool m_DetachChildren = false; + + + private void Awake() + { + Invoke("DestroyNow", m_TimeOut); + } + + + private void DestroyNow() + { + if (m_DetachChildren) + { + transform.DetachChildren(); + } + DestroyObject(gameObject); + } + } +} diff --git a/Assets/Standard Assets/Utility/TimedObjectDestructor.cs.meta b/Assets/Standard Assets/Utility/TimedObjectDestructor.cs.meta new file mode 100644 index 0000000..9dec4d4 --- /dev/null +++ b/Assets/Standard Assets/Utility/TimedObjectDestructor.cs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 37fac21d1f093d344816942d1abce94e +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: diff --git a/Assets/Standard Assets/Utility/WaypointCircuit.cs b/Assets/Standard Assets/Utility/WaypointCircuit.cs new file mode 100644 index 0000000..4f483fa --- /dev/null +++ b/Assets/Standard Assets/Utility/WaypointCircuit.cs @@ -0,0 +1,384 @@ +using System; +using System.Collections; +using UnityEngine; +#if UNITY_EDITOR +using UnityEditor; + +#endif + +namespace UnityStandardAssets.Utility +{ + public class WaypointCircuit : MonoBehaviour + { + public WaypointList waypointList = new WaypointList(); + [SerializeField] private bool smoothRoute = true; + private int numPoints; + private Vector3[] points; + private float[] distances; + + public float editorVisualisationSubsteps = 100; + public float Length { get; private set; } + + public Transform[] Waypoints + { + get { return waypointList.items; } + } + + //this being here will save GC allocs + private int p0n; + private int p1n; + private int p2n; + private int p3n; + + private float i; + private Vector3 P0; + private Vector3 P1; + private Vector3 P2; + private Vector3 P3; + + // Use this for initialization + private void Awake() + { + if (Waypoints.Length > 1) + { + CachePositionsAndDistances(); + } + numPoints = Waypoints.Length; + } + + + public RoutePoint GetRoutePoint(float dist) + { + // position and direction + Vector3 p1 = GetRoutePosition(dist); + Vector3 p2 = GetRoutePosition(dist + 0.1f); + Vector3 delta = p2 - p1; + return new RoutePoint(p1, delta.normalized); + } + + + public Vector3 GetRoutePosition(float dist) + { + int point = 0; + + if (Length == 0) + { + Length = distances[distances.Length - 1]; + } + + dist = Mathf.Repeat(dist, Length); + + while (distances[point] < dist) + { + ++point; + } + + + // get nearest two points, ensuring points wrap-around start & end of circuit + p1n = ((point - 1) + numPoints)%numPoints; + p2n = point; + + // found point numbers, now find interpolation value between the two middle points + + i = Mathf.InverseLerp(distances[p1n], distances[p2n], dist); + + if (smoothRoute) + { + // smooth catmull-rom calculation between the two relevant points + + + // get indices for the surrounding 2 points, because + // four points are required by the catmull-rom function + p0n = ((point - 2) + numPoints)%numPoints; + p3n = (point + 1)%numPoints; + + // 2nd point may have been the 'last' point - a dupe of the first, + // (to give a value of max track distance instead of zero) + // but now it must be wrapped back to zero if that was the case. + p2n = p2n%numPoints; + + P0 = points[p0n]; + P1 = points[p1n]; + P2 = points[p2n]; + P3 = points[p3n]; + + return CatmullRom(P0, P1, P2, P3, i); + } + else + { + // simple linear lerp between the two points: + + p1n = ((point - 1) + numPoints)%numPoints; + p2n = point; + + return Vector3.Lerp(points[p1n], points[p2n], i); + } + } + + + private Vector3 CatmullRom(Vector3 p0, Vector3 p1, Vector3 p2, Vector3 p3, float i) + { + // comments are no use here... it's the catmull-rom equation. + // Un-magic this, lord vector! + return 0.5f* + ((2*p1) + (-p0 + p2)*i + (2*p0 - 5*p1 + 4*p2 - p3)*i*i + + (-p0 + 3*p1 - 3*p2 + p3)*i*i*i); + } + + + private void CachePositionsAndDistances() + { + // transfer the position of each point and distances between points to arrays for + // speed of lookup at runtime + points = new Vector3[Waypoints.Length + 1]; + distances = new float[Waypoints.Length + 1]; + + float accumulateDistance = 0; + for (int i = 0; i < points.Length; ++i) + { + var t1 = Waypoints[(i)%Waypoints.Length]; + var t2 = Waypoints[(i + 1)%Waypoints.Length]; + if (t1 != null && t2 != null) + { + Vector3 p1 = t1.position; + Vector3 p2 = t2.position; + points[i] = Waypoints[i%Waypoints.Length].position; + distances[i] = accumulateDistance; + accumulateDistance += (p1 - p2).magnitude; + } + } + } + + + private void OnDrawGizmos() + { + DrawGizmos(false); + } + + + private void OnDrawGizmosSelected() + { + DrawGizmos(true); + } + + + private void DrawGizmos(bool selected) + { + waypointList.circuit = this; + if (Waypoints.Length > 1) + { + numPoints = Waypoints.Length; + + CachePositionsAndDistances(); + Length = distances[distances.Length - 1]; + + Gizmos.color = selected ? Color.yellow : new Color(1, 1, 0, 0.5f); + Vector3 prev = Waypoints[0].position; + if (smoothRoute) + { + for (float dist = 0; dist < Length; dist += Length/editorVisualisationSubsteps) + { + Vector3 next = GetRoutePosition(dist + 1); + Gizmos.DrawLine(prev, next); + prev = next; + } + Gizmos.DrawLine(prev, Waypoints[0].position); + } + else + { + for (int n = 0; n < Waypoints.Length; ++n) + { + Vector3 next = Waypoints[(n + 1)%Waypoints.Length].position; + Gizmos.DrawLine(prev, next); + prev = next; + } + } + } + } + + + [Serializable] + public class WaypointList + { + public WaypointCircuit circuit; + public Transform[] items = new Transform[0]; + } + + public struct RoutePoint + { + public Vector3 position; + public Vector3 direction; + + + public RoutePoint(Vector3 position, Vector3 direction) + { + this.position = position; + this.direction = direction; + } + } + } +} + +namespace UnityStandardAssets.Utility.Inspector +{ +#if UNITY_EDITOR + [CustomPropertyDrawer(typeof (WaypointCircuit.WaypointList))] + public class WaypointListDrawer : PropertyDrawer + { + private float lineHeight = 18; + private float spacing = 4; + + + public override void OnGUI(Rect position, SerializedProperty property, GUIContent label) + { + EditorGUI.BeginProperty(position, label, property); + + float x = position.x; + float y = position.y; + float inspectorWidth = position.width; + + // Draw label + + + // Don't make child fields be indented + var indent = EditorGUI.indentLevel; + EditorGUI.indentLevel = 0; + + var items = property.FindPropertyRelative("items"); + var titles = new string[] {"Transform", "", "", ""}; + var props = new string[] {"transform", "^", "v", "-"}; + var widths = new float[] {.7f, .1f, .1f, .1f}; + float lineHeight = 18; + bool changedLength = false; + if (items.arraySize > 0) + { + for (int i = -1; i < items.arraySize; ++i) + { + var item = items.GetArrayElementAtIndex(i); + + float rowX = x; + for (int n = 0; n < props.Length; ++n) + { + float w = widths[n]*inspectorWidth; + + // Calculate rects + Rect rect = new Rect(rowX, y, w, lineHeight); + rowX += w; + + if (i == -1) + { + EditorGUI.LabelField(rect, titles[n]); + } + else + { + if (n == 0) + { + EditorGUI.ObjectField(rect, item.objectReferenceValue, typeof (Transform), true); + } + else + { + if (GUI.Button(rect, props[n])) + { + switch (props[n]) + { + case "-": + items.DeleteArrayElementAtIndex(i); + items.DeleteArrayElementAtIndex(i); + changedLength = true; + break; + case "v": + if (i > 0) + { + items.MoveArrayElement(i, i + 1); + } + break; + case "^": + if (i < items.arraySize - 1) + { + items.MoveArrayElement(i, i - 1); + } + break; + } + } + } + } + } + + y += lineHeight + spacing; + if (changedLength) + { + break; + } + } + } + else + { + // add button + var addButtonRect = new Rect((x + position.width) - widths[widths.Length - 1]*inspectorWidth, y, + widths[widths.Length - 1]*inspectorWidth, lineHeight); + if (GUI.Button(addButtonRect, "+")) + { + items.InsertArrayElementAtIndex(items.arraySize); + } + + y += lineHeight + spacing; + } + + // add all button + var addAllButtonRect = new Rect(x, y, inspectorWidth, lineHeight); + if (GUI.Button(addAllButtonRect, "Assign using all child objects")) + { + var circuit = property.FindPropertyRelative("circuit").objectReferenceValue as WaypointCircuit; + var children = new Transform[circuit.transform.childCount]; + int n = 0; + foreach (Transform child in circuit.transform) + { + children[n++] = child; + } + Array.Sort(children, new TransformNameComparer()); + circuit.waypointList.items = new Transform[children.Length]; + for (n = 0; n < children.Length; ++n) + { + circuit.waypointList.items[n] = children[n]; + } + } + y += lineHeight + spacing; + + // rename all button + var renameButtonRect = new Rect(x, y, inspectorWidth, lineHeight); + if (GUI.Button(renameButtonRect, "Auto Rename numerically from this order")) + { + var circuit = property.FindPropertyRelative("circuit").objectReferenceValue as WaypointCircuit; + int n = 0; + foreach (Transform child in circuit.waypointList.items) + { + child.name = "Waypoint " + (n++).ToString("000"); + } + } + y += lineHeight + spacing; + + // Set indent back to what it was + EditorGUI.indentLevel = indent; + EditorGUI.EndProperty(); + } + + + public override float GetPropertyHeight(SerializedProperty property, GUIContent label) + { + SerializedProperty items = property.FindPropertyRelative("items"); + float lineAndSpace = lineHeight + spacing; + return 40 + (items.arraySize*lineAndSpace) + lineAndSpace; + } + + + // comparer for check distances in ray cast hits + public class TransformNameComparer : IComparer + { + public int Compare(object x, object y) + { + return ((Transform) x).name.CompareTo(((Transform) y).name); + } + } + } +#endif +} diff --git a/Assets/Standard Assets/Utility/WaypointCircuit.cs.meta b/Assets/Standard Assets/Utility/WaypointCircuit.cs.meta new file mode 100644 index 0000000..7dd72d7 --- /dev/null +++ b/Assets/Standard Assets/Utility/WaypointCircuit.cs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 70852dc981465ea48bb527b9e33a87fd +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: diff --git a/Assets/Standard Assets/Utility/WaypointProgressTracker.cs b/Assets/Standard Assets/Utility/WaypointProgressTracker.cs new file mode 100644 index 0000000..750b779 --- /dev/null +++ b/Assets/Standard Assets/Utility/WaypointProgressTracker.cs @@ -0,0 +1,152 @@ +using System; +using UnityEngine; + +namespace UnityStandardAssets.Utility +{ + public class WaypointProgressTracker : MonoBehaviour + { + // This script can be used with any object that is supposed to follow a + // route marked out by waypoints. + + // This script manages the amount to look ahead along the route, + // and keeps track of progress and laps. + + [SerializeField] private WaypointCircuit circuit; // A reference to the waypoint-based route we should follow + + [SerializeField] private float lookAheadForTargetOffset = 5; + // The offset ahead along the route that the we will aim for + + [SerializeField] private float lookAheadForTargetFactor = .1f; + // A multiplier adding distance ahead along the route to aim for, based on current speed + + [SerializeField] private float lookAheadForSpeedOffset = 10; + // The offset ahead only the route for speed adjustments (applied as the rotation of the waypoint target transform) + + [SerializeField] private float lookAheadForSpeedFactor = .2f; + // A multiplier adding distance ahead along the route for speed adjustments + + [SerializeField] private ProgressStyle progressStyle = ProgressStyle.SmoothAlongRoute; + // whether to update the position smoothly along the route (good for curved paths) or just when we reach each waypoint. + + [SerializeField] private float pointToPointThreshold = 4; + // proximity to waypoint which must be reached to switch target to next waypoint : only used in PointToPoint mode. + + public enum ProgressStyle + { + SmoothAlongRoute, + PointToPoint, + } + + // these are public, readable by other objects - i.e. for an AI to know where to head! + public WaypointCircuit.RoutePoint targetPoint { get; private set; } + public WaypointCircuit.RoutePoint speedPoint { get; private set; } + public WaypointCircuit.RoutePoint progressPoint { get; private set; } + + public Transform target; + + private float progressDistance; // The progress round the route, used in smooth mode. + private int progressNum; // the current waypoint number, used in point-to-point mode. + private Vector3 lastPosition; // Used to calculate current speed (since we may not have a rigidbody component) + private float speed; // current speed of this object (calculated from delta since last frame) + + // setup script properties + private void Start() + { + // we use a transform to represent the point to aim for, and the point which + // is considered for upcoming changes-of-speed. This allows this component + // to communicate this information to the AI without requiring further dependencies. + + // You can manually create a transform and assign it to this component *and* the AI, + // then this component will update it, and the AI can read it. + if (target == null) + { + target = new GameObject(name + " Waypoint Target").transform; + } + + Reset(); + } + + + // reset the object to sensible values + public void Reset() + { + progressDistance = 0; + progressNum = 0; + if (progressStyle == ProgressStyle.PointToPoint) + { + target.position = circuit.Waypoints[progressNum].position; + target.rotation = circuit.Waypoints[progressNum].rotation; + } + } + + + private void Update() + { + if (progressStyle == ProgressStyle.SmoothAlongRoute) + { + // determine the position we should currently be aiming for + // (this is different to the current progress position, it is a a certain amount ahead along the route) + // we use lerp as a simple way of smoothing out the speed over time. + if (Time.deltaTime > 0) + { + speed = Mathf.Lerp(speed, (lastPosition - transform.position).magnitude/Time.deltaTime, + Time.deltaTime); + } + target.position = + circuit.GetRoutePoint(progressDistance + lookAheadForTargetOffset + lookAheadForTargetFactor*speed) + .position; + target.rotation = + Quaternion.LookRotation( + circuit.GetRoutePoint(progressDistance + lookAheadForSpeedOffset + lookAheadForSpeedFactor*speed) + .direction); + + + // get our current progress along the route + progressPoint = circuit.GetRoutePoint(progressDistance); + Vector3 progressDelta = progressPoint.position - transform.position; + if (Vector3.Dot(progressDelta, progressPoint.direction) < 0) + { + progressDistance += progressDelta.magnitude*0.5f; + } + + lastPosition = transform.position; + } + else + { + // point to point mode. Just increase the waypoint if we're close enough: + + Vector3 targetDelta = target.position - transform.position; + if (targetDelta.magnitude < pointToPointThreshold) + { + progressNum = (progressNum + 1)%circuit.Waypoints.Length; + } + + + target.position = circuit.Waypoints[progressNum].position; + target.rotation = circuit.Waypoints[progressNum].rotation; + + // get our current progress along the route + progressPoint = circuit.GetRoutePoint(progressDistance); + Vector3 progressDelta = progressPoint.position - transform.position; + if (Vector3.Dot(progressDelta, progressPoint.direction) < 0) + { + progressDistance += progressDelta.magnitude; + } + lastPosition = transform.position; + } + } + + + private void OnDrawGizmos() + { + if (Application.isPlaying) + { + Gizmos.color = Color.green; + Gizmos.DrawLine(transform.position, target.position); + Gizmos.DrawWireSphere(circuit.GetRoutePosition(progressDistance), 1); + Gizmos.color = Color.yellow; + Gizmos.DrawLine(target.position, target.position + target.forward); + } + } + } +} diff --git a/Assets/Standard Assets/Utility/WaypointProgressTracker.cs.meta b/Assets/Standard Assets/Utility/WaypointProgressTracker.cs.meta new file mode 100644 index 0000000..79b21ef --- /dev/null +++ b/Assets/Standard Assets/Utility/WaypointProgressTracker.cs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: c5cb22d331ef7d64796f917c6a455a32 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: From d81680c68ba129453d6811f2f4c12619ed54da8e Mon Sep 17 00:00:00 2001 From: max89max Date: Sat, 7 Nov 2015 20:58:51 +0100 Subject: [PATCH 04/13] Merge branch 'master' of https://github.com/ETSConjure/EscapeTheRoom # Please enter a commit message to explain why this merge is necessary, # especially if it merges an updated upstream into a topic branch. # # Lines starting with '#' will be ignored, and an empty message aborts # the commit. --- Assets/Scripts.meta | 9 +++++++ Assets/Scripts/monsterAI.cs | 40 ++++++++++++++++++++++++++++++++ Assets/Scripts/monsterAI.cs.meta | 12 ++++++++++ 3 files changed, 61 insertions(+) create mode 100644 Assets/Scripts.meta create mode 100644 Assets/Scripts/monsterAI.cs create mode 100644 Assets/Scripts/monsterAI.cs.meta diff --git a/Assets/Scripts.meta b/Assets/Scripts.meta new file mode 100644 index 0000000..0e54acc --- /dev/null +++ b/Assets/Scripts.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 82200e55c3b1e4126883ef4efb2c9891 +folderAsset: yes +timeCreated: 1446924476 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/monsterAI.cs b/Assets/Scripts/monsterAI.cs new file mode 100644 index 0000000..f114c40 --- /dev/null +++ b/Assets/Scripts/monsterAI.cs @@ -0,0 +1,40 @@ +using UnityEngine; +using System.Collections; + +public class monsterAI : MonoBehaviour +{ + public GameObject player; + private Transform target = player.transform; + public float deadlyDistance; + public float rotationDamping; + + // Use this for initialization + void Start () + { + + } + + // Update is called once per frame + void Update () + { + + } + + // Check is the current distance is deadly for the target + bool IsAtDeadlyDistance () { + return (deadlyDistance <= Vector3.Distance(target.position, transform.position); + } + + // Follow player from a certain initial distance at a certain speed. + void FollowTarget () + { + + } + + // Look toward target + void LookAtTarget () { + Quaternion rotation = Quaternion.LookRotation (target.rotation - transform.rotation); + transform.rotation = Quaternion.Slerp(transform.rotation, rotation, Time.deltaTime * rotationDamping); + + } +} diff --git a/Assets/Scripts/monsterAI.cs.meta b/Assets/Scripts/monsterAI.cs.meta new file mode 100644 index 0000000..8fff61f --- /dev/null +++ b/Assets/Scripts/monsterAI.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 10ca748d7d0094f16b50525c5401d788 +timeCreated: 1446922382 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: From 92a25be9fcf841fe7b2f08282af0fb32656927c2 Mon Sep 17 00:00:00 2001 From: max89max Date: Sat, 7 Nov 2015 20:59:40 +0100 Subject: [PATCH 05/13] PlayerControler --- Assets/Script/FirstPersonController.cs.meta | 9 --------- Assets/{Script => Scripts}/FirstPersonController.cs | 0 2 files changed, 9 deletions(-) delete mode 100644 Assets/Script/FirstPersonController.cs.meta rename Assets/{Script => Scripts}/FirstPersonController.cs (100%) diff --git a/Assets/Script/FirstPersonController.cs.meta b/Assets/Script/FirstPersonController.cs.meta deleted file mode 100644 index 437171c..0000000 --- a/Assets/Script/FirstPersonController.cs.meta +++ /dev/null @@ -1,9 +0,0 @@ -fileFormatVersion: 2 -guid: 05ec5cf00ca181d45a42ba1870e148c3 -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: diff --git a/Assets/Script/FirstPersonController.cs b/Assets/Scripts/FirstPersonController.cs similarity index 100% rename from Assets/Script/FirstPersonController.cs rename to Assets/Scripts/FirstPersonController.cs From 9601bea8ee1a108c286aebece7d079771101db4a Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 7 Nov 2015 15:18:19 -0500 Subject: [PATCH 06/13] premiere trap --- ProjectSettings/ProjectSettings.asset | 4 ++++ ProjectSettings/TagManager.asset | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset index 67cf571..696411b 100644 --- a/ProjectSettings/ProjectSettings.asset +++ b/ProjectSettings/ProjectSettings.asset @@ -442,6 +442,7 @@ PlayerSettings: XboxOneAllowedProductIds: [] XboxOnePersistentLocalStorageSize: 0 intPropertyNames: + - Android::ScriptingBackend - Metro::ScriptingBackend - Standalone::ScriptingBackend - WP8::ScriptingBackend @@ -451,7 +452,9 @@ PlayerSettings: - WebGL::memorySize - WebPlayer::ScriptingBackend - iOS::Architecture + - iOS::EnableIncrementalBuildSupportForIl2cpp - iOS::ScriptingBackend + Android::ScriptingBackend: 0 Metro::ScriptingBackend: 2 Standalone::ScriptingBackend: 0 WP8::ScriptingBackend: 2 @@ -461,6 +464,7 @@ PlayerSettings: WebGL::memorySize: 256 WebPlayer::ScriptingBackend: 0 iOS::Architecture: 2 + iOS::EnableIncrementalBuildSupportForIl2cpp: 0 iOS::ScriptingBackend: 1 boolPropertyNames: - WebGL::analyzeBuildSize diff --git a/ProjectSettings/TagManager.asset b/ProjectSettings/TagManager.asset index 1c92a78..176c2c8 100644 --- a/ProjectSettings/TagManager.asset +++ b/ProjectSettings/TagManager.asset @@ -3,7 +3,8 @@ --- !u!78 &1 TagManager: serializedVersion: 2 - tags: [] + tags: + - Trap layers: - Default - TransparentFX From 154db088c298bf4a3b328166af0e059e576d21fb Mon Sep 17 00:00:00 2001 From: Benjamin Comeau Date: Sat, 7 Nov 2015 15:28:15 -0500 Subject: [PATCH 07/13] bug fix --- Assets/Scripts/monsterAI.cs | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/Assets/Scripts/monsterAI.cs b/Assets/Scripts/monsterAI.cs index f114c40..0b37fed 100644 --- a/Assets/Scripts/monsterAI.cs +++ b/Assets/Scripts/monsterAI.cs @@ -4,37 +4,47 @@ using System.Collections; public class monsterAI : MonoBehaviour { public GameObject player; - private Transform target = player.transform; + private Transform target; public float deadlyDistance; - public float rotationDamping; + public float rotationDamping; // Lower rotation damping = slower rotation + public float moveSpeed; // Use this for initialization void Start () { + target = player.transform; } // Update is called once per frame void Update () { + if (IsAtDeadlyDistance ()) { + // Kill the player + } else { + LookAtTarget (); + MoveTowardTarget (); + } } // Check is the current distance is deadly for the target - bool IsAtDeadlyDistance () { - return (deadlyDistance <= Vector3.Distance(target.position, transform.position); - } - - // Follow player from a certain initial distance at a certain speed. - void FollowTarget () + bool IsAtDeadlyDistance () { - + return (deadlyDistance <= Vector3.Distance (target.position, transform.position)); } // Look toward target - void LookAtTarget () { - Quaternion rotation = Quaternion.LookRotation (target.rotation - transform.rotation); - transform.rotation = Quaternion.Slerp(transform.rotation, rotation, Time.deltaTime * rotationDamping); + void LookAtTarget () + { + //Quaternion rotation = Quaternion.LookRotation (target.rotation - transform.rotation); + //transform.rotation = Quaternion.Slerp (transform.rotation, rotation, Time.deltaTime * rotationDamping); } + // Follow player from a certain initial distance at a certain speed. + void MoveTowardTarget () + { + transform.Translate (Vector3.forward * moveSpeed * Time.deltaTime); + } + } From 3724a915c01d43bd1698515ef2b65a56d57b60e8 Mon Sep 17 00:00:00 2001 From: Benjamin Comeau Date: Sat, 7 Nov 2015 15:39:42 -0500 Subject: [PATCH 08/13] add player to scene Ben --- Assets/Scenes/BenScene.unity | 697 +++++++++++++++++++++++++++++++++++ 1 file changed, 697 insertions(+) create mode 100644 Assets/Scenes/BenScene.unity diff --git a/Assets/Scenes/BenScene.unity b/Assets/Scenes/BenScene.unity new file mode 100644 index 0000000..3e2ea93 --- /dev/null +++ b/Assets/Scenes/BenScene.unity @@ -0,0 +1,697 @@ +%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!157 &3 +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_ReflectionCompression: 2 + m_LightmapSnapshot: {fileID: 0} + m_RuntimeCPUUsage: 25 +--- !u!196 &4 +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 &949023940 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 949023945} + - 33: {fileID: 949023944} + - 136: {fileID: 949023943} + - 23: {fileID: 949023942} + - 114: {fileID: 949023941} + m_Layer: 0 + m_Name: Monster + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &949023941 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 949023940} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 10ca748d7d0094f16b50525c5401d788, type: 3} + m_Name: + m_EditorClassIdentifier: + player: {fileID: 0} + deadlyDistance: 0 + rotationDamping: 0 + moveSpeed: 0 +--- !u!23 &949023942 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 949023940} + 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!136 &949023943 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 949023940} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: .5 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &949023944 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 949023940} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &949023945 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 949023940} + m_LocalRotation: {x: 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: 1632708745} + m_Father: {fileID: 0} + m_RootOrder: 3 +--- !u!1 &1335793729 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1335793731} + - 108: {fileID: 1335793730} + 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 &1335793730 +Light: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1335793729} + 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 &1335793731 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1335793729} + 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: 2 +--- !u!1 &1632708744 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1632708745} + - 33: {fileID: 1632708748} + - 135: {fileID: 1632708747} + - 23: {fileID: 1632708746} + m_Layer: 0 + m_Name: Head + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1632708745 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1632708744} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: .600000024, z: .5} + m_LocalScale: {x: .5, y: .5, z: .5} + m_Children: [] + m_Father: {fileID: 949023945} + m_RootOrder: 0 +--- !u!23 &1632708746 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1632708744} + 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 &1632708747 +SphereCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1632708744} + 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 &1632708748 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1632708744} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1741083282 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1741083287} + - 20: {fileID: 1741083286} + - 92: {fileID: 1741083285} + - 124: {fileID: 1741083284} + - 81: {fileID: 1741083283} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &1741083283 +AudioListener: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1741083282} + m_Enabled: 1 +--- !u!124 &1741083284 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1741083282} + m_Enabled: 1 +--- !u!92 &1741083285 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1741083282} + m_Enabled: 1 +--- !u!20 &1741083286 +Camera: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1741083282} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: .192156866, g: .301960796, b: .474509805, a: .0196078438} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: .300000012 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: .0219999999 + m_StereoMirrorMode: 0 +--- !u!4 &1741083287 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1741083282} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 +--- !u!1 &1792249522 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1792249527} + - 20: {fileID: 1792249526} + - 92: {fileID: 1792249525} + - 124: {fileID: 1792249524} + - 81: {fileID: 1792249523} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &1792249523 +AudioListener: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1792249522} + m_Enabled: 1 +--- !u!124 &1792249524 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1792249522} + m_Enabled: 1 +--- !u!92 &1792249525 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1792249522} + m_Enabled: 1 +--- !u!20 &1792249526 +Camera: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1792249522} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: .192156866, g: .301960796, b: .474509805, a: .0196078438} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: .300000012 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: .0219999999 + m_StereoMirrorMode: 0 +--- !u!4 &1792249527 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1792249522} + m_LocalRotation: {x: 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: 1900049396} + m_RootOrder: 0 +--- !u!1 &1900049395 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1900049396} + - 114: {fileID: 1900049400} + - 143: {fileID: 1900049399} + - 54: {fileID: 1900049398} + - 82: {fileID: 1900049397} + m_Layer: 0 + m_Name: FirstPerson + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1900049396 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1900049395} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: .545000017, z: -.409999996} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1792249527} + m_Father: {fileID: 0} + m_RootOrder: 0 +--- !u!82 &1900049397 +AudioSource: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1900049395} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 0} + m_PlayOnAwake: 1 + m_Volume: 1 + m_Pitch: 1 + Loop: 0 + Mute: 0 + Spatialize: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 +--- !u!54 &1900049398 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1900049395} + 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!143 &1900049399 +CharacterController: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1900049395} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Height: 1.79999995 + m_Radius: .5 + m_SlopeLimit: 45 + m_StepOffset: .300000012 + m_SkinWidth: .0799999982 + m_MinMoveDistance: 0 + m_Center: {x: 0, y: 0, z: 0} +--- !u!114 &1900049400 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1900049395} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4bcce75dab8f540b797340354c772d8b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IsWalking: 1 + m_WalkSpeed: 2 + m_RunSpeed: 0 + m_RunstepLenghten: 0 + m_JumpSpeed: 0 + m_StickToGroundForce: 0 + m_GravityMultiplier: 0 + m_MouseLook: + XSensitivity: 2 + YSensitivity: 2 + clampVerticalRotation: 1 + MinimumX: -90 + MaximumX: 90 + smooth: 0 + smoothTime: 5 + m_UseFovKick: 0 + m_FovKick: + Camera: {fileID: 0} + originalFov: 0 + FOVIncrease: 3 + TimeToIncrease: 1 + TimeToDecrease: 1 + IncreaseCurve: + serializedVersion: 2 + m_Curve: [] + m_PreInfinity: 2 + m_PostInfinity: 2 + m_UseHeadBob: 0 + m_HeadBob: + HorizontalBobRange: .330000013 + VerticalBobRange: .330000013 + Bobcurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: .5 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1.5 + value: -1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 2 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + VerticaltoHorizontalRatio: 1 + m_JumpBob: + BobDuration: 0 + BobAmount: 0 + m_StepInterval: 0 + m_FootstepSounds: [] + m_JumpSound: {fileID: 0} + m_LandSound: {fileID: 0} From 8c800b6b4f7a67070054163054e1bc1f9ecf5bf8 Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 7 Nov 2015 16:03:11 -0500 Subject: [PATCH 09/13] firstTrap prefab --- Assets/{Prefab.meta => Materials.meta} | 4 +- Assets/Materials/BladeTrapMaterial.mat | 138 ++++ Assets/Materials/BladeTrapMaterial.mat.meta | 8 + Assets/{Script.meta => Prefabs.meta} | 4 +- Assets/Prefabs/BladeTrap.prefab | 13 + Assets/Prefabs/BladeTrap.prefab.meta | 8 + Assets/Scenes/FrancisScene.unity | 606 ++++++++++++++++++ .../FrancisScene.unity.meta} | 5 +- Assets/Scripts/BladeTrapScript.cs | 56 ++ Assets/Scripts/BladeTrapScript.cs.meta | 12 + Assets/Scripts/BladeTrapTriggers.cs | 27 + Assets/Scripts/BladeTrapTriggers.cs.meta | 12 + Assets/Scripts/FirstPersonController.cs.meta | 12 + Assets/Scripts/monsterAI.cs.meta | 2 +- .../Characters/PhysicsMaterials.meta | 6 - 15 files changed, 899 insertions(+), 14 deletions(-) rename Assets/{Prefab.meta => Materials.meta} (67%) create mode 100644 Assets/Materials/BladeTrapMaterial.mat create mode 100644 Assets/Materials/BladeTrapMaterial.mat.meta rename Assets/{Script.meta => Prefabs.meta} (67%) create mode 100644 Assets/Prefabs/BladeTrap.prefab create mode 100644 Assets/Prefabs/BladeTrap.prefab.meta create mode 100644 Assets/Scenes/FrancisScene.unity rename Assets/{Sound.meta => Scenes/FrancisScene.unity.meta} (58%) create mode 100644 Assets/Scripts/BladeTrapScript.cs create mode 100644 Assets/Scripts/BladeTrapScript.cs.meta create mode 100644 Assets/Scripts/BladeTrapTriggers.cs create mode 100644 Assets/Scripts/BladeTrapTriggers.cs.meta create mode 100644 Assets/Scripts/FirstPersonController.cs.meta delete mode 100644 Assets/Standard Assets/Characters/PhysicsMaterials.meta diff --git a/Assets/Prefab.meta b/Assets/Materials.meta similarity index 67% rename from Assets/Prefab.meta rename to Assets/Materials.meta index 29c665d..dbb542d 100644 --- a/Assets/Prefab.meta +++ b/Assets/Materials.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 -guid: 2efb95ff6f96ef4449d122f4232f7823 +guid: 87714f7f73288694e9ec4117cacc2493 folderAsset: yes -timeCreated: 1446922465 +timeCreated: 1446925659 licenseType: Free DefaultImporter: userData: diff --git a/Assets/Materials/BladeTrapMaterial.mat b/Assets/Materials/BladeTrapMaterial.mat new file mode 100644 index 0000000..d4f02bb --- /dev/null +++ b/Assets/Materials/BladeTrapMaterial.mat @@ -0,0 +1,138 @@ +%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: BladeTrapMaterial + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, 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} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _SrcBlend + second: 1 + data: + first: + name: _DstBlend + second: 0 + data: + first: + name: _Cutoff + second: .5 + data: + first: + name: _Parallax + second: .0199999996 + data: + first: + name: _ZWrite + second: 1 + data: + first: + name: _Glossiness + second: .5 + data: + first: + name: _BumpScale + second: 1 + data: + first: + name: _OcclusionStrength + second: 1 + data: + first: + name: _DetailNormalMapScale + second: 1 + data: + first: + name: _UVSec + second: 0 + data: + first: + name: _Mode + second: 0 + data: + first: + name: _Metallic + second: 0 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + data: + first: + name: _Color + second: {r: .808823526, g: .0713668019, b: .0713668019, a: 1} diff --git a/Assets/Materials/BladeTrapMaterial.mat.meta b/Assets/Materials/BladeTrapMaterial.mat.meta new file mode 100644 index 0000000..244f19c --- /dev/null +++ b/Assets/Materials/BladeTrapMaterial.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cad7fc84f4314964f87485777e6410c0 +timeCreated: 1446925710 +licenseType: Free +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Script.meta b/Assets/Prefabs.meta similarity index 67% rename from Assets/Script.meta rename to Assets/Prefabs.meta index 8a4d4f4..b07d50e 100644 --- a/Assets/Script.meta +++ b/Assets/Prefabs.meta @@ -1,7 +1,7 @@ fileFormatVersion: 2 -guid: 76d6da14616ce77438d759af609d8368 +guid: 6e092e0d959c5e74e9f85a474ff76505 folderAsset: yes -timeCreated: 1446922454 +timeCreated: 1446929967 licenseType: Free DefaultImporter: userData: diff --git a/Assets/Prefabs/BladeTrap.prefab b/Assets/Prefabs/BladeTrap.prefab new file mode 100644 index 0000000..a459af2 --- /dev/null +++ b/Assets/Prefabs/BladeTrap.prefab @@ -0,0 +1,13 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 0} + m_IsPrefabParent: 1 diff --git a/Assets/Prefabs/BladeTrap.prefab.meta b/Assets/Prefabs/BladeTrap.prefab.meta new file mode 100644 index 0000000..30e8e4a --- /dev/null +++ b/Assets/Prefabs/BladeTrap.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ed3c63e28f69853439e23037fe66bd7e +timeCreated: 1446929971 +licenseType: Free +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/FrancisScene.unity b/Assets/Scenes/FrancisScene.unity new file mode 100644 index 0000000..d9b2c96 --- /dev/null +++ b/Assets/Scenes/FrancisScene.unity @@ -0,0 +1,606 @@ +%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!157 &3 +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_ReflectionCompression: 2 + m_LightmapSnapshot: {fileID: 0} + m_RuntimeCPUUsage: 25 +--- !u!196 &4 +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 &51161942 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 51161947} + - 33: {fileID: 51161946} + - 65: {fileID: 51161945} + - 23: {fileID: 51161944} + - 54: {fileID: 51161948} + - 114: {fileID: 51161943} + m_Layer: 0 + m_Name: Blade + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &51161943 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 51161942} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 36679b68705774b4db17d51844bbad63, type: 3} + m_Name: + m_EditorClassIdentifier: + trapSpeed: 2 + maxDistance: 5 +--- !u!23 &51161944 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 51161942} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: cad7fc84f4314964f87485777e6410c0, 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_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &51161945 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 51161942} + m_Material: {fileID: 0} + m_IsTrigger: 1 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!33 &51161946 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 51161942} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &51161947 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 51161942} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -.600000024, z: 0} + m_LocalScale: {x: 1, y: 1, z: .150000006} + m_Children: [] + m_Father: {fileID: 548158196} + m_RootOrder: 0 +--- !u!54 &51161948 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 51161942} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: .0500000007 + m_UseGravity: 0 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!1 &334332187 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 334332191} + - 33: {fileID: 334332190} + - 65: {fileID: 334332189} + - 23: {fileID: 334332188} + - 54: {fileID: 334332192} + m_Layer: 0 + m_Name: Cube + m_TagString: Player + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &334332188 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 334332187} + 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 &334332189 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 334332187} + 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 &334332190 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 334332187} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &334332191 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 334332187} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: .5, z: 3.02999997} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 4 +--- !u!54 &334332192 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 334332187} + 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: 0 +--- !u!1 &417479667 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 417479672} + - 20: {fileID: 417479671} + - 92: {fileID: 417479670} + - 124: {fileID: 417479669} + - 81: {fileID: 417479668} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &417479668 +AudioListener: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 417479667} + m_Enabled: 1 +--- !u!124 &417479669 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 417479667} + m_Enabled: 1 +--- !u!92 &417479670 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 417479667} + m_Enabled: 1 +--- !u!20 &417479671 +Camera: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 417479667} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: .192156866, g: .301960796, b: .474509805, a: .0196078438} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: .300000012 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: .0219999999 + m_StereoMirrorMode: 0 +--- !u!4 &417479672 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 417479667} + m_LocalRotation: {x: .305192173, y: .00523545872, z: -.00167789869, w: .952274919} + m_LocalPosition: {x: 0, y: 2, z: -3.21000004} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 +--- !u!1 &548158195 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 548158196} + m_Layer: 0 + m_Name: BladeTrap + m_TagString: Trap + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &548158196 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 548158195} + m_LocalRotation: {x: 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: 51161947} + - {fileID: 1082245455} + m_Father: {fileID: 0} + m_RootOrder: 3 +--- !u!1 &835544711 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 835544713} + - 108: {fileID: 835544712} + 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 &835544712 +Light: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 835544711} + 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 &835544713 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 835544711} + m_LocalRotation: {x: .408217937, y: -.234569728, z: .109381676, w: .875426054} + m_LocalPosition: {x: -2.21000004, y: 3, z: -1.27999997} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 +--- !u!1 &1082245454 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1082245455} + - 65: {fileID: 1082245457} + - 65: {fileID: 1082245456} + - 114: {fileID: 1082245458} + m_Layer: 0 + m_Name: trapTriggers + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1082245455 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1082245454} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: .5, z: .610000014} + m_LocalScale: {x: 1, y: 1, z: -.689999998} + m_Children: [] + m_Father: {fileID: 548158196} + m_RootOrder: 1 +--- !u!65 &1082245456 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1082245454} + 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!65 &1082245457 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1082245454} + 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: 1.79999995} +--- !u!114 &1082245458 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1082245454} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5b53a2d97a11ef14182f5c127412647d, type: 3} + m_Name: + m_EditorClassIdentifier: + bladeTrap: {fileID: 51161942} +--- !u!1 &1736981967 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1736981971} + - 33: {fileID: 1736981970} + - 64: {fileID: 1736981969} + - 23: {fileID: 1736981968} + - 65: {fileID: 1736981972} + m_Layer: 0 + m_Name: Sol + m_TagString: Floor + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &1736981968 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1736981967} + 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 &1736981969 +MeshCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1736981967} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 0 + serializedVersion: 2 + m_Convex: 0 + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &1736981970 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1736981967} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1736981971 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1736981967} + m_LocalRotation: {x: .707106829, y: 0, z: 0, w: .707106709} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 15, y: 15, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 +--- !u!65 &1736981972 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1736981967} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: .999999881, z: 6.12323294e-17} + m_Center: {x: 0, y: 0, z: 0} diff --git a/Assets/Sound.meta b/Assets/Scenes/FrancisScene.unity.meta similarity index 58% rename from Assets/Sound.meta rename to Assets/Scenes/FrancisScene.unity.meta index 17aa381..9cf204c 100644 --- a/Assets/Sound.meta +++ b/Assets/Scenes/FrancisScene.unity.meta @@ -1,7 +1,6 @@ fileFormatVersion: 2 -guid: e2839cc8e19d8dc4098d710783dbac88 -folderAsset: yes -timeCreated: 1446922484 +guid: ba30469bc64939a468c3e69f58ac6f36 +timeCreated: 1446922387 licenseType: Free DefaultImporter: userData: diff --git a/Assets/Scripts/BladeTrapScript.cs b/Assets/Scripts/BladeTrapScript.cs new file mode 100644 index 0000000..5e2c355 --- /dev/null +++ b/Assets/Scripts/BladeTrapScript.cs @@ -0,0 +1,56 @@ +using UnityEngine; +using System.Collections; + +public class BladeTrapScript : MonoBehaviour { + public float trapSpeed; + public int maxDistance; + + private Rigidbody rb; + private Vector3 trapPosition; + private bool goingUp; + private bool isStarted; + // Use this for initialization + void Start () { + isStarted = false; + rb = this.GetComponent(); + trapPosition = this.transform.position; + goingUp = true; + } + + // Update is called once per frame + void Update () { + if (isStarted) { + if (this.transform.position.y <= -0.5) { + goingUp = true; + } + if(this.transform.position.y >= 0.5) + { + goingUp = false; + } + if(goingUp) + this.transform.Translate(0, trapSpeed * Time.deltaTime, 0); + else + this.transform.Translate(0, -(trapSpeed * Time.deltaTime), 0); + } + + } + + void OnTriggerEnter(Collider other) { + if(other.tag == "Player") + { + //temporaire + Destroy(other.gameObject); + } + } + + public bool GetIsStarted() + { + return this.isStarted; + } + + public void SetIsStarted(bool isStarted) + { + this.isStarted = isStarted; + } + +} diff --git a/Assets/Scripts/BladeTrapScript.cs.meta b/Assets/Scripts/BladeTrapScript.cs.meta new file mode 100644 index 0000000..22d12d7 --- /dev/null +++ b/Assets/Scripts/BladeTrapScript.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 36679b68705774b4db17d51844bbad63 +timeCreated: 1446922796 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/BladeTrapTriggers.cs b/Assets/Scripts/BladeTrapTriggers.cs new file mode 100644 index 0000000..c35dd86 --- /dev/null +++ b/Assets/Scripts/BladeTrapTriggers.cs @@ -0,0 +1,27 @@ +using UnityEngine; +using System.Collections; + +public class BladeTrapTriggers : MonoBehaviour { + + public GameObject bladeTrap; + + // Use this for initialization + void Start () { + + } + + // Update is called once per frame + void Update () { + + } + + void OnTriggerEnter(Collider other) + { + if(other.tag == "Player") + { + bladeTrap.GetComponent().SetIsStarted(true); + + } + + } +} diff --git a/Assets/Scripts/BladeTrapTriggers.cs.meta b/Assets/Scripts/BladeTrapTriggers.cs.meta new file mode 100644 index 0000000..b524f15 --- /dev/null +++ b/Assets/Scripts/BladeTrapTriggers.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 5b53a2d97a11ef14182f5c127412647d +timeCreated: 1446926458 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/FirstPersonController.cs.meta b/Assets/Scripts/FirstPersonController.cs.meta new file mode 100644 index 0000000..e164ee0 --- /dev/null +++ b/Assets/Scripts/FirstPersonController.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e529ea3a225c2c8468d2027498d3cd74 +timeCreated: 1446927748 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/monsterAI.cs.meta b/Assets/Scripts/monsterAI.cs.meta index 8fff61f..9ef06cb 100644 --- a/Assets/Scripts/monsterAI.cs.meta +++ b/Assets/Scripts/monsterAI.cs.meta @@ -1,6 +1,6 @@ fileFormatVersion: 2 guid: 10ca748d7d0094f16b50525c5401d788 -timeCreated: 1446922382 +timeCreated: 1446928178 licenseType: Free MonoImporter: serializedVersion: 2 diff --git a/Assets/Standard Assets/Characters/PhysicsMaterials.meta b/Assets/Standard Assets/Characters/PhysicsMaterials.meta deleted file mode 100644 index 9c1c9e5..0000000 --- a/Assets/Standard Assets/Characters/PhysicsMaterials.meta +++ /dev/null @@ -1,6 +0,0 @@ -fileFormatVersion: 2 -guid: ea2a5216ffb8d4b319d09e8d7782120c -folderAsset: yes -DefaultImporter: - userData: - assetBundleName: From 04247b313c0dbfb43ed42a17956853accb2955f5 Mon Sep 17 00:00:00 2001 From: Benjamin Comeau Date: Sat, 7 Nov 2015 16:11:05 -0500 Subject: [PATCH 10/13] Le monstre va suivre le player --- Assets/Scenes/BenScene.unity.meta | 8 ++++++++ Assets/Scripts/FirstPersonController.cs.meta | 12 ++++++++++++ Assets/Scripts/monsterAI.cs | 10 +++++++--- 3 files changed, 27 insertions(+), 3 deletions(-) create mode 100644 Assets/Scenes/BenScene.unity.meta create mode 100644 Assets/Scripts/FirstPersonController.cs.meta diff --git a/Assets/Scenes/BenScene.unity.meta b/Assets/Scenes/BenScene.unity.meta new file mode 100644 index 0000000..0182e7e --- /dev/null +++ b/Assets/Scenes/BenScene.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2c1843c7ef59c4177a8d1c75cf7f8399 +timeCreated: 1446925711 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/FirstPersonController.cs.meta b/Assets/Scripts/FirstPersonController.cs.meta new file mode 100644 index 0000000..bc134db --- /dev/null +++ b/Assets/Scripts/FirstPersonController.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 4bcce75dab8f540b797340354c772d8b +timeCreated: 1446927249 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/monsterAI.cs b/Assets/Scripts/monsterAI.cs index 0b37fed..5d87165 100644 --- a/Assets/Scripts/monsterAI.cs +++ b/Assets/Scripts/monsterAI.cs @@ -9,6 +9,9 @@ public class monsterAI : MonoBehaviour public float rotationDamping; // Lower rotation damping = slower rotation public float moveSpeed; + + public float distance; + // Use this for initialization void Start () { @@ -31,15 +34,16 @@ public class monsterAI : MonoBehaviour // Check is the current distance is deadly for the target bool IsAtDeadlyDistance () { - return (deadlyDistance <= Vector3.Distance (target.position, transform.position)); + return (Vector3.Distance (target.position, transform.position) <= deadlyDistance); } // Look toward target void LookAtTarget () { - //Quaternion rotation = Quaternion.LookRotation (target.rotation - transform.rotation); - //transform.rotation = Quaternion.Slerp (transform.rotation, rotation, Time.deltaTime * rotationDamping); + Vector3 relativePos = target.position - transform.position; + Quaternion rotation = Quaternion.LookRotation (relativePos); + transform.rotation = Quaternion.Slerp (transform.rotation, rotation, Time.deltaTime * rotationDamping); } // Follow player from a certain initial distance at a certain speed. void MoveTowardTarget () From 85e6f24f17284c8e5143a883679aacc7c800fd62 Mon Sep 17 00:00:00 2001 From: Benjamin Comeau Date: Sat, 7 Nov 2015 16:30:46 -0500 Subject: [PATCH 11/13] clean up script AI --- Assets/Scenes/BenScene.unity | 127 +++++++++++++++++++++++--- Assets/Scripts/monsterAI.cs | 1 + ProjectSettings/ProjectSettings.asset | 8 +- 3 files changed, 118 insertions(+), 18 deletions(-) diff --git a/Assets/Scenes/BenScene.unity b/Assets/Scenes/BenScene.unity index 3e2ea93..954a9c1 100644 --- a/Assets/Scenes/BenScene.unity +++ b/Assets/Scenes/BenScene.unity @@ -97,6 +97,7 @@ GameObject: - 136: {fileID: 949023943} - 23: {fileID: 949023942} - 114: {fileID: 949023941} + - 54: {fileID: 949023946} m_Layer: 0 m_Name: Monster m_TagString: Untagged @@ -115,10 +116,11 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 10ca748d7d0094f16b50525c5401d788, type: 3} m_Name: m_EditorClassIdentifier: - player: {fileID: 0} - deadlyDistance: 0 - rotationDamping: 0 - moveSpeed: 0 + player: {fileID: 1900049395} + deadlyDistance: 1 + rotationDamping: 2 + moveSpeed: .5 + distance: 0 --- !u!23 &949023942 MeshRenderer: m_ObjectHideFlags: 0 @@ -170,12 +172,27 @@ Transform: m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 949023940} m_LocalRotation: {x: 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, z: 4.71000004} + m_LocalScale: {x: .200000003, y: .200000003, z: .200000003} m_Children: - {fileID: 1632708745} m_Father: {fileID: 0} - m_RootOrder: 3 + m_RootOrder: 4 +--- !u!54 &949023946 +Rigidbody: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 949023940} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: .0500000007 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 12 + m_CollisionDetection: 0 --- !u!1 &1335793729 GameObject: m_ObjectHideFlags: 0 @@ -235,7 +252,93 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 2 + m_RootOrder: 3 +--- !u!1 &1447592087 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1447592092} + - 33: {fileID: 1447592091} + - 64: {fileID: 1447592090} + - 23: {fileID: 1447592089} + - 65: {fileID: 1447592088} + m_Layer: 0 + m_Name: Sol + m_TagString: Floor + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!65 &1447592088 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1447592087} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: .999999881, z: 6.12323294e-17} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1447592089 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1447592087} + 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 &1447592090 +MeshCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1447592087} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 0 + serializedVersion: 2 + m_Convex: 0 + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!33 &1447592091 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1447592087} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1447592092 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1447592087} + m_LocalRotation: {x: .707106829, y: 0, z: 0, w: .707106709} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 40, y: 40, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 --- !u!1 &1632708744 GameObject: m_ObjectHideFlags: 0 @@ -390,11 +493,11 @@ Transform: m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 1741083282} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalPosition: {x: 0, y: 2, z: -10} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 1 + m_RootOrder: 2 --- !u!1 &1792249522 GameObject: m_ObjectHideFlags: 0 @@ -507,12 +610,12 @@ Transform: m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 1900049395} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: .545000017, z: -.409999996} + m_LocalPosition: {x: 0, y: 1, z: -.409999996} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: - {fileID: 1792249527} m_Father: {fileID: 0} - m_RootOrder: 0 + m_RootOrder: 1 --- !u!82 &1900049397 AudioSource: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/monsterAI.cs b/Assets/Scripts/monsterAI.cs index 5d87165..2020c25 100644 --- a/Assets/Scripts/monsterAI.cs +++ b/Assets/Scripts/monsterAI.cs @@ -45,6 +45,7 @@ public class monsterAI : MonoBehaviour transform.rotation = Quaternion.Slerp (transform.rotation, rotation, Time.deltaTime * rotationDamping); } + // Follow player from a certain initial distance at a certain speed. void MoveTowardTarget () { diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset index 83cca07..8d657e2 100644 --- a/ProjectSettings/ProjectSettings.asset +++ b/ProjectSettings/ProjectSettings.asset @@ -163,10 +163,8 @@ PlayerSettings: m_BuildTargetIcons: - m_BuildTarget: m_Icons: - - serializedVersion: 2 - m_Icon: {fileID: 0} - m_Width: 128 - m_Height: 128 + - m_Icon: {fileID: 0} + m_Size: 0 m_BuildTargetBatching: [] m_BuildTargetGraphicsAPIs: [] webPlayerTemplate: APPLICATION:Default @@ -260,8 +258,6 @@ PlayerSettings: ps4pnGameCustomData: 1 playerPrefsSupport: 0 ps4ReprojectionSupport: 0 - ps4UseAudio3dBackend: 0 - ps4Audio3dVirtualSpeakerCount: 14 ps4attribUserManagement: 0 ps4attribMoveSupport: 0 ps4attrib3DSupport: 0 From 26737201f3aafc710093b2840ad4546cb1b58d01 Mon Sep 17 00:00:00 2001 From: Benjamin Comeau Date: Sat, 7 Nov 2015 17:20:12 -0500 Subject: [PATCH 12/13] navmesh agent pour le montre --- Assets/Materials/GlassWallMaterial.mat | 139 +++++++++++++++ Assets/Materials/GlassWallMaterial.mat.meta | 8 + Assets/Scenes/BenScene.meta | 9 + Assets/Scenes/BenScene.unity | 182 +++++++++++++++++++- Assets/Scenes/BenScene/NavMesh.asset | 22 +++ Assets/Scenes/BenScene/NavMesh.asset.meta | 8 + Assets/Scripts/monsterAI.cs | 31 +--- 7 files changed, 367 insertions(+), 32 deletions(-) create mode 100644 Assets/Materials/GlassWallMaterial.mat create mode 100644 Assets/Materials/GlassWallMaterial.mat.meta create mode 100644 Assets/Scenes/BenScene.meta create mode 100644 Assets/Scenes/BenScene/NavMesh.asset create mode 100644 Assets/Scenes/BenScene/NavMesh.asset.meta diff --git a/Assets/Materials/GlassWallMaterial.mat b/Assets/Materials/GlassWallMaterial.mat new file mode 100644 index 0000000..d5fb926 --- /dev/null +++ b/Assets/Materials/GlassWallMaterial.mat @@ -0,0 +1,139 @@ +%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: GlassWallMaterial + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _ALPHAPREMULTIPLY_ON + m_LightmapFlags: 5 + m_CustomRenderQueue: 3000 + stringTagMap: + RenderType: Transparent + 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} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _SrcBlend + second: 1 + data: + first: + name: _DstBlend + second: 10 + data: + first: + name: _Cutoff + second: .5 + data: + first: + name: _Parallax + second: .0199999996 + data: + first: + name: _ZWrite + second: 0 + data: + first: + name: _Glossiness + second: 0 + data: + first: + name: _BumpScale + second: 1 + data: + first: + name: _OcclusionStrength + second: 1 + data: + first: + name: _DetailNormalMapScale + second: 1 + data: + first: + name: _UVSec + second: 0 + data: + first: + name: _Mode + second: 3 + data: + first: + name: _Metallic + second: 0 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + data: + first: + name: _Color + second: {r: .865999997, g: 1, b: 1, a: 1} diff --git a/Assets/Materials/GlassWallMaterial.mat.meta b/Assets/Materials/GlassWallMaterial.mat.meta new file mode 100644 index 0000000..c802167 --- /dev/null +++ b/Assets/Materials/GlassWallMaterial.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cbd2ba8b0fae54da187ae28b60c8289e +timeCreated: 1446932082 +licenseType: Free +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/BenScene.meta b/Assets/Scenes/BenScene.meta new file mode 100644 index 0000000..b64ed6c --- /dev/null +++ b/Assets/Scenes/BenScene.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 89e688205bb8d4257a9ec810efa7061f +folderAsset: yes +timeCreated: 1446934426 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/BenScene.unity b/Assets/Scenes/BenScene.unity index 954a9c1..f697185 100644 --- a/Assets/Scenes/BenScene.unity +++ b/Assets/Scenes/BenScene.unity @@ -96,8 +96,9 @@ GameObject: - 33: {fileID: 949023944} - 136: {fileID: 949023943} - 23: {fileID: 949023942} + - 195: {fileID: 949023946} - 114: {fileID: 949023941} - - 54: {fileID: 949023946} + - 54: {fileID: 949023947} m_Layer: 0 m_Name: Monster m_TagString: Untagged @@ -117,10 +118,9 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: player: {fileID: 1900049395} - deadlyDistance: 1 - rotationDamping: 2 - moveSpeed: .5 - distance: 0 + deadlyDistance: 0 + rotationDamping: 0 + moveSpeed: 0 --- !u!23 &949023942 MeshRenderer: m_ObjectHideFlags: 0 @@ -178,7 +178,27 @@ Transform: - {fileID: 1632708745} m_Father: {fileID: 0} m_RootOrder: 4 ---- !u!54 &949023946 +--- !u!195 &949023946 +NavMeshAgent: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 949023940} + m_Enabled: 1 + m_Radius: .5 + m_Speed: 2 + m_Acceleration: 8 + avoidancePriority: 50 + m_AngularSpeed: 120 + m_StoppingDistance: 1 + m_AutoTraverseOffMeshLink: 1 + m_AutoBraking: 1 + m_AutoRepath: 1 + m_Height: 2 + m_BaseOffset: 1 + m_WalkableMask: 4294967295 + m_ObstacleAvoidanceType: 4 +--- !u!54 &949023947 Rigidbody: m_ObjectHideFlags: 0 m_PrefabParentObject: {fileID: 0} @@ -191,8 +211,81 @@ Rigidbody: m_UseGravity: 1 m_IsKinematic: 0 m_Interpolate: 0 - m_Constraints: 12 + m_Constraints: 0 m_CollisionDetection: 0 +--- !u!1 &1149994029 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1149994033} + - 33: {fileID: 1149994032} + - 65: {fileID: 1149994031} + - 23: {fileID: 1149994030} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &1149994030 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1149994029} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: cbd2ba8b0fae54da187ae28b60c8289e, 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_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &1149994031 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1149994029} + 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 &1149994032 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1149994029} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1149994033 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1149994029} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2.1400001, y: 1, z: 0} + m_LocalScale: {x: .00999999978, y: 2, z: 4} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 5 --- !u!1 &1335793729 GameObject: m_ObjectHideFlags: 0 @@ -219,7 +312,7 @@ Light: serializedVersion: 6 m_Type: 1 m_Color: {r: 1, g: .956862748, b: .839215696, a: 1} - m_Intensity: 1 + m_Intensity: 1.37 m_Range: 10 m_SpotAngle: 30 m_CookieSize: 10 @@ -798,3 +891,76 @@ MonoBehaviour: m_FootstepSounds: [] m_JumpSound: {fileID: 0} m_LandSound: {fileID: 0} +--- !u!1 &1997970884 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 4 + m_Component: + - 4: {fileID: 1997970888} + - 33: {fileID: 1997970887} + - 65: {fileID: 1997970886} + - 23: {fileID: 1997970885} + m_Layer: 0 + m_Name: Cube (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!23 &1997970885 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1997970884} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: cad7fc84f4314964f87485777e6410c0, 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_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!65 &1997970886 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1997970884} + 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 &1997970887 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1997970884} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1997970888 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1997970884} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -3.83999991, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 6 diff --git a/Assets/Scenes/BenScene/NavMesh.asset b/Assets/Scenes/BenScene/NavMesh.asset new file mode 100644 index 0000000..e9c904f --- /dev/null +++ b/Assets/Scenes/BenScene/NavMesh.asset @@ -0,0 +1,22 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!238 &23800000 +NavMeshData: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: NavMesh + m_NavMeshTiles: + - m_MeshData: 56414e4410000000ffffffffffffffff00000000070000000e00000007000000000000000c0000000e000000abaa2ac2000080bfabaa2ac2000000003333c340000000000000c040565565c1b0aaaa3d000020c0505515c0b0aaaa3d000020c00000c0bfb0aaaa3db0aa0ac00000c0bfb0aaaa3d0000000000000000b0aaaa3d0000000000000000b0aaaa3d565565c1565565c1b0aaaa3d565565c1565565c1b0aaaa3d000000000000e0c0b0aaaa3d000000005855d5c0b0aaaa3d000080bf5855a5c0b0aaaa3d000080bfa8aa9ac0b0aaaa3d00000000b0aa2ac0b0aaaa3d00000000b0aa2ac0b0aaaa3db0aa0ac00200030004000500000000000000028000800300000000000100000004000000010005000600000000000000030000000000070000000000010000000400000001000200050000000000000000000100020000000000000001000000030000000a000b000c000d0000000000000002800000060000000000010000000400000007000800090000000000000002800000070000000000000001000000030000000a000d00010009000000000004000000070000000000000001000000040000000900010000000700000000000600020000000500000000000100000004000000000000000000000000000200000000000200000000000200000000000400000000000100000000000500000000000200000000000700000000000100000000000800000000000200000000000a00000000000200020003000000050000000100020005000200030000000500000001000200050001000200000015000200030000000500000001000200050001000200000015000200030000000500000001000200050002000300000005000000010002000500aa000600aa0000010c000001f3ffffffaa000600aa0000010c000001fbffffffaa000600fa00d8000c00000104000000aa000600aa0000010c000001fdffffffaa000600aa0000010c00f10001000000aa000600f100f2000c00000106000000d8000600aa0000010c000001f9fffffff2000600aa0000010c000001fdfffffff2000600aa0000010c00f30002000000f7000600aa0000010c00000100000000d8000600f100f2000c000001fdffffffd8000600f100f2000c00fa0005000000e1000600f300f0000c0000010300000000000000000000000000000000000000 + - m_MeshData: 56414e441000000000000000ffffffff0000000001000000040000000100000000000000020000000200000000000000000080bfabaa2ac2abaa2a423333c340000000000000c04000000000b0aaaa3d0000000000006841b0aaaa3d0000000000006841b0aaaa3d565565c100000000b0aaaa3d565565c100000100020003000000000002800000000004800000000001000000040000000000000000000000000002000200030001001100030000000100050000000600aa0057000c0000010000000000000000000000000000000000000000 + - m_MeshData: 56414e4410000000ffffffff0000000000000000080000001000000008000000000000000e00000010000000abaa2ac2000080bf00000000000000003333c340abaa2a420000c040565565c1b0aaaa3dabaa2a40505515c0b0aaaa3dabaa2a40b0aa2ac0b0aaaa3d56551540b0aa2ac0b0aaaa3d00000000a8aa9ac0b0aaaa3d00000000a8aa9ac0b0aaaa3d5655553f5855a5c0b0aaaa3d5655953f5855d5c0b0aaaa3d5655953f0000e0c0b0aaaa3d5655553f0000e0c0b0aaaa3d00000000565565c1b0aaaa3d00000000565565c1b0aaaa3d0000684100000000b0aaaa3d0000684100000000b0aaaa3d000000000000c0bfb0aaaa3d000000000000c0bfb0aaaa3d5655154003000400050000000000000006800000020000000000000001000000030000000200030005000600000000000000010000000400000000000100000004000000080009000a000000000000000000068005000000000000000100000003000000010002000600070000000000000002000000050007000000010000000500000008000a00000007000000000003000000040000000000000001000000040000000d000e000f000c00000000000680000008000080000000000100000004000000010000000b000c000000000004000000000008000000000001000000040000000c000f0001000000000000000600000007000000000000000100000003000000000000000000000000000100000000000100000000000200000000000300000000000100000000000400000000000300000000000700000000000200000000000900000000000200000000000b00000000000200000000000d0000000000010001000200000015000200030000000500000001000200050001000200000015000300040000000500000001000200050002000300000001000200030000000500000001000200050002000300000005000000010002000500020003000000050000000100020005000100020000001500aa000600000000010c005700f1ffffffaa0006000000f0000c001000f9ffffffaa0006000000d8000c001000fdffffffaa0006000000d6000c00050002000000aa0006000000d8000c00100004000000e10006000000f0000c000e00fdffffffe10006000000f0000c000e0001000000e30006000000f0000c00050000000000aa000600000000010c005700f9ffffffaa000600000000010c005700fdfffffff7000600000000010c00570005000000aa0006000700f2000c00100003000000aa0006000e0000010c005700fdffffffaa000600100000010c00570006000000f20006000e0000010c0057000700000000000000000000000000000000000000 + - m_MeshData: 56414e441000000000000000000000000000000001000000040000000100000000000000020000000200000000000000000080bf00000000abaa2a423333c340abaa2a420000c04000000000b0aaaa3d0000684100006841b0aaaa3d0000684100006841b0aaaa3d0000000000000000b0aaaa3d0000000000000100020003000000000000000000068004800000000001000000040000000000000000000000000002000200030001001100030000000100050000000600000057000c0057000000000000000000000000000000000000000000 + m_NavMeshParams: + tileSize: 42.6666679 + walkableHeight: 2 + walkableRadius: .5 + walkableClimb: .416666687 + cellSize: .166666672 + m_Heightmaps: [] + m_HeightMeshes: [] + m_OffMeshLinks: [] diff --git a/Assets/Scenes/BenScene/NavMesh.asset.meta b/Assets/Scenes/BenScene/NavMesh.asset.meta new file mode 100644 index 0000000..6eef465 --- /dev/null +++ b/Assets/Scenes/BenScene/NavMesh.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3640b58b7a29a41e7b868ac3205e5dc9 +timeCreated: 1446934544 +licenseType: Free +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/monsterAI.cs b/Assets/Scripts/monsterAI.cs index 2020c25..01e350c 100644 --- a/Assets/Scripts/monsterAI.cs +++ b/Assets/Scripts/monsterAI.cs @@ -6,17 +6,17 @@ public class monsterAI : MonoBehaviour public GameObject player; private Transform target; public float deadlyDistance; - public float rotationDamping; // Lower rotation damping = slower rotation - public float moveSpeed; - - public float distance; + private NavMeshAgent agent; // Use this for initialization void Start () { target = player.transform; - + + agent = gameObject.GetComponent (); + + agent.SetDestination (target.position); } // Update is called once per frame @@ -24,10 +24,9 @@ public class monsterAI : MonoBehaviour { if (IsAtDeadlyDistance ()) { // Kill the player - } else { - LookAtTarget (); - MoveTowardTarget (); } + + agent.SetDestination (target.position); } @@ -36,20 +35,4 @@ public class monsterAI : MonoBehaviour { return (Vector3.Distance (target.position, transform.position) <= deadlyDistance); } - - // Look toward target - void LookAtTarget () - { - Vector3 relativePos = target.position - transform.position; - Quaternion rotation = Quaternion.LookRotation (relativePos); - - transform.rotation = Quaternion.Slerp (transform.rotation, rotation, Time.deltaTime * rotationDamping); - } - - // Follow player from a certain initial distance at a certain speed. - void MoveTowardTarget () - { - transform.Translate (Vector3.forward * moveSpeed * Time.deltaTime); - } - } From 45e0719d679a0a804740617270276a379cbbe802 Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 7 Nov 2015 18:49:21 -0500 Subject: [PATCH 13/13] trou et debut de travail sur 3eme trap --- Assets/Materials/HoleMaterial.mat | 138 +++++++++ Assets/Materials/HoleMaterial.mat.meta | 8 + Assets/Prefabs/BladeTrap.prefab | 202 ++++++++++++- Assets/Prefabs/Trou.prefab | 13 + Assets/Prefabs/Trou.prefab.meta | 8 + Assets/Scenes/FrancisScene.unity | 378 ++++++++++++------------- Assets/Scripts/HoleScript.cs | 25 ++ Assets/Scripts/HoleScript.cs.meta | 12 + Assets/SideMovingTrap.cs | 34 +++ Assets/SideMovingTrap.cs.meta | 12 + 10 files changed, 633 insertions(+), 197 deletions(-) create mode 100644 Assets/Materials/HoleMaterial.mat create mode 100644 Assets/Materials/HoleMaterial.mat.meta create mode 100644 Assets/Prefabs/Trou.prefab create mode 100644 Assets/Prefabs/Trou.prefab.meta create mode 100644 Assets/Scripts/HoleScript.cs create mode 100644 Assets/Scripts/HoleScript.cs.meta create mode 100644 Assets/SideMovingTrap.cs create mode 100644 Assets/SideMovingTrap.cs.meta diff --git a/Assets/Materials/HoleMaterial.mat b/Assets/Materials/HoleMaterial.mat new file mode 100644 index 0000000..f721dcd --- /dev/null +++ b/Assets/Materials/HoleMaterial.mat @@ -0,0 +1,138 @@ +%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: HoleMaterial + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, 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} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _SrcBlend + second: 1 + data: + first: + name: _DstBlend + second: 0 + data: + first: + name: _Cutoff + second: .5 + data: + first: + name: _Parallax + second: .0199999996 + data: + first: + name: _ZWrite + second: 1 + data: + first: + name: _Glossiness + second: .5 + data: + first: + name: _BumpScale + second: 1 + data: + first: + name: _OcclusionStrength + second: 1 + data: + first: + name: _DetailNormalMapScale + second: 1 + data: + first: + name: _UVSec + second: 0 + data: + first: + name: _Mode + second: 0 + data: + first: + name: _Metallic + second: 0 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + data: + first: + name: _Color + second: {r: 0, g: 0, b: 0, a: 1} diff --git a/Assets/Materials/HoleMaterial.mat.meta b/Assets/Materials/HoleMaterial.mat.meta new file mode 100644 index 0000000..153a076 --- /dev/null +++ b/Assets/Materials/HoleMaterial.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f0a9add2e606d92459d74fc9ee7aaa3b +timeCreated: 1446931587 +licenseType: Free +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/BladeTrap.prefab b/Assets/Prefabs/BladeTrap.prefab index a459af2..6431f8f 100644 --- a/Assets/Prefabs/BladeTrap.prefab +++ b/Assets/Prefabs/BladeTrap.prefab @@ -1,13 +1,211 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: +--- !u!1 &130446 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 412946} + - 65: {fileID: 6572816} + - 65: {fileID: 6538670} + - 114: {fileID: 11459534} + m_Layer: 0 + m_Name: trapTriggers + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &187640 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 466408} + - 33: {fileID: 3341506} + - 65: {fileID: 6511276} + - 23: {fileID: 2318638} + - 54: {fileID: 5432898} + - 114: {fileID: 11496062} + m_Layer: 0 + m_Name: Blade + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195288 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 498798} + m_Layer: 0 + m_Name: BladeTrap + m_TagString: Trap + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &412946 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 130446} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: .5, z: .610000014} + m_LocalScale: {x: 1, y: 1, z: -.689999998} + m_Children: [] + m_Father: {fileID: 498798} + m_RootOrder: 1 +--- !u!4 &466408 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 187640} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: -.600000024, z: 0} + m_LocalScale: {x: 1, y: 1, z: .150000006} + m_Children: [] + m_Father: {fileID: 498798} + m_RootOrder: 0 +--- !u!4 &498798 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195288} + m_LocalRotation: {x: 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: 466408} + - {fileID: 412946} + m_Father: {fileID: 0} + m_RootOrder: 0 +--- !u!23 &2318638 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 187640} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: cad7fc84f4314964f87485777e6410c0, 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_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &3341506 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 187640} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!54 &5432898 +Rigidbody: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 187640} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: .0500000007 + m_UseGravity: 0 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!65 &6511276 +BoxCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 187640} + m_Material: {fileID: 0} + m_IsTrigger: 1 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!65 &6538670 +BoxCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 130446} + m_Material: {fileID: 0} + m_IsTrigger: 1 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!65 &6572816 +BoxCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 130446} + m_Material: {fileID: 0} + m_IsTrigger: 1 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 1.79999995} +--- !u!114 &11459534 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 130446} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5b53a2d97a11ef14182f5c127412647d, type: 3} + m_Name: + m_EditorClassIdentifier: + bladeTrap: {fileID: 187640} +--- !u!114 &11496062 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 187640} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 36679b68705774b4db17d51844bbad63, type: 3} + m_Name: + m_EditorClassIdentifier: + trapSpeed: 2 + maxDistance: 5 --- !u!1001 &100100000 Prefab: - m_ObjectHideFlags: 0 + m_ObjectHideFlags: 1 serializedVersion: 2 m_Modification: m_TransformParent: {fileID: 0} m_Modifications: [] m_RemovedComponents: [] m_ParentPrefab: {fileID: 0} - m_RootGameObject: {fileID: 0} + m_RootGameObject: {fileID: 195288} m_IsPrefabParent: 1 diff --git a/Assets/Prefabs/Trou.prefab b/Assets/Prefabs/Trou.prefab new file mode 100644 index 0000000..a459af2 --- /dev/null +++ b/Assets/Prefabs/Trou.prefab @@ -0,0 +1,13 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 0} + m_IsPrefabParent: 1 diff --git a/Assets/Prefabs/Trou.prefab.meta b/Assets/Prefabs/Trou.prefab.meta new file mode 100644 index 0000000..ebe2853 --- /dev/null +++ b/Assets/Prefabs/Trou.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1dae59e9c032b8c4fa7c221a7dd1352e +timeCreated: 1446940126 +licenseType: Free +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/FrancisScene.unity b/Assets/Scenes/FrancisScene.unity index d9b2c96..6cc5575 100644 --- a/Assets/Scenes/FrancisScene.unity +++ b/Assets/Scenes/FrancisScene.unity @@ -85,109 +85,6 @@ NavMeshSettings: cellSize: .166666672 manualCellSize: 0 m_NavMeshData: {fileID: 0} ---- !u!1 &51161942 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - serializedVersion: 4 - m_Component: - - 4: {fileID: 51161947} - - 33: {fileID: 51161946} - - 65: {fileID: 51161945} - - 23: {fileID: 51161944} - - 54: {fileID: 51161948} - - 114: {fileID: 51161943} - m_Layer: 0 - m_Name: Blade - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &51161943 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 51161942} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 36679b68705774b4db17d51844bbad63, type: 3} - m_Name: - m_EditorClassIdentifier: - trapSpeed: 2 - maxDistance: 5 ---- !u!23 &51161944 -MeshRenderer: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 51161942} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_Materials: - - {fileID: 2100000, guid: cad7fc84f4314964f87485777e6410c0, 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_ImportantGI: 0 - m_AutoUVMaxDistance: .5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingOrder: 0 ---- !u!65 &51161945 -BoxCollider: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 51161942} - m_Material: {fileID: 0} - m_IsTrigger: 1 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!33 &51161946 -MeshFilter: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 51161942} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &51161947 -Transform: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 51161942} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: -.600000024, z: 0} - m_LocalScale: {x: 1, y: 1, z: .150000006} - m_Children: [] - m_Father: {fileID: 548158196} - m_RootOrder: 0 ---- !u!54 &51161948 -Rigidbody: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 51161942} - serializedVersion: 2 - m_Mass: 1 - m_Drag: 0 - m_AngularDrag: .0500000007 - m_UseGravity: 0 - m_IsKinematic: 0 - m_Interpolate: 0 - m_Constraints: 0 - m_CollisionDetection: 0 --- !u!1 &334332187 GameObject: m_ObjectHideFlags: 0 @@ -257,11 +154,11 @@ Transform: m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 334332187} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: .5, z: 3.02999997} + m_LocalPosition: {x: 4.55999994, y: 1.5, z: 1.80999994} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 4 + m_RootOrder: 3 --- !u!54 &334332192 Rigidbody: m_ObjectHideFlags: 0 @@ -357,41 +254,12 @@ Transform: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 417479667} - m_LocalRotation: {x: .305192173, y: .00523545872, z: -.00167789869, w: .952274919} - m_LocalPosition: {x: 0, y: 2, z: -3.21000004} + m_LocalRotation: {x: .592106938, y: -.00464686193, z: .0127979796, w: .80574441} + m_LocalPosition: {x: 0, y: 9.97000027, z: -5.13999987} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} m_RootOrder: 0 ---- !u!1 &548158195 -GameObject: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - serializedVersion: 4 - m_Component: - - 4: {fileID: 548158196} - m_Layer: 0 - m_Name: BladeTrap - m_TagString: Trap - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &548158196 -Transform: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 548158195} - m_LocalRotation: {x: 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: 51161947} - - {fileID: 1082245455} - m_Father: {fileID: 0} - m_RootOrder: 3 --- !u!1 &835544711 GameObject: m_ObjectHideFlags: 0 @@ -452,72 +320,163 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_RootOrder: 1 ---- !u!1 &1082245454 +--- !u!1 &1175907386 GameObject: m_ObjectHideFlags: 0 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} serializedVersion: 4 m_Component: - - 4: {fileID: 1082245455} - - 65: {fileID: 1082245457} - - 65: {fileID: 1082245456} - - 114: {fileID: 1082245458} + - 4: {fileID: 1175907391} + - 33: {fileID: 1175907390} + - 23: {fileID: 1175907389} + - 65: {fileID: 1175907388} + - 82: {fileID: 1175907392} + - 114: {fileID: 1175907387} m_Layer: 0 - m_Name: trapTriggers + m_Name: Trou m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &1082245455 -Transform: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1082245454} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: .5, z: .610000014} - m_LocalScale: {x: 1, y: 1, z: -.689999998} - m_Children: [] - m_Father: {fileID: 548158196} - m_RootOrder: 1 ---- !u!65 &1082245456 -BoxCollider: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1082245454} - 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!65 &1082245457 -BoxCollider: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1082245454} - 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: 1.79999995} ---- !u!114 &1082245458 +--- !u!114 &1175907387 MonoBehaviour: m_ObjectHideFlags: 0 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1082245454} + m_GameObject: {fileID: 1175907386} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5b53a2d97a11ef14182f5c127412647d, type: 3} + m_Script: {fileID: 11500000, guid: c6c736764832d314b9e5dce78ec77732, type: 3} m_Name: m_EditorClassIdentifier: - bladeTrap: {fileID: 51161942} + floor: {fileID: 1736981967} +--- !u!65 &1175907388 +BoxCollider: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1175907386} + m_Material: {fileID: 0} + m_IsTrigger: 1 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: .880916476, y: .869007707, z: .409999996} + m_Center: {x: 2.38418579e-07, y: -2.98023188e-08, z: 1.11758736e-08} +--- !u!23 &1175907389 +MeshRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1175907386} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: f0a9add2e606d92459d74fc9ee7aaa3b, 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_ImportantGI: 0 + m_AutoUVMaxDistance: .5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &1175907390 +MeshFilter: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1175907386} + m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1175907391 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1175907386} + m_LocalRotation: {x: .707106829, y: 0, z: 0, w: .707106709} + m_LocalPosition: {x: 3.86999989, y: .0500000007, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 4 +--- !u!82 &1175907392 +AudioSource: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1175907386} + m_Enabled: 1 + serializedVersion: 4 + OutputAudioMixerGroup: {fileID: 0} + m_audioClip: {fileID: 0} + m_PlayOnAwake: 1 + m_Volume: 1 + m_Pitch: 1 + Loop: 0 + Mute: 0 + Spatialize: 0 + Priority: 128 + DopplerLevel: 1 + MinDistance: 1 + MaxDistance: 500 + Pan2D: 0 + rolloffMode: 0 + BypassEffects: 0 + BypassListenerEffects: 0 + BypassReverbZones: 0 + rolloffCustomCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + panLevelCustomCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + spreadCustomCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + reverbZoneMixCustomCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 --- !u!1 &1736981967 GameObject: m_ObjectHideFlags: 0 @@ -527,7 +486,6 @@ GameObject: m_Component: - 4: {fileID: 1736981971} - 33: {fileID: 1736981970} - - 64: {fileID: 1736981969} - 23: {fileID: 1736981968} - 65: {fileID: 1736981972} m_Layer: 0 @@ -561,18 +519,6 @@ MeshRenderer: m_LightmapParameters: {fileID: 0} m_SortingLayerID: 0 m_SortingOrder: 0 ---- !u!64 &1736981969 -MeshCollider: - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1736981967} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 0 - serializedVersion: 2 - m_Convex: 0 - m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0} --- !u!33 &1736981970 MeshFilter: m_ObjectHideFlags: 0 @@ -604,3 +550,45 @@ BoxCollider: serializedVersion: 2 m_Size: {x: 1, y: .999999881, z: 6.12323294e-17} m_Center: {x: 0, y: 0, z: 0} +--- !u!1001 &1758579522 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 498798, guid: ed3c63e28f69853439e23037fe66bd7e, type: 2} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 498798, guid: ed3c63e28f69853439e23037fe66bd7e, type: 2} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 498798, guid: ed3c63e28f69853439e23037fe66bd7e, type: 2} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 498798, guid: ed3c63e28f69853439e23037fe66bd7e, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 498798, guid: ed3c63e28f69853439e23037fe66bd7e, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 498798, guid: ed3c63e28f69853439e23037fe66bd7e, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 498798, guid: ed3c63e28f69853439e23037fe66bd7e, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 498798, guid: ed3c63e28f69853439e23037fe66bd7e, type: 2} + propertyPath: m_RootOrder + value: 5 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: ed3c63e28f69853439e23037fe66bd7e, type: 2} + m_IsPrefabParent: 0 diff --git a/Assets/Scripts/HoleScript.cs b/Assets/Scripts/HoleScript.cs new file mode 100644 index 0000000..78e5b90 --- /dev/null +++ b/Assets/Scripts/HoleScript.cs @@ -0,0 +1,25 @@ +using UnityEngine; +using System.Collections; + +public class HoleScript : MonoBehaviour { + public GameObject floor; + // Use this for initialization + private GameObject player; + void Start () { + + } + + // Update is called once per frame + void Update () { + + } + + void OnTriggerEnter(Collider other) { + if(other.tag == "Player") + { + print("floor ded"); + floor.GetComponent().enabled = false; + } + } + +} diff --git a/Assets/Scripts/HoleScript.cs.meta b/Assets/Scripts/HoleScript.cs.meta new file mode 100644 index 0000000..acf6fcd --- /dev/null +++ b/Assets/Scripts/HoleScript.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c6c736764832d314b9e5dce78ec77732 +timeCreated: 1446930907 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/SideMovingTrap.cs b/Assets/SideMovingTrap.cs new file mode 100644 index 0000000..70356c4 --- /dev/null +++ b/Assets/SideMovingTrap.cs @@ -0,0 +1,34 @@ +using UnityEngine; +using System.Collections; + +public class SideMovingTrap : MonoBehaviour { + + public float force; + private Rigidbody rb; + bool addLeft = false; + + // Use this for initialization + void Start () { + rb = this.GetComponent(); + rb.AddForce(100, 0, 0); + } + + // Update is called once per frame + void Update () { + + } + + void FixedUpdate() + { + Vector3 vel = rb.velocity; + print(vel.magnitude); + + + + } + + void pushTheShit() + { + + } +} diff --git a/Assets/SideMovingTrap.cs.meta b/Assets/SideMovingTrap.cs.meta new file mode 100644 index 0000000..50d3359 --- /dev/null +++ b/Assets/SideMovingTrap.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 13f97f640b493d6428a929dc3e64b111 +timeCreated: 1446935748 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: