diff --git a/Assets/PerfectWorld/Config/Resources/GameRunConfig.asset b/Assets/PerfectWorld/Config/Resources/GameRunConfig.asset index 4593fa7bc0..8555e2805c 100644 --- a/Assets/PerfectWorld/Config/Resources/GameRunConfig.asset +++ b/Assets/PerfectWorld/Config/Resources/GameRunConfig.asset @@ -14,23 +14,23 @@ MonoBehaviour: m_EditorClassIdentifier: viewDistanceCfg: - title: Config 1 - fShow: 200 - fHide: 400 + fShow: 100 + fHide: 150 - title: Config 2 - fShow: 400 - fHide: 600 + fShow: 150 + fHide: 200 - title: Config 3 - fShow: 600 - fHide: 800 + fShow: 200 + fHide: 250 - title: Config 4 - fShow: 800 - fHide: 1000 + fShow: 250 + fHide: 300 - title: Config 5 - fShow: 1000 - fHide: 1200 + fShow: 300 + fHide: 350 - title: Config 6 - fShow: 1200 - fHide: 1400 + fShow: 350 + fHide: 400 viewDistanceNPCCfg: - title: Config 1 fShow: 25 diff --git a/Assets/PerfectWorld/Prefab/InGameGraphicOption.prefab b/Assets/PerfectWorld/Prefab/InGameGraphicOption.prefab new file mode 100644 index 0000000000..8875b38722 --- /dev/null +++ b/Assets/PerfectWorld/Prefab/InGameGraphicOption.prefab @@ -0,0 +1,48 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &2231146345831581285 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1787898784501235526} + - component: {fileID: 7110842102777986025} + m_Layer: 0 + m_Name: InGameGraphicOption + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1787898784501235526 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2231146345831581285} + 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: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &7110842102777986025 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2231146345831581285} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: cfa24c9da248b9d4aa36c50fb688c146, type: 3} + m_Name: + m_EditorClassIdentifier: + _renderPipelineAsset: {fileID: 11400000, guid: 5e6cbd92db86f4b18aec3ed561671858, type: 2} + _cinemachineVirtualCamera: {fileID: 0} diff --git a/Assets/PerfectWorld/Prefab/InGameGraphicOption.prefab.meta b/Assets/PerfectWorld/Prefab/InGameGraphicOption.prefab.meta new file mode 100644 index 0000000000..071346b7a7 --- /dev/null +++ b/Assets/PerfectWorld/Prefab/InGameGraphicOption.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d38fe8448215a1842bfa3d094f3d307a +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/PerfectWorld/Prefab/UI/DlgSetting.prefab b/Assets/PerfectWorld/Prefab/UI/DlgSetting.prefab index 5a9f0ee227..abda070869 100644 --- a/Assets/PerfectWorld/Prefab/UI/DlgSetting.prefab +++ b/Assets/PerfectWorld/Prefab/UI/DlgSetting.prefab @@ -2515,7 +2515,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!224 &2089140126047700709 RectTransform: m_ObjectHideFlags: 0 @@ -2531,10 +2531,10 @@ RectTransform: - {fileID: 581815824710635089} m_Father: {fileID: 8038141400472399988} 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: 0, y: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 103.69825, y: -174} + m_SizeDelta: {x: 200, y: 70} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &453846082467036817 CanvasRenderer: @@ -3423,7 +3423,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!224 &6804777851036107864 RectTransform: m_ObjectHideFlags: 0 @@ -3439,10 +3439,10 @@ RectTransform: - {fileID: 4206321553251368956} m_Father: {fileID: 8038141400472399988} 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: 0, y: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 103.69825, y: -104} + m_SizeDelta: {x: 200, y: 70} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &5720369861187438293 CanvasRenderer: @@ -6399,7 +6399,7 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_text: "Giao di\u1EC7n" + m_text: "\u0110\u1ED3 h\u1ECDa" m_isRightToLeft: 0 m_fontAsset: {fileID: 11400000, guid: 369c2e14814cc9a4b8e3ad4e37769134, type: 2} m_sharedMaterial: {fileID: 9092487103257209053, guid: 369c2e14814cc9a4b8e3ad4e37769134, type: 2} @@ -7205,7 +7205,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!224 &5725138947417197620 RectTransform: m_ObjectHideFlags: 0 @@ -7222,10 +7222,10 @@ RectTransform: - {fileID: 8978764815918038982} m_Father: {fileID: 8859678125751154879} 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: 0, y: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 86.35, y: -47.22} + m_SizeDelta: {x: 172.7, y: 66.44} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &7259619490849805827 MonoBehaviour: diff --git a/Assets/PerfectWorld/Scene/Bootstrap.unity b/Assets/PerfectWorld/Scene/Bootstrap.unity index b737300a12..563d3998db 100644 --- a/Assets/PerfectWorld/Scene/Bootstrap.unity +++ b/Assets/PerfectWorld/Scene/Bootstrap.unity @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5caea7b0b45c434cbea3545800922c7604e8773fe7cbcf675b091934c7c39505 -size 306512 +oid sha256:f2b5c4c3dc1914bf0df35a1c4cd95ea98efb036377ac98143600246db5d4ae49 +size 312235 diff --git a/Assets/PerfectWorld/Scene/LoginScene.unity b/Assets/PerfectWorld/Scene/LoginScene.unity index a8309c5b00..df0c001bbc 100644 --- a/Assets/PerfectWorld/Scene/LoginScene.unity +++ b/Assets/PerfectWorld/Scene/LoginScene.unity @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:133267e461382e8feb9da7fa610607c52255abb519753fb55dab36ddd758f54d -size 114097 +oid sha256:3105731ad4156d02d8b41374a80252c3abe294e5e221dd917303e3cc99c247b4 +size 111490 diff --git a/Assets/PerfectWorld/Scripts/Common/AutoInitializer.cs b/Assets/PerfectWorld/Scripts/Common/AutoInitializer.cs index 8687facfb5..f7f2a2ddba 100644 --- a/Assets/PerfectWorld/Scripts/Common/AutoInitializer.cs +++ b/Assets/PerfectWorld/Scripts/Common/AutoInitializer.cs @@ -19,12 +19,6 @@ namespace BrewMonster DontDestroyOnLoad(gameObject); } - private IEnumerator Start() - { - yield return null; - EC_Game.InitSettingAudio(); - } - void OnDestroy() { BMLogger.Log("AutoInitializer: OnDestroy called, disposing auto initializers"); diff --git a/Assets/PerfectWorld/Scripts/MainFiles/EC_Game.cs b/Assets/PerfectWorld/Scripts/MainFiles/EC_Game.cs index afa8116487..e69fdb6be6 100644 --- a/Assets/PerfectWorld/Scripts/MainFiles/EC_Game.cs +++ b/Assets/PerfectWorld/Scripts/MainFiles/EC_Game.cs @@ -1,4 +1,5 @@ using BrewMonster; +using BrewMonster.Scripts; using BrewMonster.Scripts.Task; using CSNetwork; using CSNetwork.GPDataType; @@ -662,6 +663,10 @@ namespace BrewMonster.Network m_viewDistanceNPC = GameRunConfigSO.GetViewDistanceNPCCfg[index - 1]; index = PlayerPrefs.GetInt(keySettingViewDistanceEP, defaultValue: 6); m_viewDistanceEP = GameRunConfigSO.GetViewDistanceEPCfg[index - 1]; + + SetSettingActiveFog(GetSettingActiveFog()); + SetSettingActiveFullResolution(GetSettingActiveFullResolution()); + SetSettingActiveShadow(GetSettingActiveShadow()); } public static void InitSettingAudio() @@ -708,14 +713,8 @@ namespace BrewMonster.Network public static void SetSettingActiveFullResolution(bool value) { PlayerPrefs.SetInt(keySettingActiveFullResolution, value ? 1 : 0); - if (value) - { - - } - else - { - - } + InGameGraphicOption.Instance.SetRenderScale(value ? 1f : 0.7f); + InGameGraphicOption.Instance.SetMSAA(value ? 4 : 1); } public static void SetSettingActiveFog(bool value) @@ -728,6 +727,7 @@ namespace BrewMonster.Network { PlayerPrefs.SetInt(keySettingViewDistance, value); m_viewDistance = GameRunConfigSO.GetViewDistanceCfg[value - 1]; + InGameGraphicOption.Instance.SetRenderDistance(m_viewDistance.fHide); } public static void SetSettingViewDistanceNPC(int value) diff --git a/Assets/PerfectWorld/Scripts/Managers/InGameOptionManager.cs b/Assets/PerfectWorld/Scripts/Managers/InGameGraphicOption.cs similarity index 70% rename from Assets/PerfectWorld/Scripts/Managers/InGameOptionManager.cs rename to Assets/PerfectWorld/Scripts/Managers/InGameGraphicOption.cs index 5317fc6415..a315d2ae03 100644 --- a/Assets/PerfectWorld/Scripts/Managers/InGameOptionManager.cs +++ b/Assets/PerfectWorld/Scripts/Managers/InGameGraphicOption.cs @@ -1,13 +1,14 @@ using Unity.Cinemachine; using UnityEngine; +using UnityEngine.Experimental.GlobalIllumination; using UnityEngine.Rendering.Universal; namespace BrewMonster.Scripts { - public class InGameOptionManager : MonoSingleton + public class InGameGraphicOption : MonoSingleton { [SerializeField] private UniversalRenderPipelineAsset _renderPipelineAsset; - [SerializeField] private CinemachineVirtualCamera _cinemachineVirtualCamera; + [SerializeField] private CinemachineCamera _cinemachineVirtualCamera; #region public functions @@ -17,7 +18,7 @@ namespace BrewMonster.Scripts public void SetRenderDistance(float distance) { distance = Mathf.Clamp(distance, 50f, 500f); - _cinemachineVirtualCamera.m_Lens.FarClipPlane = distance; + _cinemachineVirtualCamera.Lens.FarClipPlane = distance; } /// @@ -39,6 +40,13 @@ namespace BrewMonster.Scripts _renderPipelineAsset.msaaSampleCount = msaaLevel; } + + + //TODO: figure out a solution for this. + public void SetActiveShadow(bool active) + { + + } #endregion } } \ No newline at end of file diff --git a/Assets/PerfectWorld/Scripts/Managers/InGameOptionManager.cs.meta b/Assets/PerfectWorld/Scripts/Managers/InGameGraphicOption.cs.meta similarity index 100% rename from Assets/PerfectWorld/Scripts/Managers/InGameOptionManager.cs.meta rename to Assets/PerfectWorld/Scripts/Managers/InGameGraphicOption.cs.meta diff --git a/Assets/PerfectWorld/Scripts/Managers/InGameOptionButtionTest.cs b/Assets/PerfectWorld/Scripts/Managers/InGameOptionButtionTest.cs index 6654272565..162daad920 100644 --- a/Assets/PerfectWorld/Scripts/Managers/InGameOptionButtionTest.cs +++ b/Assets/PerfectWorld/Scripts/Managers/InGameOptionButtionTest.cs @@ -24,17 +24,17 @@ namespace BrewMonster.Scripts private void SetLowQuality() { - InGameOptionManager.Instance.SetRenderDistance(200f); - InGameOptionManager.Instance.SetRenderScale(0.6f); - InGameOptionManager.Instance.SetMSAA(0); + InGameGraphicOption.Instance.SetRenderDistance(200f); + InGameGraphicOption.Instance.SetRenderScale(0.6f); + InGameGraphicOption.Instance.SetMSAA(0); _isHighQuality = false; } private void SetHighQuality() { - InGameOptionManager.Instance.SetRenderDistance(500f); - InGameOptionManager.Instance.SetRenderScale(1f); - InGameOptionManager.Instance.SetMSAA(4); + InGameGraphicOption.Instance.SetRenderDistance(500f); + InGameGraphicOption.Instance.SetRenderScale(1f); + InGameGraphicOption.Instance.SetMSAA(4); _isHighQuality = true; } } diff --git a/Assets/PerfectWorld/Scripts/Sound/AudioManager.cs b/Assets/PerfectWorld/Scripts/Sound/AudioManager.cs index a59c019a0b..ea68f06c2b 100644 --- a/Assets/PerfectWorld/Scripts/Sound/AudioManager.cs +++ b/Assets/PerfectWorld/Scripts/Sound/AudioManager.cs @@ -20,7 +20,6 @@ public class AudioManager : MonoBehaviour if (Instance == null) { Instance = this; - DontDestroyOnLoad(gameObject); } else { @@ -29,6 +28,9 @@ public class AudioManager : MonoBehaviour } DiscoverAudioSources(); + + // set the audio settings after all the audio sources are discovered + BrewMonster.Network.EC_Game.InitSettingAudio(); } private void DiscoverAudioSources() diff --git a/Assets/PerfectWorld/Scripts/World/LitModelHolder.cs b/Assets/PerfectWorld/Scripts/World/LitModelHolder.cs index 3b967f2252..36e5ac4805 100644 --- a/Assets/PerfectWorld/Scripts/World/LitModelHolder.cs +++ b/Assets/PerfectWorld/Scripts/World/LitModelHolder.cs @@ -16,9 +16,9 @@ public class LitModelHolder : MonoSingleton [Header("Distance Streaming")] [Tooltip("The distance from the host player to the object to be loaded immediately.")] - [SerializeField] private float _loadImmediateDistance => EC_Game.GetSettingViewDistance().fShow; // 200f + [SerializeField] private float _loadImmediateDistance; // 200f [Tooltip("Objects need to go outside of this distance to be unloaded.")] - [SerializeField] private float _unloadDistance => EC_Game.GetSettingViewDistance().fHide; // 400f + [SerializeField] private float _unloadDistance; // 400f [Header("Performance")] [SerializeField] private float _checkIntervalSeconds = 0.25f; @@ -226,6 +226,13 @@ public class LitModelHolder : MonoSingleton _hasLastHostPos = true; _lastHostPosOxz = _currentHostPosOxz; + + + + _loadImmediateDistance = EC_Game.GetSettingViewDistance().fShow; + _unloadDistance = EC_Game.GetSettingViewDistance().fHide; + immediateSqr = _loadImmediateDistance * _loadImmediateDistance; + paddingSqr = _unloadDistance * _unloadDistance; TickStreaming(_currentHostPosOxz, immediateSqr, paddingSqr, destroyToken); diff --git a/Assets/PerfectWorld/Scripts/World/TerrainHolder.cs b/Assets/PerfectWorld/Scripts/World/TerrainHolder.cs index 78942d4328..260ccdfc9b 100644 --- a/Assets/PerfectWorld/Scripts/World/TerrainHolder.cs +++ b/Assets/PerfectWorld/Scripts/World/TerrainHolder.cs @@ -17,8 +17,8 @@ namespace BrewMonster public class TerrainHolder : MonoBehaviour { [SerializeField] private AddressableObject[] _addressableObjects; - [SerializeField] private float _loadImmediateDistance => EC_Game.GetSettingViewDistance().fShow; //150f; - [SerializeField] private float _unloadDistance => EC_Game.GetSettingViewDistance().fHide; //300f; + [SerializeField] private float _loadImmediateDistance; //150f; + [SerializeField] private float _unloadDistance; //300f; [SerializeField] private float _minHostMoveToUpdate = 5f; private List _candidatesForLoading = new List(); @@ -103,6 +103,8 @@ namespace BrewMonster //if (_unloadDistance < _loadImmediateDistance) // _unloadDistance = _loadImmediateDistance; + + float immediateSqr = _loadImmediateDistance * _loadImmediateDistance; float paddingSqr = _unloadDistance * _unloadDistance; float minMoveSqr = _minHostMoveToUpdate * _minHostMoveToUpdate; @@ -127,6 +129,11 @@ namespace BrewMonster _hasLastHostPos = true; _lastHostPosOxz = _currentHostPosOxz; + _loadImmediateDistance = EC_Game.GetSettingViewDistance().fShow; + _unloadDistance = EC_Game.GetSettingViewDistance().fHide; + immediateSqr = _loadImmediateDistance * _loadImmediateDistance; + paddingSqr = _unloadDistance * _unloadDistance; + TickStreaming(_currentHostPosOxz, immediateSqr, paddingSqr); }