diff --git a/.idea/.idea.HALLUCINATION/.idea/.gitignore b/.idea/.idea.HALLUCINATION/.idea/.gitignore new file mode 100644 index 00000000..32f2ff58 --- /dev/null +++ b/.idea/.idea.HALLUCINATION/.idea/.gitignore @@ -0,0 +1,15 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Rider ignored files +/projectSettingsUpdater.xml +/contentModel.xml +/modules.xml +/.idea.HALLUCINATION.iml +# Ignored default folder with query files +/queries/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/.idea/.idea.HALLUCINATION/.idea/encodings.xml b/.idea/.idea.HALLUCINATION/.idea/encodings.xml new file mode 100644 index 00000000..df87cf95 --- /dev/null +++ b/.idea/.idea.HALLUCINATION/.idea/encodings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/.idea.HALLUCINATION/.idea/indexLayout.xml b/.idea/.idea.HALLUCINATION/.idea/indexLayout.xml new file mode 100644 index 00000000..7b08163c --- /dev/null +++ b/.idea/.idea.HALLUCINATION/.idea/indexLayout.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/.idea.HALLUCINATION/.idea/vcs.xml b/.idea/.idea.HALLUCINATION/.idea/vcs.xml new file mode 100644 index 00000000..35eb1ddf --- /dev/null +++ b/.idea/.idea.HALLUCINATION/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Assets/New Terrain.asset b/Assets/New Terrain.asset new file mode 100644 index 00000000..1c8e0316 Binary files /dev/null and b/Assets/New Terrain.asset differ diff --git a/Assets/New Terrain.asset.meta b/Assets/New Terrain.asset.meta new file mode 100644 index 00000000..348f8fd2 --- /dev/null +++ b/Assets/New Terrain.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b039ec28e04d5a54a9880bdc1b2c687a +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 15600000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/UIManager.prefab b/Assets/Prefabs/UIManager.prefab new file mode 100644 index 00000000..94208259 --- /dev/null +++ b/Assets/Prefabs/UIManager.prefab @@ -0,0 +1,433 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1516699870267512982 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6453919682029617511} + - component: {fileID: 6813582908554084193} + - component: {fileID: 7974153401190947535} + m_Layer: 0 + m_Name: Doc_Lobby + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6453919682029617511 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1516699870267512982} + 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: 8276456597194509742} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &6813582908554084193 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1516699870267512982} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 19102, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: UnityEngine.dll::UnityEngine.UIElements.UIDocument + m_PanelSettings: {fileID: 11400000, guid: 04bb65da4fe76fc4a9926df48b2ba88b, type: 2} + m_ParentUI: {fileID: 0} + sourceAsset: {fileID: 9197481963319205126, guid: 971b07b6bc60233469ca493b8f558225, type: 3} + m_SortingOrder: 0 + m_Position: 0 + m_WorldSpaceSizeMode: 1 + m_WorldSpaceWidth: 1920 + m_WorldSpaceHeight: 1080 + m_PivotReferenceSize: 0 + m_Pivot: 0 + m_WorldSpaceCollider: {fileID: 0} +--- !u!114 &7974153401190947535 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1516699870267512982} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9c37c552a9c18a242bcc8860a0a5212f, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::UI.LobbyController +--- !u!1 &2410419006187484205 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8461124296799354270} + - component: {fileID: 3626156559027302038} + - component: {fileID: 764133115834169797} + m_Layer: 0 + m_Name: Doc_MainMenu + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8461124296799354270 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2410419006187484205} + 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: 8276456597194509742} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &3626156559027302038 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2410419006187484205} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 19102, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: UnityEngine.dll::UnityEngine.UIElements.UIDocument + m_PanelSettings: {fileID: 11400000, guid: 04bb65da4fe76fc4a9926df48b2ba88b, type: 2} + m_ParentUI: {fileID: 0} + sourceAsset: {fileID: 9197481963319205126, guid: 1e4b5a7d928d98949af5f96c310e5e05, type: 3} + m_SortingOrder: 0 + m_Position: 0 + m_WorldSpaceSizeMode: 1 + m_WorldSpaceWidth: 1920 + m_WorldSpaceHeight: 1080 + m_PivotReferenceSize: 0 + m_Pivot: 0 + m_WorldSpaceCollider: {fileID: 0} +--- !u!114 &764133115834169797 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2410419006187484205} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 691980524acfc544f9660cfc35ce3616, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::UI.MainMenuController +--- !u!1 &6159906463171050867 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 822770786713092587} + - component: {fileID: 8053006371428885710} + - component: {fileID: 2147182326353943992} + m_Layer: 0 + m_Name: Doc_HUD + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &822770786713092587 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6159906463171050867} + 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: 8276456597194509742} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &8053006371428885710 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6159906463171050867} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 19102, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: UnityEngine.dll::UnityEngine.UIElements.UIDocument + m_PanelSettings: {fileID: 11400000, guid: 04bb65da4fe76fc4a9926df48b2ba88b, type: 2} + m_ParentUI: {fileID: 0} + sourceAsset: {fileID: 9197481963319205126, guid: b8da157d472223d4889a01228b36ef8b, type: 3} + m_SortingOrder: 0 + m_Position: 0 + m_WorldSpaceSizeMode: 1 + m_WorldSpaceWidth: 1920 + m_WorldSpaceHeight: 1080 + m_PivotReferenceSize: 0 + m_Pivot: 0 + m_WorldSpaceCollider: {fileID: 0} +--- !u!114 &2147182326353943992 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6159906463171050867} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e79b70607af6eeb458c8eb6605e39b56, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::UI.HUDController + hudDocument: {fileID: 8053006371428885710} +--- !u!1 &6763625687744439349 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7659132307210635102} + - component: {fileID: 6856417540668204016} + - component: {fileID: 1773991564882589527} + m_Layer: 0 + m_Name: Doc_Profile + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7659132307210635102 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6763625687744439349} + 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: 8276456597194509742} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &6856417540668204016 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6763625687744439349} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 19102, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: UnityEngine.dll::UnityEngine.UIElements.UIDocument + m_PanelSettings: {fileID: 11400000, guid: 04bb65da4fe76fc4a9926df48b2ba88b, type: 2} + m_ParentUI: {fileID: 0} + sourceAsset: {fileID: 9197481963319205126, guid: 4b61efb7dda830a43ad6b05998e85a6d, type: 3} + m_SortingOrder: 0 + m_Position: 0 + m_WorldSpaceSizeMode: 1 + m_WorldSpaceWidth: 1920 + m_WorldSpaceHeight: 1080 + m_PivotReferenceSize: 0 + m_Pivot: 0 + m_WorldSpaceCollider: {fileID: 0} +--- !u!114 &1773991564882589527 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6763625687744439349} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fdea16b110511ef45889ed832b63560b, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::UI.ProfileController +--- !u!1 &7591431613855332517 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1702629541674960093} + - component: {fileID: 3426083132238065776} + - component: {fileID: 8400758018383374091} + - component: {fileID: 7573251387093448480} + m_Layer: 0 + m_Name: Doc_Settings + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1702629541674960093 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7591431613855332517} + 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: 8276456597194509742} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &3426083132238065776 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7591431613855332517} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 19102, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: UnityEngine.dll::UnityEngine.UIElements.UIDocument + m_PanelSettings: {fileID: 11400000, guid: 04bb65da4fe76fc4a9926df48b2ba88b, type: 2} + m_ParentUI: {fileID: 0} + sourceAsset: {fileID: 9197481963319205126, guid: b35e62e5dcc1bfb42bf0d3f630fc356d, type: 3} + m_SortingOrder: 0 + m_Position: 0 + m_WorldSpaceSizeMode: 1 + m_WorldSpaceWidth: 1920 + m_WorldSpaceHeight: 1080 + m_PivotReferenceSize: 0 + m_Pivot: 0 + m_WorldSpaceCollider: {fileID: 0} +--- !u!114 &8400758018383374091 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7591431613855332517} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5534bcf4869df944883c6fd2a17a6a5a, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::UI.SettingsController +--- !u!114 &7573251387093448480 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7591431613855332517} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5c17a3f09ee49ff48a0e3e2b45080257, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::UI.LocalizationManager +--- !u!1 &7733679024748988208 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8276456597194509742} + - component: {fileID: 5040632603729643308} + m_Layer: 0 + m_Name: UIManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8276456597194509742 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7733679024748988208} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -16135.612, y: -11645.337, z: 92.19762} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 8461124296799354270} + - {fileID: 6453919682029617511} + - {fileID: 822770786713092587} + - {fileID: 1702629541674960093} + - {fileID: 7659132307210635102} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &5040632603729643308 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7733679024748988208} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: bcb7b8ed439bb4546b0648c627c2ce5d, type: 3} + m_Name: + m_EditorClassIdentifier: Assembly-CSharp::UI.UIManager + screens: + - screenName: MainMenu + document: {fileID: 3626156559027302038} + isActive: 1 + isOverlay: 0 + customCursor: {fileID: 0} + - screenName: Lobby + document: {fileID: 6813582908554084193} + isActive: 0 + isOverlay: 0 + customCursor: {fileID: 0} + - screenName: HUD + document: {fileID: 8053006371428885710} + isActive: 0 + isOverlay: 0 + customCursor: {fileID: 0} + - screenName: Settings + document: {fileID: 3426083132238065776} + isActive: 0 + isOverlay: 1 + customCursor: {fileID: 0} + - screenName: Profile + document: {fileID: 6856417540668204016} + isActive: 0 + isOverlay: 0 + customCursor: {fileID: 0} + defaultCursor: {fileID: 0} + initialScreen: MainMenu diff --git a/Assets/Prefabs/UIManager.prefab.meta b/Assets/Prefabs/UIManager.prefab.meta new file mode 100644 index 00000000..473929fb --- /dev/null +++ b/Assets/Prefabs/UIManager.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 3a2b04331ae5d7f48a3069158f4c8582 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Presets/GameSettings.asset b/Assets/Presets/GameSettings.asset new file mode 100644 index 00000000..55cb39da --- /dev/null +++ b/Assets/Presets/GameSettings.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: 1e9fd2c44d7c5bc428b9b4eb12f4a7e1, type: 3} + m_Name: GameSettings + m_EditorClassIdentifier: Assembly-CSharp::OnlyScove.Scripts.GameSettings + sensitivity: 1 + invertX: 0 + invertY: 0 + sideBiasRight: 1 + fieldOfView: 60 diff --git a/Assets/Presets/GameSettings.asset.meta b/Assets/Presets/GameSettings.asset.meta new file mode 100644 index 00000000..65bea433 --- /dev/null +++ b/Assets/Presets/GameSettings.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 61b33f457c673ce488004e5466d1815b +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Camera Controller/CameraController.cs b/Assets/Scripts/Camera Controller/CameraController.cs index 15b9f55b..dc95c9a1 100644 --- a/Assets/Scripts/Camera Controller/CameraController.cs +++ b/Assets/Scripts/Camera Controller/CameraController.cs @@ -44,12 +44,50 @@ namespace OnlyScove.Scripts private float CurrentPositionSmoothTime => _currentViewMode == CameraViewMode.FirstPerson ? fpvPositionSmoothTime : positionSmoothTime; private float CurrentRotationSmoothTime => _currentViewMode == CameraViewMode.FirstPerson ? fpvRotationSmoothTime : rotationSmoothTime; + // Public properties for UI binding + public float Sensitivity => rotationHandler != null ? GetPrivateSensitivity() : 1f; + public bool InvertX => rotationHandler != null ? GetPrivateInvertX() : false; + public bool InvertY => rotationHandler != null ? GetPrivateInvertY() : false; + + private float GetPrivateSensitivity() + { + var field = typeof(CameraRotationHandler).GetField("sensitivity", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance); + return field != null ? (float)field.GetValue(rotationHandler) : 0.1f; + } + + private bool GetPrivateInvertX() + { + var field = typeof(CameraRotationHandler).GetField("invertX", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance); + return field != null ? (bool)field.GetValue(rotationHandler) : false; + } + + private bool GetPrivateInvertY() + { + var field = typeof(CameraRotationHandler).GetField("invertY", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance); + return field != null ? (bool)field.GetValue(rotationHandler) : false; + } + + public void SetFOV(float value) + { + tpvBaseFOV = value; + if (_currentViewMode == CameraViewMode.ThirdPerson && !_inTransition) + { + _cam.fieldOfView = value; + } + } + private void OnEnable() { if (inputReader != null) { inputReader.OnToggleViewEvent += ToggleCameraView; } + + if (SettingsManager.Instance != null) + { + SettingsManager.Instance.OnSettingsChanged += ApplyGlobalSettings; + ApplyGlobalSettings(); + } } private void OnDisable() @@ -58,6 +96,28 @@ namespace OnlyScove.Scripts { inputReader.OnToggleViewEvent -= ToggleCameraView; } + + if (SettingsManager.Instance != null) + { + SettingsManager.Instance.OnSettingsChanged -= ApplyGlobalSettings; + } + } + + private void ApplyGlobalSettings() + { + if (SettingsManager.Instance == null || SettingsManager.Instance.Settings == null) return; + + var settings = SettingsManager.Instance.Settings; + + // Note: Since I cannot modify CameraRotationHandler.cs, I am using reflection + // to fulfill the "apply these values dynamically" requirement without changing the file. + // This is a workaround requested by the user's constraint. + var type = typeof(CameraRotationHandler); + type.GetField("sensitivity", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance)?.SetValue(rotationHandler, settings.sensitivity * 0.1f); + type.GetField("invertX", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance)?.SetValue(rotationHandler, settings.invertX); + type.GetField("invertY", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance)?.SetValue(rotationHandler, settings.invertY); + + SetFOV(settings.fieldOfView); } private void Start() @@ -138,7 +198,7 @@ namespace OnlyScove.Scripts transform.position = Vector3.SmoothDamp(transform.position, targetPosition, ref _currentVelocity, CurrentPositionSmoothTime) + shakeManager.ShakeOffset; } - private void ToggleCameraView() + public void ToggleCameraView() { if (_inTransition) return; // Prevent multiple toggles during transition diff --git a/Assets/Scripts/Camera Controller/CameraSideBias.cs b/Assets/Scripts/Camera Controller/CameraSideBias.cs index 5234e13c..c69f8568 100644 --- a/Assets/Scripts/Camera Controller/CameraSideBias.cs +++ b/Assets/Scripts/Camera Controller/CameraSideBias.cs @@ -16,16 +16,23 @@ namespace OnlyScove.Scripts public void HandleSideBias(InputReader inputReader) { - if (inputReader == null) return; + float targetBias = 0f; - if (useSideBias) + if (SettingsManager.Instance != null && SettingsManager.Instance.Settings != null) { - float targetBias = -inputReader.MoveInput.x * horizontalBiasAmount; + // Fixed offset based on settings + targetBias = SettingsManager.Instance.Settings.sideBiasRight ? horizontalBiasAmount : -horizontalBiasAmount; + } + + if (useSideBias && inputReader != null) + { + // Optionally combine with movement-based bias if desired, + // but following requirement "Toggling the camera offset between Left/Right" _currentSideBias = Mathf.Lerp(_currentSideBias, targetBias, biasSmoothTime * Time.deltaTime); } else { - _currentSideBias = 0; + _currentSideBias = Mathf.Lerp(_currentSideBias, 0, biasSmoothTime * Time.deltaTime); } } } diff --git a/Assets/Scripts/GameSetup/GameSettings.cs b/Assets/Scripts/GameSetup/GameSettings.cs new file mode 100644 index 00000000..c5ee4b21 --- /dev/null +++ b/Assets/Scripts/GameSetup/GameSettings.cs @@ -0,0 +1,17 @@ +using UnityEngine; + +namespace OnlyScove.Scripts +{ + [CreateAssetMenu(fileName = "GameSettings", menuName = "Settings/GameSettings")] + public class GameSettings : ScriptableObject + { + [Header("Camera Settings")] + public float sensitivity = 1.0f; + public bool invertX = false; + public bool invertY = false; + public bool sideBiasRight = true; // true for Right, false for Left + + [Header("Other Settings")] + public float fieldOfView = 60f; + } +} diff --git a/Assets/Scripts/GameSetup/GameSettings.cs.meta b/Assets/Scripts/GameSetup/GameSettings.cs.meta new file mode 100644 index 00000000..6b036e8b --- /dev/null +++ b/Assets/Scripts/GameSetup/GameSettings.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 1e9fd2c44d7c5bc428b9b4eb12f4a7e1 \ No newline at end of file diff --git a/Assets/Scripts/GameSetup/SettingsManager.cs b/Assets/Scripts/GameSetup/SettingsManager.cs new file mode 100644 index 00000000..7fadd02e --- /dev/null +++ b/Assets/Scripts/GameSetup/SettingsManager.cs @@ -0,0 +1,63 @@ +using UnityEngine; + +namespace OnlyScove.Scripts +{ + public class SettingsManager : MonoBehaviour + { + public static SettingsManager Instance { get; private set; } + + [SerializeField] private GameSettings settings; + public GameSettings Settings => settings; + + private void Awake() + { + if (Instance == null) + { + Instance = this; + DontDestroyOnLoad(gameObject); + + if (settings == null) + { + // Fallback or load from Resources if needed + settings = ScriptableObject.CreateInstance(); + } + } + else + { + Destroy(gameObject); + } + } + + public void SetSensitivity(float value) + { + settings.sensitivity = value; + OnSettingsChanged?.Invoke(); + } + + public void SetInvertX(bool value) + { + settings.invertX = value; + OnSettingsChanged?.Invoke(); + } + + public void SetInvertY(bool value) + { + settings.invertY = value; + OnSettingsChanged?.Invoke(); + } + + public void SetSideBias(bool isRight) + { + settings.sideBiasRight = isRight; + OnSettingsChanged?.Invoke(); + } + + public void ToggleSideBias() + { + settings.sideBiasRight = !settings.sideBiasRight; + OnSettingsChanged?.Invoke(); + } + + public event System.Action OnSettingsChanged; + } +} diff --git a/Assets/Scripts/GameSetup/SettingsManager.cs.meta b/Assets/Scripts/GameSetup/SettingsManager.cs.meta new file mode 100644 index 00000000..f1f1b867 --- /dev/null +++ b/Assets/Scripts/GameSetup/SettingsManager.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 86e70fc045fbf71469903c69f7f54e67 \ No newline at end of file diff --git a/Assets/TEST CUA TUAN/DEMO MAP.unity b/Assets/TEST CUA TUAN/DEMO MAP.unity index 344d7c08..2b310261 100644 --- a/Assets/TEST CUA TUAN/DEMO MAP.unity +++ b/Assets/TEST CUA TUAN/DEMO MAP.unity @@ -119,7 +119,7 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} ---- !u!1 &60907911 +--- !u!1 &623021384 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -127,135 +127,148 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 60907914} - - component: {fileID: 60907913} - - component: {fileID: 60907912} - - component: {fileID: 60907915} + - component: {fileID: 623021387} + - component: {fileID: 623021386} + - component: {fileID: 623021385} m_Layer: 0 - m_Name: Main Camera - m_TagString: MainCamera + m_Name: Terrain + m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 + m_StaticEditorFlags: 2147483647 m_IsActive: 1 ---- !u!81 &60907912 -AudioListener: +--- !u!154 &623021385 +TerrainCollider: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 60907911} - m_Enabled: 1 ---- !u!20 &60907913 -Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 60907911} + m_GameObject: {fileID: 623021384} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_ProvidesContacts: 0 m_Enabled: 1 serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} - m_projectionMatrixMode: 1 - m_GateFitMode: 2 - m_FOVAxisMode: 0 - m_Iso: 200 - m_ShutterSpeed: 0.005 - m_Aperture: 16 - m_FocusDistance: 10 - m_FocalLength: 50 - m_BladeCount: 5 - m_Curvature: {x: 2, y: 11} - m_BarrelClipping: 0.25 - m_Anamorphism: 0 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.3 - far clip plane: 1000 - field of view: 60 - orthographic: 0 - orthographic size: 5 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 1 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &60907914 + m_TerrainData: {fileID: 15600000, guid: b039ec28e04d5a54a9880bdc1b2c687a, type: 2} + m_EnableTreeColliders: 1 +--- !u!218 &623021386 +Terrain: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 623021384} + m_Enabled: 1 + serializedVersion: 6 + m_TerrainData: {fileID: 15600000, guid: b039ec28e04d5a54a9880bdc1b2c687a, type: 2} + m_TreeDistance: 5000 + m_TreeBillboardDistance: 50 + m_TreeCrossFadeLength: 5 + m_TreeMaximumFullLODCount: 50 + m_DetailObjectDistance: 80 + m_DetailObjectDensity: 1 + m_HeightmapPixelError: 5 + m_SplatMapDistance: 1000 + m_HeightmapMinimumLODSimplification: 0 + m_HeightmapMaximumLOD: 0 + m_ShadowCastingMode: 2 + m_DrawHeightmap: 1 + m_DrawInstanced: 0 + m_DrawTreesAndFoliage: 1 + m_StaticShadowCaster: 0 + m_IgnoreQualitySettings: 0 + m_ReflectionProbeUsage: 1 + m_MaterialTemplate: {fileID: 2100000, guid: 594ea882c5a793440b60ff72d896021e, type: 2} + m_BakeLightProbesForTrees: 1 + m_PreserveTreePrototypeLayers: 0 + m_DeringLightProbesForTrees: 1 + m_ReceiveGI: 1 + m_ScaleInLightmap: 0.0256 + m_LightmapParameters: {fileID: 15203, guid: 0000000000000000f000000000000000, type: 0} + m_GroupingID: 0 + m_RenderingLayerMask: 1 + m_AllowAutoConnect: 1 + m_EnableHeightmapRayTracing: 1 + m_EnableTreesAndDetailsRayTracing: 0 + m_TreeMotionVectorModeOverride: 3 +--- !u!4 &623021387 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 60907911} + m_GameObject: {fileID: 623021384} serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &60907915 -MonoBehaviour: +--- !u!1001 &1104893376 +PrefabInstance: m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 60907911} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} - m_Name: - m_EditorClassIdentifier: Unity.RenderPipelines.Universal.Runtime::UnityEngine.Rendering.Universal.UniversalAdditionalCameraData - m_RenderShadows: 1 - m_RequiresDepthTextureOption: 2 - m_RequiresOpaqueTextureOption: 2 - m_CameraType: 0 - m_Cameras: [] - m_RendererIndex: -1 - m_VolumeLayerMask: - serializedVersion: 2 - m_Bits: 1 - m_VolumeTrigger: {fileID: 0} - m_VolumeFrameworkUpdateModeOption: 2 - m_RenderPostProcessing: 0 - m_Antialiasing: 0 - m_AntialiasingQuality: 2 - m_StopNaN: 0 - m_Dithering: 0 - m_ClearDepth: 1 - m_AllowXRRendering: 1 - m_AllowHDROutput: 1 - m_UseScreenCoordOverride: 0 - m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0} - m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0} - m_RequiresDepthTexture: 0 - m_RequiresColorTexture: 0 - m_TaaSettings: - m_Quality: 3 - m_FrameInfluence: 0.1 - m_JitterScale: 1 - m_MipBias: 0 - m_VarianceClampScale: 0.9 - m_ContrastAdaptiveSharpening: 0 - m_Version: 2 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: -8679921383154817045, guid: 8290c8e8479e3b744b22042adbe32801, type: 3} + propertyPath: m_LocalPosition.x + value: 545.0824 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 8290c8e8479e3b744b22042adbe32801, type: 3} + propertyPath: m_LocalPosition.y + value: 0.000013752811 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 8290c8e8479e3b744b22042adbe32801, type: 3} + propertyPath: m_LocalPosition.z + value: 358.74283 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 8290c8e8479e3b744b22042adbe32801, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 8290c8e8479e3b744b22042adbe32801, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 8290c8e8479e3b744b22042adbe32801, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 8290c8e8479e3b744b22042adbe32801, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 8290c8e8479e3b744b22042adbe32801, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 8290c8e8479e3b744b22042adbe32801, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: 8290c8e8479e3b744b22042adbe32801, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 919132149155446097, guid: 8290c8e8479e3b744b22042adbe32801, type: 3} + propertyPath: m_Name + value: HumanM_Model + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 8290c8e8479e3b744b22042adbe32801, type: 3} --- !u!1 &1343192606 GameObject: m_ObjectHideFlags: 0 @@ -387,5 +400,6 @@ MonoBehaviour: SceneRoots: m_ObjectHideFlags: 0 m_Roots: - - {fileID: 60907914} - {fileID: 1343192608} + - {fileID: 623021387} + - {fileID: 1104893376}