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}