diff --git a/Assets/# Prototype/Models/Old Sentinel/sentinel.fbx.meta b/Assets/# Prototype/Models/Old Sentinel/sentinel.fbx.meta index 389df34..8ae2d81 100644 --- a/Assets/# Prototype/Models/Old Sentinel/sentinel.fbx.meta +++ b/Assets/# Prototype/Models/Old Sentinel/sentinel.fbx.meta @@ -118,7 +118,7 @@ ModelImporter: maskSource: {instanceID: 0} additiveReferencePoseFrame: 0 - serializedVersion: 16 - name: Dash + name: Dash Impulse takeName: Armature|Main internalID: 3938472908730161291 firstFrame: 158 @@ -147,7 +147,7 @@ ModelImporter: maskSource: {instanceID: 0} additiveReferencePoseFrame: 0 - serializedVersion: 16 - name: Dash Window + name: Dash Recovery takeName: Armature|Main internalID: 9206814923105168154 firstFrame: 159 @@ -176,7 +176,7 @@ ModelImporter: maskSource: {instanceID: 0} additiveReferencePoseFrame: 0 - serializedVersion: 16 - name: Dash Breaking + name: Dash Landing takeName: Armature|Main internalID: 44099723154497190 firstFrame: 171 @@ -234,7 +234,7 @@ ModelImporter: maskSource: {instanceID: 0} additiveReferencePoseFrame: 0 - serializedVersion: 16 - name: FallLanding + name: Fall Landing takeName: Armature|Main internalID: 7716892539185763080 firstFrame: 165 diff --git a/Assets/Resources/Services/Player/Sentinel/Cadence Profiles.meta b/Assets/Resources/Services/Player/Sentinel/Cadence Profiles.meta new file mode 100644 index 0000000..739b5f3 --- /dev/null +++ b/Assets/Resources/Services/Player/Sentinel/Cadence Profiles.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 60e9c0806878144959bcc23c977fcdb2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Services/Player/Sentinel/Cadence Profiles/Dash - Cadence Profile.asset b/Assets/Resources/Services/Player/Sentinel/Cadence Profiles/Dash - Cadence Profile.asset new file mode 100644 index 0000000..aa97297 --- /dev/null +++ b/Assets/Resources/Services/Player/Sentinel/Cadence Profiles/Dash - Cadence Profile.asset @@ -0,0 +1,24 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8f4d583fd594418e8ecea0731be75f23, type: 3} + m_Name: Dash - Cadence Profile + m_EditorClassIdentifier: Assembly-CSharp::Intrepid.Gameplay.Entities.Player.Sentinel.Cadence.CadenceProfile + totalTimeMS: 400 + strainedEndP: 0.25 + alignedEndP: 0.65 + resonantEndP: 1 + strainedSettlement: 1 + alignedSettlement: 0.5 + resonantSettlement: 0 + lateSettlement: 1 + maxCoreCost: 8 + resonantRecovery: 5 diff --git a/Assets/Resources/Services/Player/Sentinel/Cadence Profiles/Dash - Cadence Profile.asset.meta b/Assets/Resources/Services/Player/Sentinel/Cadence Profiles/Dash - Cadence Profile.asset.meta new file mode 100644 index 0000000..f958fa5 --- /dev/null +++ b/Assets/Resources/Services/Player/Sentinel/Cadence Profiles/Dash - Cadence Profile.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d78cbdd6d5253439f830d91ccedc2132 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Services/Player/Sentinel/Core Stability Service.asset b/Assets/Resources/Services/Player/Sentinel/Core Stability Service.asset new file mode 100644 index 0000000..c9b44b6 --- /dev/null +++ b/Assets/Resources/Services/Player/Sentinel/Core Stability Service.asset @@ -0,0 +1,19 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8cb4003a571646f28d99cec70813327d, type: 3} + m_Name: Core Stability Service + m_EditorClassIdentifier: Assembly-CSharp::Intrepid.Gameplay.Entities.Player.Sentinel.Cadence.CoreStabilityService + maxStability: 100 + unstableThresholdP: 0.7 + criticalThresholdP: 0.35 + collapsedRecoveryStability: 25 + naturalRecoveryPerSecond: 10 diff --git a/Assets/Resources/Services/Player/Sentinel/Core Stability Service.asset.meta b/Assets/Resources/Services/Player/Sentinel/Core Stability Service.asset.meta new file mode 100644 index 0000000..a810bde --- /dev/null +++ b/Assets/Resources/Services/Player/Sentinel/Core Stability Service.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7023b8d166c954e5a8b93090dc373803 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Services/Player/Sentinel/Sentinel Controls.asset b/Assets/Resources/Services/Player/Sentinel/Sentinel Controls.asset new file mode 100644 index 0000000..6fbf9ee --- /dev/null +++ b/Assets/Resources/Services/Player/Sentinel/Sentinel Controls.asset @@ -0,0 +1,18 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c03b6f34733d48c18d0373cc1ca3d338, type: 3} + m_Name: Sentinel Controls + m_EditorClassIdentifier: Assembly-CSharp::Intrepid.Gameplay.Entities.Player.Sentinel.SentinelControls + dashBreakingThreshold: 3 + cadenceConnectedThreshold: 3 + cadenceConnectedCounter: 0 + dashCounter: 0 diff --git a/Assets/Resources/Services/Player/Sentinel/Sentinel Controls.asset.meta b/Assets/Resources/Services/Player/Sentinel/Sentinel Controls.asset.meta new file mode 100644 index 0000000..97c6599 --- /dev/null +++ b/Assets/Resources/Services/Player/Sentinel/Sentinel Controls.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 648f106f61b2f40f6b83c7e3d14a1a2f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Services/Player/Sentinel/Sentinel Input Resolver.asset b/Assets/Resources/Services/Player/Sentinel/Sentinel Input Resolver.asset new file mode 100644 index 0000000..1992c44 --- /dev/null +++ b/Assets/Resources/Services/Player/Sentinel/Sentinel Input Resolver.asset @@ -0,0 +1,15 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4042f157f2bd47e3938657e1c2fca5b0, type: 3} + m_Name: Sentinel Input Resolver + m_EditorClassIdentifier: Assembly-CSharp::Intrepid.Gameplay.Entities.Player.Sentinel.Inputs.SentinelInputResolver + inputLifespan: 0.5 diff --git a/Assets/Resources/Services/Player/Sentinel/Sentinel Input Resolver.asset.meta b/Assets/Resources/Services/Player/Sentinel/Sentinel Input Resolver.asset.meta new file mode 100644 index 0000000..7c2dcf2 --- /dev/null +++ b/Assets/Resources/Services/Player/Sentinel/Sentinel Input Resolver.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4115e0e987fe248c998f6106517eb4e1 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Services/Singleton ScriptableObject Manifest.asset b/Assets/Resources/Services/Singleton ScriptableObject Manifest.asset index b273457..51faa7c 100644 --- a/Assets/Resources/Services/Singleton ScriptableObject Manifest.asset +++ b/Assets/Resources/Services/Singleton ScriptableObject Manifest.asset @@ -14,4 +14,6 @@ MonoBehaviour: m_EditorClassIdentifier: Intrepid General Utilities::Intrepid.Utilities.SingletonScriptableObjectManifest singletons: - {fileID: 11400000, guid: 9ea72f9e3cacb4fc495eff7431ec5551, type: 2} + - {fileID: 11400000, guid: 4115e0e987fe248c998f6106517eb4e1, type: 2} - {fileID: 11400000, guid: 84f36528c13ab48d6ae2ae41878f2f9f, type: 2} + - {fileID: 11400000, guid: 7023b8d166c954e5a8b93090dc373803, type: 2} diff --git a/Assets/Scenes/5. Gameplay.unity b/Assets/Scenes/5. Gameplay.unity index c6da3d1..31bce8b 100644 --- a/Assets/Scenes/5. Gameplay.unity +++ b/Assets/Scenes/5. Gameplay.unity @@ -1285,7 +1285,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 + m_IsActive: 1 --- !u!224 &115233785 RectTransform: m_ObjectHideFlags: 0 @@ -1293,7 +1293,7 @@ RectTransform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 115233784} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 @@ -1301,10 +1301,10 @@ RectTransform: - {fileID: 1883532453} m_Father: {fileID: 2090394458} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0.25} - m_AnchorMax: {x: 1, y: 0.75} - m_AnchoredPosition: {x: -4.9999695, y: 0} - m_SizeDelta: {x: -20, y: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &120209649 GameObject: @@ -2400,7 +2400,7 @@ GameObject: - component: {fileID: 295562930} - component: {fileID: 295562929} m_Layer: 0 - m_Name: UpdateManager + m_Name: UpdatableManager m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -2426,12 +2426,12 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 295562926} serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 0} + m_Father: {fileID: 1873677627} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &295562929 MonoBehaviour: @@ -2504,6 +2504,51 @@ MonoBehaviour: id: 70e3e966590a421988fa967b83a3b10c startState: 0 fallToAbyss: {fileID: -4084983065073612718, guid: 208cb7d0ce6444ed7b55f4c4b4e632aa, type: 3} +--- !u!1 &316380407 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 316380409} + - component: {fileID: 316380408} + m_Layer: 3 + m_Name: Cadences + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &316380408 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 316380407} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d17424d8ff134fd89c1bee1bfc94054e, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::Intrepid.Gameplay.Entities.Player.Sentinel.Cadence.Cadences + dashProfile: {fileID: 11400000, guid: d78cbdd6d5253439f830d91ccedc2132, type: 2} +--- !u!4 &316380409 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 316380407} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1179841130} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &320298438 GameObject: m_ObjectHideFlags: 0 @@ -2549,7 +2594,7 @@ GameObject: - component: {fileID: 347886467} - component: {fileID: 347886468} m_Layer: 3 - m_Name: Dash + m_Name: DashImpulse m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -2586,6 +2631,7 @@ MonoBehaviour: startState: 0 dash: {fileID: 3938472908730161291, guid: 208cb7d0ce6444ed7b55f4c4b4e632aa, type: 3} speed: 35 + targetTimeMS: 150 --- !u!1001 &367797782 PrefabInstance: m_ObjectHideFlags: 0 @@ -3226,6 +3272,81 @@ Transform: m_CorrespondingSourceObject: {fileID: 2109134711161568785, guid: 28468bc4d76574c58b20f1a932bdaf62, type: 3} m_PrefabInstance: {fileID: 378727778} m_PrefabAsset: {fileID: 0} +--- !u!1 &381266489 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 381266490} + - component: {fileID: 381266492} + - component: {fileID: 381266491} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &381266490 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 381266489} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 911213776} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 4, y: 4} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &381266491 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 381266489} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image + m_Material: {fileID: 0} + m_Color: {r: 0.33962262, g: 0.33962262, b: 0.33962262, a: 0.5176471} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &381266492 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 381266489} + m_CullTransparentMesh: 1 --- !u!1 &403519922 GameObject: m_ObjectHideFlags: 0 @@ -4050,7 +4171,7 @@ Transform: - {fileID: 1543741157} m_Father: {fileID: 320298439} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &771039398 +--- !u!1 &779582154 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -4058,73 +4179,34 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 771039399} - - component: {fileID: 771039401} - - component: {fileID: 771039400} + - component: {fileID: 779582155} m_Layer: 5 - m_Name: WarmLimit + m_Name: Fill Area m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!224 &771039399 +--- !u!224 &779582155 RectTransform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 771039398} + m_GameObject: {fileID: 779582154} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 911213776} + m_Children: + - {fileID: 931390753} + m_Father: {fileID: 1450430341} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0} - m_AnchorMax: {x: 0.5, y: 1} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 2, y: 0} + m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &771039400 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 771039398} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image - m_Material: {fileID: 0} - m_Color: {r: 1, g: 0.5356454, b: 0.24056602, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 0} - m_Type: 0 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!222 &771039401 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 771039398} - m_CullTransparentMesh: 1 --- !u!1001 &790089625 PrefabInstance: m_ObjectHideFlags: 0 @@ -4894,6 +4976,102 @@ Camera: m_OcclusionCulling: 1 m_StereoConvergence: 10 m_StereoSeparation: 0.022 +--- !u!1 &888435275 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 888435276} + - component: {fileID: 888435277} + m_Layer: 3 + m_Name: DashLanding + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &888435276 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 888435275} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1809909214} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &888435277 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 888435275} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: daca982531174c5e82acb0a9312913b1, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::Intrepid.Gameplay.Entities.Player.Sentinel.StateMachine.States.SentinelStateDashLanding + id: ffc5bf04165844cb8636900b4269b6ca + startState: 0 + dashLanding: {fileID: 44099723154497190, guid: 208cb7d0ce6444ed7b55f4c4b4e632aa, type: 3} + landingTimeMS: 100 +--- !u!1 &894104900 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 894104901} + - component: {fileID: 894104902} + m_Layer: 0 + m_Name: TimeSimulation + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &894104901 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 894104900} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1873677627} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &894104902 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 894104900} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c627436787e94833b34c62a63b81e075, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::Intrepid.Core.TimeControl.TimeSimulation + verySlowMotionScale: 0.25 + slowMotionScale: 0.5 + breathMotionScale: 0.75 + fastMotionScale: 1.25 --- !u!1 &911213775 GameObject: m_ObjectHideFlags: 0 @@ -4923,17 +5101,17 @@ RectTransform: m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 1707217469} - - {fileID: 1922022544} - - {fileID: 771039399} - - {fileID: 988536986} + - {fileID: 381266490} + - {fileID: 1631684936} + - {fileID: 1450430341} - {fileID: 2090394458} + - {fileID: 1604086149} m_Father: {fileID: 1953131095} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 250, y: 50} + m_SizeDelta: {x: 250, y: 15} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &911213777 MonoBehaviour: @@ -4947,9 +5125,12 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 9d1662ebbd194ad3b15996cc3853512d, type: 3} m_Name: m_EditorClassIdentifier: Assembly-CSharp::Intrepid.Gameplay.Entities.Player.Sentinel.Cadence.UI.UICadence - slider: {fileID: 2090394459} - warmLimit: {fileID: 771039399} - optimal: {fileID: 988536986} + controls: {fileID: 11400000, guid: 648f106f61b2f40f6b83c7e3d14a1a2f, type: 2} + inputResolver: {fileID: 11400000, guid: 4115e0e987fe248c998f6106517eb4e1, type: 2} + cadenceTimer: {fileID: 1631684937} + btnElapsedTimes: {fileID: 1604086150} + effective: {fileID: 2090394459} + projection: {fileID: 1450430342} --- !u!43 &929953728 Mesh: m_ObjectHideFlags: 0 @@ -5128,7 +5309,7 @@ Mesh: - serializedVersion: 1 m_IndexStart: 0 m_IndexCount: 0 ---- !u!1 &988536985 +--- !u!1 &931390752 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -5136,57 +5317,57 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 988536986} - - component: {fileID: 988536988} - - component: {fileID: 988536987} + - component: {fileID: 931390753} + - component: {fileID: 931390755} + - component: {fileID: 931390754} m_Layer: 5 - m_Name: Optimal + m_Name: Fill m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!224 &988536986 +--- !u!224 &931390753 RectTransform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 988536985} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_GameObject: {fileID: 931390752} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 911213776} + m_Father: {fileID: 779582155} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0.5} - m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 55, y: 0} - m_SizeDelta: {x: 20, y: 10} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &988536987 +--- !u!114 &931390754 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 988536985} + m_GameObject: {fileID: 931390752} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} m_Name: m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image m_Material: {fileID: 0} - m_Color: {r: 0.61217225, g: 1, b: 0.4292453, a: 1} - m_RaycastTarget: 0 + m_Color: {r: 0.8867924, g: 0.34718758, b: 0.34718758, a: 1} + m_RaycastTarget: 1 m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] m_Sprite: {fileID: 0} - m_Type: 0 + m_Type: 1 m_PreserveAspect: 0 m_FillCenter: 1 m_FillMethod: 4 @@ -5195,13 +5376,13 @@ MonoBehaviour: m_FillOrigin: 0 m_UseSpriteMesh: 0 m_PixelsPerUnitMultiplier: 1 ---- !u!222 &988536988 +--- !u!222 &931390755 CanvasRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 988536985} + m_GameObject: {fileID: 931390752} m_CullTransparentMesh: 1 --- !u!1 &995874253 GameObject: @@ -5218,7 +5399,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!224 &995874254 RectTransform: m_ObjectHideFlags: 0 @@ -11776,8 +11957,10 @@ MonoBehaviour: m_EditorClassIdentifier: Assembly-CSharp::Intrepid.Gameplay.Entities.Sentinel.SentinelBrain subscriptionId: 53c694ecee4d49be8b1852bf3047ed0e rootEntity: {fileID: 1478155985} + inputResolver: {fileID: 11400000, guid: 4115e0e987fe248c998f6106517eb4e1, type: 2} + controls: {fileID: 11400000, guid: 648f106f61b2f40f6b83c7e3d14a1a2f, type: 2} actionBeltManager: {fileID: 144877448} - controls: {fileID: 1271336650} + cadences: {fileID: 316380408} --- !u!4 &1179841130 Transform: m_ObjectHideFlags: 0 @@ -11791,8 +11974,8 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 1271336651} - {fileID: 144877447} + - {fileID: 316380409} - {fileID: 1809909214} m_Father: {fileID: 2054429927} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -12449,56 +12632,6 @@ MonoBehaviour: walk: {fileID: 8349542763059015795, guid: 208cb7d0ce6444ed7b55f4c4b4e632aa, type: 3} speed: 5 animationSpeed: 2 ---- !u!1 &1271336649 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1271336651} - - component: {fileID: 1271336650} - m_Layer: 3 - m_Name: Controls - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &1271336650 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1271336649} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: c03b6f34733d48c18d0373cc1ca3d338, type: 3} - m_Name: - m_EditorClassIdentifier: Assembly-CSharp::Intrepid.Gameplay.Entities.Sentinel.SentinelControls - dashContext: - warmTimeMS: 100 - activationTimeMS: 200 - optimalWindowMS: {x: 225, y: 275} - dashBreakingThreshold: 2 - dashCounter: 0 ---- !u!4 &1271336651 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1271336649} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1179841130} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1352264217 GameObject: m_ObjectHideFlags: 0 @@ -21543,6 +21676,171 @@ MonoBehaviour: KnockoutTimeMultiplier: 0.1 knockdownTime: 0.1 recoverTime: 0.5 +--- !u!1 &1450430340 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1450430341} + - component: {fileID: 1450430342} + m_Layer: 5 + m_Name: Projection + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1450430341 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1450430340} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1454007373} + - {fileID: 779582155} + - {fileID: 1994313958} + m_Father: {fileID: 911213776} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1450430342 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1450430340} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 67db9e8f0e2ae9c40bc1e2b64352a6b4, type: 3} + m_Name: + m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Slider + m_Navigation: + m_Mode: 0 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 0 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 0 + m_TargetGraphic: {fileID: 1758596856} + m_FillRect: {fileID: 931390753} + m_HandleRect: {fileID: 1758596855} + m_Direction: 0 + m_MinValue: 0 + m_MaxValue: 1 + m_WholeNumbers: 0 + m_Value: 0.649 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!1 &1454007372 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1454007373} + - component: {fileID: 1454007375} + - component: {fileID: 1454007374} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &1454007373 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1454007372} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1450430341} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.25} + m_AnchorMax: {x: 1, y: 0.75} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1454007374 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1454007372} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1454007375 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1454007372} + m_CullTransparentMesh: 1 --- !u!1 &1478155983 GameObject: m_ObjectHideFlags: 0 @@ -22147,6 +22445,143 @@ Transform: m_CorrespondingSourceObject: {fileID: 2109134711161568785, guid: 28468bc4d76574c58b20f1a932bdaf62, type: 3} m_PrefabInstance: {fileID: 289392177} m_PrefabAsset: {fileID: 0} +--- !u!1 &1604086148 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1604086149} + - component: {fileID: 1604086151} + - component: {fileID: 1604086150} + m_Layer: 5 + m_Name: Text (TMP) (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1604086149 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1604086148} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 911213776} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 25, y: -30.460148} + m_SizeDelta: {x: 200, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1604086150 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1604086148} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.TextMeshPro::TMPro.TextMeshProUGUI + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: New Text + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 25 + m_fontSizeBase: 25 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 4 + m_VerticalAlignment: 256 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_characterHorizontalScale: 1 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_TextWrappingMode: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 0 + m_ActiveFontFeatures: 6e72656b + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_EmojiFallbackSupport: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!222 &1604086151 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1604086148} + m_CullTransparentMesh: 1 --- !u!224 &1612927360 stripped RectTransform: m_CorrespondingSourceObject: {fileID: 3136443921424808915, guid: 8ec48b099c8274b8db9460675cf5a6b6, type: 3} @@ -22184,6 +22619,143 @@ Transform: - {fileID: 810748573} m_Father: {fileID: 320298439} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1631684935 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1631684936} + - component: {fileID: 1631684938} + - component: {fileID: 1631684937} + m_Layer: 5 + m_Name: Text (TMP) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1631684936 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1631684935} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 911213776} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 25, y: 10} + m_SizeDelta: {x: 200, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1631684937 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1631684935} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} + m_Name: + m_EditorClassIdentifier: Unity.TextMeshPro::TMPro.TextMeshProUGUI + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: New Text + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 25 + m_fontSizeBase: 25 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 4 + m_VerticalAlignment: 256 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_characterHorizontalScale: 1 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_TextWrappingMode: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 0 + m_ActiveFontFeatures: 6e72656b + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_EmojiFallbackSupport: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!222 &1631684938 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1631684935} + m_CullTransparentMesh: 1 --- !u!1001 &1663952117 PrefabInstance: m_ObjectHideFlags: 0 @@ -22245,81 +22817,6 @@ PrefabInstance: m_AddedGameObjects: [] m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 774b83ee4bf84c4c9b531c2a6350b8a5, type: 3} ---- !u!1 &1707217468 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1707217469} - - component: {fileID: 1707217471} - - component: {fileID: 1707217470} - m_Layer: 5 - m_Name: Background - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1707217469 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1707217468} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 911213776} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1707217470 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1707217468} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image - m_Material: {fileID: 0} - m_Color: {r: 0.26415092, g: 0.26415092, b: 0.26415092, a: 0.48235294} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 0} - m_Type: 0 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!222 &1707217471 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1707217468} - m_CullTransparentMesh: 1 --- !u!1 &1710245336 GameObject: m_ObjectHideFlags: 0 @@ -22530,6 +23027,81 @@ Mesh: - serializedVersion: 1 m_IndexStart: 0 m_IndexCount: 0 +--- !u!1 &1758596854 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1758596855} + - component: {fileID: 1758596857} + - component: {fileID: 1758596856} + m_Layer: 5 + m_Name: Handle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1758596855 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1758596854} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1994313958} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 10, y: -10} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1758596856 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1758596854} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image + m_Material: {fileID: 0} + m_Color: {r: 1, g: 0.50319386, b: 0, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1758596857 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1758596854} + m_CullTransparentMesh: 1 --- !u!1 &1761661291 GameObject: m_ObjectHideFlags: 0 @@ -23149,6 +23721,7 @@ Transform: - {fileID: 1869388370} - {fileID: 347886467} - {fileID: 2103483601} + - {fileID: 888435276} - {fileID: 120209650} - {fileID: 1405163854} - {fileID: 839976507} @@ -23219,6 +23792,39 @@ MonoBehaviour: run: {fileID: -8499704790666796489, guid: 208cb7d0ce6444ed7b55f4c4b4e632aa, type: 3} speed: 10 animationSpeed: 3 +--- !u!1 &1873677626 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1873677627} + m_Layer: 0 + m_Name: SceneManagers + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1873677627 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1873677626} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 295562928} + - {fileID: 894104901} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1883532452 GameObject: m_ObjectHideFlags: 0 @@ -23254,7 +23860,7 @@ RectTransform: m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 10, y: 0} + m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &1883532454 MonoBehaviour: @@ -23269,14 +23875,14 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Color: {r: 1, g: 0.98470926, b: 0, a: 1} m_RaycastTarget: 1 m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} m_Maskable: 1 m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Sprite: {fileID: 0} m_Type: 1 m_PreserveAspect: 0 m_FillCenter: 1 @@ -23294,81 +23900,6 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1883532452} m_CullTransparentMesh: 1 ---- !u!1 &1922022543 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1922022544} - - component: {fileID: 1922022546} - - component: {fileID: 1922022545} - m_Layer: 5 - m_Name: Meter - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1922022544 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1922022543} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 911213776} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1922022545 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1922022543} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 0 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 21300000, guid: ebee64db07310481b99e4700a70c9bd5, type: 3} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!222 &1922022546 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1922022543} - m_CullTransparentMesh: 1 --- !u!1 &1931952656 GameObject: m_ObjectHideFlags: 0 @@ -24420,6 +24951,42 @@ Transform: m_CorrespondingSourceObject: {fileID: 7939123536182165016, guid: a3d0064b09c33436da55429c472fc6bd, type: 3} m_PrefabInstance: {fileID: 1991588599} m_PrefabAsset: {fileID: 0} +--- !u!1 &1994313957 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1994313958} + m_Layer: 5 + m_Name: Handle Slide Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &1994313958 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1994313957} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1758596855} + m_Father: {fileID: 1450430341} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -10.000002, y: 0} + m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &2005349877 GameObject: m_ObjectHideFlags: 0 @@ -24791,7 +25358,7 @@ GameObject: - component: {fileID: 2090394458} - component: {fileID: 2090394459} m_Layer: 5 - m_Name: Slider + m_Name: Effective m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -24814,10 +25381,10 @@ RectTransform: - {fileID: 995874254} m_Father: {fileID: 911213776} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0.5} - m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 250, y: 50} + m_SizeDelta: {x: 0, y: -10} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &2090394459 MonoBehaviour: @@ -24866,7 +25433,7 @@ MonoBehaviour: m_MinValue: 0 m_MaxValue: 1 m_WholeNumbers: 0 - m_Value: 0 + m_Value: 0.346 m_OnValueChanged: m_PersistentCalls: m_Calls: [] @@ -24917,7 +25484,7 @@ GameObject: - component: {fileID: 2103483601} - component: {fileID: 2103483602} m_Layer: 3 - m_Name: DashWindow + m_Name: DashRecovery m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -24952,9 +25519,43 @@ MonoBehaviour: m_EditorClassIdentifier: Assembly-CSharp::Intrepid.Gameplay.Entities.Sentinel.StateMachine.States.SentinelStateDashLanding id: 0c17966dcd3f424a929486027fa54324 startState: 0 - dashWindow: {fileID: 9206814923105168154, guid: 208cb7d0ce6444ed7b55f4c4b4e632aa, type: 3} + dashRecovery: {fileID: 9206814923105168154, guid: 208cb7d0ce6444ed7b55f4c4b4e632aa, type: 3} speed: 10 dashMaxAngleFromForward: 60 + targetTimeMS: 200 + speedCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + - serializedVersion: 3 + time: 0.26368803 + value: 0.42068905 + inSlope: -1.740221 + outSlope: -1.740221 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.04142364 + - serializedVersion: 3 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 --- !u!1001 &1650485460207955909 PrefabInstance: m_ObjectHideFlags: 0 @@ -26232,6 +26833,6 @@ SceneRoots: m_Roots: - {fileID: 1663952117} - {fileID: 1761661293} - - {fileID: 295562928} + - {fileID: 1873677627} - {fileID: 559238034} - {fileID: 1943926653} diff --git a/Assets/Scripts/Intrepid/Core/Entities/EntityStateMachine.cs b/Assets/Scripts/Intrepid/Core/Entities/EntityStateMachine.cs index b13087f..899599a 100644 --- a/Assets/Scripts/Intrepid/Core/Entities/EntityStateMachine.cs +++ b/Assets/Scripts/Intrepid/Core/Entities/EntityStateMachine.cs @@ -78,7 +78,7 @@ namespace Intrepid.Core.Entities return StateMachine.ChangeState(state, parameters); } - private void Update() + public void UpdateStateMachine() { CurrentState = StateMachine.GetCurrentState().GetStateKey(); } diff --git a/Assets/Scripts/Intrepid/Core/TimeControl.meta b/Assets/Scripts/Intrepid/Core/TimeControl.meta new file mode 100644 index 0000000..ca7dd89 --- /dev/null +++ b/Assets/Scripts/Intrepid/Core/TimeControl.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: cfc7dee444ad4606b32b1b35c4b276a5 +timeCreated: 1781160724 \ No newline at end of file diff --git a/Assets/Scripts/Intrepid/Core/TimeControl/TimeSimulation.cs b/Assets/Scripts/Intrepid/Core/TimeControl/TimeSimulation.cs new file mode 100644 index 0000000..47041b0 --- /dev/null +++ b/Assets/Scripts/Intrepid/Core/TimeControl/TimeSimulation.cs @@ -0,0 +1,143 @@ +using Intrepid.Utilities; +using UnityEngine; + +namespace Intrepid.Core.TimeControl +{ + internal enum TargetTimeScale + { + NONE, + VERY_SLOW_MOTION, + SLOW_MOTION, + BREATH_MOTION, + NORMAL, + FAST_MOTION, + } + + [DefaultExecutionOrder(GonConstants.ExecutionOrder.TimeSimulation)] + public class TimeSimulation : SingletonMonoBehaviour + { + [GroupConfigurations, SerializeField, Range(0f, 1f)] private float verySlowMotionScale = 0.25f; + [GroupConfigurations, SerializeField, Range(0f, 1f)] private float slowMotionScale = 0.5f; + [GroupConfigurations, SerializeField, Range(0f, 1f)] private float breathMotionScale = 0.75f; + [GroupConfigurations, SerializeField, Range(1f, 2f)] private float fastMotionScale = 1.25f; + + public float UnscaledElapsedTime { get; private set; } + public float ScaledElapsedTime { get; private set; } + + private TargetTimeScale _currentTargetTimeScale = TargetTimeScale.NONE; + private TargetTimeScale _targetTimeScale = TargetTimeScale.NONE; + private float _blendStartedAt; + private float _blendDuration; + private float _blendStartScale; + private float _blendTargetScale; + + private void Awake() + { + SingletonInstantiation(false, s => + { + s.ResetSimulation(); + }); + } + + public void ResetSimulation() + { + Time.timeScale = 1f; + + UnscaledElapsedTime = 0f; + ScaledElapsedTime = 0f; + + _currentTargetTimeScale = TargetTimeScale.NORMAL; + _targetTimeScale = TargetTimeScale.NONE; + + _blendStartedAt = 0f; + _blendDuration = 0f; + _blendStartScale = 1f; + _blendTargetScale = 1f; + } + + private void Update() + { + UpdateTimeScaleBlend(); + + UnscaledElapsedTime += Time.unscaledDeltaTime; + ScaledElapsedTime += Time.deltaTime; + } + + private void UpdateTimeScaleBlend() + { + if (_targetTimeScale == TargetTimeScale.NONE) + { + return; + } + + if (_blendDuration <= 0f) + { + Time.timeScale = _blendTargetScale; + _currentTargetTimeScale = _targetTimeScale; + _targetTimeScale = TargetTimeScale.NONE; + return; + } + + var elapsed = UnscaledElapsedTime - _blendStartedAt; + var t = Mathf.Clamp01(elapsed / _blendDuration); + Time.timeScale = Mathf.Lerp(_blendStartScale, _blendTargetScale, t); + + if (t >= 1f) + { + Time.timeScale = _blendTargetScale; + _currentTargetTimeScale = _targetTimeScale; + _targetTimeScale = TargetTimeScale.NONE; + } + } + + public void AsBreathMotion(float blendTimeInSeconds = 0f) + { + BlendTo(TargetTimeScale.BREATH_MOTION, breathMotionScale, blendTimeInSeconds); + } + + public void AsVerySlowMotion(float blendTimeInSeconds = 0f) + { + BlendTo(TargetTimeScale.VERY_SLOW_MOTION, verySlowMotionScale, blendTimeInSeconds); + } + + public void AsSlowMotion(float blendTimeInSeconds = 0f) + { + BlendTo(TargetTimeScale.SLOW_MOTION, slowMotionScale, blendTimeInSeconds); + } + + public void AsFastMotion(float blendTimeInSeconds = 0f) + { + BlendTo(TargetTimeScale.FAST_MOTION, fastMotionScale, blendTimeInSeconds); + } + + public void AsNormalMotion(float blendTimeInSeconds = 0f) + { + BlendTo(TargetTimeScale.NORMAL, 1f, blendTimeInSeconds); + } + + private void BlendTo( + TargetTimeScale target, + float targetScale, + float blendTimeInSeconds) + { + if (_currentTargetTimeScale == target) + { + return; + } + + if (blendTimeInSeconds <= 0f) + { + Time.timeScale = targetScale; + return; + } + + _targetTimeScale = target; + + _blendStartedAt = UnscaledElapsedTime; + _blendDuration = Mathf.Max(0f, blendTimeInSeconds); + + _blendStartScale = Time.timeScale; + _blendTargetScale = Mathf.Max(0f, targetScale); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Intrepid/Core/TimeControl/TimeSimulation.cs.meta b/Assets/Scripts/Intrepid/Core/TimeControl/TimeSimulation.cs.meta new file mode 100644 index 0000000..8c48a08 --- /dev/null +++ b/Assets/Scripts/Intrepid/Core/TimeControl/TimeSimulation.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: c627436787e94833b34c62a63b81e075 +timeCreated: 1781160746 \ No newline at end of file diff --git a/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Cadence/CadenceBand.cs b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Cadence/CadenceBand.cs new file mode 100644 index 0000000..1b43454 --- /dev/null +++ b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Cadence/CadenceBand.cs @@ -0,0 +1,11 @@ +namespace Intrepid.Gameplay.Entities.Player.Sentinel.Cadence +{ + public enum CadenceBand + { + None, + Strained, + Aligned, + Resonant, + Late + } +} \ No newline at end of file diff --git a/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Cadence/CadenceBand.cs.meta b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Cadence/CadenceBand.cs.meta new file mode 100644 index 0000000..818c5d6 --- /dev/null +++ b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Cadence/CadenceBand.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: ca7e3fbd71414fb58db003ab08548dd5 +timeCreated: 1781091177 \ No newline at end of file diff --git a/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Cadence/CadenceContext.cs b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Cadence/CadenceContext.cs deleted file mode 100644 index 4fb4572..0000000 --- a/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Cadence/CadenceContext.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System; -using Sirenix.OdinInspector; -using UnityEngine; - -namespace Intrepid.Gameplay.Entities.Player.Sentinel.Cadence -{ - [Serializable] - public class CadenceContext - { - [SerializeField, Range(0, 5000)] private float warmTimeMS; - [SerializeField, Range(0, 5000)] private float activationTimeMS; - [MinMaxSlider("warmTimeMS", "TotalTimeMS", true), SerializeField] private Vector2 optimalWindowMS; - - public float OptimalMinTimeMS => optimalWindowMS.x; - public float OptimalMaxTimeMS => optimalWindowMS.y; - public float TotalTimeMS => warmTimeMS + activationTimeMS; - - public float OptimalMinTime => OptimalMinTimeMS * 0.001f; - public float OptimalMaxTime => OptimalMaxTimeMS * 0.001f; - public float WarmTime => warmTimeMS * 0.001f; - public float ActivationTime => activationTimeMS * 0.001f; - public float TotalTime => (warmTimeMS + activationTimeMS) * 0.001f; - public float OptimalTime => (OptimalMinTime + OptimalMaxTime) * 0.5f; - } -} \ No newline at end of file diff --git a/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Cadence/CadenceContext.cs.meta b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Cadence/CadenceContext.cs.meta deleted file mode 100644 index 8916ab2..0000000 --- a/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Cadence/CadenceContext.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: df1d7ef780ec4251bc0c7101c986eeca -timeCreated: 1781075513 \ No newline at end of file diff --git a/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Cadence/CadenceEvaluation.cs b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Cadence/CadenceEvaluation.cs new file mode 100644 index 0000000..1000fbb --- /dev/null +++ b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Cadence/CadenceEvaluation.cs @@ -0,0 +1,27 @@ +namespace Intrepid.Gameplay.Entities.Player.Sentinel.Cadence +{ + public readonly struct CadenceEvaluation + { + public static CadenceEvaluation None = new(0f, 0f, CadenceBand.None, 0f, 0f); + + public float T { get; } + public float ElapsedAt { get; } + public CadenceBand Band { get; } + public float SettlementFactor { get; } + public float Recovery { get; } + + public CadenceEvaluation( + float t, + float elapsedAt, + CadenceBand band, + float settlementFactor, + float recovery) + { + T = t; + ElapsedAt = elapsedAt; + Band = band; + SettlementFactor = settlementFactor; + Recovery = recovery; + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Cadence/CadenceEvaluation.cs.meta b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Cadence/CadenceEvaluation.cs.meta new file mode 100644 index 0000000..0ebe8f4 --- /dev/null +++ b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Cadence/CadenceEvaluation.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: aa860d1818f7460698edb395014cb9ae +timeCreated: 1781091290 \ No newline at end of file diff --git a/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Cadence/CadenceProfile.cs b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Cadence/CadenceProfile.cs new file mode 100644 index 0000000..02c8655 --- /dev/null +++ b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Cadence/CadenceProfile.cs @@ -0,0 +1,132 @@ +using Intrepid.Utilities; +using Sirenix.OdinInspector; +using UnityEngine; + +namespace Intrepid.Gameplay.Entities.Player.Sentinel.Cadence +{ + [CreateAssetMenu(fileName = "Cadence Profile", menuName = "GON/Services/Cadence/Cadence Profile")] + public sealed class CadenceProfile : ScriptableObject + { + [SerializeField, Min(1f)] private float totalTimeMS = 370f; + + [GroupConfigurations("Normalized Band End Points"), SerializeField, Range(0f, 1f)] private float strainedEndP = 0.25f; + [GroupConfigurations("Normalized Band End Points"), SerializeField, Range(0f, 1f)] private float alignedEndP = 0.65f; + [GroupConfigurations("Normalized Band End Points"), SerializeField, Range(0f, 1f)] private float resonantEndP = 1f; + + [GroupConfigurations("Settlement"), SerializeField, Range(0f, 1f)] private float strainedSettlement = 1f; + [GroupConfigurations("Settlement"), SerializeField, Range(0f, 1f)] private float alignedSettlement = 0.5f; + [GroupConfigurations("Settlement"), SerializeField, Range(0f, 1f)] private float resonantSettlement; + [GroupConfigurations("Settlement"), SerializeField, Range(0f, 1f)] private float lateSettlement = 1f; + + [GroupConfigurations("Core Stability"), SerializeField, Range(0, 100)] private float maxCoreCost = 8f; + [GroupConfigurations("Core Stability"), SerializeField, Range(0, 100)] private float resonantRecovery = 8f; + + public float TotalTimeMS => totalTimeMS; + + public float TotalTime => TotalTimeMS * 0.001f; + + public float StrainedEndP => strainedEndP; + public float AlignedEndP => alignedEndP; + public float ResonantEndP => resonantEndP; + + // public float StrainedEndTime => TotalTime * strainedEndP; + // public float AlignedEndTime => TotalTime * alignedEndP; + // public float ResonantEndTime => TotalTime * resonantEndP; + // + // public float StrainedEndMS => totalTimeMS * strainedEndP; + // public float AlignedEndMS => totalTimeMS * alignedEndP; + // public float ResonantEndMS => totalTimeMS * resonantEndP; + + public float StrainedSettlement => strainedSettlement; + public float AlignedSettlement => alignedSettlement; + public float ResonantSettlement => resonantSettlement; + public float LateSettlement => lateSettlement; + + public float MaxCoreCost => maxCoreCost; + public float ResonantRecovery => resonantRecovery; + + private void OnValidate() + { + Validate(); + } + + [GroupDebug, Button(ButtonSizes.Medium)] + private void Validate() + { + totalTimeMS = Mathf.Max(1f, totalTimeMS); + + strainedEndP = Mathf.Clamp01(strainedEndP); + alignedEndP = Mathf.Clamp01(alignedEndP); + resonantEndP = Mathf.Clamp01(resonantEndP); + + if (alignedEndP < strainedEndP) + { + alignedEndP = strainedEndP; + } + + if (resonantEndP < alignedEndP) + { + resonantEndP = alignedEndP; + } + + strainedSettlement = Mathf.Clamp01(strainedSettlement); + alignedSettlement = Mathf.Clamp01(alignedSettlement); + resonantSettlement = Mathf.Clamp01(resonantSettlement); + lateSettlement = Mathf.Clamp01(lateSettlement); + + maxCoreCost = Mathf.Max(0f, maxCoreCost); + resonantRecovery = Mathf.Max(0f, resonantRecovery); + } + + public CadenceEvaluation Evaluate(float elapsedTime) + { + if (TotalTime <= 0f) + { + return CadenceEvaluation.None; + } + + var t = Mathf.Clamp01(elapsedTime / TotalTime); + + if (t < StrainedEndP) + { + return new CadenceEvaluation( + t, + elapsedTime, + CadenceBand.Strained, + StrainedSettlement, + 0f + ); + } + + if (t < AlignedEndP) + { + return new CadenceEvaluation( + t, + elapsedTime, + CadenceBand.Aligned, + AlignedSettlement, + 0f + ); + } + + if (t < ResonantEndP) + { + return new CadenceEvaluation( + t, + elapsedTime, + CadenceBand.Resonant, + ResonantSettlement, + ResonantRecovery + ); + } + + return new CadenceEvaluation( + t, + elapsedTime, + CadenceBand.Late, + LateSettlement, + 0f + ); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Cadence/CadenceProfile.cs.meta b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Cadence/CadenceProfile.cs.meta new file mode 100644 index 0000000..c22b828 --- /dev/null +++ b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Cadence/CadenceProfile.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 8f4d583fd594418e8ecea0731be75f23 +timeCreated: 1781091714 \ No newline at end of file diff --git a/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Cadence/CadenceService.cs b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Cadence/CadenceService.cs index 2640985..8247569 100644 --- a/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Cadence/CadenceService.cs +++ b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Cadence/CadenceService.cs @@ -1,61 +1,95 @@ using System; using Intrepid.Utilities; -using Sirenix.OdinInspector; using UnityEngine; namespace Intrepid.Gameplay.Entities.Player.Sentinel.Cadence { [Serializable] - [CreateAssetMenu(fileName = "Cadence Service", menuName = "GON/Services/Cadence Service")] + [CreateAssetMenu(fileName = "Cadence Service", menuName = "GON/Services/Cadence/Cadence Service")] public class CadenceService : SingletonScriptableObject { - [GroupDebug, SerializeField, ReadOnly] private float currentCadence; - private Timer CadenceTimer { get; set; } = new(); + private CadenceProfile CurrentProfile { get; set; } - public float CurrentCadence - { - get => currentCadence; - private set => currentCadence = value; - } + public bool IsCadenceRunning => CadenceTimer.IsRunning; public float CadenceElapsedTime => (float)CadenceTimer.ElapsedTime; - public bool IsCadenceRunning => CadenceTotalTime > 0f && CadenceTimer.IsRunning; - private float CadenceTotalTime => CadenceContext is null ? 0f : 0.001f * CadenceContext.TotalTimeMS; - private CadenceContext CadenceContext { get; set; } - public float WarmCadencePercent => CadenceContext?.WarmTime / CadenceTotalTime ?? 0f; - public float OptimalCadenceMinPercent => CadenceContext?.OptimalMinTime / CadenceTotalTime ?? 0f; - public float OptimalCadenceMaxPercent => CadenceContext?.OptimalMaxTime / CadenceTotalTime ?? 0f; + private float _startedAt; protected override void WhenInstantiate(CadenceService s) { base.WhenInstantiate(s); - StopCadence(); + ResetCadence(); + } + + public void BeginCadence(CadenceProfile profile, float elapsedTime) + { + if (profile is null) + { + ResetCadence(); + return; + } + + _startedAt = elapsedTime; + CurrentProfile = profile; + CadenceTimer.Start(); } - public void StartCadence(CadenceContext ctx) + public CadenceEvaluation EvaluateAndConsumeAt(float inputTimeAt) { - if (ctx is null || ctx.TotalTimeMS <= 0f) return; - CadenceTimer.Start(); - CadenceContext = ctx; + if (!IsCadenceRunning || CurrentProfile is null) + { + return CadenceEvaluation.None; + } + + var elapsedAtInput = Mathf.Max(0f, inputTimeAt - _startedAt); + var evaluation = CurrentProfile.Evaluate(elapsedAtInput); + ResetCadence(); + + return evaluation; } - public void StopCadence() + public CadenceEvaluation EvaluateAndConsume() + { + if (!IsCadenceRunning || CurrentProfile is null) + { + return CadenceEvaluation.None; + } + + var evaluation = CurrentProfile.Evaluate(CadenceElapsedTime); + + ResetCadence(); + + return evaluation; + } + + public bool UpdateCadence(out CadenceEvaluation autoSettlement) + { + autoSettlement = CadenceEvaluation.None; + + if (!IsCadenceRunning || CurrentProfile is null) + { + return false; + } + + CadenceTimer.Update(Timer.ScaledTime); + + if (!CadenceTimer.Check(CurrentProfile.TotalTime)) + { + return false; + } + + autoSettlement = CurrentProfile.Evaluate(CadenceElapsedTime); + + ResetCadence(); + + return true; + } + + public void ResetCadence() { CadenceTimer.Stop(); - CadenceContext = null; - } - - public void UpdateCadence() - { - if (CadenceTimer.IsNotRunning) return; - CadenceTimer.Update(Timer.ScaledTime); - var totalTime = CadenceTotalTime; - CurrentCadence = CadenceElapsedTime / totalTime; - if (CadenceTimer.Check(totalTime)) - { - StopCadence(); - } + CurrentProfile = null; } } } \ No newline at end of file diff --git a/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Cadence/Cadences.cs b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Cadence/Cadences.cs new file mode 100644 index 0000000..22a9ae9 --- /dev/null +++ b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Cadence/Cadences.cs @@ -0,0 +1,12 @@ +using Intrepid.Utilities; +using UnityEngine; + +namespace Intrepid.Gameplay.Entities.Player.Sentinel.Cadence +{ + public class Cadences : MonoBehaviour + { + [GroupInjections, SerializeField] private CadenceProfile dashProfile; + + public CadenceProfile DashProfile => dashProfile; + } +} \ No newline at end of file diff --git a/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Cadence/Cadences.cs.meta b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Cadence/Cadences.cs.meta new file mode 100644 index 0000000..06bb577 --- /dev/null +++ b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Cadence/Cadences.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: d17424d8ff134fd89c1bee1bfc94054e +timeCreated: 1781105637 \ No newline at end of file diff --git a/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Cadence/CoreStabilityService.cs b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Cadence/CoreStabilityService.cs new file mode 100644 index 0000000..25a9d44 --- /dev/null +++ b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Cadence/CoreStabilityService.cs @@ -0,0 +1,208 @@ +using System; +using Intrepid.Utilities; +using UnityEngine; + +namespace Intrepid.Gameplay.Entities.Player.Sentinel.Cadence +{ + [Serializable] + [CreateAssetMenu(fileName = "Core Stability Service", menuName = "GON/Services/Sentinel/Core Stability Service")] + public class CoreStabilityService : SingletonScriptableObject + { + [GroupConfigurations, SerializeField, Min(1f)] private float maxStability = 100f; + [GroupConfigurations, SerializeField, Range(0f, 1f)] private float unstableThresholdP = 0.7f; + [GroupConfigurations, SerializeField, Range(0f, 1f)] private float criticalThresholdP = 0.35f; + [GroupConfigurations, SerializeField, Min(0f)] private float collapsedRecoveryStability = 25f; + [GroupConfigurations, SerializeField, Min(0f)] private float naturalRecoveryPerSecond = 3f; + + public float MaxStability => maxStability; + + public float EffectiveStability { get; private set; } + public float ProjectedStability { get; private set; } + public float EffectiveStabilityP => maxStability <= 0f + ? 0f + : EffectiveStability / maxStability; + public float ProjectedStabilityP => maxStability <= 0f + ? 0f + : ProjectedStability / maxStability; + + private bool _hasProjectedCost; + + public CoreStabilityState State + { + get + { + if (EffectiveStability <= 0f) + { + return CoreStabilityState.Collapsed; + } + + var p = EffectiveStabilityP; + + if (p <= criticalThresholdP) + { + return CoreStabilityState.Critical; + } + + if (p <= unstableThresholdP) + { + return CoreStabilityState.Unstable; + } + + return CoreStabilityState.Stable; + } + } + + public bool IsCollapsed => State == CoreStabilityState.Collapsed; + + protected override void WhenInstantiate(CoreStabilityService s) + { + base.WhenInstantiate(s); + ResetCore(); + } + + public void ResetCore() + { + EffectiveStability = maxStability; + ProjectedStability = maxStability; + + _hasProjectedCost = false; + } + + public void ProjectCost(float maxCost) + { + maxCost = Mathf.Max(0f, maxCost); + + var baseStability = _hasProjectedCost + ? Mathf.Min(EffectiveStability, ProjectedStability) + : EffectiveStability; + + ProjectedStability = Mathf.Clamp( + baseStability - maxCost, + 0f, + maxStability + ); + + _hasProjectedCost = true; + } + + public void Settle(CadenceEvaluation evaluation) + { + var settlementFactor = Mathf.Clamp01(evaluation.SettlementFactor); + var recovery = Mathf.Max(0f, evaluation.Recovery); + + EffectiveStability = Mathf.Lerp( + EffectiveStability, + ProjectedStability, + settlementFactor + ); + + if (recovery > 0f) + { + EffectiveStability = Mathf.Clamp( + EffectiveStability + recovery, + 0f, + maxStability + ); + } + + ProjectedStability = EffectiveStability; + _hasProjectedCost = false; + } + + public void ApplyDamage(float damage) + { + damage = Mathf.Max(0f, damage); + + EffectiveStability = Mathf.Clamp( + EffectiveStability - damage, + 0f, + maxStability + ); + + ProjectedStability = Mathf.Min(ProjectedStability, EffectiveStability); + } + + public void Recover(float amount) + { + amount = Mathf.Max(0f, amount); + + EffectiveStability = Mathf.Clamp( + EffectiveStability + amount, + 0f, + maxStability + ); + + if (!_hasProjectedCost) + { + ProjectedStability = EffectiveStability; + } + } + + public void RecoverFromCollapse() + { + EffectiveStability = Mathf.Clamp( + collapsedRecoveryStability, + 0f, + maxStability + ); + + ProjectedStability = EffectiveStability; + _hasProjectedCost = false; + } + + public void UpdateCore(float deltaTime) + { + if (deltaTime <= 0f) + { + return; + } + + if (IsCollapsed) + { + return; + } + + RecoverNaturally(deltaTime); + + if (!_hasProjectedCost) + { + ProjectedStability = EffectiveStability; + } + } + + private void RecoverNaturally(float deltaTime) + { + if (EffectiveStability >= maxStability) + { + return; + } + + EffectiveStability = Mathf.Clamp( + EffectiveStability + naturalRecoveryPerSecond * deltaTime, + 0f, + maxStability + ); + } + + private void OnValidate() + { + maxStability = Mathf.Max(1f, maxStability); + + unstableThresholdP = Mathf.Clamp01(unstableThresholdP); + criticalThresholdP = Mathf.Clamp01(criticalThresholdP); + + if (criticalThresholdP > unstableThresholdP) + { + criticalThresholdP = unstableThresholdP; + } + + collapsedRecoveryStability = Mathf.Clamp( + collapsedRecoveryStability, + 0f, + maxStability + ); + + naturalRecoveryPerSecond = Mathf.Max(0f, naturalRecoveryPerSecond); + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Cadence/CoreStabilityService.cs.meta b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Cadence/CoreStabilityService.cs.meta new file mode 100644 index 0000000..29282fe --- /dev/null +++ b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Cadence/CoreStabilityService.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 8cb4003a571646f28d99cec70813327d +timeCreated: 1781094387 \ No newline at end of file diff --git a/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Cadence/CoreStabilityState.cs b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Cadence/CoreStabilityState.cs new file mode 100644 index 0000000..81d1c42 --- /dev/null +++ b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Cadence/CoreStabilityState.cs @@ -0,0 +1,10 @@ +namespace Intrepid.Gameplay.Entities.Player.Sentinel.Cadence +{ + public enum CoreStabilityState + { + Stable, + Unstable, + Critical, + Collapsed, + } +} \ No newline at end of file diff --git a/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Cadence/CoreStabilityState.cs.meta b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Cadence/CoreStabilityState.cs.meta new file mode 100644 index 0000000..aa35371 --- /dev/null +++ b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Cadence/CoreStabilityState.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 5dfa2f80ab9246ad96f7721fbd2316ac +timeCreated: 1781094456 \ No newline at end of file diff --git a/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Cadence/UI/UICadence.cs b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Cadence/UI/UICadence.cs index ee65361..367a134 100644 --- a/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Cadence/UI/UICadence.cs +++ b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Cadence/UI/UICadence.cs @@ -1,4 +1,6 @@ +using Intrepid.Gameplay.Entities.Player.Sentinel.Inputs; using Intrepid.Utilities; +using TMPro; using UnityEngine; using UnityEngine.UI; @@ -6,84 +8,21 @@ namespace Intrepid.Gameplay.Entities.Player.Sentinel.Cadence.UI { public class UICadence : MonoBehaviour { - [GroupInjections, SerializeField] private Slider slider; - [GroupInjections, SerializeField] private RectTransform warmLimit; - [GroupInjections, SerializeField] private RectTransform optimal; - - private bool IsActive { get; set; } + [GroupInjections, SerializeField] private SentinelControls controls; + [GroupInjections, SerializeField] private SentinelInputResolver inputResolver; + [GroupInjections, SerializeField] private TextMeshProUGUI cadenceTimer; + [GroupInjections, SerializeField] private TextMeshProUGUI btnElapsedTimes; + [GroupInjections, SerializeField] private Slider effective; + [GroupInjections, SerializeField] private Slider projection; private void Update() { - if (CadenceService.Instance.IsCadenceRunning) - { - if (!IsActive) - { - IsActive = true; - - slider.gameObject.SetActive(true); - warmLimit.gameObject.SetActive(true); - optimal.gameObject.SetActive(true); - - SetHorizontalRange( - optimal, - CadenceService.Instance.OptimalCadenceMinPercent, - CadenceService.Instance.OptimalCadenceMaxPercent - ); - - SetVerticalLine( - warmLimit, - CadenceService.Instance.WarmCadencePercent - ); - } - - slider.value = CadenceService.Instance.CurrentCadence; - return; - } - - IsActive = false; - - slider.value = 0f; - slider.gameObject.SetActive(false); - warmLimit.gameObject.SetActive(false); - optimal.gameObject.SetActive(false); - } - - private static void SetHorizontalRange( - RectTransform rect, - float minPercent, - float maxPercent, - float height = 10f - ) - { - minPercent = Mathf.Clamp01(minPercent); - maxPercent = Mathf.Clamp01(maxPercent); - - if (maxPercent < minPercent) - { - (minPercent, maxPercent) = (maxPercent, minPercent); - } - - rect.anchorMin = new Vector2(minPercent, 0.5f); - rect.anchorMax = new Vector2(maxPercent, 0.5f); - rect.pivot = new Vector2(0.5f, 0.5f); - - rect.offsetMin = new Vector2(0f, -height * 0.5f); - rect.offsetMax = new Vector2(0f, height * 0.5f); - - rect.anchoredPosition = Vector2.zero; - } - - private static void SetVerticalLine(RectTransform rect, float percent) - { - percent = Mathf.Clamp01(percent); - - rect.anchorMin = new Vector2(percent, 0f); - rect.anchorMax = new Vector2(percent, 1f); - - rect.anchoredPosition = Vector2.zero; - - rect.offsetMin = new Vector2(rect.offsetMin.x, 0f); - rect.offsetMax = new Vector2(rect.offsetMax.x, 0f); + cadenceTimer.text = CadenceService.Instance.IsCadenceRunning + ? CadenceService.Instance.CadenceElapsedTime.ToString("F2") + : "--"; + btnElapsedTimes.text = controls.CadenceConnectedCounter.ToString(); + effective.value = CoreStabilityService.Instance.EffectiveStabilityP; + projection.value = CoreStabilityService.Instance.ProjectedStabilityP; } } } \ No newline at end of file diff --git a/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Inputs.meta b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Inputs.meta new file mode 100644 index 0000000..dc0359e --- /dev/null +++ b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Inputs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: a1209b3e567948f5ad282f1f2028f91d +timeCreated: 1781108166 \ No newline at end of file diff --git a/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Inputs/SentinelInputActions.cs b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Inputs/SentinelInputActions.cs new file mode 100644 index 0000000..7a6cf45 --- /dev/null +++ b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Inputs/SentinelInputActions.cs @@ -0,0 +1,36 @@ +using System; +using Intrepid.Integration.Input; +using UnityEngine; + +namespace Intrepid.Gameplay.Entities.Player.Sentinel.Inputs +{ + public class SentinelInputActions : SentinelInputs + { + public Func Dash { get; set; } + + public Func Movement { get; set; } + public Func Interact { get; set; } + public Func DPadLeft { get; set; } + public Func DPadRight { get; set; } + public Func Reset { get; set; } + + public static SentinelInputActions BuildSentinelInputActions() + { + var locking = InputService.Instance.Locking; + var inputActions = InputService.Instance.InputActions.sentinel; + return new SentinelInputActions + { + Movement = () => locking.IsNotLocked + ? inputActions.Movement.ReadValue() + : Vector2.zero, + Interact = () => locking.IsNotLocked && inputActions.Interact.WasPressedThisFrame(), + DPadLeft = () => locking.IsNotLocked && inputActions.DPadLeft.WasPressedThisFrame(), + DPadRight = () => locking.IsNotLocked && inputActions.DPadRight.WasPressedThisFrame(), + Dash = () => locking.IsNotLocked && inputActions.Dash.WasPressedThisFrame(), + + // debug + Reset = () => locking.IsNotLocked && inputActions.Reset.WasPressedThisFrame(), + }; + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Inputs/SentinelInputActions.cs.meta b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Inputs/SentinelInputActions.cs.meta new file mode 100644 index 0000000..2f5c6a1 --- /dev/null +++ b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Inputs/SentinelInputActions.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: d2d27d34559344689042676574451a32 +timeCreated: 1781114588 \ No newline at end of file diff --git a/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Inputs/SentinelInputResolver.cs b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Inputs/SentinelInputResolver.cs new file mode 100644 index 0000000..0a906d0 --- /dev/null +++ b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Inputs/SentinelInputResolver.cs @@ -0,0 +1,92 @@ +using System; +using System.Collections.Generic; +using Intrepid.Utilities; +using UnityEngine; + +namespace Intrepid.Gameplay.Entities.Player.Sentinel.Inputs +{ + internal enum SentinelBufferedActionType + { + None, + Dash, + } + + [Serializable] + [CreateAssetMenu(fileName = "Sentinel Input Resolver", menuName = "GON/Services/Sentinel/Input Resolver")] + public sealed class SentinelInputResolver : SingletonScriptableObject, SentinelInputs + { + [GroupConfigurations, SerializeField, Range(0, 5)] private float inputLifespan = .35f; + + private Dictionary IntentBuffer { get; set; } + private SentinelInputActions InputActions { get; set; } + + protected override void WhenInstantiate(SentinelInputResolver singleton) + { + base.WhenInstantiate(singleton); + IntentBuffer = new Dictionary(); + InputActions = SentinelInputActions.BuildSentinelInputActions(); + } + + public void CaptureAndPrune(float elapsedTime) + { + IntentBuffer.RemoveAll((_, at) => elapsedTime - at > inputLifespan); + if (InputActions.Dash()) + { + IntentBuffer.TryAdd(SentinelBufferedActionType.Dash, elapsedTime); + } + } + + public void Clear() + { + InnerClear(); + } + + public void ClearDash() + { + InnerClear(SentinelBufferedActionType.Dash); + } + + private void InnerClear(SentinelBufferedActionType bufferedActionType = SentinelBufferedActionType.None) + { + if (bufferedActionType == SentinelBufferedActionType.None) + { + IntentBuffer.Clear(); + return; + } + IntentBuffer.Remove(bufferedActionType); + } + + private bool TryPeek(SentinelBufferedActionType bufferedActionType, out float actionTypeTimeAt) + { + if (IntentBuffer.TryGetValue(bufferedActionType, out actionTypeTimeAt)) + { + return true; + } + + actionTypeTimeAt = 0f; + return false; + } + + private bool TryConsume(SentinelBufferedActionType bufferedActionType, out float actionTypeTimeAt) + { + if (!TryPeek(bufferedActionType, out actionTypeTimeAt)) + { + return false; + } + + IntentBuffer.Remove(bufferedActionType); + return true; + } + + // Buffered Input Actions + public bool TryPeekDash(out float dashTimeAt) => TryPeek(SentinelBufferedActionType.Dash, out dashTimeAt); + public bool TryConsumeDash(out float dashTimeAt) => TryConsume(SentinelBufferedActionType.Dash, out dashTimeAt); + + // No Buffered Input Actions + public Func Movement => InputActions.Movement; + public Func Interact => InputActions.Interact; + public Func DPadLeft => InputActions.DPadLeft; + public Func DPadRight => InputActions.DPadRight; + public Func Reset => InputActions.Reset; + } +} \ No newline at end of file diff --git a/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Inputs/SentinelInputResolver.cs.meta b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Inputs/SentinelInputResolver.cs.meta new file mode 100644 index 0000000..9787cf3 --- /dev/null +++ b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Inputs/SentinelInputResolver.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 4042f157f2bd47e3938657e1c2fca5b0 +timeCreated: 1781111024 \ No newline at end of file diff --git a/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Inputs/SentinelInputs.cs b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Inputs/SentinelInputs.cs new file mode 100644 index 0000000..fff3140 --- /dev/null +++ b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Inputs/SentinelInputs.cs @@ -0,0 +1,16 @@ +using System; +using UnityEngine; + +namespace Intrepid.Gameplay.Entities.Player.Sentinel.Inputs +{ + public interface SentinelInputs + { + Func Movement { get; } + Func Interact { get; } + Func DPadLeft { get; } + Func DPadRight { get; } + + // debug + public Func Reset { get; } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/SentinelInputs.cs.meta b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Inputs/SentinelInputs.cs.meta similarity index 100% rename from Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/SentinelInputs.cs.meta rename to Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/Inputs/SentinelInputs.cs.meta diff --git a/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/SentinelBrain.cs b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/SentinelBrain.cs index 1ad157e..be04b00 100644 --- a/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/SentinelBrain.cs +++ b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/SentinelBrain.cs @@ -1,10 +1,12 @@ using System; using Intrepid.Core.Entities; using Intrepid.Core.Entities.Messages; +using Intrepid.Core.TimeControl; +using Intrepid.Diagnostics; using Intrepid.Gameplay.Entities.Player.ActionBelt; using Intrepid.Gameplay.Entities.Player.Sentinel.Cadence; +using Intrepid.Gameplay.Entities.Player.Sentinel.Inputs; using Intrepid.Gameplay.Entities.Player.Sentinel.StateMachine; -using Intrepid.Integration.Input; using Intrepid.Structures; using Intrepid.Utilities; using UnityEngine; @@ -13,20 +15,24 @@ namespace Intrepid.Gameplay.Entities.Player.Sentinel { public class SentinelBrain : EntityBrain { - [GroupInjections, SerializeField] private ActionBeltManager actionBeltManager; + [GroupInjections, SerializeField] private SentinelInputResolver inputResolver; [GroupInjections, SerializeField] private SentinelControls controls; + [GroupInjections, SerializeField] private ActionBeltManager actionBeltManager; + [GroupInjections, SerializeField] private Cadences cadences; + private bool StateFirstFrame { get; set; } protected SentinelStateMachine StateMachine { get; private set; } - + public SentinelEntity Entity => RootEntity as SentinelEntity; - public SentinelInputs Inputs { get; private set; } public SentinelStateType CurrentState => StateMachine.CurrentImplementation.GetStateKey(); - public ActionBeltManager ActionBeltManager => actionBeltManager; + public SentinelInputResolver InputResolver => inputResolver; public SentinelControls Controls => controls; - + public ActionBeltManager ActionBeltManager => actionBeltManager; + public Cadences Cadences => cadences; + public static bool IsCoreStable => !CoreStabilityService.Instance.IsCollapsed; + protected override void InitializeVariables() { - Inputs = InputService.Instance.BuildSentinelInputs(); StateMachine = GetComponentInChildren(); foreach (var sentinelState in GetComponentsInChildren()) { @@ -37,6 +43,7 @@ namespace Intrepid.Gameplay.Entities.Player.Sentinel protected override void OnBootstrap() { StateMachine.StartMachine(); + ResetBrain(); } protected override void Subscriptions() @@ -53,23 +60,59 @@ namespace Intrepid.Gameplay.Entities.Player.Sentinel StateMachine.ChangeState(SentinelStateType.Fall); }); } + + public void ResetBrain() + { + } public override void UpdateFromUpdatable() - { - CadenceService.Instance.UpdateCadence(); + { + StateMachine.UpdateStateMachine(); + InputResolver.CaptureAndPrune(TimeSimulation.Instance.ScaledElapsedTime); + + // that is the right place? + if (Controls.OnCadence) + { + TimeSimulation.Instance.AsBreathMotion(.5f); + } + else + { + TimeSimulation.Instance.AsNormalMotion(.5f); + } + + if (StateFirstFrame) + { + StateMachine.CurrentImplementation.RunOnFirstFrameOnly(); + StateFirstFrame = false; + } StateMachine.CurrentImplementation.RunBeforeUpdate(); StateMachine.CurrentImplementation.RunOnUpdate(); StateMachine.CurrentImplementation.RunAfterUpdate(); + if (CadenceService.Instance.UpdateCadence(out var evaluation)) + { + // DLogger.LogDebug( + // $"CADENCE EXPIRED: {evaluation.Band} " + + // $"t={evaluation.T * 100f}% " + + // $"elapsedAt={evaluation.ElapsedAt * 1000f}ms " + + // $"set={evaluation.SettlementFactor} " + + // $"rec={evaluation.Recovery}" + // ); + Controls.ExpireCadence(); + CoreStabilityService.Instance.Settle(evaluation); + } + + CoreStabilityService.Instance.UpdateCore(Timer.ScaledTime); + // state machine could take this responsibility in the future... - if (Inputs.Reset()) + if (InputResolver.Reset()) { Entity.ResetLastSafeGroundPosition(); StateMachine.ChangeState(SentinelStateType.FallLanding); } } - + public override void LateUpdateFromUpdatable() { StateMachine.CurrentImplementation.RunOnLateUpdate(); @@ -82,7 +125,10 @@ namespace Intrepid.Gameplay.Entities.Player.Sentinel public void ChangeState(SentinelStateType stateType, params Parameter[] ps) { - StateMachine.ChangeState(stateType, ps); + if (StateMachine.ChangeState(stateType, ps)) + { + StateFirstFrame = true; + } } } } \ No newline at end of file diff --git a/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/SentinelControls.cs b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/SentinelControls.cs index 1e39b22..ca75437 100644 --- a/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/SentinelControls.cs +++ b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/SentinelControls.cs @@ -1,22 +1,31 @@ -using Intrepid.Gameplay.Entities.Player.Sentinel.Cadence; +using System; using Intrepid.Utilities; -using Sirenix.OdinInspector; +using Unity.Collections; using UnityEngine; namespace Intrepid.Gameplay.Entities.Player.Sentinel { - public class SentinelControls : MonoBehaviour + [Serializable] + [CreateAssetMenu(fileName = "Sentinel Controls", menuName = "GON/Services/Sentinel/Sentinel Controls")] + public class SentinelControls : ScriptableObject { - [GroupConfigurations("Dash Context"), SerializeField, HideLabel] private CadenceContext dashContext; + [GroupConfigurations, SerializeField, Range(0, 5)] private int dashBreakingThreshold = 3; + [GroupConfigurations, SerializeField, Range(0, 10)] private int cadenceConnectedThreshold = 3; + [GroupDebug, SerializeField, ReadOnly] private int cadenceConnectedCounter; + [GroupDebug, SerializeField, ReadOnly] private int dashCounter; - [GroupConfigurations, SerializeField, Range(0, 3)] private int dashBreakingThreshold = 2; - [GroupDebug, SerializeField] private int dashCounter; - - public CadenceContext DashContext => dashContext; - public int DashCounter => dashCounter; - public bool IsDashing => dashCounter > 0; - + public int CadenceConnectedCounter => cadenceConnectedCounter; + public bool ShouldDashBreak => DashCounter >= dashBreakingThreshold; + public bool OnCadence => CadenceConnectedCounter > cadenceConnectedThreshold; + public bool IsDashing => DashCounter > 0; + + public void Reset() + { + ResetDash(); + ExpireCadence(); + } + public void DashCounterInc() { dashCounter++; @@ -26,10 +35,15 @@ namespace Intrepid.Gameplay.Entities.Player.Sentinel { dashCounter = 0; } - - public bool DashShouldBreak() + + public void CadenceConnectedCounterInc() { - return DashCounter >= dashBreakingThreshold; + cadenceConnectedCounter++; + } + + public void ExpireCadence() + { + cadenceConnectedCounter = 0; } } } \ No newline at end of file diff --git a/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/SentinelEntity.cs b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/SentinelEntity.cs index 551ee80..8514d2c 100644 --- a/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/SentinelEntity.cs +++ b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/SentinelEntity.cs @@ -32,6 +32,7 @@ namespace Intrepid.Gameplay.Entities.Player.Sentinel public override void DeployEntity(Vector2 position) { + Brain.ResetBrain(); RefreshMovementNormal(); } diff --git a/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/SentinelInputs.cs b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/SentinelInputs.cs deleted file mode 100644 index 79f753b..0000000 --- a/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/SentinelInputs.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using UnityEngine; - -namespace Intrepid.Gameplay.Entities.Player.Sentinel -{ - public class SentinelInputs - { - public Func Movement { get; set; } - public Func Interact { get; set; } - public Func DPadLeft { get; set; } - public Func DPadRight { get; set; } - public Func Dash { get; set; } - - // debug - public Func Reset { get; set; } - } -} \ No newline at end of file diff --git a/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/SentinelStateType.cs b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/SentinelStateType.cs index 1878731..8072712 100644 --- a/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/SentinelStateType.cs +++ b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/SentinelStateType.cs @@ -10,9 +10,10 @@ namespace Intrepid.Gameplay.Entities.Player.Sentinel Run = 30, - Dash = 40, - DashWindow = 41, - DashBreaking = 42, + DashImpulse = 40, + DashRecovery = 41, + DashLanding = 42, + DashBreaking = 43, Knockdown = 80, diff --git a/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/StateMachine/SentinelState.cs b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/StateMachine/SentinelState.cs index ba32671..b88aa99 100644 --- a/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/StateMachine/SentinelState.cs +++ b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/StateMachine/SentinelState.cs @@ -1,6 +1,9 @@ using Intrepid.Core.Entities; +using Intrepid.Core.TimeControl; +using Intrepid.Diagnostics; using Intrepid.GameManagers; using Intrepid.Gameplay.Entities.Player.ActionBelt.Events; +using Intrepid.Gameplay.Entities.Player.Sentinel.Cadence; namespace Intrepid.Gameplay.Entities.Player.Sentinel.StateMachine { @@ -15,6 +18,10 @@ namespace Intrepid.Gameplay.Entities.Player.Sentinel.StateMachine { return this; } + + public virtual void RunOnFirstFrameOnly() + { + } public abstract void RunOnUpdate(); @@ -38,7 +45,7 @@ namespace Intrepid.Gameplay.Entities.Player.Sentinel.StateMachine { if (!Brain.ActionBeltManager.IsOperational) return; if (Brain.ActionBeltManager.IsEmpty) return; - if (Brain.Inputs.Interact()) + if (Brain.InputResolver.Interact()) { Proxy.Instance.EventBus.Raise(new ActionBeltTakeActionEvent { @@ -47,8 +54,8 @@ namespace Intrepid.Gameplay.Entities.Player.Sentinel.StateMachine return; } - var left = Brain.Inputs.DPadLeft(); - var right = Brain.Inputs.DPadRight(); + var left = Brain.InputResolver.DPadLeft(); + var right = Brain.InputResolver.DPadRight(); if (left && right) return; if (left) @@ -66,5 +73,51 @@ namespace Intrepid.Gameplay.Entities.Player.Sentinel.StateMachine }); } } + + protected void BeginCadencedActionAt(CadenceProfile profile, float actionTimeAt) + { + LogAndProjectCadence(profile, CadenceService.Instance.EvaluateAndConsumeAt(actionTimeAt)); + } + + protected void BeginCadencedAction(CadenceProfile profile) + { + LogAndProjectCadence(profile, CadenceService.Instance.EvaluateAndConsume()); + } + + private void LogAndProjectCadence(CadenceProfile profile, CadenceEvaluation previousEvaluation) + { + if (previousEvaluation.Band != CadenceBand.None) + { + // DLogger.LogDebug( + // $"CADENCE CONNECTED: {previousEvaluation.Band} " + + // $"t={previousEvaluation.T * 100f}% " + + // $"elapsedAt={previousEvaluation.ElapsedAt * 1000f}ms " + + // $"set={previousEvaluation.SettlementFactor} " + + // $"rec={previousEvaluation.Recovery}" + // ); + + Brain.Controls.CadenceConnectedCounterInc(); + CoreStabilityService.Instance.Settle(previousEvaluation); + } + else + { + Brain.Controls.ExpireCadence(); + } + + CoreStabilityService.Instance.ProjectCost(profile.MaxCoreCost); + CadenceService.Instance.BeginCadence(profile, TimeSimulation.Instance.ScaledElapsedTime); + } + + protected bool TryConsumeDash() + { + if (Brain.InputResolver.TryConsumeDash(out var dashTimeAt)) // dash with no ground: this could be a feature to be unlocked + //if (Brain.Entity.IsGrounded && Brain.InputResolver.TryConsumeDash(out var dashTimeAt)) + { + BeginCadencedActionAt(Brain.Cadences.DashProfile, dashTimeAt); + return true; + } + return false; + } + } } \ No newline at end of file diff --git a/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/StateMachine/States/SentinelStateDash.cs b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/StateMachine/States/SentinelStateDashImpulse.cs similarity index 63% rename from Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/StateMachine/States/SentinelStateDash.cs rename to Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/StateMachine/States/SentinelStateDashImpulse.cs index 13de19a..c910f41 100644 --- a/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/StateMachine/States/SentinelStateDash.cs +++ b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/StateMachine/States/SentinelStateDashImpulse.cs @@ -1,4 +1,3 @@ -using Intrepid.Gameplay.Entities.Player.Sentinel.Cadence; using Intrepid.Gameplay.Messages.Events; using Intrepid.Structures; using Intrepid.Utilities; @@ -6,19 +5,21 @@ using UnityEngine; namespace Intrepid.Gameplay.Entities.Player.Sentinel.StateMachine.States { - public class SentinelStateDash : SentinelState + public class SentinelStateDashImpulse : SentinelState { [GroupConfigurations, SerializeField] private AnimationClip dash; [GroupConfigurations, SerializeField, Range(0, 100)] private float speed = 35; - // [GroupConfigurations, SerializeField, Range(0, 500)] private float targetTimeMS = 100f; + [GroupConfigurations, SerializeField, Range(0, 5000)] private float targetTimeMS = 100f; - public float TargetTime => Brain.Controls.DashContext.WarmTime; - - private Timer Timer { get; } = new(); + public float TargetTime => targetTimeMS * 0.001f; + private Timer Timer { get; } = new(); + + public override bool CanEnterState => SentinelBrain.IsCoreStable; + public override SentinelStateType GetStateKey() { - return SentinelStateType.Dash; + return SentinelStateType.DashImpulse; } protected override void Subscriptions() @@ -34,30 +35,32 @@ namespace Intrepid.Gameplay.Entities.Player.Sentinel.StateMachine.States { Brain.Controls.DashCounterInc(); Brain.Entity.RefreshMovementNormal(); - Brain.Entity.ModelAnimation.CrossFade(dash, 0.01f); - Timer.Start(); - CadenceService.Instance.StartCadence(Brain.Controls.DashContext); + Brain.Entity.ModelAnimation.CrossFade(dash, 0.05f); } protected override void RunOnExit() { Timer.Stop(); } + + public override void RunOnFirstFrameOnly() + { + Timer.Start(); + } public override void RunOnUpdate() { - if (Timer.IsNotRunning) - { - Brain.ChangeState(SentinelStateType.DashWindow); - return; - } Timer.Update(Time.deltaTime); - if (Timer.Check(TargetTime)) + + Brain.Entity.DesiredVelocity = Brain.Entity.Forward * speed; + + if (!Timer.Check(TargetTime)) { - Timer.Stop(); return; } - Brain.Entity.DesiredVelocity = Brain.Entity.Forward * speed; + + Timer.Stop(); + Brain.ChangeState(SentinelStateType.DashRecovery); } } } \ No newline at end of file diff --git a/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/StateMachine/States/SentinelStateDash.cs.meta b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/StateMachine/States/SentinelStateDashImpulse.cs.meta similarity index 100% rename from Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/StateMachine/States/SentinelStateDash.cs.meta rename to Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/StateMachine/States/SentinelStateDashImpulse.cs.meta diff --git a/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/StateMachine/States/SentinelStateDashLanding.cs b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/StateMachine/States/SentinelStateDashLanding.cs new file mode 100644 index 0000000..66f8681 --- /dev/null +++ b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/StateMachine/States/SentinelStateDashLanding.cs @@ -0,0 +1,49 @@ +using Intrepid.Structures; +using Intrepid.Utilities; +using UnityEngine; + +namespace Intrepid.Gameplay.Entities.Player.Sentinel.StateMachine.States +{ + public class SentinelStateDashLanding : SentinelState + { + [GroupConfigurations, SerializeField] private AnimationClip dashLanding; + [GroupConfigurations, SerializeField, Range(0, 500)] private float landingTimeMS = 100f; + + private Timer Timer { get; } = new(); + private float LandingTime => landingTimeMS * 0.001f; + + public override SentinelStateType GetStateKey() + { + return SentinelStateType.DashLanding; + } + + protected override void Subscriptions() + { + } + + protected override void RunOnEnter(ParameterStore parameterStore) + { + Brain.Controls.ResetDash(); + Brain.Entity.DesiredVelocity = Vector2.zero; + Brain.Entity.ModelAnimation.CrossFade(dashLanding, .1f); + Timer.Start(); + } + + protected override void RunOnExit() + { + Timer.Stop(); + Brain.InputResolver.Clear(); + } + + public override void RunOnUpdate() + { + if (Timer.IsNotRunning) return; + Timer.Update(Timer.ScaledTime); + if (Timer.Check(LandingTime)) + { + Timer.Stop(); + Brain.ChangeState(SentinelStateType.Idle); + } + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/StateMachine/States/SentinelStateDashLanding.cs.meta b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/StateMachine/States/SentinelStateDashLanding.cs.meta new file mode 100644 index 0000000..de79b2b --- /dev/null +++ b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/StateMachine/States/SentinelStateDashLanding.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: daca982531174c5e82acb0a9312913b1 +timeCreated: 1781164678 \ No newline at end of file diff --git a/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/StateMachine/States/SentinelStateDashWindow.cs b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/StateMachine/States/SentinelStateDashRecovery.cs similarity index 54% rename from Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/StateMachine/States/SentinelStateDashWindow.cs rename to Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/StateMachine/States/SentinelStateDashRecovery.cs index 6b0fe59..a7544d9 100644 --- a/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/StateMachine/States/SentinelStateDashWindow.cs +++ b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/StateMachine/States/SentinelStateDashRecovery.cs @@ -4,19 +4,20 @@ using UnityEngine; namespace Intrepid.Gameplay.Entities.Player.Sentinel.StateMachine.States { - public class SentinelStateDashWindow : SentinelState + public class SentinelStateDashRecovery : SentinelState { - [GroupConfigurations, SerializeField] private AnimationClip dashWindow; + [GroupConfigurations, SerializeField] private AnimationClip dashRecovery; [GroupConfigurations, SerializeField, Range(0, 30)] private float speed = 10; [GroupConfigurations, SerializeField, Range(15, 90)] private float dashMaxAngleFromForward = 60f; - // [GroupConfigurations, SerializeField, Range(0, 500)] private float targetTimeMS = 150f; + [GroupConfigurations, SerializeField, Range(0, 5000)] private float targetTimeMS = 200f; + [GroupConfigurations, SerializeField] private AnimationCurve speedCurve; + public float TargetTime => targetTimeMS * 0.001f; private Timer Timer { get; } = new(); - private float TargetTime => Brain.Controls.DashContext.ActivationTime; public override SentinelStateType GetStateKey() { - return SentinelStateType.DashWindow; + return SentinelStateType.DashRecovery; } protected override void Subscriptions() @@ -25,30 +26,38 @@ namespace Intrepid.Gameplay.Entities.Player.Sentinel.StateMachine.States protected override void RunOnEnter(ParameterStore parameterStore) { - Brain.Entity.ModelAnimation.Play(dashWindow); - Timer.Start(); + Brain.Entity.ModelAnimation.CrossFade(dashRecovery, 0.05f); } protected override void RunOnExit() { Timer.Stop(); - var movement = Brain.Inputs.Movement(); - var forward = Brain.Entity.Forward; - var direction = GonFunctions - .ConstrainDirectionToForwardCone(movement, forward, dashMaxAngleFromForward); - Brain.Entity.ChangeOrientation(direction); } - + + public override void RunOnFirstFrameOnly() + { + Timer.Start(); + } + public override void RunOnUpdate() { - if (CheckDash()) return; if (Timer.IsNotRunning) { + if (TryConsumeDash()) + { + Brain.ChangeState(SentinelStateType.DashImpulse); + var movement = Brain.InputResolver.Movement(); + var forward = Brain.Entity.Forward; + var direction = GonFunctions + .ConstrainDirectionToForwardCone(movement, forward, dashMaxAngleFromForward); + Brain.Entity.ChangeOrientation(direction); + return; + } if (Brain.Entity.IsGrounded) { - Brain.ChangeState(Brain.Controls.DashShouldBreak() + Brain.ChangeState(Brain.Controls.ShouldDashBreak ? SentinelStateType.DashBreaking - : SentinelStateType.Idle); + : SentinelStateType.DashLanding); } else { @@ -62,24 +71,9 @@ namespace Intrepid.Gameplay.Entities.Player.Sentinel.StateMachine.States Timer.Stop(); return; } - Brain.Entity.DesiredVelocity = Brain.Entity.Forward * speed; + + var speedFactor = 1f + speedCurve.Evaluate((float)Timer.ElapsedTime / TargetTime); + Brain.Entity.DesiredVelocity = Brain.Entity.Forward * (speed * speedFactor); } - - private bool CheckDash() - { - // this could be a feature to be unlocked - // if (Brain.Inputs.Dash()) - if (Brain.Entity.IsGrounded && Brain.Inputs.Dash()) - { - Brain.ChangeState(SentinelStateType.Dash); - return true; - } - return false; - } - - - - - } } \ No newline at end of file diff --git a/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/StateMachine/States/SentinelStateDashWindow.cs.meta b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/StateMachine/States/SentinelStateDashRecovery.cs.meta similarity index 100% rename from Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/StateMachine/States/SentinelStateDashWindow.cs.meta rename to Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/StateMachine/States/SentinelStateDashRecovery.cs.meta diff --git a/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/StateMachine/States/SentinelStateIdle.cs b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/StateMachine/States/SentinelStateIdle.cs index 77ce711..204ad40 100644 --- a/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/StateMachine/States/SentinelStateIdle.cs +++ b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/StateMachine/States/SentinelStateIdle.cs @@ -1,5 +1,3 @@ -using Intrepid.GameManagers; -using Intrepid.Gameplay.Entities.Player.ActionBelt.Events; using Intrepid.Structures; using Intrepid.Utilities; using UnityEngine; @@ -31,20 +29,14 @@ namespace Intrepid.Gameplay.Entities.Player.Sentinel.StateMachine.States public override void RunOnUpdate() { - Movement = Brain.Inputs.Movement(); + Movement = Brain.InputResolver.Movement(); VerifyInteraction(); - if (CheckDash()) return; - if (CheckMovement()) return; - } - - private bool CheckDash() - { - if (Brain.Inputs.Dash()) + if (TryConsumeDash()) { - Brain.ChangeState(SentinelStateType.Dash); - return true; + Brain.ChangeState(SentinelStateType.DashImpulse); + return; } - return false; + if (CheckMovement()) return; } private bool CheckMovement() diff --git a/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/StateMachine/States/SentinelStateRun.cs b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/StateMachine/States/SentinelStateRun.cs index 7890d7d..ff40a53 100644 --- a/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/StateMachine/States/SentinelStateRun.cs +++ b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/StateMachine/States/SentinelStateRun.cs @@ -33,24 +33,18 @@ namespace Intrepid.Gameplay.Entities.Player.Sentinel.StateMachine.States public override void RunOnUpdate() { - Movement = Brain.Inputs.Movement(); + Movement = Brain.InputResolver.Movement(); Brain.Entity.ChangeOrientation(Movement); VerifyInteraction(); - if (CheckDash()) return; + if (TryConsumeDash()) + { + Brain.ChangeState(SentinelStateType.DashImpulse); + return; + } if (CheckMovement()) return; Brain.Entity.DesiredVelocity = Movement * speed; } - private bool CheckDash() - { - if (Brain.Inputs.Dash()) - { - Brain.ChangeState(SentinelStateType.Dash); - return true; - } - return false; - } - private bool CheckMovement() { switch (Movement.sqrMagnitude) diff --git a/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/StateMachine/States/SentinelStateWalk.cs b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/StateMachine/States/SentinelStateWalk.cs index c97a4c2..7bbc19d 100644 --- a/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/StateMachine/States/SentinelStateWalk.cs +++ b/Assets/Scripts/Intrepid/Gameplay/Entities/Player/Sentinel/StateMachine/States/SentinelStateWalk.cs @@ -33,24 +33,18 @@ namespace Intrepid.Gameplay.Entities.Player.Sentinel.StateMachine.States public override void RunOnUpdate() { - Movement = Brain.Inputs.Movement(); + Movement = Brain.InputResolver.Movement(); Brain.Entity.ChangeOrientation(Movement); VerifyInteraction(); - if (CheckDash()) return; + if (TryConsumeDash()) + { + Brain.ChangeState(SentinelStateType.DashImpulse); + return; + } if (CheckMovement()) return; Brain.Entity.DesiredVelocity = Movement * speed; } - private bool CheckDash() - { - if (Brain.Inputs.Dash()) - { - Brain.ChangeState(SentinelStateType.Dash); - return true; - } - return false; - } - private bool CheckMovement() { switch (Movement.sqrMagnitude) diff --git a/Assets/Scripts/Intrepid/Integration/Input/InputService.cs b/Assets/Scripts/Intrepid/Integration/Input/InputService.cs index 1876d18..fc7124c 100644 --- a/Assets/Scripts/Intrepid/Integration/Input/InputService.cs +++ b/Assets/Scripts/Intrepid/Integration/Input/InputService.cs @@ -1,5 +1,5 @@ using Intrepid.Diagnostics; -using Intrepid.Gameplay.Entities.Player.Sentinel; +using Intrepid.Gameplay.Entities.Player.Sentinel.Inputs; using Intrepid.Utilities; using UnityEngine; using UnityEngine.InputSystem; @@ -9,7 +9,7 @@ namespace Intrepid.Integration.Input [CreateAssetMenu(fileName = "Input Action Service", menuName = "GON/Input Actions Service")] public class InputService : SingletonScriptableObject { - private InputActions InputActions { get; set; } + public InputActions InputActions { get; private set; } public InputSchema CurrentInputSchema { get; private set; } public InputLocking Locking { get; private set; } @@ -54,21 +54,5 @@ namespace Intrepid.Integration.Input } } - public SentinelInputs BuildSentinelInputs() - { - return new SentinelInputs - { - Movement = () => Locking.IsNotLocked - ? InputActions.sentinel.Movement.ReadValue() - : Vector2.zero, - Interact = () => Locking.IsNotLocked && InputActions.sentinel.Interact.WasPressedThisFrame(), - DPadLeft = () => Locking.IsNotLocked && InputActions.sentinel.DPadLeft.WasPressedThisFrame(), - DPadRight = () => Locking.IsNotLocked && InputActions.sentinel.DPadRight.WasPressedThisFrame(), - Dash = () => Locking.IsNotLocked && InputActions.sentinel.Dash.WasPressedThisFrame(), - - // debug - Reset = () => Locking.IsNotLocked && InputActions.sentinel.Reset.WasPressedThisFrame(), - }; - } } } \ No newline at end of file diff --git a/Assets/Scripts/Intrepid/Utilities/GonConstants.cs b/Assets/Scripts/Intrepid/Utilities/GonConstants.cs index 86cc0e5..572222d 100644 --- a/Assets/Scripts/Intrepid/Utilities/GonConstants.cs +++ b/Assets/Scripts/Intrepid/Utilities/GonConstants.cs @@ -9,6 +9,8 @@ namespace Intrepid.Utilities { public const int ALAP = 10000; // As Last As Possible public const int ASAP = -ALAP; // As Soon As Possible + public const int TimeSimulation = ASAP + 1; // Time Simulation updates first + public const int UpdatableManager = TimeSimulation + 1; // Updatables updates later } public static class Prototyping diff --git a/Assets/Scripts/Intrepid/Utilities/Updatable/UpdatableManager.cs b/Assets/Scripts/Intrepid/Utilities/Updatable/UpdatableManager.cs index 58015ab..cbb28d5 100644 --- a/Assets/Scripts/Intrepid/Utilities/Updatable/UpdatableManager.cs +++ b/Assets/Scripts/Intrepid/Utilities/Updatable/UpdatableManager.cs @@ -2,7 +2,7 @@ using UnityEngine; namespace Intrepid.Utilities.Updatable { - [DefaultExecutionOrder(GonConstants.ExecutionOrder.ASAP)] + [DefaultExecutionOrder(GonConstants.ExecutionOrder.UpdatableManager)] public class UpdatableManager : MonoBehaviour { private void FixedUpdate() diff --git a/ProjectSettings/TimeManager.asset b/ProjectSettings/TimeManager.asset index 558a017..2e23a1f 100644 --- a/ProjectSettings/TimeManager.asset +++ b/ProjectSettings/TimeManager.asset @@ -3,7 +3,12 @@ --- !u!5 &1 TimeManager: m_ObjectHideFlags: 0 - Fixed Timestep: 0.02 + serializedVersion: 2 + Fixed Timestep: + m_Count: 2822399 + m_Rate: + m_Denominator: 1 + m_Numerator: 141120000 Maximum Allowed Timestep: 0.33333334 m_TimeScale: 1 Maximum Particle Timestep: 0.03