From f057d4b309c3e62387ad5f2f7bb8b8411cc922b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pierre-Andr=C3=A9=20L=C3=A9ger?= Date: Fri, 10 Mar 2017 02:51:28 -0500 Subject: [PATCH 1/5] First batch - 3 varieties of Rewinds, selectable from an enum in the TimeManager object - TO_ZERO, will rewind to 0 by default. Player crouched and time stopped for either the duration of the rewind or as long as the crouch button is pressed - whichever is longer - HOLD_AND_RELEASE, will rewind as long as the button is pressed - SCRUB, the old behavior - Merged all user controls for the ground player to one script - Refactored a bit the TimeManager script - Fixed the color bug for the clones --- .gitignore | 3 + .../Assets/Models/Materials.meta | 9 ++ .../Assets/Prefabs/Player.prefab | 25 +-- .../Assets/Prefabs/TimeManager.prefab | 7 +- .../Assets/Scripts/CloneTimeAttachment.cs | 6 +- .../Assets/Scripts/PlayerTimeAttachment.cs | 41 ----- .../Scripts/PlayerTimeAttachment.cs.meta | 12 -- .../Assets/Scripts/PlayerUserController.cs | 124 ++++++++------- .../Scripts/PuppyCharacterController.cs | 8 +- .../Assets/_Scenes/ProtoDemo.unity | 147 ++---------------- Assets/PATimeRefactor/Library.meta | 9 ++ Assets/PATimeRefactor/ProjectSettings.meta | 9 ++ ProjectSettings/InputManager.asset | 4 +- 13 files changed, 132 insertions(+), 272 deletions(-) create mode 100644 Assets/PATimeRefactor/Assets/Models/Materials.meta delete mode 100644 Assets/PATimeRefactor/Assets/Scripts/PlayerTimeAttachment.cs delete mode 100644 Assets/PATimeRefactor/Assets/Scripts/PlayerTimeAttachment.cs.meta create mode 100644 Assets/PATimeRefactor/Library.meta create mode 100644 Assets/PATimeRefactor/ProjectSettings.meta diff --git a/.gitignore b/.gitignore index 106dbad..4cfb8f9 100644 --- a/.gitignore +++ b/.gitignore @@ -14,6 +14,8 @@ /Assets/gmcs.rsp.meta /Assets/smcs.rsp.meta /Assets/us.rsp.meta +/Assets/PATimeRefactor/Library/ + # Autogenerated VS/MD solution and project files ExportedObj/ @@ -27,6 +29,7 @@ ExportedObj/ *.pidb *.booproj *.svd +*.gitignore # Unity3D generated meta files diff --git a/Assets/PATimeRefactor/Assets/Models/Materials.meta b/Assets/PATimeRefactor/Assets/Models/Materials.meta new file mode 100644 index 0000000..43b619c --- /dev/null +++ b/Assets/PATimeRefactor/Assets/Models/Materials.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 0bdb1965007dfdd4ca66780da536d429 +folderAsset: yes +timeCreated: 1489102865 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/PATimeRefactor/Assets/Prefabs/Player.prefab b/Assets/PATimeRefactor/Assets/Prefabs/Player.prefab index 3c28b3c..9cd1edd 100644 --- a/Assets/PATimeRefactor/Assets/Prefabs/Player.prefab +++ b/Assets/PATimeRefactor/Assets/Prefabs/Player.prefab @@ -657,7 +657,6 @@ GameObject: - component: {fileID: 9579096} - component: {fileID: 5426510} - component: {fileID: 13615390} - - component: {fileID: 114755739237096388} - component: {fileID: 114386028355154792} - component: {fileID: 114896590231832898} m_Layer: 14 @@ -2407,7 +2406,7 @@ Transform: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 100098} - m_LocalRotation: {x: 0.53267515, y: 0.07034045, z: 0.83613265, w: -0.11041513} + m_LocalRotation: {x: 0.5326752, y: 0.070340455, z: 0.83613276, w: -0.110415146} m_LocalPosition: {x: 0.000022271464, y: -0.00006150465, z: 0.026027026} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: @@ -2501,7 +2500,7 @@ SkinnedMeshRenderer: m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_Materials: - - {fileID: 2100000, guid: 0dec6b6597e6565408d73421e9c33492, type: 2} + - {fileID: 0} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -2556,7 +2555,7 @@ SkinnedMeshRenderer: m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 m_Materials: - - {fileID: 2100000, guid: 0dec6b6597e6565408d73421e9c33492, type: 2} + - {fileID: 2100000, guid: c78d8aa945ad43346b65f606cec61e10, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -2694,19 +2693,6 @@ MonoBehaviour: m_MoveSpeedMultiplier: 2 m_AnimSpeedMultiplier: 2 m_GroundCheckDistance: 0.1 ---- !u!114 &114755739237096388 -MonoBehaviour: - m_ObjectHideFlags: 1 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 149790} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 6479b1f1ba44d4e47997fb62f46d13ef, type: 3} - m_Name: - m_EditorClassIdentifier: - m_TimeManager: {fileID: 0} - scrubSpeed: 1 --- !u!114 &114896590231832898 MonoBehaviour: m_ObjectHideFlags: 1 @@ -2718,3 +2704,8 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 668b44b414490524ca25c9d5f305d491, type: 3} m_Name: m_EditorClassIdentifier: + m_Cam: {fileID: 0} + m_TimeManager: {fileID: 0} + m_ScrubSpeed: 1 + m_IsRewindController: 1 + m_DisableRewindWhenLatched: 0 diff --git a/Assets/PATimeRefactor/Assets/Prefabs/TimeManager.prefab b/Assets/PATimeRefactor/Assets/Prefabs/TimeManager.prefab index 56a7ee6..78d8498 100644 --- a/Assets/PATimeRefactor/Assets/Prefabs/TimeManager.prefab +++ b/Assets/PATimeRefactor/Assets/Prefabs/TimeManager.prefab @@ -51,14 +51,15 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 56ee9fea925a71a4aa590cd5774dd7da, type: 3} m_Name: m_EditorClassIdentifier: + m_RewindMode: 2 playerLayer: Player cloneLayer: Clone doorLayer: Door DELETEME aiLayer: Puppy AI - cloneColorCodes: + m_CloneColorCodes: - {r: 1, g: 0, b: 0, a: 0} - - {r: 0, g: 0.37931037, b: 1, a: 0} - - {r: 0.94482756, g: 1, b: 0, a: 0} + - {r: 0, g: 0, b: 1, a: 0} + - {r: 0, g: 1, b: 0, a: 0} sampleRate: 3 m_Player: {fileID: 0} m_ClonePrefab: {fileID: 149790, guid: 3a65e8fe82479404e96efe155a409605, type: 2} diff --git a/Assets/PATimeRefactor/Assets/Scripts/CloneTimeAttachment.cs b/Assets/PATimeRefactor/Assets/Scripts/CloneTimeAttachment.cs index 12fdf0f..75d33dd 100644 --- a/Assets/PATimeRefactor/Assets/Scripts/CloneTimeAttachment.cs +++ b/Assets/PATimeRefactor/Assets/Scripts/CloneTimeAttachment.cs @@ -21,7 +21,7 @@ public class CloneTimeAttachment : MonoBehaviour public GameObject timeManagerObject; public TimeManager manager { get; set; } - public int timelineID { get; set; } + public int m_TimelineID { get; set; } public float m_BlockingParadoxRange; @@ -44,7 +44,7 @@ private void LateUpdate() // Blocking Paradox if (m_Agent.remainingDistance > m_BlockingParadoxRange && m_Agent.remainingDistance != Mathf.Infinity) { - manager.handleParadox(timelineID, m_Transform); + manager.handleParadox(m_TimelineID, m_Transform); } } @@ -53,7 +53,7 @@ private void OnTriggerEnter(Collider other) { if (other.tag == "Player" || (m_EnablePuppyParadox && other.tag == "Puppy") ) { - manager.handleParadox(timelineID); + manager.handleParadox(m_TimelineID); } diff --git a/Assets/PATimeRefactor/Assets/Scripts/PlayerTimeAttachment.cs b/Assets/PATimeRefactor/Assets/Scripts/PlayerTimeAttachment.cs deleted file mode 100644 index 0a27e8d..0000000 --- a/Assets/PATimeRefactor/Assets/Scripts/PlayerTimeAttachment.cs +++ /dev/null @@ -1,41 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; -using UnityStandardAssets.CrossPlatformInput; - -public class PlayerTimeAttachment : MonoBehaviour { - - public GameObject m_TimeManager; - public float scrubSpeed; - - private TimeManager m_Manager; - private Character m_Player; - public bool m_HasPuppy { get; set; } - - void Start () { - m_Manager = m_TimeManager.GetComponent(); - m_Player = gameObject.GetComponent(); - m_HasPuppy = false; - } - - void Update () { - - float FF = CrossPlatformInputManager.GetAxis("FF"); - float RW = CrossPlatformInputManager.GetAxis("RW"); - - // Prevent the dog from stopping time if there is a puppy with him - - if (Input.GetButtonDown("Ground Stop Time") && !m_HasPuppy) - { - m_Manager.timeStopToggle(); - } - if (Input.GetButtonUp("Ground Stop Time") && !m_HasPuppy) - { - m_Manager.timeStopToggle(); - } - - if (FF != RW) m_Manager.masterScrub((int)((FF - RW) * scrubSpeed)); - - } - -} diff --git a/Assets/PATimeRefactor/Assets/Scripts/PlayerTimeAttachment.cs.meta b/Assets/PATimeRefactor/Assets/Scripts/PlayerTimeAttachment.cs.meta deleted file mode 100644 index 3496651..0000000 --- a/Assets/PATimeRefactor/Assets/Scripts/PlayerTimeAttachment.cs.meta +++ /dev/null @@ -1,12 +0,0 @@ -fileFormatVersion: 2 -guid: 6479b1f1ba44d4e47997fb62f46d13ef -timeCreated: 1488252793 -licenseType: Free -MonoImporter: - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/PATimeRefactor/Assets/Scripts/PlayerUserController.cs b/Assets/PATimeRefactor/Assets/Scripts/PlayerUserController.cs index 8cb82d3..341d5f5 100644 --- a/Assets/PATimeRefactor/Assets/Scripts/PlayerUserController.cs +++ b/Assets/PATimeRefactor/Assets/Scripts/PlayerUserController.cs @@ -5,81 +5,99 @@ public class PlayerUserController : MonoBehaviour { - private bool m_disableMovement = false; - private Character m_Character; // A reference to the ThirdPersonCharacter on the object - public Transform m_Cam; // A reference to the main camera in the scenes transform - private Vector3 m_CamForward; // The current forward direction of the camera + public Transform m_Cam; // A reference to the main camera in the scenes transform + private Vector3 m_CamForward; // The current forward direction of the camera + private Vector3 m_Move; - public bool m_Paradoxing { get; set; } + public TimeManager m_TimeManager; + public float m_ScrubSpeed; + + public bool m_IsRewindController; + public bool m_DisableRewindWhenLatched; + public bool m_HasPuppy { get; set; } + private void Start() { m_Character = GetComponent(); - m_Paradoxing = false; + m_HasPuppy = false; } // Fixed update is called in sync with physics private void FixedUpdate() { - if (m_Paradoxing) return; - - // read inputs + // Read inputs float h = CrossPlatformInputManager.GetAxis("Horizontal"); float v = CrossPlatformInputManager.GetAxis("Vertical"); bool crouch = Input.GetButton("Ground Stop Time"); - m_Move = v * Vector3.forward + h * Vector3.right; + float FF = CrossPlatformInputManager.GetAxis("FF"); + float RW = CrossPlatformInputManager.GetAxis("RW"); + + // Compute move vector if (crouch) { - m_Move = 0 * Vector3.forward + 0 * Vector3.right; + m_Move = Vector3.zero; + } + else if (m_Cam != null) + { + // calculate camera relative direction to move: + m_CamForward = Vector3.Scale(m_Cam.forward, new Vector3(1, 0, 1)).normalized; + m_Move = v * m_CamForward + h * m_Cam.right; + } + else + { + // we use world-relative directions in the case of no main camera + m_Move = v * Vector3.forward + h * Vector3.right; } - //This is the original script for Ethan's movement. The actual controller should use something relative - - //to the attached camera on the player(like what they are doing here). - //The current version uses world space to figure out where to go. - - // calculate move direction to pass to character - if (m_Cam != null) - { - // calculate camera relative direction to move: - m_CamForward = Vector3.Scale(m_Cam.forward, new Vector3(1, 0, 1)).normalized; - m_Move = v * m_CamForward + h * m_Cam.right; - } - else - { - // we use world-relative directions in the case of no main camera - m_Move = v * Vector3.forward + h * Vector3.right; - } -#if !MOBILE_INPUT - // walk speed multiplier - if (Input.GetKey(KeyCode.LeftShift)) m_Move *= 0.5f; -#endif + // Switch to send user input depending on game state + switch (m_TimeManager.m_GameState) + { + // Do not consider any user input if the game state is in paradox or revert mode + case TimeManager.GameState.PARADOX: + case TimeManager.GameState.REVERT: + break; + + case TimeManager.GameState.NORMAL: + m_Character.Move(m_Move, crouch); + if (crouch && !(m_DisableRewindWhenLatched && m_HasPuppy)) + { + m_TimeManager.timeStopToggle(crouch); + } + break; - //pass all parameters to the character control script - if (!m_disableMovement) - m_Character.Move(m_Move, crouch); - else - // We still pass the crouch if the player isn't moving - m_Character.Move(new Vector3(0, 0, 0), crouch); - } + case TimeManager.GameState.REWIND: - /// - /// Turn movement for this character on or off - /// - public void ToggleMovement() - { - m_disableMovement = !m_disableMovement; - } + switch (m_TimeManager.m_RewindMode) + { + case TimeManager.RewindType.SCRUB: + m_Character.Move(m_Move, crouch); + if (!crouch) + m_TimeManager.timeStopToggle(crouch); + if (m_IsRewindController) + m_TimeManager.masterScrub((int)((FF - RW) * m_ScrubSpeed)); + break; + case TimeManager.RewindType.HOLD_AND_RELEASE: + m_Character.Move(m_Move, crouch); + if (!crouch) + m_TimeManager.timeStopToggle(crouch); + break; + case TimeManager.RewindType.TO_ZERO: + if (m_TimeManager.m_WaitingForPlayer) + { + m_Character.Move(m_Move, crouch); + if (!crouch) + { + m_TimeManager.timeStopToggle(crouch); + } + } + break; + } - /// - /// Overload where you can specify the state of the movement flag - /// - /// True for on, flase for off - public void ToggleMovement(bool flag) - { - m_disableMovement = !flag; + break; + } } } diff --git a/Assets/PATimeRefactor/Assets/Scripts/PuppyCharacterController.cs b/Assets/PATimeRefactor/Assets/Scripts/PuppyCharacterController.cs index 47ebcca..fe1d632 100644 --- a/Assets/PATimeRefactor/Assets/Scripts/PuppyCharacterController.cs +++ b/Assets/PATimeRefactor/Assets/Scripts/PuppyCharacterController.cs @@ -44,7 +44,7 @@ public class PuppyCharacterController : MonoBehaviour { public bool m_IsLatched { get; set; } public bool m_IsHome { get; set; } - private PlayerTimeAttachment m_PlayerTimeAttachment; + private PlayerUserController m_PlayerUserController; private Vector3 m_HomePosition; private bool m_HaltPathing; @@ -53,7 +53,7 @@ private void Start() { m_Agent = GetComponent(); m_Character = GetComponent(); - m_PlayerTimeAttachment = m_Player.GetComponent(); + m_PlayerUserController = m_Player.GetComponent(); m_HomePosition = m_Home.GetComponent().position; m_Target = m_HomePosition; m_Agent.updateRotation = true; @@ -87,7 +87,7 @@ private void OnTriggerEnter(Collider other) if (other.tag == "Player") { - m_PlayerTimeAttachment.m_HasPuppy = true; + m_PlayerUserController.m_HasPuppy = true; } m_IsLatched = true; m_IsHome = false; @@ -99,7 +99,7 @@ private void OnTriggerEnter(Collider other) m_IsHome = true; m_IsLatched = false; m_Target = m_HomePosition; - m_PlayerTimeAttachment.m_HasPuppy = false; + m_PlayerUserController.m_HasPuppy = false; } } diff --git a/Assets/PATimeRefactor/Assets/_Scenes/ProtoDemo.unity b/Assets/PATimeRefactor/Assets/_Scenes/ProtoDemo.unity index e7bbe34..55e9cb6 100644 --- a/Assets/PATimeRefactor/Assets/_Scenes/ProtoDemo.unity +++ b/Assets/PATimeRefactor/Assets/_Scenes/ProtoDemo.unity @@ -2811,11 +2811,6 @@ Prefab: propertyPath: m_RootOrder value: 7 objectReference: {fileID: 0} - - target: {fileID: 114755739237096388, guid: 160f96e74f524c04997050bb5bed7e41, - type: 2} - propertyPath: m_TimeManager - value: - objectReference: {fileID: 1001579339} - target: {fileID: 496262, guid: 160f96e74f524c04997050bb5bed7e41, type: 2} propertyPath: m_LocalRotation.x value: 0.5326752 @@ -2832,18 +2827,15 @@ Prefab: propertyPath: m_LocalRotation.w value: -0.110415146 objectReference: {fileID: 0} - - target: {fileID: 9579096, guid: 160f96e74f524c04997050bb5bed7e41, type: 2} - propertyPath: m_Controller - value: - objectReference: {fileID: 9100000, guid: 831fc5957fcc6e84590bd54538b9ee24, type: 2} - - target: {fileID: 13783410, guid: 160f96e74f524c04997050bb5bed7e41, type: 2} - propertyPath: m_Mesh + - target: {fileID: 114896590231832898, guid: 160f96e74f524c04997050bb5bed7e41, + type: 2} + propertyPath: m_TimeManager value: - objectReference: {fileID: 4300006, guid: 3a683869573abb142839889fdd407e64, type: 3} - - target: {fileID: 13783410, guid: 160f96e74f524c04997050bb5bed7e41, type: 2} + objectReference: {fileID: 1001579340} + - target: {fileID: 13736924, guid: 160f96e74f524c04997050bb5bed7e41, type: 2} propertyPath: m_Materials.Array.data[0] value: - objectReference: {fileID: 2100000, guid: c78d8aa945ad43346b65f606cec61e10, type: 2} + objectReference: {fileID: 2100000, guid: 0dec6b6597e6565408d73421e9c33492, type: 2} m_RemovedComponents: [] m_ParentPrefab: {fileID: 100100000, guid: 160f96e74f524c04997050bb5bed7e41, type: 2} m_IsPrefabParent: 0 @@ -4659,16 +4651,6 @@ Prefab: propertyPath: m_Player value: objectReference: {fileID: 1730884332} - - target: {fileID: 114418653402867576, guid: e5a7480f3b45b014b8ea6dc91b24b1ef, - type: 2} - propertyPath: m_Text - value: - objectReference: {fileID: 487745951} - - target: {fileID: 114418653402867576, guid: e5a7480f3b45b014b8ea6dc91b24b1ef, - type: 2} - propertyPath: sampleRate - value: 3 - objectReference: {fileID: 0} - target: {fileID: 114418653402867576, guid: e5a7480f3b45b014b8ea6dc91b24b1ef, type: 2} propertyPath: m_Puppy @@ -4676,17 +4658,12 @@ Prefab: objectReference: {fileID: 490939858} - target: {fileID: 114418653402867576, guid: e5a7480f3b45b014b8ea6dc91b24b1ef, type: 2} - propertyPath: playerLayer - value: Player - objectReference: {fileID: 0} + propertyPath: m_Text + value: + objectReference: {fileID: 487745951} m_RemovedComponents: [] m_ParentPrefab: {fileID: 100100000, guid: e5a7480f3b45b014b8ea6dc91b24b1ef, type: 2} m_IsPrefabParent: 0 ---- !u!1 &1001579339 stripped -GameObject: - m_PrefabParentObject: {fileID: 1398763258217824, guid: e5a7480f3b45b014b8ea6dc91b24b1ef, - type: 2} - m_PrefabInternal: {fileID: 1001579338} --- !u!114 &1001579340 stripped MonoBehaviour: m_PrefabParentObject: {fileID: 114418653402867576, guid: e5a7480f3b45b014b8ea6dc91b24b1ef, @@ -5796,33 +5773,6 @@ Prefab: m_RemovedComponents: [] m_ParentPrefab: {fileID: 100100000, guid: 868df6ca073273b46b0d14bf91e88925, type: 2} m_IsPrefabParent: 0 ---- !u!1 &1436152390 stripped -GameObject: - m_PrefabParentObject: {fileID: 1501847329513510, guid: c465d0ed2fba9054fab593e5b852b034, - type: 2} - m_PrefabInternal: {fileID: 1937865835} ---- !u!4 &1436152391 stripped -Transform: - m_PrefabParentObject: {fileID: 4824384813337996, guid: c465d0ed2fba9054fab593e5b852b034, - type: 2} - m_PrefabInternal: {fileID: 1937865835} ---- !u!95 &1436152392 -Animator: - serializedVersion: 3 - m_ObjectHideFlags: 0 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 1436152390} - m_Enabled: 1 - m_Avatar: {fileID: 0} - m_Controller: {fileID: 22100000, guid: 523de2004da50a543b3d8532fad46202, type: 2} - m_CullingMode: 0 - m_UpdateMode: 0 - m_ApplyRootMotion: 0 - m_LinearVelocityBlending: 0 - m_WarningMessage: - m_HasTransformHierarchy: 1 - m_AllowConstantClipSamplingOptimization: 1 --- !u!1 &1445976519 GameObject: m_ObjectHideFlags: 0 @@ -6093,7 +6043,6 @@ Transform: m_Children: - {fileID: 388322132} - {fileID: 1271397057} - - {fileID: 1436152391} m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -8385,7 +8334,7 @@ Prefab: objectReference: {fileID: 0} - target: {fileID: 4102610720279262, guid: 830eaf2f6e360bf428bd57f4ca1780de, type: 2} propertyPath: m_LocalPosition.y - value: 32.01 + value: 53.6 objectReference: {fileID: 0} - target: {fileID: 4102610720279262, guid: 830eaf2f6e360bf428bd57f4ca1780de, type: 2} propertyPath: m_LocalPosition.z @@ -9093,82 +9042,6 @@ MeshFilter: m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 1921566718} m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!1001 &1937865835 -Prefab: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 1453739477} - m_Modifications: - - target: {fileID: 4824384813337996, guid: c465d0ed2fba9054fab593e5b852b034, type: 2} - propertyPath: m_LocalPosition.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4824384813337996, guid: c465d0ed2fba9054fab593e5b852b034, type: 2} - propertyPath: m_LocalPosition.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4824384813337996, guid: c465d0ed2fba9054fab593e5b852b034, type: 2} - propertyPath: m_LocalPosition.z - value: 22.7 - objectReference: {fileID: 0} - - target: {fileID: 4824384813337996, guid: c465d0ed2fba9054fab593e5b852b034, type: 2} - propertyPath: m_LocalRotation.x - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 4824384813337996, guid: c465d0ed2fba9054fab593e5b852b034, type: 2} - propertyPath: m_LocalRotation.y - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 4824384813337996, guid: c465d0ed2fba9054fab593e5b852b034, type: 2} - propertyPath: m_LocalRotation.z - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 4824384813337996, guid: c465d0ed2fba9054fab593e5b852b034, type: 2} - propertyPath: m_LocalRotation.w - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4824384813337996, guid: c465d0ed2fba9054fab593e5b852b034, type: 2} - propertyPath: m_RootOrder - value: 2 - objectReference: {fileID: 0} - - target: {fileID: 4824384813337996, guid: c465d0ed2fba9054fab593e5b852b034, type: 2} - propertyPath: m_LocalScale.x - value: 1.8973099 - objectReference: {fileID: 0} - - target: {fileID: 4824384813337996, guid: c465d0ed2fba9054fab593e5b852b034, type: 2} - propertyPath: m_LocalScale.y - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 4824384813337996, guid: c465d0ed2fba9054fab593e5b852b034, type: 2} - propertyPath: m_LocalScale.z - value: 0.99999946 - objectReference: {fileID: 0} - - target: {fileID: 0} - propertyPath: openByDefault - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 1115433472075232, guid: c465d0ed2fba9054fab593e5b852b034, type: 2} - propertyPath: m_Name - value: Gate - objectReference: {fileID: 0} - - target: {fileID: 114781149173441670, guid: c465d0ed2fba9054fab593e5b852b034, - type: 2} - propertyPath: animOpenCloseDoorSpeed - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 114781149173441670, guid: c465d0ed2fba9054fab593e5b852b034, - type: 2} - propertyPath: hackDoors - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 1501847329513510, guid: c465d0ed2fba9054fab593e5b852b034, type: 2} - propertyPath: m_Name - value: Door (1) - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_ParentPrefab: {fileID: 100100000, guid: c465d0ed2fba9054fab593e5b852b034, type: 2} - m_IsPrefabParent: 0 --- !u!1 &1938080336 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/PATimeRefactor/Library.meta b/Assets/PATimeRefactor/Library.meta new file mode 100644 index 0000000..b481e4c --- /dev/null +++ b/Assets/PATimeRefactor/Library.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: e85a2b56027f80a4ab862688a29c271f +folderAsset: yes +timeCreated: 1489102864 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/PATimeRefactor/ProjectSettings.meta b/Assets/PATimeRefactor/ProjectSettings.meta new file mode 100644 index 0000000..f0db715 --- /dev/null +++ b/Assets/PATimeRefactor/ProjectSettings.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 11988ff40561d544fb7634066bee6528 +folderAsset: yes +timeCreated: 1489102863 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/ProjectSettings/InputManager.asset b/ProjectSettings/InputManager.asset index ef8338f..a933359 100644 --- a/ProjectSettings/InputManager.asset +++ b/ProjectSettings/InputManager.asset @@ -611,7 +611,7 @@ InputManager: snap: 0 invert: 0 type: 2 - axis: 9 + axis: 8 joyNum: 0 - serializedVersion: 3 m_Name: FF @@ -627,7 +627,7 @@ InputManager: snap: 0 invert: 0 type: 2 - axis: 8 + axis: 9 joyNum: 0 - serializedVersion: 3 m_Name: Ground Stop Time From a7bc959a2544000380f2f4fb0454697fb2e4c655 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pierre-Andr=C3=A9=20L=C3=A9ger?= Date: Fri, 10 Mar 2017 02:51:40 -0500 Subject: [PATCH 2/5] Fogot one --- .../Assets/Scripts/TimeManager.cs | 264 +++++++++--------- 1 file changed, 127 insertions(+), 137 deletions(-) diff --git a/Assets/PATimeRefactor/Assets/Scripts/TimeManager.cs b/Assets/PATimeRefactor/Assets/Scripts/TimeManager.cs index 7fd24de..a5489d1 100644 --- a/Assets/PATimeRefactor/Assets/Scripts/TimeManager.cs +++ b/Assets/PATimeRefactor/Assets/Scripts/TimeManager.cs @@ -14,16 +14,33 @@ public class TimeManager : MonoBehaviour // Apparently, toggling the Physics collision off sends an OnTriggerEnter/Exit event, // paradoxes have to be disabled in order to prevent misfire + public enum RewindType + { + SCRUB, + HOLD_AND_RELEASE, + TO_ZERO + }; + + public enum GameState + { + PARADOX, + REVERT, + NORMAL, + REWIND, + }; + + public RewindType m_RewindMode; + + public GameState m_GameState { get; private set; } + public string playerLayer; public string cloneLayer; public string doorLayer; public string aiLayer; - public bool m_EnableRewindToZero; - private bool m_AutoRewinding; + public bool m_WaitingForPlayer { get; set; } - public Color[] cloneColorCodes; // Currently being applied to the trails at runtime - private int cloneColorCodesIndex = 0; // NOTE FOR PIERRE: maybe this index is uncessesary/dirty depending on how you keep track of clones, let me know + public Color[] m_CloneColorCodes; // Currently being applied to the trails at runtime public int sampleRate; @@ -78,6 +95,7 @@ private class Timeline GameObject m_WarpOutPrefab; TimeManager m_TimeManager; List m_MasterArrayRef; + Color m_colorCode; // This is set at runtime whenever clones pop in or out of a timeline @@ -88,7 +106,7 @@ private class Timeline CloneCharacterController m_CloneController; Transform m_CloneTransform; - public Timeline(int start, GameObject clonePrefab, int id, List masterArray, TimeManager timeManager, Color colorCode, GameObject warpIn = null, GameObject warpOut = null) + public Timeline(int start, GameObject clonePrefab, int id, List masterArray, TimeManager timeManager, GameObject warpIn = null, GameObject warpOut = null) { m_Start = start; m_End = -1; @@ -99,7 +117,7 @@ public Timeline(int start, GameObject clonePrefab, int id, List masterArr m_TimeManager = timeManager; m_WarpInPrefab = warpIn; m_WarpOutPrefab = warpOut; - m_colorCode = colorCode; + m_colorCode = timeManager.m_CloneColorCodes[id % timeManager.m_CloneColorCodes.Length]; } // Mini helper methods for creating and cleaning up instances @@ -111,7 +129,7 @@ private void create(bool rewinding = false) m_CloneInstance = Instantiate(m_ClonePrefab, state.m_DogPosition, state.m_DogRotation); m_CloneTimeAttachment = m_CloneInstance.GetComponent(); - m_CloneTimeAttachment.timelineID = m_TimelineID; + m_CloneTimeAttachment.m_TimelineID = m_TimelineID; m_CloneTimeAttachment.manager = m_TimeManager; m_CloneController = m_CloneInstance.GetComponent(); @@ -227,17 +245,16 @@ public void runClones(bool rewinding = false) private int m_ActiveTimeline; private int m_Frameticker; - private bool m_TimeStopped; - private bool m_DisableParadoxes; private PlayerUserController m_UserController; private PuppyCharacterController m_PuppyController; - private bool m_Paradoxing; private int m_RevertTimeline; private int m_RevertIndex; private Transform m_PlayerTransform; private Transform m_PuppyTransform; - private bool m_Reverting; + + private bool m_RestoreControlOnNextFrame; + void Start() { @@ -246,19 +263,17 @@ void Start() m_MasterPointer = 0; m_PuppyPointer = 0; m_ActiveTimeline = 0; - m_Timelines.Add(new Timeline(0, m_ClonePrefab, 0, m_MasterArray, this, GetNextColorCode())); + m_Timelines.Add(new Timeline(0, m_ClonePrefab, 0, m_MasterArray, this)); m_Frameticker = sampleRate; - m_TimeStopped = false; m_UserController = m_Player.GetComponent(); m_PuppyController = m_Puppy.GetComponent(); - m_DisableParadoxes = false; - - m_Paradoxing = false; m_RevertTimeline = 0; m_RevertIndex = 0; m_PlayerTransform = m_Player.GetComponent(); m_PuppyTransform = m_Puppy.GetComponent(); - m_Reverting = false; + m_GameState = GameState.NORMAL; + m_RestoreControlOnNextFrame = false; + m_WaitingForPlayer = false; // Disable collisions between clones Physics.IgnoreLayerCollision(LayerMask.NameToLayer(cloneLayer), LayerMask.NameToLayer(cloneLayer), true); @@ -267,7 +282,7 @@ void Start() // Not sure if this should go in FixedUpdate or Update, Fixed seemed safer and more stable (constant frame rate) private void FixedUpdate() { - if (!m_TimeStopped) + if (m_GameState == GameState.NORMAL) { if (m_Frameticker == sampleRate) { @@ -282,26 +297,42 @@ private void FixedUpdate() void Update() { - + if (m_RestoreControlOnNextFrame) + { + Physics.IgnoreLayerCollision(LayerMask.NameToLayer(cloneLayer), LayerMask.NameToLayer(playerLayer), false); + Physics.IgnoreLayerCollision(LayerMask.NameToLayer(cloneLayer), LayerMask.NameToLayer(doorLayer), false); + m_GameState = GameState.NORMAL; + m_RestoreControlOnNextFrame = false; + } if (m_Text != null) { m_Text.text = (m_Timelines[0].m_TimelineIndex).ToString(); } - if (m_AutoRewinding) + #region Rewind + if (m_GameState == GameState.REWIND) { - if (m_Timelines[0].m_TimelineIndex == 0) + if (m_RewindMode == RewindType.TO_ZERO) { - m_AutoRewinding = false; + if (m_Timelines[0].m_TimelineIndex == 0) + { + m_WaitingForPlayer = true; + } + else + { + masterScrub(-1); + } } - else + if (m_RewindMode == RewindType.HOLD_AND_RELEASE) { masterScrub(-1); } } - #region ParadoxForcedRewind + #endregion + + #region Paradox // When doing the paradox/reverting from the paradox, everything gets bypassed and this happens - if (m_Paradoxing && !m_Reverting) + if (m_GameState == GameState.PARADOX) { // The forced rewind will try to reach a few seconds before the paradox actually happened // in order to show the player the sequence of events that lead to the paradox @@ -332,13 +363,13 @@ void Update() // happened, we start reverting and on next update the first portion will be skipped else { - if (!m_Reverting) m_Reverting = true; + m_GameState = GameState.REVERT; } } #endregion - #region ParadoxRevert - else if (m_Reverting) + #region Revert + if (m_GameState == GameState.REVERT) { // Start forward playback if (m_MasterPointer < m_RevertIndex) @@ -359,17 +390,15 @@ void Update() m_Timelines.RemoveRange(m_RevertTimeline + 1, m_Timelines.Count - m_RevertTimeline - 1); // Restore control - m_Paradoxing = false; - m_TimeStopped = false; - m_UserController.m_Paradoxing = false; - m_Reverting = false; + m_RestoreControlOnNextFrame = true; - // Enable collisions - Physics.IgnoreLayerCollision(LayerMask.NameToLayer(cloneLayer), LayerMask.NameToLayer(playerLayer), false); - Physics.IgnoreLayerCollision(LayerMask.NameToLayer(cloneLayer), LayerMask.NameToLayer(doorLayer), false); - - // Enable paradoxes - m_DisableParadoxes = false; + // Nudge pointers up + // Place pointers to next position + m_MasterPointer++; + for (int i = 0; i < m_Timelines.Count; i++) + { + m_Timelines[i].inc(); + } // Snap puppy pointer to master m_PuppyPointer = m_MasterPointer; @@ -377,11 +406,11 @@ void Update() } #endregion - #region NormalPlayBack + #region Normal // Update clones normally only when time is not stopped // The run() method is called at each rewind call - rewind is called on Update() by the // player who controls the time FF and RW mechanisms - else if (!m_TimeStopped) + else if (m_GameState == GameState.NORMAL) { // For each timeline that is not the active one, call run for (int i = 0; i < m_ActiveTimeline; i++) @@ -418,68 +447,60 @@ private void incrementPointers() } } - public void timeStopToggle() + public void timeStopToggle(bool stopTime) { #region TurnTimeStopOff - if (m_TimeStopped) + if (!stopTime) { - // Enable collisions - Physics.IgnoreLayerCollision(LayerMask.NameToLayer(cloneLayer), LayerMask.NameToLayer(playerLayer), false); - Physics.IgnoreLayerCollision(LayerMask.NameToLayer(cloneLayer), LayerMask.NameToLayer(doorLayer), false); - - // Re-enable paradoxes - m_DisableParadoxes = false; - - // Resume AIs - for (int i = 0; i < m_ActiveTimeline; i++) + if (m_GameState == GameState.REWIND) { - m_Timelines[i].resumeClones(); - } + m_WaitingForPlayer = false; + bool bangThePuppy = true; + // If the time stop did not result in a rewind, clean-up + if (m_Timelines[m_ActiveTimeline - 1].m_TimelineIndex == m_MasterPointer) + { + bangThePuppy = false; + m_Timelines[m_ActiveTimeline - 1].open(m_MasterPointer); + m_Timelines.RemoveAt(m_ActiveTimeline); + m_ActiveTimeline--; + } - m_PuppyController.resumeAI(); - m_Player.GetComponent().ToggleMovement(true); + // Resume AIs + for (int i = 0; i < m_ActiveTimeline; i++) + { + m_Timelines[i].resumeClones(); + } + m_PuppyController.resumeAI(); + + // Signal the puppy (if there was an actual rewind) + if (bangThePuppy) + { + m_PuppyController.hearNoise(m_PlayerTransform.position); + } - bool bangThePuppy = true; - // If the time stop did not result in a rewind, clean-up - // The timelines do the actual deleting and cleaning up, we just call it here with the open() - if (m_Timelines[m_ActiveTimeline - 1].m_TimelineIndex == m_MasterPointer) - { - bangThePuppy = false; - m_Timelines[m_ActiveTimeline - 1].open(m_MasterPointer); - m_Timelines.RemoveAt(m_ActiveTimeline); - m_ActiveTimeline--; - // Also replace the pointers (for reasons) + // Place pointers to next position m_MasterPointer++; - m_PuppyPointer++; + + // Snap back puppy pointer to master + m_PuppyPointer = m_MasterPointer; + for (int i = 0; i < m_Timelines.Count; i++) { m_Timelines[i].inc(); } - } - // Signal the puppy (if there was an actual rewind) - if (bangThePuppy) - { - m_PuppyController.hearNoise(m_PlayerTransform.position); + // Enable collisions and control + m_RestoreControlOnNextFrame = true; } - - // Snap back puppy pointer to master - m_PuppyPointer = m_MasterPointer; - - // Unfreeze time - m_TimeStopped = false; - - if (m_EnableRewindToZero) - m_AutoRewinding = false; } #endregion #region TurnTimeStopOn - else + else if (m_GameState == GameState.NORMAL && stopTime == true) { - // Disable paradoxes - m_DisableParadoxes = true; + // Set current state + m_GameState = GameState.REWIND; // Disable collisions Physics.IgnoreLayerCollision(LayerMask.NameToLayer(cloneLayer), LayerMask.NameToLayer(playerLayer), true); @@ -490,44 +511,32 @@ public void timeStopToggle() { m_Timelines[i].haltClones(); } - m_PuppyController.haltAI(); - m_Player.GetComponent().ToggleMovement(false); - // Freeze time and close the current timeline - // Need also the move the pointers one notch back (for reasons) - m_TimeStopped = true; + // Nudge pointers to next reading position m_MasterPointer--; m_PuppyPointer--; for (int i = 0; i < m_Timelines.Count; i++) { m_Timelines[i].timelineScrub(-1); } + + // Close the current timeline m_Timelines[m_ActiveTimeline].close(m_MasterPointer); m_ActiveTimeline++; - m_Timelines.Add(new Timeline(m_MasterPointer, m_ClonePrefab, m_ActiveTimeline, m_MasterArray, this,GetNextColorCode(true))); - - if (m_EnableRewindToZero) - m_AutoRewinding = true; + m_Timelines.Add(new Timeline(m_MasterPointer, m_ClonePrefab, m_ActiveTimeline, m_MasterArray, this)); } #endregion } - private void autoRewind() { } - public void masterScrub(int amount, int flipOffset = 0) { - #region TimeStoppedCheck - // Only allow scrubbing timelines while time is stopped (dog is sitting or paradoxing) - if (!m_TimeStopped) return; - #endregion - #region ValidScrubCheck // Check to make sure the rewind is legal, otherwise apply max value (positive or negative) // We only check this if there is not in a paradox or reverting mode, in those modes all // scrubs are managed by the system and should be valid - if (!m_Paradoxing) + if (m_GameState == GameState.REWIND) { int maxRewind = -1 * m_Timelines[0].m_TimelineIndex; int maxForward = m_MasterPointer - m_Timelines[m_ActiveTimeline - 1].m_TimelineIndex; @@ -543,7 +552,7 @@ public void masterScrub(int amount, int flipOffset = 0) // Move clones (except the one in the active timeline) for (int i = 0; i < m_Timelines.Count; i++) { - if (m_Paradoxing || i != m_ActiveTimeline) + if (m_GameState == GameState.PARADOX || i != m_ActiveTimeline) { m_Timelines[i].timelineScrub(amount, flipOffset); } @@ -556,13 +565,16 @@ public void masterScrub(int amount, int flipOffset = 0) #endregion #region MovePuppy - m_PuppyPointer += amount; - m_PuppyController.restoreState(m_MasterArray[m_PuppyPointer]); + if (m_GameState != GameState.NORMAL) + { + m_PuppyPointer += amount; + m_PuppyController.restoreState(m_MasterArray[m_PuppyPointer]); + } #endregion #region MovePlayer (if needed) // Also move the main timeline while paradoxing and the puppy - if (m_Paradoxing || m_Reverting) + if (m_GameState == GameState.PARADOX || m_GameState == GameState.REVERT) { m_MasterPointer += amount; @@ -581,34 +593,26 @@ public void masterScrub(int amount, int flipOffset = 0) public void handleParadox(int idToRevert, Transform lastPos = null) { - // Paradoxes can't occur when time is stopped - if (m_DisableParadoxes) return; + // Paradoxes can only occur on NORMAL game state + if (m_GameState != GameState.NORMAL) return; - // Slight variation on the code used on time stop toggle on - m_TimeStopped = true; - m_Paradoxing = true; - m_RevertTimeline = idToRevert; - - // Disable paradoxes - m_DisableParadoxes = true; + // Otherwise deal with the paradox... + m_GameState = GameState.PARADOX; // Disable collisions Physics.IgnoreLayerCollision(LayerMask.NameToLayer(cloneLayer), LayerMask.NameToLayer(playerLayer), true); Physics.IgnoreLayerCollision(LayerMask.NameToLayer(cloneLayer), LayerMask.NameToLayer(doorLayer), true); + + // Fetch revert targert + m_RevertTimeline = idToRevert; // Blocking paradox require an override in order to revert to the clone's // last valid position and not spawn through a door // Find the closest position and revert to that - m_RevertIndex = m_Timelines[m_RevertTimeline].m_TimelineIndex; if (lastPos != null) { - -#if DEBUG_VERBOSE - Debug.Log("Blocking Paradox Detected"); -#endif - float currentDistance = (lastPos.position - m_MasterArray[m_RevertIndex].m_DogPosition).magnitude; m_RevertIndex--; float nextDistance = (lastPos.position - m_MasterArray[m_RevertIndex].m_DogPosition).magnitude; @@ -620,11 +624,9 @@ public void handleParadox(int idToRevert, Transform lastPos = null) nextDistance = (lastPos.position - m_MasterArray[m_RevertIndex].m_DogPosition).magnitude; } } - else -#if DEBUG_VERBOSE - Debug.Log("Proximity Paradox Detected"); -#endif + // Nudge back pointers to reading position + else m_MasterPointer--; m_PuppyPointer--; for (int i = 0; i < m_Timelines.Count; i++) @@ -633,18 +635,6 @@ public void handleParadox(int idToRevert, Transform lastPos = null) } m_Timelines[m_ActiveTimeline].close(m_MasterPointer); - // Block the user controller - m_UserController.m_Paradoxing = true; - } - - // This was a quick and dirty fix, take a closer look at this - private Color GetNextColorCode(bool increment = false) - { - if (increment) - cloneColorCodesIndex++; - - cloneColorCodesIndex = cloneColorCodesIndex % cloneColorCodes.Length; - - return cloneColorCodes[cloneColorCodesIndex]; + // On update, will execute portion of code for paradox state } -} +} \ No newline at end of file From 268b5a2fcbb50d2cbdad26ca12226c985e0146ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pierre-Andr=C3=A9=20L=C3=A9ger?= Date: Sun, 12 Mar 2017 20:47:30 -0400 Subject: [PATCH 3/5] Moar Tweaks Implemented camera snap on clone while rewinding. Only have to assign the player's camera to the TimeManager script manually and tick on the bool checkbox SnapCameraToClone. Moving forward, everything I implement will be using some sort of tick box to turn off or on --- .../Assets/Prefabs/Clone.prefab | 69 +++++++++++++++- .../Assets/Scripts/PlayerUserController.cs | 7 +- .../Assets/Scripts/TimeManager.cs | 29 +++++++ .../Assets/_Scenes/ProtoDemo.unity | 79 +++++++++++++++++-- 4 files changed, 173 insertions(+), 11 deletions(-) diff --git a/Assets/PATimeRefactor/Assets/Prefabs/Clone.prefab b/Assets/PATimeRefactor/Assets/Prefabs/Clone.prefab index c3d08af..2722854 100644 --- a/Assets/PATimeRefactor/Assets/Prefabs/Clone.prefab +++ b/Assets/PATimeRefactor/Assets/Prefabs/Clone.prefab @@ -1359,13 +1359,14 @@ Transform: m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 149790} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 4.07, y: 4.3, z: 5.044979} + m_LocalPosition: {x: -1.7934971, y: 0.5, z: 2.5302665} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: - {fileID: 469942} - {fileID: 448028} - {fileID: 4966505376668596} - {fileID: 4391902850973756} + - {fileID: 4429201076807062} m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -2381,7 +2382,7 @@ Transform: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 100098} - m_LocalRotation: {x: 0.53267515, y: 0.07034045, z: 0.83613265, w: -0.11041513} + m_LocalRotation: {x: 0.5326752, y: 0.070340455, z: 0.83613276, w: -0.110415146} m_LocalPosition: {x: 0.000022271464, y: -0.00006150465, z: 0.026027026} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: @@ -2627,6 +2628,22 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 +--- !u!1 &1710866932611048 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4429201076807062} + - component: {fileID: 20990877827596502} + m_Layer: 19 + m_Name: Camera + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 --- !u!4 &4391902850973756 Transform: m_ObjectHideFlags: 1 @@ -2640,6 +2657,19 @@ Transform: m_Father: {fileID: 408730} m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!4 &4429201076807062 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1710866932611048} + m_LocalRotation: {x: 0.1507789, y: 0, z: 0, w: 0.98856753} + m_LocalPosition: {x: 0, y: 1.34, z: -1.77} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 408730} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!4 &4966505376668596 Transform: m_ObjectHideFlags: 1 @@ -2653,6 +2683,40 @@ Transform: m_Father: {fileID: 408730} m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!20 &20990877827596502 +Camera: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1710866932611048} + m_Enabled: 0 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: 0 + 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: 0.022 + m_StereoMirrorMode: 0 --- !u!23 &23291982028441632 MeshRenderer: m_ObjectHideFlags: 1 @@ -2813,6 +2877,7 @@ MonoBehaviour: m_EditorClassIdentifier: timeManagerObject: {fileID: 0} m_BlockingParadoxRange: 4 + m_EnablePuppyParadox: 0 --- !u!114 &114828841032397870 MonoBehaviour: m_ObjectHideFlags: 1 diff --git a/Assets/PATimeRefactor/Assets/Scripts/PlayerUserController.cs b/Assets/PATimeRefactor/Assets/Scripts/PlayerUserController.cs index 341d5f5..2b85789 100644 --- a/Assets/PATimeRefactor/Assets/Scripts/PlayerUserController.cs +++ b/Assets/PATimeRefactor/Assets/Scripts/PlayerUserController.cs @@ -77,7 +77,12 @@ private void FixedUpdate() if (!crouch) m_TimeManager.timeStopToggle(crouch); if (m_IsRewindController) - m_TimeManager.masterScrub((int)((FF - RW) * m_ScrubSpeed)); + { + if (FF != RW) + { + m_TimeManager.masterScrub((int)((FF - RW) * m_ScrubSpeed)); + } + } break; case TimeManager.RewindType.HOLD_AND_RELEASE: m_Character.Move(m_Move, crouch); diff --git a/Assets/PATimeRefactor/Assets/Scripts/TimeManager.cs b/Assets/PATimeRefactor/Assets/Scripts/TimeManager.cs index a5489d1..b931627 100644 --- a/Assets/PATimeRefactor/Assets/Scripts/TimeManager.cs +++ b/Assets/PATimeRefactor/Assets/Scripts/TimeManager.cs @@ -31,6 +31,10 @@ public enum GameState public RewindType m_RewindMode; + public bool m_SnapCameraToClone; + + public Camera m_PlayerCamera; + public GameState m_GameState { get; private set; } public string playerLayer; @@ -100,6 +104,7 @@ private class Timeline // This is set at runtime whenever clones pop in or out of a timeline GameObject m_CloneInstance; + Camera m_CloneCam; // I think these need to be set at runtime since instances are going to pop in and out CloneTimeAttachment m_CloneTimeAttachment; @@ -134,6 +139,7 @@ private void create(bool rewinding = false) m_CloneController = m_CloneInstance.GetComponent(); m_CloneTransform = m_CloneInstance.GetComponent(); + m_CloneCam = m_CloneInstance.GetComponentInChildren(); // Texture the trail m_CloneController.ColorCode(m_colorCode); @@ -149,6 +155,7 @@ public void trash() m_CloneTimeAttachment = null; m_CloneController = null; m_CloneTransform = null; + m_CloneCam = null; } // Called when scrubbing to close a timeline or when a paradox occurs @@ -194,6 +201,11 @@ public void timelineScrub(int amount, int flipOffset = 0) m_TimelineIndex += amount + flipOffset; } + public void activateCamera(bool active = true) + { + m_CloneCam.enabled = active; + } + public void runClones(bool rewinding = false) { // This method calls the Nav Mesh agent that will try to path towards the next position in the timeline @@ -454,6 +466,14 @@ public void timeStopToggle(bool stopTime) { if (m_GameState == GameState.REWIND) { + + // Switch camera + if (m_SnapCameraToClone) + { + m_Timelines[m_ActiveTimeline - 1].activateCamera(false); + m_PlayerCamera.enabled = true; + } + m_WaitingForPlayer = false; bool bangThePuppy = true; // If the time stop did not result in a rewind, clean-up @@ -492,6 +512,7 @@ public void timeStopToggle(bool stopTime) // Enable collisions and control m_RestoreControlOnNextFrame = true; + } } #endregion @@ -525,6 +546,14 @@ public void timeStopToggle(bool stopTime) m_Timelines[m_ActiveTimeline].close(m_MasterPointer); m_ActiveTimeline++; m_Timelines.Add(new Timeline(m_MasterPointer, m_ClonePrefab, m_ActiveTimeline, m_MasterArray, this)); + + + // Switch camera + if (m_SnapCameraToClone) + { + m_PlayerCamera.enabled = false; + m_Timelines[m_ActiveTimeline - 1].activateCamera(true); + } } #endregion diff --git a/Assets/PATimeRefactor/Assets/_Scenes/ProtoDemo.unity b/Assets/PATimeRefactor/Assets/_Scenes/ProtoDemo.unity index 55e9cb6..eb79085 100644 --- a/Assets/PATimeRefactor/Assets/_Scenes/ProtoDemo.unity +++ b/Assets/PATimeRefactor/Assets/_Scenes/ProtoDemo.unity @@ -1256,7 +1256,7 @@ Transform: - {fileID: 810997269} - {fileID: 2000751157} m_Father: {fileID: 0} - m_RootOrder: 3 + m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &242645884 GameObject: @@ -2809,7 +2809,7 @@ Prefab: objectReference: {fileID: 0} - target: {fileID: 408730, guid: 160f96e74f524c04997050bb5bed7e41, type: 2} propertyPath: m_RootOrder - value: 7 + value: 8 objectReference: {fileID: 0} - target: {fileID: 496262, guid: 160f96e74f524c04997050bb5bed7e41, type: 2} propertyPath: m_LocalRotation.x @@ -4283,6 +4283,69 @@ MeshFilter: m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 904163004} m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1001 &916398830 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 408730, guid: 3a65e8fe82479404e96efe155a409605, type: 2} + propertyPath: m_LocalPosition.x + value: -1.7934971 + objectReference: {fileID: 0} + - target: {fileID: 408730, guid: 3a65e8fe82479404e96efe155a409605, type: 2} + propertyPath: m_LocalPosition.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 408730, guid: 3a65e8fe82479404e96efe155a409605, type: 2} + propertyPath: m_LocalPosition.z + value: 2.5302665 + objectReference: {fileID: 0} + - target: {fileID: 408730, guid: 3a65e8fe82479404e96efe155a409605, type: 2} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 408730, guid: 3a65e8fe82479404e96efe155a409605, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 408730, guid: 3a65e8fe82479404e96efe155a409605, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 408730, guid: 3a65e8fe82479404e96efe155a409605, type: 2} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 408730, guid: 3a65e8fe82479404e96efe155a409605, type: 2} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 496262, guid: 3a65e8fe82479404e96efe155a409605, type: 2} + propertyPath: m_LocalRotation.x + value: 0.5326752 + objectReference: {fileID: 0} + - target: {fileID: 496262, guid: 3a65e8fe82479404e96efe155a409605, type: 2} + propertyPath: m_LocalRotation.y + value: 0.070340455 + objectReference: {fileID: 0} + - target: {fileID: 496262, guid: 3a65e8fe82479404e96efe155a409605, type: 2} + propertyPath: m_LocalRotation.z + value: 0.83613276 + objectReference: {fileID: 0} + - target: {fileID: 496262, guid: 3a65e8fe82479404e96efe155a409605, type: 2} + propertyPath: m_LocalRotation.w + value: -0.110415146 + objectReference: {fileID: 0} + - target: {fileID: 20990877827596502, guid: 3a65e8fe82479404e96efe155a409605, + type: 2} + propertyPath: m_TargetDisplay + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 3a65e8fe82479404e96efe155a409605, type: 2} + m_IsPrefabParent: 0 --- !u!1 &935816580 GameObject: m_ObjectHideFlags: 0 @@ -4644,7 +4707,7 @@ Prefab: objectReference: {fileID: 0} - target: {fileID: 4658824392053904, guid: e5a7480f3b45b014b8ea6dc91b24b1ef, type: 2} propertyPath: m_RootOrder - value: 6 + value: 7 objectReference: {fileID: 0} - target: {fileID: 114418653402867576, guid: e5a7480f3b45b014b8ea6dc91b24b1ef, type: 2} @@ -4707,7 +4770,7 @@ Prefab: objectReference: {fileID: 0} - target: {fileID: 436670, guid: 2d533fcc5b921e84fb52a950e55bdce1, type: 2} propertyPath: m_RootOrder - value: 1 + value: 2 objectReference: {fileID: 0} - target: {fileID: 114330158716680226, guid: 2d533fcc5b921e84fb52a950e55bdce1, type: 2} @@ -6197,7 +6260,7 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 8 + m_RootOrder: 9 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1479098833 GameObject: @@ -6746,7 +6809,7 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 2 + m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} --- !u!1 &1544164915 GameObject: @@ -8358,7 +8421,7 @@ Prefab: objectReference: {fileID: 0} - target: {fileID: 4102610720279262, guid: 830eaf2f6e360bf428bd57f4ca1780de, type: 2} propertyPath: m_RootOrder - value: 4 + value: 5 objectReference: {fileID: 0} m_RemovedComponents: [] m_ParentPrefab: {fileID: 100100000, guid: 830eaf2f6e360bf428bd57f4ca1780de, type: 2} @@ -9108,7 +9171,7 @@ Transform: - {fileID: 16410244} - {fileID: 73675885} m_Father: {fileID: 0} - m_RootOrder: 5 + m_RootOrder: 6 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1947853498 GameObject: From 49f3c970ea6367712e8b73c7a4960a630cb446b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pierre-Andr=C3=A9=20L=C3=A9ger?= Date: Mon, 13 Mar 2017 20:50:04 -0400 Subject: [PATCH 4/5] WarpIn Bubble - Implemented warp in/out effect The bubble could look better, but the goal was to create an object that isn't a particle effect. Its state is affected by the time stop and the rewind mechanics. Right now there isn't a bubble appearing when the active player warps in but that shouldn't be too hard to do. The hard part was figuring out how to make the engine deal with this time-synced object. - Camera snapping to clones The camera will always try to snap to the most "recent" clone. Since any clone can warp in at time !=0, the engine will display the most recent clone currently active in the rewind state. If this doesn't make sense, try doing the proto demo with the "pro" solution (the one that uses the flash rewind) and you'll see what I mean --- .../PATimeRefactor/Assets/Materials/Bolt.mat | 130 ++++++++++++++++++ .../Assets/Materials/Bolt.mat.meta | 8 ++ .../Assets/Prefabs/WarpBubble.prefab | 96 +++++++++++++ .../Assets/Prefabs/WarpBubble.prefab.meta | 8 ++ .../Assets/Scripts/TimeManager.cs | 108 +++++++++++++-- .../Assets/Scripts/WarpBubble.cs | 35 +++++ .../Assets/Scripts/WarpBubble.cs.meta | 12 ++ .../PATimeRefactor/Assets/Textures/Bolt.png | Bin 0 -> 208450 bytes .../Assets/Textures/Bolt.png.meta | 76 ++++++++++ .../Assets/_Scenes/ProtoDemo.unity | 108 +++++---------- 10 files changed, 499 insertions(+), 82 deletions(-) create mode 100644 Assets/PATimeRefactor/Assets/Materials/Bolt.mat create mode 100644 Assets/PATimeRefactor/Assets/Materials/Bolt.mat.meta create mode 100644 Assets/PATimeRefactor/Assets/Prefabs/WarpBubble.prefab create mode 100644 Assets/PATimeRefactor/Assets/Prefabs/WarpBubble.prefab.meta create mode 100644 Assets/PATimeRefactor/Assets/Scripts/WarpBubble.cs create mode 100644 Assets/PATimeRefactor/Assets/Scripts/WarpBubble.cs.meta create mode 100644 Assets/PATimeRefactor/Assets/Textures/Bolt.png create mode 100644 Assets/PATimeRefactor/Assets/Textures/Bolt.png.meta diff --git a/Assets/PATimeRefactor/Assets/Materials/Bolt.mat b/Assets/PATimeRefactor/Assets/Materials/Bolt.mat new file mode 100644 index 0000000..96bf368 --- /dev/null +++ b/Assets/PATimeRefactor/Assets/Materials/Bolt.mat @@ -0,0 +1,130 @@ +%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: Bolt + m_Shader: {fileID: 202, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _ALPHAPREMULTIPLY_ON _EMISSION + m_LightmapFlags: 1 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + - first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: 917df88c3872d05428ad7d65fc2e64a2, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + - first: + name: _BumpScale + second: 1 + - first: + name: _Cutoff + second: 0.5 + - first: + name: _DetailNormalMapScale + second: 1 + - first: + name: _DstBlend + second: 10 + - first: + name: _GlossMapScale + second: 1 + - first: + name: _Glossiness + second: 0.5 + - first: + name: _GlossyReflections + second: 1 + - first: + name: _InvFade + second: 1 + - first: + name: _Metallic + second: 0 + - first: + name: _Mode + second: 3 + - first: + name: _OcclusionStrength + second: 1 + - first: + name: _Parallax + second: 0.02 + - first: + name: _SmoothnessTextureChannel + second: 0 + - first: + name: _SpecularHighlights + second: 1 + - first: + name: _SrcBlend + second: 1 + - first: + name: _UVSec + second: 0 + - first: + name: _ZWrite + second: 0 + m_Colors: + - first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} + - first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} diff --git a/Assets/PATimeRefactor/Assets/Materials/Bolt.mat.meta b/Assets/PATimeRefactor/Assets/Materials/Bolt.mat.meta new file mode 100644 index 0000000..3afc9a6 --- /dev/null +++ b/Assets/PATimeRefactor/Assets/Materials/Bolt.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d65ebee22e82b0841a319fae44ee3e77 +timeCreated: 1489368450 +licenseType: Free +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/PATimeRefactor/Assets/Prefabs/WarpBubble.prefab b/Assets/PATimeRefactor/Assets/Prefabs/WarpBubble.prefab new file mode 100644 index 0000000..6780fdb --- /dev/null +++ b/Assets/PATimeRefactor/Assets/Prefabs/WarpBubble.prefab @@ -0,0 +1,96 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !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: 1233483338614074} + m_IsPrefabParent: 1 +--- !u!1 &1233483338614074 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 5 + m_Component: + - component: {fileID: 4272443431116150} + - component: {fileID: 33222267568471874} + - component: {fileID: 23705518616939126} + - component: {fileID: 114559152340339248} + m_Layer: 0 + m_Name: WarpBubble + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4272443431116150 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1233483338614074} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -2.0589602, y: 1, z: 0.8724208} + m_LocalScale: {x: 2, y: 2, z: 2} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &23705518616939126 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1233483338614074} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_Materials: + - {fileID: 2100000, guid: d65ebee22e82b0841a319fae44ee3e77, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 1 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &33222267568471874 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1233483338614074} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!114 &114559152340339248 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 1233483338614074} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2fd4765b167bfbc44afdc067f80d8b86, type: 3} + m_Name: + m_EditorClassIdentifier: + m_MaxXTiling: 3 + m_MaxYTiling: 5 + m_LifeTime: 20 diff --git a/Assets/PATimeRefactor/Assets/Prefabs/WarpBubble.prefab.meta b/Assets/PATimeRefactor/Assets/Prefabs/WarpBubble.prefab.meta new file mode 100644 index 0000000..04a089b --- /dev/null +++ b/Assets/PATimeRefactor/Assets/Prefabs/WarpBubble.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 70076f1ff7aa7d94dab217b667f7cb13 +timeCreated: 1489446991 +licenseType: Free +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/PATimeRefactor/Assets/Scripts/TimeManager.cs b/Assets/PATimeRefactor/Assets/Scripts/TimeManager.cs index b931627..02bdc41 100644 --- a/Assets/PATimeRefactor/Assets/Scripts/TimeManager.cs +++ b/Assets/PATimeRefactor/Assets/Scripts/TimeManager.cs @@ -35,6 +35,9 @@ public enum GameState public Camera m_PlayerCamera; + public GameObject m_WarpInPrefab; + public int m_WarpBubbleLife; + public GameState m_GameState { get; private set; } public string playerLayer; @@ -99,9 +102,12 @@ private class Timeline GameObject m_WarpOutPrefab; TimeManager m_TimeManager; List m_MasterArrayRef; + int m_WarpBubbleLife; Color m_colorCode; + GameObject m_WarpInInstance; + // This is set at runtime whenever clones pop in or out of a timeline GameObject m_CloneInstance; Camera m_CloneCam; @@ -111,7 +117,7 @@ private class Timeline CloneCharacterController m_CloneController; Transform m_CloneTransform; - public Timeline(int start, GameObject clonePrefab, int id, List masterArray, TimeManager timeManager, GameObject warpIn = null, GameObject warpOut = null) + public Timeline(int start, GameObject clonePrefab, int id, List masterArray, TimeManager timeManager, GameObject warpIn = null, int warpBubbleLife = 0, GameObject warpOut = null) { m_Start = start; m_End = -1; @@ -123,6 +129,7 @@ public Timeline(int start, GameObject clonePrefab, int id, List masterArr m_WarpInPrefab = warpIn; m_WarpOutPrefab = warpOut; m_colorCode = timeManager.m_CloneColorCodes[id % timeManager.m_CloneColorCodes.Length]; + m_WarpBubbleLife = warpBubbleLife; } // Mini helper methods for creating and cleaning up instances @@ -149,7 +156,7 @@ private void create(bool rewinding = false) haltClones(); } } - public void trash() + public void trashClone() { Destroy(m_CloneInstance); m_CloneTimeAttachment = null; @@ -158,6 +165,11 @@ public void trash() m_CloneCam = null; } + public void trashBubble() + { + Destroy(m_WarpInInstance); + } + // Called when scrubbing to close a timeline or when a paradox occurs public void close(int end) { @@ -169,13 +181,18 @@ public void close(int end) public void open(int index) { m_End = -1; - trash(); + trashClone(); + trashBubble(); m_TimelineIndex = index; } public void inc() { m_TimelineIndex++; + if (m_WarpInInstance != null) + { + m_WarpInInstance.GetComponent().scrub(1); + } } public void haltClones() @@ -199,6 +216,10 @@ public void resumeClones() public void timelineScrub(int amount, int flipOffset = 0) { m_TimelineIndex += amount + flipOffset; + if (m_WarpInInstance != null) + { + m_WarpInInstance.GetComponent().scrub(amount); + } } public void activateCamera(bool active = true) @@ -220,21 +241,22 @@ public void runClones(bool rewinding = false) // are blurred. I spend a while trying to figure out how to make the animation look good while rewinding and I don't think it can // be done if we allow the players to scrub through the timelines + + // Deal with clone instantiation if (m_TimelineIndex < m_Start || m_TimelineIndex > m_End) { if (m_CloneInstance != null) { - // NOTE TO SELF JESUS: WARP IN/OUT EFFECT HERE(?) - trash(); + trashClone(); } } else { State currentState = m_MasterArrayRef[m_TimelineIndex]; + if (m_CloneInstance == null) { // Create instance and assign references - // NOTE TO SELF JESUS: WARP IN/OUT EFFECT HERE(?) create(rewinding); } @@ -246,6 +268,31 @@ public void runClones(bool rewinding = false) m_CloneTransform.rotation = currentState.m_DogRotation; } } + + // Deal with warp in bubble instantiation + if (m_TimelineIndex >= m_Start && m_TimelineIndex <= m_Start + m_WarpBubbleLife && m_TimelineID != 0) + { + if (m_WarpInInstance == null) + { + m_WarpInInstance = Instantiate(m_WarpInPrefab, m_MasterArrayRef[m_TimelineIndex].m_DogPosition + new Vector3(0.0f, 1.0f, 0.0f), m_MasterArrayRef[m_TimelineIndex].m_DogRotation); + } + m_WarpInInstance.GetComponent().m_CurrentIndex = m_TimelineIndex - m_Start; + } + else if (m_TimelineIndex >= m_End && m_TimelineIndex <= m_End + m_WarpBubbleLife) + { + if (m_WarpInInstance == null) + { + m_WarpInInstance = Instantiate(m_WarpInPrefab, m_MasterArrayRef[m_TimelineIndex].m_DogPosition + new Vector3(0.0f, 1.0f, 0.0f), m_MasterArrayRef[m_TimelineIndex].m_DogRotation); + } + m_WarpInInstance.GetComponent().m_CurrentIndex = m_TimelineIndex - m_End; + } + else + { + if (m_WarpInInstance != null) + { + trashBubble(); + } + } } } @@ -267,6 +314,9 @@ public void runClones(bool rewinding = false) private bool m_RestoreControlOnNextFrame; + // duct tape - will remove soon + private int m_CurrentCamera; + void Start() { @@ -275,7 +325,7 @@ void Start() m_MasterPointer = 0; m_PuppyPointer = 0; m_ActiveTimeline = 0; - m_Timelines.Add(new Timeline(0, m_ClonePrefab, 0, m_MasterArray, this)); + m_Timelines.Add(new Timeline(0, m_ClonePrefab, 0, m_MasterArray, this, m_WarpInPrefab, m_WarpBubbleLife)); m_Frameticker = sampleRate; m_UserController = m_Player.GetComponent(); m_PuppyController = m_Puppy.GetComponent(); @@ -287,6 +337,8 @@ void Start() m_RestoreControlOnNextFrame = false; m_WaitingForPlayer = false; + m_CurrentCamera = 0; + // Disable collisions between clones Physics.IgnoreLayerCollision(LayerMask.NameToLayer(cloneLayer), LayerMask.NameToLayer(cloneLayer), true); } @@ -395,7 +447,7 @@ void Update() m_MasterArray.RemoveRange(m_MasterPointer + 1, m_MasterArray.Count - m_MasterPointer - 1); for (int i = m_RevertTimeline + 1; i < m_Timelines.Count; i++) { - m_Timelines[i].trash(); + m_Timelines[i].trashClone(); } m_ActiveTimeline = m_RevertTimeline; m_Timelines[m_ActiveTimeline].open(m_MasterPointer); @@ -470,7 +522,7 @@ public void timeStopToggle(bool stopTime) // Switch camera if (m_SnapCameraToClone) { - m_Timelines[m_ActiveTimeline - 1].activateCamera(false); + m_Timelines[m_CurrentCamera].activateCamera(false); m_PlayerCamera.enabled = true; } @@ -513,6 +565,11 @@ public void timeStopToggle(bool stopTime) // Enable collisions and control m_RestoreControlOnNextFrame = true; + if (m_SnapCameraToClone) + { + m_CurrentCamera = m_ActiveTimeline; + } + } } #endregion @@ -545,14 +602,15 @@ public void timeStopToggle(bool stopTime) // Close the current timeline m_Timelines[m_ActiveTimeline].close(m_MasterPointer); m_ActiveTimeline++; - m_Timelines.Add(new Timeline(m_MasterPointer, m_ClonePrefab, m_ActiveTimeline, m_MasterArray, this)); + m_Timelines.Add(new Timeline(m_MasterPointer, m_ClonePrefab, m_ActiveTimeline, m_MasterArray, this, m_WarpInPrefab, m_WarpBubbleLife)); // Switch camera if (m_SnapCameraToClone) { m_PlayerCamera.enabled = false; - m_Timelines[m_ActiveTimeline - 1].activateCamera(true); + m_CurrentCamera = m_ActiveTimeline - 1; + m_Timelines[m_CurrentCamera].activateCamera(true); } } #endregion @@ -589,7 +647,7 @@ public void masterScrub(int amount, int flipOffset = 0) if (m_ActiveTimeline != i) m_Timelines[i].runClones(true); else - m_Timelines[i].trash(); + m_Timelines[i].trashClone(); } #endregion @@ -612,6 +670,32 @@ public void masterScrub(int amount, int flipOffset = 0) m_PlayerTransform.rotation = nextState.m_DogRotation; } #endregion + + // Special case when rewinding (duct tape used here, more robust solution will follow) + if (m_SnapCameraToClone) + { + if (m_Timelines[m_CurrentCamera].m_TimelineIndex == m_Timelines[m_CurrentCamera].m_Start + 1 && m_CurrentCamera != 0) + { + m_Timelines[m_CurrentCamera].activateCamera(false); + m_CurrentCamera--; + m_Timelines[m_CurrentCamera].activateCamera(true); + + } + else if ( + m_CurrentCamera != m_ActiveTimeline - 1 + && + ( + ( m_Timelines[m_CurrentCamera + 1].m_TimelineIndex <= m_Timelines[m_CurrentCamera + 1].m_End - 1) + && + ( m_Timelines[m_CurrentCamera + 1].m_TimelineIndex >= m_Timelines[m_CurrentCamera + 1].m_Start + 1) + ) + ) + { + m_Timelines[m_CurrentCamera].activateCamera(false); + m_CurrentCamera++; + m_Timelines[m_CurrentCamera].activateCamera(true); + } + } } /// diff --git a/Assets/PATimeRefactor/Assets/Scripts/WarpBubble.cs b/Assets/PATimeRefactor/Assets/Scripts/WarpBubble.cs new file mode 100644 index 0000000..39fc310 --- /dev/null +++ b/Assets/PATimeRefactor/Assets/Scripts/WarpBubble.cs @@ -0,0 +1,35 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class WarpBubble : MonoBehaviour { + + private Material m_Bolt; + public int m_CurrentIndex { get; set; } + + public float m_MaxXTiling; + public float m_MaxYTiling; + + // This must be set at the same amount as the one in TimeLineManager script, will bake it in eventually but for testing we need to set it manually + public int m_LifeTime; + + + // Use this for initialization + void Start () { + m_Bolt = GetComponent().material; + m_CurrentIndex = 0; + } + + public void scrub(int amount) + { + m_CurrentIndex += amount; + if (m_CurrentIndex >= m_LifeTime/2) + { + m_CurrentIndex = Mathf.Abs(m_CurrentIndex - m_LifeTime); + } + float x = (float)m_CurrentIndex / m_LifeTime * m_MaxXTiling; + float y = (float)m_CurrentIndex / m_LifeTime * m_MaxYTiling; + m_Bolt.SetTextureScale("_MainTex", new Vector2(x, y)); + } + +} diff --git a/Assets/PATimeRefactor/Assets/Scripts/WarpBubble.cs.meta b/Assets/PATimeRefactor/Assets/Scripts/WarpBubble.cs.meta new file mode 100644 index 0000000..2a49f4b --- /dev/null +++ b/Assets/PATimeRefactor/Assets/Scripts/WarpBubble.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2fd4765b167bfbc44afdc067f80d8b86 +timeCreated: 1489368806 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/PATimeRefactor/Assets/Textures/Bolt.png b/Assets/PATimeRefactor/Assets/Textures/Bolt.png new file mode 100644 index 0000000000000000000000000000000000000000..d451cd136a312698e3e0589393313327b3dd8b9c GIT binary patch literal 208450 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 MJnE=)v{UF9$_ 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

C!*? zQ>}gDF0qU_-wO0r*MTXvVNm(mHdYh$KjJvMep!=$EM1=Hx{9d)qi>61pV|`k*BInF zYli6g1`fV*pi`=*HuMBvoh-8M86(J!dC6BD<@C%F$)%Zb-NC1d>@WmGhjs^3?Sp>4 z&y%mi&kvx{_|hT2@g1y#GS|34>PeARnD>^#MA(rBf|kYbTsku1#`EJf{+*D(?V3nB z213MXz`1~Tb_6J*^ffx*^)3X_HHjMt7(4kxn~>>!UK*@!+}vS@(V>Cvq-R0?(Z*?R z<$t|dj~;HFgF^#}f~6~=hcfTHhY-N#izwmZ;U0zfeD?}v^q&ckyVn>iK4tY!@^7Dky4Mzm0;nWObM?+s9X7 z&_~E1xGc&S*ynmMa|Jl@ZveEWgFm&6BGtvU@h&JYSI3IzJ2)S6 zWLAJdUX2e(OtrrMm6~dxPkDW4>s;4UgQgW*r(P1Adx%kmk1>bIqTy9E7 z$c<{q7y=!6D469-5(2|HnzHa1%8$-KFV8O7-+HDZg88OZX;;&zrkv9UnIJ1c~k zfHPKxnVY^n$x%@eUpE&nTX{)qPfV44T6^7Z^wSo5^cSYD6=Po{Db>LmR{Ysc4D->I zF4bn(!pZ;{V!h0zSg(n~rD2Ua(Giz{R3`C(-l9_{jGJ(??~?iHD`^RX4y-j*dhWLO z5Fj>=orOvmnxx?m?JRl{yad1R8fe%wkH5wkdy|qUf}seazl2zEsIOvvi^z=+l@n5P zjg78}V{!PfNEes5{?aVd=9L1r|LEbawclUcGkNw4eEi|x|4xYiBb{|YfdPi1d=!Mp zo7rM_Zf_D>(O$F;{RcG~lq8c^I0A&_>YXGx$cETZ{01#c-u$g5g7oc@;BCaJ@`z>E z)kG^N3#`hw4b6x8@ugIteMr39?YUjwJSdPivw`YiG3%gc&im1u;>Wz5YychfwKh-T zFN8?qi%3!ccii?R1OQE4(<3CL8*(@8$AM6xbGTr8RQ# zM0BRbGd#@h=njST*(ghji=_Ar|jqjC{nCAKjezZdz3AI|`kK-%R_@ zE|c~wMie~>6Md4Yd`{x6ybiEWhWu_6etHkFd?fhc z+K1|ZzR?Bw+K=V>iN3M1)ucujc!-62zZ3=ev}Rm!>%MLBy}?H>&(tMa6r3(_`eyX& zDEoMFHG7@!!}}XsEuL1r<%_iZPD?Y^S%U0zYaE;pS$6QObg#UCHJA83Xya{Yzvy#e zzwl|H-0EFVSZDbq<@ktdS#OP~rA?Hr`S`hBjRxVx8DZs_B&Ol3&!cQT6M>(R(N-k3 zr`ukoCaZ~^U%AJh&G`4;s>?2)?&3CW#)z1PAzNm-d<{$hif>}Zyzwnx7%~KekJB3Z z%uohh@Z6}QBsJU z&N*~Pguq6{bLaV&{=8$llMWCtVj(;#5T zI1!M-u7w)kzIjMQrmhFqc2$`UC3>RWAQycD92wrH)#iP&y> zMe8$Vj(46rZakv*c047Q0Uvz3PCndZTIF2ot@N{uHo-FG<4a;=QTiE7%NOURJ(f%k zWj-i@i%frSM=FlKkZ=|Cx6VF%&G72HP=Dh)XU&%s5L_;!7Yrzfed zSZdv%o|peF!=Lwzi-eeajGO_e-$QmanA&+kEevlJg#9oSaRoTvqcUR9;2Y3zPL#?7 z$1OQ;=6bZ}pufW%{IW3zz4rU(7B7FM(jd`RS!$J`^5UEnPhIq;U3NF~j9F}>?Kbfk z`)2$mvaPCL#xVv3-i&}z;qa~Zpz8j2F@|1|NQ`QA zwGT+uW#_MsrI6#+Y1BfeGz0h%q;?L6oCjGe>k>dVGg$H0UA&cT0lq11FADK@&q-99 zh*h~An_3^uGC8KM99OM1$(y++KgE9Fy(A+b{^nOHs?9^9qA^+w6~zk^_q%q9KVyG7 zBA;%ZO|^--JLHXT`_krj%o>U&hFZlf;=WsZtU|xT-*5ID760i5E-`j0-IiuUY&d!z z>yKiyCiA>L?lx;kbI+vK`iYU&{i~SX8Lu;fysH?%tL_jcjUh>1d|?4$(77AK*_Y5` zV+*?L0)(zDm#E?k^bc>K(FM)avO4v&Kqd8ZJX++h!3bsHX@|rFQ$tCEm(Wi$-S3?* z5z`IAAu+=Uv=}r=Z+o7a^tT>34JzJr=EepQx9JD=W&iA;=|LS`+h5$}!muZexXr0_ zn7|*9P-i1E;LL@Ls41{L;5-LDy>-I@i3!Bh;ehyl3% zYa6(kV9r~R`sK9$A_oF&KH3}!CI?bS7`pWCmKX=9%7d4C?evWz8Warr*WB2-9y-Pw0ve0a zxA3t7v7CLr;}2JGui~Y=<`~IjCCtGIpzU@_m67DiSmhPbA*i6W35{e zKNNOUFwMa9L#fa#dPDUMUQ?mW8y?272|2S2R4Rw!U2sE zxCAQ{mAZn%!-Is=GH`ZRCuS}IO=rnj!%V|YTB+K$&BD*XA+%r~xtS=Ob(NZmVSMkg zv-gA{-H`G?)GoChGi87cKLxlGCxlZ2ujvhG-V{!uQS_jeK^kRqO@C^bF@Y}|sMFxhg_-EJYe$qcU(s6XfFAgVi=b+n5In)rs*^4SI!%ik5`L2$EAK zXW!0NVSOx?DGjf8?+*`BPon*rWf76K3YOrD8*_UG5_~rS8;yt5KUPT-ej0bi*-I*p z{B}c7k7leG;tA4hvXsP6A-ip%F_kakTeLF2qcO!a21@O-HE#2-X5EeV^~hjTd0nH; z&+ev-_z9LiT}8<9N|wI0KdiiCi6co{-yZI)ZE7uM^oyq6hvM60>5?An;Gu`<$4;JA zv1l`(%Jo6@y1NN#LnbE|^AgqQ6tvmHWc&DyxgV@p@UG4jFXr8Q{q4f%{)u;++2?G} z%#EvG64kWig}Jq?zr$;q&IL>Qa%x5X3&F%0Xi~Z%5wN$jLV-dsX!^XKHoCQi`@V5y`VhvB6h%_FrKC5j>9k2h%?RI_;2shh#;GBO`2(52 zh?)lG-U=gdXsgu=WqaD`@|1}K>Q)ogosit2UH8*kafL(AU3FUl*W`~u0{AY zPu$eTiQAT^T0x5^HB>L<*@!G}iVbAimWUHqg z(bEKh(ZvXX(eO>EDIXq<`-x+`4jIBEI)b_cS0RqWWfYJ)d}}=(k%!zL{!p;llPufM zZy0r1$hZ@>7j-qJ-20DDzsiW=x|XE+=_j# zb(2oQnMaFE(?`wFV^+MTSLw#XCA@90UnIs|ctk$PT`iwdA85|Gd@NxEP2Da`J;@V6 zu3`!l8gG>`X5i6!eN>y-Hdm^% z9R}JV}C} z(MGEJ39D0GpV#UYO~#JrX9e>cbNg+tBiv5hE8#4nX>0M)1PHP-S+$H^9-zX=7rhk- z_n|k#2Oi(5K*DDh3KT?WG=U#6Yw!ovj2>ADN`*1j^UO?xSwvC}Nw`aiTt z{ff2r<&^~=1VMvl2F#^(_cLp!B=dOd6Vi5!zT4^_tn(WsM2!~gWL~>VD?2&67YYcw z6p8Z+->bX*VOzG!PS2BF$=c(pAJvR`Un6$kv|wbmXFns2^7T>3Xc%WXBfij8m-gw} zy`8ZwQ!TQV3kFIK&L!6!VE&fM)?e(wfxj^KV&GC+rti+T#!Xx@4;+;}d#5ZDlK8EtU(Sx!2M z1vUj98S8FqhaT4aIz=uc9=7H7U;Q{a%;5j}&TtS51g`M^{KuTIw6@#BMKTJH=KbS` z(0q`*f0?MzDn2_o;k~(!$L;iXZFepk1Zt?s0*a(K6~HKL3qdSJ5r66joX>Y!>&A3P z-;A22X8+LdN@VLO+G2tR3r2I*hz!K0$$fF`#D6w$juy1u6hi%>h^(QX(Ub-0bs9eq9XF7TIk5UgY)fTjdNqQ=gk}WH)PwBT-M|b17mM$lr+&QjO`jvG(&@UQWJ>&}%%u-%! z3~HVl1gQdk_a>=uT6_^zJc_3;)r#nLimI>!1&}8vBylTvf|7Y=>3gU%6A5!{cd~M1 z{}@qIb85w_Cre6`fOOWnV<Nt62peyTLfPhov0Gf=9ppGedgy^E zvOK}d>n;!H{FcBiVPC`px$W3l3AWz^WJ4D3LbP8@e~sTNy42oXakoQ2Ou(*M3K{0_ z*9zD#%yKi1y$kaGU&^%ocr_-i3cYJ%2;+@7^(S|LPr4R*>FDLY{tv&{R-ju*v`JZa zi#Nu4sAKd>oF~tj_v)0Wd%T1=tn?m#4ug`1aAcp$#4%o(0m5tr zFP3zl$VeoMj{c(WLQ8Ui-bvxl*^e;d2t2Xu4ZhSLzGXgpCAtxGm6!Krgzl0aCAPrQ-F9e3x>b~2Eg|OPeZ$3 zxHRy|tvVCHG?Rj72r$-b@P=)w`_V+UJ~2(w4pf-q-GK8Dzb5HodNOoB|FYq1Xz{XYh7g1>m7Ovnk@ipkn6_)jlK~1J={-L8 zp`z9WxdjlO(JOw`j52foI&nf0Ys2bJ{AkWc{D|L_!fSW2U)AI_K0euh=n$cjD(5(D zV;(e*!;;InAKKwJ<3Fe3m2XI_inV}*<*SdzrCh!i=KiMn9NgkAZFN4TN6lJ^hi+o6 z3sIAaJ2Uzk<5zVlIo9xiyO>pB!vLR_Vjk}zDe880Vk*iN-@%{sH2*~8Vq2tx|IohY z)BeFUONaPfJ@j}=lO;CTMOL=MA1oF7D4v~e&@}h>o}c*(J(E=ABZ#Q;74S*Ia48ot zC$fA%6OZTn0~qgEz%U97-kw3W{E3kVFwCA9zXyE^j6Ewl_XT(qSM*?B!n;dqS_AE$p+Sk2SWo;PFqY#A zda44G_hx=r+{YyU7yht6GpsJU2wNb^yQ(Sq!ZCVnyJY2a^~A&6bt2)z+WDKYKbq^BxDo52cAU zwQQT^Av;7blHlqJ2A$8-7Sk<#ul9Oi=%J}a%(J4&Y>Ha36o@|o4N-_KyMjZD>-a6g zN8Mi9e&RcqK$@-}!$7qgNO2(qqv9i3_SK#Nub6khEhdEO+2N3&Qd9v26XPmnrftlm z0U?azV-=X~qDuuwnOa1?UnTe8e=eSgl%Ddg`%VYuPaEd_wi^Et`R&MWpI#DVXHS=o z^zBiV2I{4J?k?}@JZ_0dSPB3>KPPmbfi&p>F}ND@NseI_YW4N$z0+j&zo6-0h9S71$7 zb5KWJXf#DPYl`}nx07cHlRj617Um%Gr%Ezfz z(*xkOxrXY4e~0qn2OoK(pX4s={)~@Ql0O^x)IRs#iEpyd83+J-{w2@d-0jZ&GILg5e}b%%gyh&*->NP57YPTxl3rSc-Y^CU@rL_?X731nu;S?H z-ZW3^PQjk-RvVU9JCBIT3M?Gp4aW%b{Y>@* zh6aF=e~z2O9TU?e2UT2krs;I>B_pAT{ER>-8zN*7_U|EyGc`#Uzt12};+0ta)fY_* z80F)_ozyjY&ViL&b?{mHS$FQAP36NVsxpqEYK`TZCDOc1 zp`2HenVFO>C0>5bqj9(u(NDdWU>?m#^Kh*#-V91S8n(*ghh_@^l$*-0_wwhD@c9{p zZ88W|gl_kKK_>9&VtaogO$n*9GUcv&wQ#Q85Pzc0I2^mm7GCV{0Z;2mcO1Mr@B$*~ zR(DGl>4g-%Wm8LvtQhkUJ5^$em{O$1i#1W}M}AG!{qU}BWr_++2;S@IA}bi<;T5%y zjq44Utx&#QLN)ys_c3ln*z@k(z4ACi%|dhJQg64|4?RNk{wzc5eo{9o(7eu+GHbJT zMMWznKsV>K(*wvG`9UsHcI_N0X;bLrP=04rXX^<5uA7}lqQtFLlQplVmT7Bl^>g-+ zb;cjI;)iSnwRrgIG_Ew%vrsE0~1UbK}ZeV!ubsbP6`R{ zd#HGlUouH@M>2XcSP7Qlg)EAtIG@fciNVT5)f8O`T~|9CO#0rlIZnW*k7h4M6RR+h z*g*Lk`@guP9}aaPUQAEaxb=CDcIG7~ZHn_C+MsY6LZ`7O@IQ&x9FmHfxj3*$HG;yS zSX2$YpopcM78f+*6QxjJEO!RN;lR?901G?m%eN%bc z<@CWS^9^=jJ?r8hTTO1=5~4ZczZY{=xgb zt%WsxRiU1&&~PdBH$aT){#Au6k7ng_iB!|l_e>an_A%4+n06ui2>ZlXdvYJD%Dq$zXXGkc z0pcw`A?8~FO5nM2dlikw%4T2kxEt zyCifqx*5a57J7G^N+_RnC4tRZVmv*I3+-q8beJ-l+>2=tz9dE&FRi;(C3G+{1R2s8 z2d1j55>VJjh%Bcr_<`E~i6yks6Y_6p2);PcYX?*943c8qmb z-rL@N%`<6MnxSJOC4b}aPFqCuCjrv&=Y^hdOP@dW@VlG^BL}aNl9SLvpHWI=#U()I z5Wq6wP&U!;}04I7zc&ln!_Ar@|8}Q%dQL->i!qxj|z8$|3)wyI>#K4ol!3kEHd4 zNzpMv!jD0U@`4B?Z+j+LG(wL_60FbHae|ao^XKfhX=kb&-VNp6Y_TrDj^Z8brljtm zq}{pd$e>257Y$w)3HKmJ&MxxEL+gEW)Zg?Nvd)g&H8{bSCD|i1^NExdcCTNqWL?uu z?jm>J&T%ZmMtFxrPe0mv6PtEA57cOD{L2-k(-fu8K2Ws+GEPbrn^-5^eo`0%>k* z!)o&msyqQ~fP^HSly0nxn}Wx!c9{549i1`!7yx@owi)}0&XMP27g=X)%|~++Is|6Q z8RwLfk>X3)L}17Ena1V~+}=5|>51Wzl9K>>YD~=gzt{WP*Ew2H%-75g zZtSS>KfJG`+(g%rkl#5?U1S48>;t!w%kr9%OKnTPE{^GoH1*a#B^&Tw)EQmX?=)`B z%_3!(fs^&aeMw!^bZj;)ViCNzZN2Wt!Ki>6p_^8!>B#uCjAAtrUK9OVR(5&jhpnGG z-ES(kUWwlTpZOIO-avP*L;O` z^6i(Ysgn61V^7)8V;$?R-w;_7UfTb13k8&5c_LM*<{?vBta~BX5C{U(0?ffRDf}&6 zEONY~OZ)D?%iGxFWlzQ=$g%gvy08FEWG%f{iNJg!`dlk>5-I9N3hBlm7C{ga@L{31 zl;itC$yPck9wLo;D5AF|&?el@a2f0K`4s!YR_15L2ys&*EAF#J6tJrJ;@|Dux>MQMAkUqEc4$GIUp|usEo(TE6VsCe_v^|4~?`P0n*n-jK z-Ct%0`l`y^#MZRpOmd8Lehc4NVs1h^jU0g%j{u9MyCm#vsWd6PQd5({yM^Kb^2U-j z(P1mmlp~&Kx5vaRgZ30z8s4Pm7adQJ&|{f)kq?tj<2T>h*|5^vL5z8#!1z=17h^@v zNOFEIkWY%9{3W-;7qD~Of7En?ub(dCXQC(5U*O2-Kp3?e$5dP`mOm-0JsDMlExUp2 zh(D=Yse&|B?;-ltz~2+zs3#4EN|yifiJb%jwIzs1pF;0~sw)!YqEG=89}-d7wDN<-^vXVj|I z$9%k})DfVY@Cl{3{$r4v_%1j(sXSDvT6EDL@eeVMyIgBp%$c>exoBN;Qvt_~PQc8_ zG$oXq<2pB}U}pcIwvWL#Uz?%ip`7K!*B1JQq71GgwB*NX$aV9BsV@g8YvrN@9+|lc zi4nxz2sd?o+r(ui=iW}qtG6yr@3qL9i+)?@%PHvJjX+6EAKzwLPs^>a7xHV#t7&H< znc={S;dQY7|9a+vz46jhFr;m3LyHY`JE<*b{D(q zl;GrBbMj1M4k)Vb@l1P!^j8S>G!8liNlweqc*or3O$l`Iw4Uh#G+kdZtb=*Y)PFOZ(D~?>ZiS!Gah^ZwQVGxzx ztHJTrXm#R9uyeMF9QquFXJ`Ny`doP#(7Iu|!sM@v!bX~k^Ww{Yy?VN^b^Qs%Mx3?}FTTWvJ)hRUSv-)nK-l~N=^+8h_9DxMm7MtntL1R;mQVZ`AJq86YAPGnDDJRQ z^M1$93RRY@8N;3ob#y*DC2i4)+Cfx!cVn#$tI{)~?clL0$GTyTEYd?~Q@h0>grG9( zC)t>9eP7xR1~rZ3q7(oZ*W9C?1OD8w8 zi_bFz?MsflD$EMLGq2DtgCZnj0`bc8W-`jVyFcX-RGBa2+O%U%AzToZ>+fw{dgST& zBn-1j3BvJLV4P*VQ=|mJK?J@NLfzg^YcB{iT#NzesbB(%LUABjxYe?Tc9ydKk($^+ zz7FW+g5Eb{CY;h)%`M=_A>!vmyPv#9pIcb)NJ=6Fi{RVIeW8rxbrMPZJU>bI(y>cC zgA?Er7;?v#(WAQa>UjX6AlOq0V7t|TO&;4gO~efVx;(y8=6jmti~=~yR?l#*6LREHvGrEns5S|W$=B@Vd@LL|ION$o11aIB11Zy2h6F5e zB~QPsgyVm($Zzv|7WrPzMI6}|zc`u5ZgFYj3$iI`{pp>zjvlRegy+5Z#Xx`;UAO6L zMnZ(79JJHA9zAE6qu`mpPKiqNKhR3f- zNiPLzvaY}q_D3pn>-_CJI=J zjH~Vje;Wx{e?7IUw5DoW)D+&f6_%3VZ-pe0|MvrDTM$q4_X4ohn_qukcX@>gG*vW&>3a=~^bMr@3`Zh^M#*Zj?|f0eX%+IQ{VSCR-O|0405 zB6{*LRpcOmi*j_iu50}=aS2_IPT2ojm8JUx`*yAz4rjVL!56Gz0`H`e$ zN75B2@|R>t_?5KtCV-={jM|XJ0IJ@)bXZ&9Xen21Ny*>I{yJ15%%ea?{tO41G-hW; zXH{2~a-EYBpQIxOx0nT!0I@ug z^w`T{q+bzFMug{@!$6~!%Pqzxvdn}`o{4G2(ubXBp>c~! zIa!tTRbW-N@fl9?7x`UTsVDH`SR%_xOD3yyr0rv*6*H~l`?d>?7Hn3<6arH@Dulm} z%J-}YtETtMkjrnwAY~uG;;L_U+wfy<9|Kv=&-Tyc*l?eW^5hyLa@vwq0gc zb}=kacGP~aY)X=VyTdhjakrS+E6+Mz-R9=}UzLAks0xERLgz@$?3u~&3H+LN+O|7<#B=Q&d%w2!c6#AxV*T3+AY>-O0|6WH+qb8%j z`&sev!QSU;jd=K}vl6!15=b@rxM?T5ZcO-4yPEn@znTfh#;_m8k6vZW~+<{;IW;YRKNM63z)7PD>qvaUFLsqSzScE~j;6jpzbN~Bh z4nBSCtGvWX%Ydz@MZ1`jGV7QvYP&M|O3ZedGHbaeTYChNu1wX;5)L_QmEW|j;L+%0 z*VbSi&A{;dZHpvCln-+(=8v$yKxYc7Ylq!9!7_n5SEunVl)l-`&8;OHldlZ zXGrh+Qqn}F%%Y8LtBzTr6YOY7J$mGy@u6Sl_twyt*?#LzagTRMoa*7LcR-Y??Un)7 zC2J(YU~MXR0WY?l#op^^3l*MRAg2xs{@(=%YUs@lcc(j)hXZHR(B*OL?nGJR?;1GWGTlos9-vdNBjYT76lH!_ZNBggaNQ+xkm=y5$a zZ6>{)9k9&3(tKhMt=#!|Fs&_+dG{bf|84y8HT79|f60LEjk{bQz1Zx$j*OkL^SavV zLyd|DD8^{uoJ=2`vrZvg8g%w1U~WzYMB9%1V^e}!_7Fc$1o6=vsrDzqXc@eU@bL+D6Qp(rV@Gwo08?9fLSCLnSli z=BjWzG$oa7iWb|C-UpTX)-|@5S1+~r|6CS*aII-PxC%c#zDi-MOr@wa6gn~QoQa_nK zV9(t*UDCbzx-D?wmigLquoi6o4@i4L1~;aL(le_rM(W}#V&W;mfv7-x=e z|9>TZ0gAl2b%YUgF7^$7x^b?y)3Pd6gnv6lhIvoi?*!vFza80raUJU#l#8|9sTZ!v z-<-ZVQN4WEEHo=3=x=$b;pM+fP zo1KT)qTyDt%H!*LZ}en6c6ZX+uflY4#x{SAR}0i3+ z6cE+_>jMIu3C6mxWz`EqIxnOpg^v-zRe@j<82a32T42LsZ-u)VXI)r#lKg6)!c)`9 zKZR!>p!w5~Xy2)w(s*C#&@%5`yk-AN@wSWxS1)NB!+|DY9yyrS^Uo_RCON+AG3@jcYIu|< zUl^SkAMnje8bvZYP|@_V$~h2M&RtF{+SmV`7Lh)shxoGyz1_mQ3$jOL-!N0n)7lxs z8lQ+cA(?_g=sJ47@5W7ph=&M8WJ6`RU;4)iXw#C+BiDNnp%Nj1Ijhm(*E$ywOl(Fw zdjbFDcBa%XS(jkM&lr=CwEeEBI5{FpIkI!pqA&lsn5j$1naf%hDQZ9%@lRV*#NXVdvR&oQ#L^?77_8&B$yaQOx-X7uNDmQ%$${B{cDwZ9Kcr^vZi5#CUSY{=E zzfu2K`eJU=dUr6VSMb4zB%;D@s($`f5 zmG&0aR#TJCSMTrZ1oUe+QF8J;NU10v{AMj#7Hf1%>hM5PFG1P5u>2z<13M~_8DeZB zOqu>CsqTV)GQYmrEOdAC>;obB+<@%)(ddk*w?UCc-p4#dBh4Cy%`7_f^6gZ<0vHeH%u*7gKr}jI zyW)eRN^b{tFR_&IxWwE;3f&0}v2pL>KUnywhoC;@_s}-EdB?=|G+>^9@(Iv=1a)Us z9G!^_J)i;&x-jwt9c^HdE=|1gKM55$0?#7`iZFMoL&={mjD4Q`Ni4h_r0*@|kFi7q z`Kn&5zs$w2-M-=TbjzR#J(z{L8N{%10?mTbfog2$qb$HU$tHT=7u&o@f1`yH$Ldtm z_W=hd-mBJb(x|AQ-81O>c1H~mEI03-XH!2#a6GS}rk~~^Z)mtS_v+%w_ipSOeoV>M zw?wKHGF<)C=ZY9ri!3{iOYbYbWYr=)Vo5$YMqw&Bd@xe5`%sW)8DOpqBz{wrI8qz> z{+-M6$qO=0wQZB7sm_?61j|Dbonf>LT0mI6u|#~G`(e5)BpQEys^pVH*cR2670;G8ssjV1)2d2Ut0y5boNeYHozeAEb{fp|B{MI3&+PJcH{;kX_FAB{m;v= z0dp?`;GlCkV2&E^r(-uhVwbwqpI}joy_M>%t7VG0)9>_-p`zhENlc`tqRMWYqI+&K z_M)X=-cNhU@SnQ8)?Lv@BmXkvZJJ|#^KR0ltFEBh?T4R&zi#D$Tp(&I-zG(0mrm!y zk<-Y`&6{T1`Q=k8w8G1Ivm<}Bm@F)AGv=^`?5ceUgX!!O^W9{E7moeomEpUmCS5JN zf2@VN5-W>L2dvB(70ywqfASgU6~sX!oR)ZF2zW5Wf)UyO)EIo%ghH%sl8U8xqbSEW z=IM^G0Xn?uk(ZJ79&iopvhADqUT9^`&S9n33A+!ek_AS_x-O%^E$V@5x>^3?5~6f% za}fR2w)RTrDNp@_Bv7^uPONJU9jj5?_mk=&`G-{ln0M#gs}d*Ov6`IUvq!J;F%) z`6BOs-QME|I|-aU(K&z3dj^=S*t4JMGDL_wt55+w*$4n~m90Lcsd(n*>{0lfqIqqt zczHMDp=g}zGVkNGS8dVJZgdHSfz7d$pv&mJ+Vyr|-!&O#lVawy(Pzmblr8wnD*L61 zo|Zoe5f11f%r!siwhoUIyBbP4{wdh$yb$00!O}Tl>~%e56q_Xc#30W6 z6A|(wr{qJFpF~AQM2Vig#KrK#cIDhB=l)m<3HK%%NmyVtUztaOX{$uF9QEKa=W;Iaj=+v9{|*5G5o759uCadw`jb=EoKwL zcTOFEO3ZPCel4bGDtE8Kz)I0a|MlB0!*&wb|2zL29K@=h=xaswxPFmPEJWpiWzc~H z3j=m^)`^E6p=`NYM{f|oNmAMd$jTBtm37;?57W)m+E5#pu{oi{B zdceA?nr7PEOcvceN~E{Xy$FP4ykFE;#?C3$S|O`lUXULjG!fKRi)BUbAxlo#GDkWZid3(Pys;2=pA{|u3`BHb445}0%0#e1@Fa}6Q81V zQdiai9R8Gvl5u&#&)_jPn&*<`SIix@TUno1L-9Ke3~TgOEdNkr@c;K7I>L)e@G{1{ zAKf1r^%hY>288O)pORm{ND2-bzvu5`=h$<8T=0>48qHq6s5x0q@j+g(u_*5p5u{T)=9kgqpjf1_(%$^7`T}46B22ilz?twMXLQPYJO4`%YNtUZX(b3_ z2#@_Ct(5Y7&mT41n|Bm_4|CC{tBha#$v#^rHDIxcyHcR|?p?Y6^65kS@+oNk@iYQZ zMZ*Wo8Vka!#+m-|7FcYd4CEr&N{U_EBE5Tmm~lDtj(KSur0kAd4|@7BPr_3qXd=mz zGb{=E{DBcYaRu~YME7W>G3<8a%yHury3k!R5dMxa3LEkBAPfAnj^|qgEf~(Oo4`p4 zfKK7Qo_+H`5jTEATlJG#N@yu#*_!|nRASC-Ky1rS(N|1MVO^?d&@ZgI-2a!J zuZkAv3E}iU_(PU()K8UjUNbOmIO*wJOuG3}invPbbhEuZ=r#W-Rv1$D#qqRr>+;H> z-ut^ogZjHyH<{B1tp)oDwMX%ZBBsvt7e8f+c}J>fKIp*#e3fBnkDY}1!GTo!{-)&f!E zoqKm~j4-9f(jYWe8U}cnn3N2xP!3=~#Q!}0K|i2j1}M$Fg4{qV5j z>U3}RYnJcNszYVI8euy2OX}-PAOfop2tP+FD&Q@j35`|WP4GZTVF!Vfd3nw-yE%al zECSH#>6&uFU`SXbYVmlYZ#YEy3t<`<0GT+`T1L5QiIMeSBWej2Ev1wqkH9x=13)C9 z>XZ6^Y1bxa%9)KZ4?}{$5ha{u-A>LB?4C&*Um4FWAu7ZDsh<%Ip+BW46Bpp*PX;RB zy2KB*#jboYWwg@A7-TCXZg91-)5>tir7#5KzHz!;jX!M zjqTA%y;)#|KvNP;s9i|UPg~eoOhRmX`gTAwI#{_189 z{^^Ow2fByvrr>wJ@#onW5^uj0b)E;KKL5T;i2+y(dVA7O@THYej(($_yhuNT_M_ba| zcxnd<*SwRR<*N|vYHYIGRpD}pmJ6oGM4~YLBAc{73<&~8p<4H-tei;leZ+JzsfW#y z7JGvR6Z)6kF!eWn1y@`c^djz3Io^-w|C$5gc5F7r-dI{pvr@%YYbC7tZ;?G5?LejD zSCFu&Yl;J2EZDjrV*m09oh?@0yFozsZY&`OaaR*cw{v@H6_j`R>)R!H0iMJdMk&h6 z_BxQ+HXOJy#YN#LV)NDD{>LAxjeJOf$J1!b?wQD9^{>)>P4y(I;h}Q}pGH_)Y*;bW ze0-Z&$5HaMGVAFe0nRmY z%bP?-Vg&qrD$vl%= zxQg&cB~sL%WU^AuojDTJj<0;5ZWSu(ZQ1kV&mx_Fk*E9Sz_-VgjhOuaf|^cu|Hs!X zHx~YR-oE~@ZW26)Wzw*L1I4Kr0Fvze9Yq!fMtA)T26FoG)EjG2KyYgyx@tBhGne3r z41hf?1er})$g8LQPL*hg29a(3Tfa1Q07n6OOR1i=~F-XsLF;wZLu*}EMNSl>7a z{p*U}c}kVA$oCEGTA;z0pS6DbBJm;7GRZ^^Rc4sBtcHl8VBFr9o7WL$vH*T&b9`G0B8DxFqIYOQui+M&a@zS- zjwz zsUF`;+h}KJFTIOBLkTONNPb!YW`KG)qyxkd>0K+C>|+vMxuo3VM-3uLV#MTM`;2n@ zD+T~b9;8M+`o^CDP{a6A6dqI-35z>+8Od3w;I8wlg9l44e{&f9wqvVeqg*!54=1sOrd*7Bw>dugnx?VE~pRb$Xvz z82)|?$3=)bQ@ovRRFUimVipqvOjP=i8caVa{P@Df_VUcU61kt#gZp zdG@QrSlnW!qL%{CQMCinokKa=MKf<*ieB4Wwu z{FWE#MRh0&fKN0abdk1Wn~51=dsJPy0tIBVUc#0}Z<4c**h*=Pc9%IH>d>P#QWajeFS&2d95sOU`W+{Z=)rgkc2TWfzA14csS0 zz|_CaNrbjBiBa=(G_*w&XOGN!1$iaW`Et)eeQp+#hJ0wh!=4cnJ+}N-K}p($L~MLd zm_FrW^doTR1dERE?B0D4Sfj)b(nv86jD36@hjibHBAXV1@TPzIHW{gKVJHy1-fbp0 zIc@1`TMat6xCK6p`eV(au;C<7>LW8$h`Z#`Sf9EhL`iLzS_Ny$UBg!|jT`9I^Ek%KGYlgDBMveB(N9|zG^?z@?Q>`=0M^U}N>U(1FYyD<6#0Smt^`?d2 zrWTR_<}m!Qa!sL7z4GW#z3PwM+<1|pTL00!&B-2F%&Z&2u|p%=>8?l_Gdid2B{kPY z=yFwhjFkZ>C0Kg@Ps=~VXKcS}&r?YG6@EHzCfngH8?9?_EikWIYW$53hu@nW&UUc@ z9mK-LY*M;s2^NV}DyOAK4&dbuWhjWDQOz@gn-$X))@NLh=HjbR4+X-R8W;)Ssf@vM z1JO<{h$s|K5p~kva@_G+`rTpS; zB7tyBps?O+$5ENZ4w;cEw;}CId#uDv5_T#1C%(SuIc_v4+NbPxaDd@cuQ5@~3YKoH zz!DCBpTIK!LnK+km$d?B;*tUCN28Rnw(KX36Ec#1u7OL`fQcz_kR>ekk|D4*eGVer zwXnBDNURd%>|51b&MA8Ly&D%DB%l7bs}XEPAUVXIIF$+jZ(g`2hxqYT z3Dud)AHHdqxtZ1*c#(Az(2bVaG{M(+)b@iDmf4z@fhdDhyD&A^%r7LO+2CE6x^^RdA2zlI+#!(dx4-&i&2gS$MvtN&U+WH6|iBIL8d_a)S~LS_w~W0`PIt>Sjr4MJjwK5t&5w)3K)PAip*&%r5}a4@ zM6?Yw7!1|EN^2x;)4$cC!0If3im+Q;04EIlK)p2N;Yzz8#234P7ogqFqe1+3VZx>~ zkDfC4@9WksYx_c{t>~WLO}0XJM_8sPW|M3N1{(B&a3-ZEwI?Z)sDD5jISqA+WgM!f zrG)gAsHD^JGDjjRY?N{z@uO|ZLSNCq8U>FwZ_G##&Y9q)Y&^K@*LMRzj%SVkL&vIe zHlQ?RFY%L;tUYR&d$F-&Y+_sve>J!pd-A1%p`yY7h~4sWJ*}|)I;qajncmcTJ_mp6 z3!RZe(7oKdh)bSoX3HAn7jZ8VbwrfT%8aAB#2*K4Gb+lCy7b%^h8VC4_;i6>Dy)c4 zlFi%}Ci}xxD}T)JW#NUFQO}<{<0}8-C4#SUl=>T29pT@%>~lu#3r?054&UHbiia^O z!PfC4rs1#V>FwasD1%{oOCBsIqi-n97OcSxA`sdtKSRZLHF@RTG9umF9@dp&*lrns z?F->211rH&tLcvB#5wZkm^%=xhAGPH)sW0tNL(f#q!@#oovgIsa47h+{IkJF(i4@Y(BAncofDPY8Iz#D3u-~|Fs>`4$2v_T!ip_8=g=}y&m ztezC7+RkL~LzAcX>qfng>93=Q@HL-xRov>Gk(jrFv$pi^>_7zI2qSplOBNtpp!7pz zPq-YBlI44x(#J1No?Cgr&Dww2F14qNFs2{W<;x__4Uc?rHGG^|F4K~!Aa-*++~<7X zbX~>GiS$^zxZ`qK<2th7|oyGut&+Dp_4mopcc#ZaZv!N0V> z?7}i9H7v`+fU=v6KmH1zl3+l{9f(L%U?A`Wf7W+LUxHG}G&M=COv6rKaczT3bQ$vda3D$@e7}lgVg1`q=AuRVO@<`FOAkEWyVgQ{hmO$ zyp&#KnCwKPyjH4K-2fxZt1=-BS#A0zV}>ZUks{+Zt)YnSrQ^%=_hB~Z2-2Ce_XO>2 z&-YRcC5*p}m&0)4LfCp@OLq%nl}jbku!`NAYS|2b)GXmCDN* z?K+dr#+*f!iO8M%IUCy zYeg$mag7PDo{#E}4OYivcxLy(Qf91)f$?25xg2}juHC|T%4|v>%*q@28;eoeD!Mu3 z+R0gTWFNk}4LMpd#Eo#<`?A67&eF2@z2g}G+nea{D8fV5F3>=3!PO-r^!vScmxv&@ zOY+MKi`_RgK#uX_z<9JLns)Kcrcd}>*S$;IH zU0)V=HMH1NtWR(WG?c;>GV{Ybt4kLD=f(?Z+@_Pi>n&Rl5<%D5d)+Eec6W=Hy)x-O z1w#*QEfSVTL(vph^EuY>l@fxSFy9(b%deh< zHkv)cHk?!G772?SB2oG-iLTYP&T&B_o7s?sF6JgU7)j%cZe- zta#<^HgDiTTE*Z2D;s@HyWmF7876L5%c%beQt57Pk%rL|H!jD&?{7cNOWfIXdY)5Ub~zzr$(SPn z(D5rCZ6Ci(N!rEk5q0xdefAN-X8(U^=nIzx6YwDZ?P4(ku*2hP9XR(6yH`z`0g!h& zba1DUz)%W|R8MTXs;H0De|nuVB?4>ZJFuyL717C#`{3bR2c6L4nO6CfhXL?+m6Z2?z)e(YRdJB(gA+W{%|ePL-R7%#m`>FV5*Sma%HK zeEl++>R-8qt5Z?OKg?>MqTLsH3e{He(9#cm@fBqYX-G-!vKK<|_HeG)5RK7I88%DP z3w97i!`1dy#RiItQ#M3(iB33eqlONz-^{@{35A}+@JmwROOnR>4~)Mi$bR}S&R_jm zSfAMoG%YI_^6*ksND$eV|EVFY#x82~@OxJ1=$ywzxw=G6pgpL!{hO(M{+!7HeRmS+ zwsdm9$XZL!K(U>}It6}LLnoJbba8{Fp2vAcXD*LH4NpZGALwiMn5#7PLNy;4*+P#A zkp>-p4jYRELi_Oq59@4pFjC21pBldqc4vq>fbUQ-My3OcT=D&@CJmYtpgA9Kb);ifE3^*zB`^qD&V)+6RGf+sxg=TXXi0d#o0?;CD*EaxhR z_ElcYZ`mSK_3ib_7q4eHR%je`)sJ29au;-{xtC41_)MJ~q*8SkngzdC+9(=rrN604 zg}X8(D_Da*$qX2#XVuS}m1Hx}B8oW|LWy!P2iv9xBN&MAR6 zW`*~{R6-@Du6s#t#vqN5{XM^JT!a2UI`8vvHD0LH1?jIm{3Z_wRf~Gz_11O=KZlk_ zq`D|D;f`1ecg8ZN{oRcfAjXj_jcPzrA~=iIBGNv=-ueGx!&plJ80tyxCyNt@ren^) z=+~f*f_EV3FTf%lqv19QhfS|E!Rd%blP#>**bJ7k-tjGTN#(_b;E-YF7HjSMc=8YCar z9*K2zDu^|IoAzdEZaRW_WxHKk<>XS?rew;Qu%M;Nh%a#RAdFVkn{zq#Zy4f%NvYbgm_FMGdlEx{G6<3R{u^g}6$p5w&$PAz(eW1F{f61wuq zNQESqu62!>s_~JE+%9{0p+6b^nHM| z{<@k3|0~lQH~?^?UcpHxH!NcsKya*TTR*A|D=qT{^eqy>Vq=fBCGwhNF=E zH<2dqN)B8T-gIA<*5OBak8Y{u@NQa$EuTSF)0ot{Uzk+-9FmjXTq^E<`tW@<#g{rF z#&^10(MPvR@p=k9`KbDWZj96AVM=$OhXKHo(83OeYQu$}1#$~8q;#v|II81SX;mbr zt_O%lTl|VeCYC40hO;@jqg)jfg`d&l-L^zju3excR>64i3r;nS9a7_|SVSKOi@J;@6{3idV zsQLJBiFcW~Phdoyp+q3v)0c4>SL+NnER%?VDJ@JBq69uLAa!o|H6c>%E*b+(8!6lO z?v0Dqi(m{&1eQY4SnU4=haGA{QYQCU7?b!>-1kDFD^ z%G#A%7acYbS zqFHK&sg8l2hlSzWAfnIM8924sI+w4K)RX(o_Uy9&K^Hl;;2ys>O3*S*7r$o z_%BBJm=^D!TPlpPAC%^MfUH0k)V6ubor%#N{k6+t_707yz4o=CQ-N?+Q{uc_;cYxa zbHx{@pbmMuB=owfA0Cm`a=#@q@;0RF&ed;`9QCAFZt@>QRj;d@8k<1?&{gnh7O`}CqPB$AX1l&UY&cfJYh3xN~RB0~C_+&u5F zA1Qp2AA|=4}$?8q_xSblLo>g z=eV^O10dOp!MM1~RoikQmJL{RnF-6H$I`}01x&~{^a}Zi6N0`wT zr6mdR0A7R<(Co(ok93ksfBLQzm>7zJx^NDe|V@_ z$ve(&NQ32mW97TRE4>#ct@-mo2h-g8fU;wLS@>*`d~ej(F+GLr&?Vxn#?0&POZVG0 zjgd+^vFYD`RXvXO6n%`HYAN`w_ObXOzwp4!>`)4HV!Mz+!P8;(O(h#tA8@`SAT`tL;vZYZdr$yLEha}`1hVN zF4|?4?S(k(I@3(lHD(>%vI_P&ML zw(Lvdw+3)|nRWI425aY?W}<1foooj|&GN_Rs7I?1y_0(8j`&ovl5=z}$D1T8fDJ49 z`e2bJSt@%cz3r}c|8I(EP;P3>XNIFBx#?Q6ZE0G7HLnMRBHw%ZnW0|#D{@Lp$}oDnSO+C1yJU!0IwdEDNN{KGWM(4fODl@+^?B5m5L5s@;N zs{!E9m6@1ma>h?3fZu%iHyAb`V~#q)50)T9QNzf0n6;123`Lg`5I9z(B}4P)A(Tqg z1SupPu(JLoCv1}?iWD1)^KbI^T-dLJpTc{@`ihMs8h_PJkTTyFH(T}fevA+ZW2~%f zrL3rNx|*k1?Qze&W_fV%4PLEUYL+rTuEq~)C^3HU3@kmVYEG(sP$D;1&wW3eV&!rs zNy34o%o#TBwyr)CoVyhI_-Gykl3tNw#nWo``fP^*i1VJ!fS|&egFe3aoc61?pVjD6 zv=^kb0rBQ1bhq+V&%Y|)Nk1ZLj_1>vn?*nafz(qbD&hflUkt{5BrKqSNXv>jFO3^} z{IgS%GSCJtoVKCG_00RKmP?;x_p^qusU>ftS(2+lIkSFu2_M)GgIkX+O!v=&6LLRN z9MW9!!;7|#dM$fnKIS9U)sX}yVzj}U`;R94zZ=-jL&N<@1;a@u+y_BpPSD!u;BQ`i zZ^1%?8zw~Zv^9M7r-Z}jFEJr4m+EK;8qOS03}Y!a`BuAM&RKE$>i}z&_a7f#>YVm) zIxTL`r5$D4?0Pm4tMSl!UZ2Ph5Mnd<|6jBCkH!w_unv z9M&|)^pzk(u5xewO^zh4M0arowD@E}{WHc}>u6dc6CWu7%&NZth*c|b5H*?H zm`YvJs;1)F9kIqNHs#tm5fJ*!@^)+936#(MOAO+iktd#pPPUAl+STnuWs@nR%m{5M|E2jXa^V z0vxWO`>go~r@~Y$1za_PTeTSn1JYZ;)Ec6pigGn7a4ZY@x5voXp;jp^OEK7>G zGE_cB9MLXI2RsGHx(g^mslDg%RKZep!-G|C=pdB#>%hP<5IXO01FQjIeV59RyX^q>}vk&*#(@Kk)O13_}?1?faw_#x_1f$;3-zct7@T&l9TNtVX{2YOA6*OBSXHT+-;+!IKL^?7oR~qZlsF zPba?Be@C2;pHEC<&Tzs1-|KrUjy!7eq75dmH>4`apx046Jcs^)&;A$uc3Rzgu+WKK zAK^m7Vn;7wvIyB#D_AkiXZaHbK76gk&FqzIPt+@P1{XycL2!gV5c)#M;w8Jnc6~Z+ z*k(FwX~$;gZx_YhM>9OuC~YfmD4KTs!Q?fkqg~cL=D~T?@!7r;oO1O81EKSMLWd{02kt6HjNy7 z#gn|loKkeA6H*bRlMkpS6=fPBTglsnr$ZUkS}09we_&Vn!+C8Oi{bg_3uXWm-&BA3 zE$t`mo-DoFXk;p<>h%6AxT$O1m3iyne1Ns9(E$TNu>u;gMt>aXpLmktZ}RxPj2~25 zd&h&ezB}F)zi*jj6oN8DTKfoalwho&cLJI7oKskQ9OXc!Wmv4KDd%n5{o8^gmQz2WW6_Msp}d}ci87DPV? z6R~R|9Tr)bn5Ul7q3q$a6ibx=fPBYfG3jIjD(`(%R%XeF4A92;#Ab*b%oN=$Gw49d z(7nOhrYX;AMdrVGO=YkkB@^BnK3FQcdC}+Sy_iI0OOJlvr#bnz`Q- z?lL|6_zveJU)RakC-)mYnIeCDb46Wa96tHhEv3n7+?%RUg%`%%c`q@b$U{vDWw~GQ z2n`(a>r908JF!P{(Yz7|5GQ-{ga{>vvZ}cKo^sx29p<+Hcv+HXa{(pG<`yyLJy;~d;KbF3X)PN;kTfnM zGzvicRUTp-7-WUt~K%MjsEsR-`x7K`74&S zoZDm&2PMjXH6zG6ni{69VBaxq(%|ANUcvkc)rk0FF{E^Sh{uSrLDTL~39-}3XuR3@ z4ttcKJGo?Bmf|emD@l|0uUd3nzR7xMecyc?h-*LFmc=n(;J#EkhG(# z7#tQkmVTAJR=~3Mf47gmp#Ts1RTd)ni(fo;76E{|%o-LU7DgXE+0bFy8r{R(wU0vN zmQ1kya4>oyCPWvc?K4mM`?KWPDPHSyNQC_OZ-iNIc)IaRoFUo|kvtr73%uWIRoV2; zb{CYlq8`+GZRtfY&ss$nJs}z|M+3YE?;KfV zVhVLvv5)8ElpRVG=Q~S{g9AUCEMy$*j-smPok6j5gW@B@WMus%s&;%KNJV`)pHVR` zyf;eeH9tSy@Yi-(3!u$ZQPQ@aRD>t{VN8*zuRS{~ayCq>5(Tzb74?wK8Pg<@egY7G zl-4AHIEXrbin*gM>}sjVs-n+LJ8{|lYT*`ff`;5SG$z0`8v-)=$T_uU7B5;h@Kg3) zUlmu?x>XXKW79rCsh(kID+U0fMu)!HD+VRaIsL!mJU0=wkOQN7nTIgB-q;f=u9kvW zn%ZIEJ*QoKE)@Q25m^|kG=Y^K5Ebdt)SyJK3*ji|5_G)1Db%BTYOd}do%SZ#Zf)Se zcfAw_a7;3)$qf@6t)LW$U*#uKX~(PNH5AL{H&^MK-YBW?UoQoC%eyLB52vP;?Xb-w zXX|-6mN~{$>hCG|xD0g8tI{v2rS`Y`I2}f)TEB#NmuhRSYWcWTYhOEGfqh*pqobk$ z0A5xlxtF@N+CF4$LDX6E9cd5%s&9Axl*e*P8b)e;;LqQpnjJsm285=`w?Bi)2JmJA z(y?s84C5)&3A;4SOg%qdN7KIU#FBe6sn55u?EkD~6Og#trU>tkBM>7fV8vkAX1gKw z7MrOqoQ`qt&h|au*xv{m=b{-yU;J4T2UP5VBTX<}Z3^vG$BYR}-p(e;7G#|6z(wom z|I0Jcd9xu9M9Ai)ZDRv8;tTx)GV_vsxFpknRaUepQEB$^VccLGhP9g0qo%Zi# zNk`Dv&s^eVZ35Em$fFu)%$;MZX#j|mW0{u^?!)=_pb|~Yh``*nwpmJM6t8QhLhWVjC*|Yu$?$+ zDBYiv!-s3i#(^0ypxQy$WebLrve7xSiH*78RfUO#u@hKwVMM-7&Q2s`UNsA0N$_5v z0@+56YuqTqc9?0Lt* ze{;J6+qFVsVw9UJ&+pY{_~dSQWI8P-0%l?a$Tbb|Ef-0oqllGO6eU~>|I&d27B_u$S8?bKHR8A)}hdPqcv##7fU zqeJrBzJ^&qrId9>iIWtmPLj%y=|QRpneMO&u9AR@*T^k3S5TB#OYM|g&Y4wpgvNu} zPf`dlF5ReUT7qSi&H@I(;UI2iRzy@4#jj3RfEhlQ+$#$Lv3}ujOAS(y14@!qCYvs3 zXqp+NVn5vNl?2Igx>os+)?%j6DFjawyPYIOjt_#FrxGvt`veJk;aQdaJ4N)UPHA^I z@dgijXa5Hv71bwSS(6jc+*zPe^kVF!z}7h=v|fpeAOhyENZi4yKxokYU9w$74Jp6ulVz5Q+>-0kJbzVwb zxKhJ+8DyUNnL5Vpqem-nP0l%ZrGrXFs`>7rahBcDYa%Cu`~>eG8iVswiiX1kLeMHn zmIY3=_~ta(;uV3>cj)y}v!x3W5hRDmL_|KbkPRy!d(TaX#Or7C@V77`8jJ6R^ImAg z1wFx6D_MIlkyW6EZLoO!JqLpqF96#X+&pZdOVfU;N60LxGPAx^=Zb6&m^_!UX9nd~ zmBfx|P{J`1|9AOp9xNlPinplih*7fEk>cwdo$fKTPc5|h6GZxO8aNgbF0_^-Lkh4M zaD*cvh(5H$fpmHPx!kLk{h{9A$;dW~~+C^#PyR>g^I1JEg0tr37ZyLwRR-Ww06K7c=$* zb{o0UPB0Kw!$GazCr@G>@HFAr$RtFqAjzBYrm(48O<9LBEQL)`5tB{awYdT;HQZoJ zC;sp?AplbfbT4R6rE}LOPFzrXuNAjh=cg2B#bcPh-3n}L+?<^Ua`cR zo&RQPf`@}@xHQD!k%vL3a$1}oK?EiyLQx<3^-#s2`IIuEwy#eE;GibY2ZHP?q9_uJ z0{mKG_LEeH_J;S@o>^{qq>zu)nVp-R*u0b1Gn{;n6=Fo62baifrS-3!8%+ba=UK;O zac}IBI~Yc`0^j$X2cdD4PV1c&>$$Sfk@TiHpM3%6e2Imn=o-=*X6$5orqw*AdzF28 z(XDM{w5zZ0as@VU_3+)XAr%=MOux$)n4cajrj-&zO#r;+fp9I<6oOUTQxnc@Yme(m zDb`u1T<>ejI7J-s8#}~?h%+OEP{tr$osdo{?5f#g?5(J5h3FcZrli#DecgjDaRf0v zZe+TXxh+y-diBHo@X+QE&dl_oFa!yjFals#h=UnWtwyFB zCJ3S}1Aw40n3FDkpJDJgc_7P~g25JkSG(Qn^I1pe6(P8LtKR;xuOo)_MLN+4+)}}0 zBS5+kMF72oZ^bj&MZjC_eXhB2wB)#QbB=Yj&y#=Q!goEIc0)w)eK9LasB z1Jg%;mFh<^Y<=5N<<@^Qj;*AF#=S@T2XmjSDqacHROvR(>M4mi5DeuGf27+)nQodN z&+H2tp`w}5vq35dNxXzz4mTL;qJcEb2_gh(H@t|Onsm{G7g0efn02y!iK=KVO^F}A zN(z;|tu}U%;&PW6{XP5AV?8rV)1lB^hz7 za0BGQ1_&rdz!e7d`qu6hwONlY>*)yGJ-p>33L*KkNcJ)4HbfL=a;0m#F#xP9BAJr91 zK;}QpJy<+vZN6t;BZ?(RHb`n=~85#=YFQT(xfCcb`oDTe>3j0B5!=-v@agJiMy zERh_j*hL_T2QBgWUq9h>uLOhetb7Kr;25swyl{Gh)f`lC1cD~w@85_BqU!@3d>`gl z&=h28Be&-qV14Om&Q)PTa5T84Qnrr+Wy^utp1wkD<>~t+Bd(Q8vxvJNitoeiW!`9- z%^A;21vWPy{ly=>qG-)%{o4Fb_k5C)IWoLzZav5}oR+0Qv^bvqa{3x~r8CcXdK?%VzaTj=vKVPy;5@K3{c zi1~{HS?qqUN#opLQSJc;ib{ACX3YAdp077Eg={+LEi17B2GUdf^1Z+aaH8Qy0)Q34 z%`OZ)YY|DPHDIqO8anoWNi*$;4HQS#f{yqRB|8C%3l${fg8o$L7YWvqf$X6et7Sr{ z&9Rht0K$_!wqzu!^nks*Bq{wMGrH#ThltBrx%Jf)I$Nk`$IhAtYA|_NyZ}JXJr)@D(dsi^mX3O3)BK&xG;BET+ds{Ax0Rn7`*7ThT^%Me zva9#|H5C(F&ZIOI!^W99L(x7`k!SfUeiK7d*JH#9y|~z`O_=;h4uF0I!2?juXykp| zJ?9i*OqV9?Up}ts0S-Ny>FnpkUyx^hqgKbO)mbMNY6<&WEVFJ}C@ZUJ1Y`7j~Sq;A!L1ZZ<$ zLZ%R5#5&3`dqO~LM+m>wJxTMKF_EJunnK$k0K#e&8#r3)z;DH1LzYA5?ts`7my7DF3mWKjXxH9k zARc`F+plWBWNiEZ2Fqw#ZJ#+mf=S%D0gQLrmd#Hc|IJzGh0s}pW|a9I^*?nPObhW` z8y=Z%Z@k~g%*drnj>FF;n;2-$IQx1}jrQ5Mt+PNwdilnpaZ zn$a{YWhI}z2JWmg*?hK}J4noPOk7iImtow$K6|#G)dJp!#I(u2oA5MX;9RWXUf$Kp zbS}@-5iuB2d8=$|{HIuxQ$LumnP_V=W*cO+e9uOm z6urrQD8me0u4ChmwDF%r8=7wKTR2P93`tFR36nXnLD+lZ00#l%ug!PFq{JX%Abe_e z!08WPS0I{+?~Lir&0HUXK^XA&T0^# zrSJRaN174;E*4ThJ=<YOuE5{^5{igZ{-aTJA?P&w9|V{FuWM583%hN+p<`mYq3 zQ$|5j^U!CdUdhfs6m4tBYE0W|m2EOT3I zz)xOfXA|E){(m)Hg+o*C*WbpZYk+hNMvRgvNXH0a^k}3JK@lkdX&7AsqM%53cZW2J zq7oy92nG${E|KQ%|p7WgZiF1%TVFGr;Pe1Nc$ZL5kN8y_4`X255)@e$g=_Sx}nRDNTGCyS*DunOLtum z1-KL>HpB_~KTz|!D7&$WGO-y6K{-<&*70jlmbWN{u)uH$2m|tVTUH%Q71S&L`W|6{ zEeSZp9zOz^1qnv8kqmO&< zSMTZhEU@W5w?qj&HgLv8uF>I{n*zm}hNVOsG*y{oQ5?=xQ~NccD;6hjGGyfKwI1?2xTNhCmH=cHjHTpg!c9tDzB5+OosDcL59SJ!Q2PdO0C|oS z`(hQT&&BhD6(cw8c<26gQ>*6Eb&(*dnj8v(Vwrm}|Ar?gl-pH+fne-4zAl+eFGSW{ zqyR3`w}^;PbS0(!>M9qky8u}=c@x87=ENvv8@G;s=;oIUJ=BYk&k{|KatKgmv4sn> z+i5ihXq0{pa=v~~xW+kl4%g6iZ z3TY3L2dPW<%RC;rbf@OE5vIGb@Ey8LOI}$}M}+vi_jt58b|x@Cz(9$%ezU)w1@TvZ zaVa!SgA!Q;ph(RbvUUTY(4|a2X~&^fF(xGFS$b>s1s_H&?9i+XWeeyhOV({ z=rQPeJ2vb8=l9NrSXAMD5-zQycJ9}awO3y817_K6#A=c*NZ@+-y9V>zNSORJOoK3N zVmNJF@CIHKFwsEnBl2_Jwf0Eg)?~XAr?aZLg3Tsl^na3Nk`w;rFfX-kzw)Dy0%db5 zO31m{GT4Vg89q88F4kjc-PYakKv_BJEp!yCD7I%lU{rGJPtC&zcG!D?&?aWd=*e-= zDF@@-bKJYxAe>s7w{28(v==ZAu&-?(Hr#M<8J;^~P|4xR$D5_U%!tOS#&Qib^W?{; zvy%5c#9#FnQOOS>Jk|~YhB#&5i?{ganoDFZJRo&pN54WE3Q7%Yn)dCqP0Am^>nb)C%S=LHDLg5aL;=Y>evT87?_mM!SHhO{sixj5@Dq+%Ki?18Myn2KThVu{Mb zfMlG+&uv)N!x&7}xJ`<};P)zHX+4^}vKw=Ov29oxfoH^k6lp0!=unU zM7qy;k4&Zz^GQhV2B_aJQh|WUG4LCUKIZM8@s~5nlYGl%FF(wbC28HS&f&J@3`vrKaG_SaMLIfX7*j z#UHn#-OoQXM@GIaf4cZiCxTUbb`j@bsqw*ROoqwfurb51MLWlOEyc!i)xcI&K@cz6 zV}f1^ROoD5r@1LGTO!)vz5lLGFRgfUY=gsOI85R=)g6(+Qb1M)QfDq<4J=sqttWK+ z3dntxG8;7{4?4xg4vX~xsRUcsCav8?m<(dnMz5_KOXqN9eolPgOHI4CX@3Vip%mH` zWB(g?F&(!$p`l8fjl;9h7Fu$Qzz1|2WSO*mSgGvN9S9eJb63p%L}3*iaJ8+QacYhrJ# zFCt~5*C|DN1XjF(9h*8;A!-O7J9^`E9#ABJzvPuSa=C6vNWyy(85JmICy|f}0T7um z1URjNATojPl?q}PxoP|UKheI_rI01M#urTM&`cH%p$KAq?st;|`Q)6wiz%hWK@eV@ z6FL2Jsto3wfFyjL&rb(DLo0)p1d5W5UeXWVV0_6wwg}L7+}{S70kzV7Un|=Ud*pT# zm&=#&Pw(ax@0xb}$b33o@ts`w;`^;%^Dv{T-?~nj@*s44jA6rxJAoMz0BCudI=>(* zm&**&e>*Sb>UhV_G^F^rcq%E$3}^B}>j~ldcRB9P3TZlevj)>OnwgVL2>AAvAU=pH z{gG+D6>BG5I~gj9^|^P8$mKAaN&AZ0=YByC+ab)$;G3AIZ6r_svYBK`SYMo223EhR>x&^1vPJvFQP=oEk?rR1dwF#YA@}9r?|@2UhyhxDSK_tpXmj5X6pQp z(DC)BLpO`T&=jqHc;3t{{G@m3>4$*U&=H})Rc#lcqSwFYhJ`C#x5W6lT+>;63NEP6 zJEI&os>`^ztpz3_7>1Q!-Q?>X(%+mVTdA92-Z+Au`BY{Sg7rCN;4r%Lc+bV0W8I#Y z9d|b)H75cC*(@kr^-`qm+mrt~F|FXx6@vszVZHu!t%-ZkNik%~IuUydjMiB$NR#Kz- zRubxT@90^J5z*&GzVQVZmDQ+?^s2>^p=Vc8+-FTHpJ}!FP~N5&`AoeY%^)E8<+~lZ za`|Up;SJ4njhJ!@PsiW$1eJMe>J!I+oKI46tyNnz?b9PlKibd5YMNWVXv&+44;arW zKq%~QqOMP{5RyoOsXL)3wG911YW2~g>z&FBeGp*~iTN{P&~voZKc7&fw<7JcMKoch zfsqD=E=NNx{Q}^3y~`eIP)E_;H_ZHK>LZ4;%)$MPKzqW z5sAg39};QAlP6N&3x0tyj5gJt{kGVd7Yk_W3?G0`Mm=!uqD9}cdqSIzx>+r<`IhpV zNzp8k+5MLk(qzS{`a)!h)Cc%(VvWgHhQF`~%ttHDk-SNQ^8S;k=2QHPxh1BYS3){( z-|dZ&zg=44=9}A&9HTWYzDlj#b4oE#8M&ixvuBL2y%UG#Iv!TuVr|^aO9B*LGY^bB zg%Ad{=?T8BBXB{L^i9y`|;6HX7K{Egq(i(T}t& zR^4vlkPQvylHu96%|03@mIs#FYQgVG zN|!@=J$oWg?V(s3ifg>R41cGJBMVk(H_99k%cCe7-lOxT2ZHioZbA>O^6!16zAIO_ z10pnn_Dgz6;7eIk2srY{#ciy6ok)wcLz*Ws#;X@4&G-eRRW+X9c8X*BFwQwL;Xj+f z2TFSwfV39mu>1Xi=^ll5(Qe(JY!3_>T8j^UN4gIr*T%0Rm;y^=dXN%R_z_4z?1Gn3$iHP9QqY*> zuen$eRkVEM2jFdRoyXyK8^kQDCDa zGwHTI@1ZzI)wurhq4Hf^B87I4DuSOBkzvN(M!;qzr`VcdaF{L!P~G6*n2b4YTedg0 zk}F#a8%CNG_$6$xbMv%#!yAFkxjQI+9~bH6pfsTWU*w*B#USYjib0|Z-rtu(f>|8{ zGG@9D?j|&%R_%kRk>Gc{Nf?IchW@B~Dq8wg*70baqExgcC_Vk9il&#Z%`4|?>3)fV z%@v#EjT95~K@m$TqWLA@-tTr)Q#jvqe_eDE_(QZZ*|EhsA_dB{uewqlOS zY{*rE(V@|op$&lss*~X#Y(T!I0FArhW-#5>*h?kpg859J>8Z1jgmTJ!bz%Sk5K8I3 ze_V8&3w#o?GeX7N);7vx9kV)q++OEZlQi?1)Q?oHpNjVH5r(ocQd{xl)#s@*0(nEa zY=^P|hIq0?j~HTj{tIv!fKQr%UUpBd(vM(fnVw*Uf>YIkHIZ?k%Xc81Pu40o4{sr& z4E-5*re+vHj|A&eg^Sfd6vPc~Wz;%z*42tlU*~1Kbngzp+6CCStlixMMOxdIAp3Ez zHt5hYvaE90f+ z>z6qin=|BjbV2d56s5PWC4MA9HF&mleA!9E64 zZ4BL07e@_{dPU=zP@}Lks*F$kJypuGpvRf}H%qR!$6JrC4qR)JSlHN09{|+ahvbu; zILqHK1~xeU3TTyZZmx7udBy=Hr+%Y-#hLAcR;Q?6h4hhbkgm&~+Z0q%Hy4sJUtik! z8DC$^N++~7ha^bbiHbIxl4Jv7QxMDVYxa!@cqPG@O!j?|g&9SZNJs8F$DO{+rWiwK zrfDU(7hpK^N3Rq^Z$qT>c)8is@*WzS`VxgFYvv{7KUZQZ8kX6oj1Qk;GMl4GTBuPG z^hto1Z;a_Wb_|96Ryp`(A6F}gZ**Dg%#*OCI+L)4PaOH3(=g6jmevY82f$Y!9;%Yz zjdc;(k9*q3<`tZa3-_n}hh}Sa>%e#EBg#cSOhVp+f$IBfR|(s)WiTM@RSj$ggrZdI zS~}~UM8mHie^1JFTqlqNgyYKBpNg^@%*_Py{Ka71r&aoNXm}ad*1CZCk$Leh3=(&B zBiXO{)k|t3NyE&&7nk7dfMw*e=<+fvNXEq*N|HJzNd+g9jw`3BTF(#5Q`=CJ#zabb z0!yaSHdZ>>E^wR`uifV+;K`UCqta)WZCht?T$3jy-QTz0u6Dg&oDZxBI^Gg-53O4? zo{uQEmEq4!l9*@rZE!i66>>b79v<;Tn>@7ZWu$jc-7TjCsjt-p(kC*Nad506`**sZ zUrJ6J3{4t{o}Cd$ek$_dyrTI}-6In|WnAOpYlWuGU%d}zBxvhb-_`y{;Zj*jmmLD> zDExvWxbxI-e?0WbvkGzsXH!+n<$!$M7cHD<)H)DpB@>w)5synHgp_q$pC&%Bv^l1b zLLZ+<0=4H~hyfQCW^Yt$d;_&|xl!ndJbJ|+GDX++{iXV!8XA`_-!9AXn~oIaP)dh+ z%gs*ri}8)Xf*uhr4kN4#C57!cY5m6)w#HA@&v+Io`(vR50u-Ur;l^Fw+>X{@hVVK~ zkK_9=YKVUPwJG={WSgzWcj?-Y-@L7i^B2mt)!oaDSS483f7X@DBT@EA+8+l=zGoG@ zPfYduC!N`0hQ1bsMB#M+NKaCA+rVyL;Q56|@B4O6ly_qBE`mnymms(}@_;$F;EUYu zL3akU{!6vZ)3;lnKNw|ixbDobY5e4>eapS$F_q|&9N=c*Kcn#Ei@|aAj)~7)SFJ@x zTcHrbKD2pfA*(Rw8xu!4N4y0+WB2>naNJnvPDilYP8khbT1xt@q}zlm8%ek(tYb!G zOP*Qy&yynhodSdOIARbkPI-ZY(4sI@na)wh{3jID(|m8cNQ`Gkx$gR$6?y$FVO)- zXKJ0(fL!`RHjj#r7{EHBJXdd1fLI8}qajD}jh>(LD$ z86sf*=UFv?&(aI*V;q?zn}2zNkMGG1Q|~kbsc;I-FRXp(y>>k3uc_C5oq3D zoxmq6%|YI7j&dl?T_~0p9~AsvDsiZeK!{u~mpPG_&2=#m8|wLHxx)6O&88a?DA^T1 zPuO~QT_$Bos$XxWdv3APsZ{l-%VnzdI_$G! zb;Rcbf`4IbmP3CR^vrx{fox?tNTgrE#P?&Szz^ms$f6q zngNy8>77QL(SlWv+VW7HB6zS~(WwP6Rl6+z8XTls!Qr0PYh~c`a zE5>s977r6I2_-w_t&)uGO2uREXEJkZU7MrL3!R?wU-vF%+`k3Z%1zR;|8}a!*R)rJsF1Yhv;7I1OBc?Dn;LT-@Gb z2EEv(0C>qt{TCoaZx|N=nLu`>Fl3w;C+~U|s2GK>-)e?n1lu;`cGBs1n0nVYPy8Wo z-%O1Dmeuh)r-crVjQ0^sA0Ax_Ka%oyW!FOG=hxg9s&UHp12A|Y$($9a^w8ROUoB81 zWCTXfb`bf782AL7n{B_68_oze5`L?sQ(Q!`_v~K*Ght{cYjv92g4}MkVkz5s@ID z>8LVA%k)97>>eqKQhgbP4kywQkPE1(<%POlPJ2eIFA7AE_sDvF?;LszqfRq^M&M=@ ze_y~}WiD}XwkDtNdaQq-Nq(Iqf3Q^#*};yk1RHzTuT^}fl|9qv_Uflp?X7JH=_A)_`to#Dz==2$R+f+-Jm9qKyCKEE1VhdV`|xnO2=x6bPS*dGTfCSRUgOixnO8R zw(p+$QmSQu=%M%QCPOqXTs#MNgnA1}$a@4>gCY}fv!jGE`sc+YqzCsahhi1i^uX?4 z5lv$+&zwV}wJguBHlRgTd(C()D=coHJXwWK4@aAI*k=jn8!r}^{qRQuOyUAx%&RzG zZEqu%zP|V734ns=<i?N!AsXcg&(*X`mxJz1dqVkx5leIrAw}(=> Date: Tue, 14 Mar 2017 00:00:01 -0400 Subject: [PATCH 5/5] Mostly Done I merged dev into PA_Tweaks, but I haven't merged "down" to dev yet. Most conflicts should be resolved. Here's a recap of what's been done on this branch. - 3 rewind types selectable from TimeManager script - Fixed clone color code - Snapping camera to earliest clone - TimeManager script requires a reference to the camera assigned to the player - Everything is hardcoded to display 0 (if needed could put a field eventually that allows us to set this at will) - Warp bubble - not applied to main character yet, will do this ASAP but right now I got other stuff to do - there is a lifetime field in TimeManager and WarpBubble script, set those two fields to the same value if it's not done already (should be 20 I think). Will hardcode something once we settle on a value - The warp effect is a prefab whose state is modified by the engine's clock, so it should look/behave as expected when doing stuff "out of time". It's not super pretty but the implementation is robust and if we want to improve we could swap it with something else, as long as it is consistent with the actual interface - Pressure plate - All bugs related to pressure plates should be fixed - Clones will toggle off pressure plate when warping out - Plates will no longer trigger when disabling the LayerCollisions - Added a bool check for robustness As mentioned in #programmers, the lerp for the camera isn't done yet, it will require some reworking of the engine to make it look nice --- .../Assets/Prefabs/PressurePlate.prefab | 27 ++- .../Assets/Prefabs/TimeManager.prefab | 16 +- .../Assets/Scripts/CloneTimeAttachment.cs | 22 ++ .../Scripts/PuppyCharacterController.cs | 8 +- .../Assets/Scripts/TimeManager.cs | 77 ++++--- .../Assets/_Scenes/ProtoDemo.unity | 214 ++++++++++-------- Assets/Scripts/PrototypeDemo/PressurePlate.cs | 33 ++- ProjectSettings/TagManager.asset | 3 +- 8 files changed, 241 insertions(+), 159 deletions(-) diff --git a/Assets/PATimeRefactor/Assets/Prefabs/PressurePlate.prefab b/Assets/PATimeRefactor/Assets/Prefabs/PressurePlate.prefab index dda42f5..70fc5f8 100644 --- a/Assets/PATimeRefactor/Assets/Prefabs/PressurePlate.prefab +++ b/Assets/PATimeRefactor/Assets/Prefabs/PressurePlate.prefab @@ -21,9 +21,11 @@ GameObject: - component: {fileID: 4858338949452850} - component: {fileID: 33562989641879620} - component: {fileID: 23545392253009734} - m_Layer: 21 + - component: {fileID: 136578784881225250} + - component: {fileID: 114696680226765280} + m_Layer: 24 m_Name: Cylinder - m_TagString: Untagged + m_TagString: PressurePlateCollider m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 @@ -36,11 +38,9 @@ GameObject: serializedVersion: 5 m_Component: - component: {fileID: 4094971283816024} - - component: {fileID: 136116629899047188} - - component: {fileID: 114614349883559164} - m_Layer: 21 + m_Layer: 24 m_Name: PressurePlate - m_TagString: Untagged + m_TagString: PressurePlateCollider m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 @@ -52,7 +52,7 @@ Transform: m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1649229833953150} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalPosition: {x: 5.21, y: 0.7, z: -20.02} m_LocalScale: {x: 2, y: 1, z: 2} m_Children: - {fileID: 4858338949452850} @@ -110,27 +110,26 @@ MeshFilter: m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1036937098942168} m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} ---- !u!114 &114614349883559164 +--- !u!114 &114696680226765280 MonoBehaviour: m_ObjectHideFlags: 1 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1649229833953150} + m_GameObject: {fileID: 1036937098942168} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 1731d4eb5ab5db643aa6adfe9ccd22cb, type: 3} m_Name: m_EditorClassIdentifier: - mesh: {fileID: 1036937098942168} - active: {fileID: 2100000, guid: d126514c63e26c648b26342075574ffc, type: 2} - inactive: {fileID: 2100000, guid: 6d5cae7598648574fa97b3d331407a30, type: 2} + active: {fileID: 2100000, guid: 3756c7ca466ec3a4681fa05534341942, type: 2} + inactive: {fileID: 2100000, guid: 8e99a5ec37ac45441a88343e99837c54, type: 2} target: {fileID: 0} ---- !u!136 &136116629899047188 +--- !u!136 &136578784881225250 CapsuleCollider: m_ObjectHideFlags: 1 m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} - m_GameObject: {fileID: 1649229833953150} + m_GameObject: {fileID: 1036937098942168} m_Material: {fileID: 0} m_IsTrigger: 1 m_Enabled: 1 diff --git a/Assets/PATimeRefactor/Assets/Prefabs/TimeManager.prefab b/Assets/PATimeRefactor/Assets/Prefabs/TimeManager.prefab index 78d8498..b79be17 100644 --- a/Assets/PATimeRefactor/Assets/Prefabs/TimeManager.prefab +++ b/Assets/PATimeRefactor/Assets/Prefabs/TimeManager.prefab @@ -51,11 +51,17 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 56ee9fea925a71a4aa590cd5774dd7da, type: 3} m_Name: m_EditorClassIdentifier: - m_RewindMode: 2 - playerLayer: Player - cloneLayer: Clone - doorLayer: Door DELETEME - aiLayer: Puppy AI + m_RewindMode: 0 + m_SnapCameraToClone: 1 + m_PlayerCamera: {fileID: 0} + m_WarpInPrefab: {fileID: 1233483338614074, guid: 70076f1ff7aa7d94dab217b667f7cb13, + type: 2} + m_WarpBubbleLife: 20 + m_PlayerLayer: Player + m_CloneLayer: Clone + m_DoorLayer: Door DELETEME + m_AILayer: Puppy AI + m_PlateLayer: PressurePlateCollider m_CloneColorCodes: - {r: 1, g: 0, b: 0, a: 0} - {r: 0, g: 0, b: 1, a: 0} diff --git a/Assets/PATimeRefactor/Assets/Scripts/CloneTimeAttachment.cs b/Assets/PATimeRefactor/Assets/Scripts/CloneTimeAttachment.cs index 75d33dd..2433705 100644 --- a/Assets/PATimeRefactor/Assets/Scripts/CloneTimeAttachment.cs +++ b/Assets/PATimeRefactor/Assets/Scripts/CloneTimeAttachment.cs @@ -20,6 +20,8 @@ public class CloneTimeAttachment : MonoBehaviour [HideInInspector] public GameObject timeManagerObject; + private PressurePlate m_PressurePlate; + public TimeManager manager { get; set; } public int m_TimelineID { get; set; } @@ -35,6 +37,7 @@ private void Awake() { m_Transform = GetComponent(); m_Agent = GetComponent(); + m_PressurePlate = null; } // Late to make sure that any disabling script has time to run @@ -55,7 +58,26 @@ private void OnTriggerEnter(Collider other) { manager.handleParadox(m_TimelineID); } + if (other.tag == "PressurePlateCollider") + { + m_PressurePlate = other.gameObject.GetComponentInParent(); + } + } + + private void OnTriggerExit(Collider other) + { + if (other.tag == "PressurePlateCollider") + { + m_PressurePlate = null; + } + } + public void pressureOff() + { + if (m_PressurePlate != null) + { + m_PressurePlate.forceExit(); + } } } diff --git a/Assets/PATimeRefactor/Assets/Scripts/PuppyCharacterController.cs b/Assets/PATimeRefactor/Assets/Scripts/PuppyCharacterController.cs index 7cb7c9d..2f5ffc5 100644 --- a/Assets/PATimeRefactor/Assets/Scripts/PuppyCharacterController.cs +++ b/Assets/PATimeRefactor/Assets/Scripts/PuppyCharacterController.cs @@ -48,7 +48,7 @@ public class PuppyCharacterController : MonoBehaviour { public bool m_IsLatched { get; set; } public bool m_IsHome { get; set; } - private PlayerTimeAttachment m_PlayerTimeAttachment; + private PlayerUserController m_PlayerUserController; private Vector3 m_HomePosition; private bool m_HaltPathing; @@ -57,7 +57,7 @@ private void Start() { m_Agent = GetComponent(); m_Character = GetComponent(); - m_PlayerTimeAttachment = m_Player.GetComponent(); + m_PlayerUserController = m_Player.GetComponent(); m_HomePosition = m_Home.GetComponent().position; m_Target = m_HomePosition; m_Agent.updateRotation = true; @@ -95,7 +95,7 @@ private void OnTriggerEnter(Collider other) if (other.tag == "Player") { - m_PlayerTimeAttachment.m_HasPuppy = true; + m_PlayerUserController.m_HasPuppy = true; } m_IsLatched = true; m_IsHome = false; @@ -107,7 +107,7 @@ private void OnTriggerEnter(Collider other) m_IsHome = true; m_IsLatched = false; m_Target = m_HomePosition; - m_PlayerTimeAttachment.m_HasPuppy = false; + m_PlayerUserController.m_HasPuppy = false; } } diff --git a/Assets/PATimeRefactor/Assets/Scripts/TimeManager.cs b/Assets/PATimeRefactor/Assets/Scripts/TimeManager.cs index 02bdc41..2aae62a 100644 --- a/Assets/PATimeRefactor/Assets/Scripts/TimeManager.cs +++ b/Assets/PATimeRefactor/Assets/Scripts/TimeManager.cs @@ -40,10 +40,11 @@ public enum GameState public GameState m_GameState { get; private set; } - public string playerLayer; - public string cloneLayer; - public string doorLayer; - public string aiLayer; + public string m_PlayerLayer; + public string m_CloneLayer; + public string m_DoorLayer; + public string m_AILayer; + public string m_PlateLayer; public bool m_WaitingForPlayer { get; set; } @@ -156,8 +157,12 @@ private void create(bool rewinding = false) haltClones(); } } - public void trashClone() + public void trashClone(bool onOpen = false) { + if (!onOpen && m_CloneTimeAttachment != null) + { + m_CloneTimeAttachment.pressureOff(); + } Destroy(m_CloneInstance); m_CloneTimeAttachment = null; m_CloneController = null; @@ -181,7 +186,7 @@ public void close(int end) public void open(int index) { m_End = -1; - trashClone(); + trashClone(true); trashBubble(); m_TimelineIndex = index; } @@ -274,7 +279,7 @@ public void runClones(bool rewinding = false) { if (m_WarpInInstance == null) { - m_WarpInInstance = Instantiate(m_WarpInPrefab, m_MasterArrayRef[m_TimelineIndex].m_DogPosition + new Vector3(0.0f, 1.0f, 0.0f), m_MasterArrayRef[m_TimelineIndex].m_DogRotation); + m_WarpInInstance = Instantiate(m_WarpInPrefab, m_MasterArrayRef[m_Start].m_DogPosition + new Vector3(0.0f, 1.0f, 0.0f), m_MasterArrayRef[m_Start].m_DogRotation); } m_WarpInInstance.GetComponent().m_CurrentIndex = m_TimelineIndex - m_Start; } @@ -282,7 +287,7 @@ public void runClones(bool rewinding = false) { if (m_WarpInInstance == null) { - m_WarpInInstance = Instantiate(m_WarpInPrefab, m_MasterArrayRef[m_TimelineIndex].m_DogPosition + new Vector3(0.0f, 1.0f, 0.0f), m_MasterArrayRef[m_TimelineIndex].m_DogRotation); + m_WarpInInstance = Instantiate(m_WarpInPrefab, m_MasterArrayRef[m_End].m_DogPosition + new Vector3(0.0f, 1.0f, 0.0f), m_MasterArrayRef[m_End].m_DogRotation); } m_WarpInInstance.GetComponent().m_CurrentIndex = m_TimelineIndex - m_End; } @@ -340,7 +345,7 @@ void Start() m_CurrentCamera = 0; // Disable collisions between clones - Physics.IgnoreLayerCollision(LayerMask.NameToLayer(cloneLayer), LayerMask.NameToLayer(cloneLayer), true); + Physics.IgnoreLayerCollision(LayerMask.NameToLayer(m_CloneLayer), LayerMask.NameToLayer(m_CloneLayer), true); } // Not sure if this should go in FixedUpdate or Update, Fixed seemed safer and more stable (constant frame rate) @@ -363,8 +368,9 @@ void Update() { if (m_RestoreControlOnNextFrame) { - Physics.IgnoreLayerCollision(LayerMask.NameToLayer(cloneLayer), LayerMask.NameToLayer(playerLayer), false); - Physics.IgnoreLayerCollision(LayerMask.NameToLayer(cloneLayer), LayerMask.NameToLayer(doorLayer), false); + Physics.IgnoreLayerCollision(LayerMask.NameToLayer(m_CloneLayer), LayerMask.NameToLayer(m_PlayerLayer), false); + Physics.IgnoreLayerCollision(LayerMask.NameToLayer(m_CloneLayer), LayerMask.NameToLayer(m_DoorLayer), false); + Physics.IgnoreLayerCollision(LayerMask.NameToLayer(m_CloneLayer), LayerMask.NameToLayer(m_PlateLayer), false); m_GameState = GameState.NORMAL; m_RestoreControlOnNextFrame = false; } @@ -456,6 +462,9 @@ void Update() // Restore control m_RestoreControlOnNextFrame = true; + // Restore Puppy State + m_PuppyController.restoreState(m_MasterArray[m_MasterPointer]); + // Nudge pointers up // Place pointers to next position m_MasterPointer++; @@ -581,8 +590,10 @@ public void timeStopToggle(bool stopTime) m_GameState = GameState.REWIND; // Disable collisions - Physics.IgnoreLayerCollision(LayerMask.NameToLayer(cloneLayer), LayerMask.NameToLayer(playerLayer), true); - Physics.IgnoreLayerCollision(LayerMask.NameToLayer(cloneLayer), LayerMask.NameToLayer(doorLayer), true); + Physics.IgnoreLayerCollision(LayerMask.NameToLayer(m_CloneLayer), LayerMask.NameToLayer(m_PlayerLayer), true); + Physics.IgnoreLayerCollision(LayerMask.NameToLayer(m_CloneLayer), LayerMask.NameToLayer(m_DoorLayer), true); + Physics.IgnoreLayerCollision(LayerMask.NameToLayer(m_CloneLayer), LayerMask.NameToLayer(m_PlateLayer), true); + // Halt AIs for (int i = 0; i < m_ActiveTimeline; i++) @@ -647,7 +658,7 @@ public void masterScrub(int amount, int flipOffset = 0) if (m_ActiveTimeline != i) m_Timelines[i].runClones(true); else - m_Timelines[i].trashClone(); + m_Timelines[i].trashClone(true); } #endregion @@ -672,28 +683,22 @@ public void masterScrub(int amount, int flipOffset = 0) #endregion // Special case when rewinding (duct tape used here, more robust solution will follow) - if (m_SnapCameraToClone) + if (m_SnapCameraToClone && m_GameState == GameState.REWIND) { - if (m_Timelines[m_CurrentCamera].m_TimelineIndex == m_Timelines[m_CurrentCamera].m_Start + 1 && m_CurrentCamera != 0) + // Find the "latest" running timeline + for (int i = m_ActiveTimeline - 1; i >= 0; i--) { - m_Timelines[m_CurrentCamera].activateCamera(false); - m_CurrentCamera--; - m_Timelines[m_CurrentCamera].activateCamera(true); - - } - else if ( - m_CurrentCamera != m_ActiveTimeline - 1 - && - ( - ( m_Timelines[m_CurrentCamera + 1].m_TimelineIndex <= m_Timelines[m_CurrentCamera + 1].m_End - 1) + if ( + (m_Timelines[i].m_TimelineIndex <= m_Timelines[i].m_End - 1) && - ( m_Timelines[m_CurrentCamera + 1].m_TimelineIndex >= m_Timelines[m_CurrentCamera + 1].m_Start + 1) + (m_Timelines[i].m_TimelineIndex >= m_Timelines[i].m_Start + 1) ) - ) - { - m_Timelines[m_CurrentCamera].activateCamera(false); - m_CurrentCamera++; - m_Timelines[m_CurrentCamera].activateCamera(true); + { + m_Timelines[m_CurrentCamera].activateCamera(false); + m_CurrentCamera = i; + m_Timelines[m_CurrentCamera].activateCamera(true); + break; + } } } } @@ -713,9 +718,11 @@ public void handleParadox(int idToRevert, Transform lastPos = null) m_GameState = GameState.PARADOX; // Disable collisions - Physics.IgnoreLayerCollision(LayerMask.NameToLayer(cloneLayer), LayerMask.NameToLayer(playerLayer), true); - Physics.IgnoreLayerCollision(LayerMask.NameToLayer(cloneLayer), LayerMask.NameToLayer(doorLayer), true); - + Physics.IgnoreLayerCollision(LayerMask.NameToLayer(m_CloneLayer), LayerMask.NameToLayer(m_PlayerLayer), true); + Physics.IgnoreLayerCollision(LayerMask.NameToLayer(m_CloneLayer), LayerMask.NameToLayer(m_DoorLayer), true); + Physics.IgnoreLayerCollision(LayerMask.NameToLayer(m_CloneLayer), LayerMask.NameToLayer(m_PlateLayer), true); + + // Fetch revert targert m_RevertTimeline = idToRevert; diff --git a/Assets/PATimeRefactor/Assets/_Scenes/ProtoDemo.unity b/Assets/PATimeRefactor/Assets/_Scenes/ProtoDemo.unity index d6f0adb..16b7be2 100644 --- a/Assets/PATimeRefactor/Assets/_Scenes/ProtoDemo.unity +++ b/Assets/PATimeRefactor/Assets/_Scenes/ProtoDemo.unity @@ -793,6 +793,12 @@ MeshFilter: m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 92219059} m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!114 &126994619 stripped +MonoBehaviour: + m_PrefabParentObject: {fileID: 114453480206080400, guid: 830eaf2f6e360bf428bd57f4ca1780de, + type: 2} + m_PrefabInternal: {fileID: 1077808750} + m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} --- !u!1 &131625008 GameObject: m_ObjectHideFlags: 0 @@ -1256,7 +1262,7 @@ Transform: - {fileID: 810997269} - {fileID: 2000751157} m_Father: {fileID: 0} - m_RootOrder: 5 + m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &242645884 GameObject: @@ -1382,7 +1388,7 @@ Prefab: propertyPath: m_Name value: PressurePlate (2) objectReference: {fileID: 0} - - target: {fileID: 114614349883559164, guid: 868df6ca073273b46b0d14bf91e88925, + - target: {fileID: 114696680226765280, guid: 868df6ca073273b46b0d14bf91e88925, type: 2} propertyPath: target value: @@ -2352,12 +2358,6 @@ MeshFilter: m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 481006215} m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!114 &487745951 stripped -MonoBehaviour: - m_PrefabParentObject: {fileID: 114453480206080400, guid: 830eaf2f6e360bf428bd57f4ca1780de, - type: 2} - m_PrefabInternal: {fileID: 1765468880} - m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3} --- !u!1 &489868668 stripped GameObject: m_PrefabParentObject: {fileID: 1649229833953150, guid: 868df6ca073273b46b0d14bf91e88925, @@ -2367,6 +2367,26 @@ GameObject: GameObject: m_PrefabParentObject: {fileID: 113348, guid: 2d533fcc5b921e84fb52a950e55bdce1, type: 2} m_PrefabInternal: {fileID: 1009763484} +--- !u!114 &490939859 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 490939858} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5e8262e11a299ef4bbe3fea2436fb6a6, type: 3} + m_Name: + m_EditorClassIdentifier: + m_MovingTurnSpeed: 360 + m_StationaryTurnSpeed: 180 + m_JumpPower: 12 + m_GravityMultiplier: 2 + m_RunCycleLegOffset: 0.2 + m_MoveSpeedMultiplier: 1 + m_GroundCheckDistance: 0.1 + walkingAnimatorSpeed: 0 + loveEmoteAnimatorSpeed: 0 --- !u!1 &498487761 GameObject: m_ObjectHideFlags: 0 @@ -2809,7 +2829,7 @@ Prefab: objectReference: {fileID: 0} - target: {fileID: 408730, guid: 160f96e74f524c04997050bb5bed7e41, type: 2} propertyPath: m_RootOrder - value: 6 + value: 5 objectReference: {fileID: 0} - target: {fileID: 496262, guid: 160f96e74f524c04997050bb5bed7e41, type: 2} propertyPath: m_LocalRotation.x @@ -2836,9 +2856,35 @@ Prefab: propertyPath: m_Materials.Array.data[0] value: objectReference: {fileID: 2100000, guid: 0dec6b6597e6565408d73421e9c33492, type: 2} - m_RemovedComponents: [] + - target: {fileID: 20632672145231736, guid: 160f96e74f524c04997050bb5bed7e41, + type: 2} + propertyPath: m_Enabled + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 20632672145231736, guid: 160f96e74f524c04997050bb5bed7e41, + type: 2} + propertyPath: m_TargetDisplay + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 114896590231832898, guid: 160f96e74f524c04997050bb5bed7e41, + type: 2} + propertyPath: m_ScrubSpeed + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 114896590231832898, guid: 160f96e74f524c04997050bb5bed7e41, + type: 2} + propertyPath: m_IsRewindController + value: 1 + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: 114755739237096388, guid: 160f96e74f524c04997050bb5bed7e41, type: 2} m_ParentPrefab: {fileID: 100100000, guid: 160f96e74f524c04997050bb5bed7e41, type: 2} m_IsPrefabParent: 0 +--- !u!20 &562300695 stripped +Camera: + m_PrefabParentObject: {fileID: 20632672145231736, guid: 160f96e74f524c04997050bb5bed7e41, + type: 2} + m_PrefabInternal: {fileID: 555583450} --- !u!1 &605923022 GameObject: m_ObjectHideFlags: 0 @@ -4644,8 +4690,13 @@ Prefab: objectReference: {fileID: 0} - target: {fileID: 4658824392053904, guid: e5a7480f3b45b014b8ea6dc91b24b1ef, type: 2} propertyPath: m_RootOrder - value: 4 + value: 3 objectReference: {fileID: 0} + - target: {fileID: 114418653402867576, guid: e5a7480f3b45b014b8ea6dc91b24b1ef, + type: 2} + propertyPath: m_PlayerCamera + value: + objectReference: {fileID: 562300695} - target: {fileID: 114418653402867576, guid: e5a7480f3b45b014b8ea6dc91b24b1ef, type: 2} propertyPath: m_Player @@ -4660,33 +4711,7 @@ Prefab: type: 2} propertyPath: m_Text value: - objectReference: {fileID: 487745951} - - target: {fileID: 114418653402867576, guid: e5a7480f3b45b014b8ea6dc91b24b1ef, - type: 2} - propertyPath: m_RewindMode - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 114418653402867576, guid: e5a7480f3b45b014b8ea6dc91b24b1ef, - type: 2} - propertyPath: m_SnapCameraToClone - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 114418653402867576, guid: e5a7480f3b45b014b8ea6dc91b24b1ef, - type: 2} - propertyPath: m_PlayerCamera - value: - objectReference: {fileID: 1939261668} - - target: {fileID: 114418653402867576, guid: e5a7480f3b45b014b8ea6dc91b24b1ef, - type: 2} - propertyPath: m_WarpInPrefab - value: - objectReference: {fileID: 1233483338614074, guid: 70076f1ff7aa7d94dab217b667f7cb13, - type: 2} - - target: {fileID: 114418653402867576, guid: e5a7480f3b45b014b8ea6dc91b24b1ef, - type: 2} - propertyPath: m_WarpBubbleLife - value: 20 - objectReference: {fileID: 0} + objectReference: {fileID: 126994619} m_RemovedComponents: [] m_ParentPrefab: {fileID: 100100000, guid: e5a7480f3b45b014b8ea6dc91b24b1ef, type: 2} m_IsPrefabParent: 0 @@ -4752,25 +4777,26 @@ Prefab: objectReference: {fileID: 1467817728} - target: {fileID: 454696, guid: 2d533fcc5b921e84fb52a950e55bdce1, type: 2} propertyPath: m_LocalRotation.x - value: 0.53267515 + value: 0.5326752 objectReference: {fileID: 0} - target: {fileID: 454696, guid: 2d533fcc5b921e84fb52a950e55bdce1, type: 2} propertyPath: m_LocalRotation.y - value: 0.07034045 + value: 0.070340455 objectReference: {fileID: 0} - target: {fileID: 454696, guid: 2d533fcc5b921e84fb52a950e55bdce1, type: 2} propertyPath: m_LocalRotation.z - value: 0.83613265 + value: 0.83613276 objectReference: {fileID: 0} - target: {fileID: 454696, guid: 2d533fcc5b921e84fb52a950e55bdce1, type: 2} propertyPath: m_LocalRotation.w - value: -0.11041513 + value: -0.110415146 objectReference: {fileID: 0} - target: {fileID: 113348, guid: 2d533fcc5b921e84fb52a950e55bdce1, type: 2} propertyPath: m_Name value: Puppy objectReference: {fileID: 0} - m_RemovedComponents: [] + m_RemovedComponents: + - {fileID: 114105686675771950, guid: 2d533fcc5b921e84fb52a950e55bdce1, type: 2} m_ParentPrefab: {fileID: 100100000, guid: 2d533fcc5b921e84fb52a950e55bdce1, type: 2} m_IsPrefabParent: 0 --- !u!1 &1014896409 @@ -4966,6 +4992,53 @@ MeshFilter: m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 1076416240} m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1001 &1077808750 +Prefab: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 4102610720279262, guid: 830eaf2f6e360bf428bd57f4ca1780de, type: 2} + propertyPath: m_LocalPosition.x + value: -20.9 + objectReference: {fileID: 0} + - target: {fileID: 4102610720279262, guid: 830eaf2f6e360bf428bd57f4ca1780de, type: 2} + propertyPath: m_LocalPosition.y + value: 32.01 + objectReference: {fileID: 0} + - target: {fileID: 4102610720279262, guid: 830eaf2f6e360bf428bd57f4ca1780de, type: 2} + propertyPath: m_LocalPosition.z + value: -10.9 + objectReference: {fileID: 0} + - target: {fileID: 4102610720279262, guid: 830eaf2f6e360bf428bd57f4ca1780de, type: 2} + propertyPath: m_LocalRotation.x + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 4102610720279262, guid: 830eaf2f6e360bf428bd57f4ca1780de, type: 2} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4102610720279262, guid: 830eaf2f6e360bf428bd57f4ca1780de, type: 2} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4102610720279262, guid: 830eaf2f6e360bf428bd57f4ca1780de, type: 2} + propertyPath: m_LocalRotation.w + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 4102610720279262, guid: 830eaf2f6e360bf428bd57f4ca1780de, type: 2} + propertyPath: m_RootOrder + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 20423056833094536, guid: 830eaf2f6e360bf428bd57f4ca1780de, + type: 2} + propertyPath: m_Enabled + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 100100000, guid: 830eaf2f6e360bf428bd57f4ca1780de, type: 2} + m_IsPrefabParent: 0 --- !u!1 &1123727625 stripped GameObject: m_PrefabParentObject: {fileID: 1649229833953150, guid: 868df6ca073273b46b0d14bf91e88925, @@ -5791,7 +5864,7 @@ Prefab: propertyPath: m_Name value: PressurePlate (1) objectReference: {fileID: 0} - - target: {fileID: 114614349883559164, guid: 868df6ca073273b46b0d14bf91e88925, + - target: {fileID: 114696680226765280, guid: 868df6ca073273b46b0d14bf91e88925, type: 2} propertyPath: target value: @@ -6223,7 +6296,7 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 8 + m_RootOrder: 7 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1479098833 GameObject: @@ -6772,7 +6845,7 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 3 + m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} --- !u!1 &1544164915 GameObject: @@ -8347,48 +8420,6 @@ MeshFilter: m_PrefabInternal: {fileID: 0} m_GameObject: {fileID: 1750368987} m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!1001 &1765468880 -Prefab: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_Modification: - m_TransformParent: {fileID: 0} - m_Modifications: - - target: {fileID: 4102610720279262, guid: 830eaf2f6e360bf428bd57f4ca1780de, type: 2} - propertyPath: m_LocalPosition.x - value: -20.9 - objectReference: {fileID: 0} - - target: {fileID: 4102610720279262, guid: 830eaf2f6e360bf428bd57f4ca1780de, type: 2} - propertyPath: m_LocalPosition.y - value: 53.6 - objectReference: {fileID: 0} - - target: {fileID: 4102610720279262, guid: 830eaf2f6e360bf428bd57f4ca1780de, type: 2} - propertyPath: m_LocalPosition.z - value: -10.9 - objectReference: {fileID: 0} - - target: {fileID: 4102610720279262, guid: 830eaf2f6e360bf428bd57f4ca1780de, type: 2} - propertyPath: m_LocalRotation.x - value: 0.7071068 - objectReference: {fileID: 0} - - target: {fileID: 4102610720279262, guid: 830eaf2f6e360bf428bd57f4ca1780de, type: 2} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4102610720279262, guid: 830eaf2f6e360bf428bd57f4ca1780de, type: 2} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4102610720279262, guid: 830eaf2f6e360bf428bd57f4ca1780de, type: 2} - propertyPath: m_LocalRotation.w - value: 0.7071068 - objectReference: {fileID: 0} - - target: {fileID: 4102610720279262, guid: 830eaf2f6e360bf428bd57f4ca1780de, type: 2} - propertyPath: m_RootOrder - value: 2 - objectReference: {fileID: 0} - m_RemovedComponents: [] - m_ParentPrefab: {fileID: 100100000, guid: 830eaf2f6e360bf428bd57f4ca1780de, type: 2} - m_IsPrefabParent: 0 --- !u!1 &1783550391 GameObject: m_ObjectHideFlags: 0 @@ -9099,11 +9130,6 @@ Transform: m_Father: {fileID: 1946650929} m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0} ---- !u!20 &1939261668 stripped -Camera: - m_PrefabParentObject: {fileID: 20423056833094536, guid: 830eaf2f6e360bf428bd57f4ca1780de, - type: 2} - m_PrefabInternal: {fileID: 1765468880} --- !u!1 &1946650928 GameObject: m_ObjectHideFlags: 0 @@ -9139,7 +9165,7 @@ Transform: - {fileID: 16410244} - {fileID: 73675885} m_Father: {fileID: 0} - m_RootOrder: 7 + m_RootOrder: 6 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1947853498 GameObject: diff --git a/Assets/Scripts/PrototypeDemo/PressurePlate.cs b/Assets/Scripts/PrototypeDemo/PressurePlate.cs index 2a757e0..05ee90f 100644 --- a/Assets/Scripts/PrototypeDemo/PressurePlate.cs +++ b/Assets/Scripts/PrototypeDemo/PressurePlate.cs @@ -4,26 +4,47 @@ public class PressurePlate : MonoBehaviour { - public GameObject mesh; public Material active; public Material inactive; public GameObject target; + private bool m_IsActive; void Start() { - mesh.GetComponent().material = inactive; + gameObject.GetComponent().material = inactive; + m_IsActive = false; + } + + public void forceExit() + { + if (m_IsActive) + { + m_IsActive = false; + target.GetComponent().DecCount(); + gameObject.GetComponent().material = inactive; + } } private void OnTriggerEnter(Collider other) { - target.GetComponent().IncCount(); - mesh.GetComponent().material = active; + if (!m_IsActive && (other.tag == "Player" || other.tag == "Clone") ) + { + m_IsActive = true; + target.GetComponent().IncCount(); + gameObject.GetComponent().material = active; + } + } private void OnTriggerExit(Collider other) { - target.GetComponent().DecCount(); - mesh.GetComponent().material = inactive; + if (m_IsActive && (other.tag == "Player" || other.tag == "Clone") ) + { + m_IsActive = false; + target.GetComponent().DecCount(); + gameObject.GetComponent().material = inactive; + } + } } diff --git a/ProjectSettings/TagManager.asset b/ProjectSettings/TagManager.asset index 5e450a3..9543f9f 100644 --- a/ProjectSettings/TagManager.asset +++ b/ProjectSettings/TagManager.asset @@ -26,6 +26,7 @@ TagManager: - TimeLine - CanvasGroundCharacter - PlayerTimeLine + - PressurePlateCollider layers: - Default - TransparentFX @@ -51,7 +52,7 @@ TagManager: - Door DELETEME - Puppy AI - OSPointer - - + - PressurePlateCollider - - -