diff --git a/QSB/QSBCore.cs b/QSB/QSBCore.cs index d70aaffa..e4b670e2 100644 --- a/QSB/QSBCore.cs +++ b/QSB/QSBCore.cs @@ -1,13 +1,13 @@ using Mirror; using OWML.Common; using OWML.ModHelper; -using OWML.ModHelper.Input; using QSB.EyeOfTheUniverse.GalaxyMap; using QSB.EyeOfTheUniverse.MaskSync; using QSB.Inputs; using QSB.Menus; using QSB.Patches; using QSB.Player; +using QSB.QuantumSync; using QSB.RespawnSync; using QSB.SatelliteSync; using QSB.StatueSync; @@ -66,7 +66,7 @@ namespace QSB public static bool DLCInstalled => EntitlementsManager.IsDlcOwned() == EntitlementsManager.AsyncOwnershipStatus.Owned; public static IMenuAPI MenuApi { get; private set; } - private static DebugSettings DebugSettings { get; set; } = new DebugSettings(); + private static DebugSettings DebugSettings { get; set; } = new(); public void Awake() { @@ -80,7 +80,7 @@ namespace QSB Helper = ModHelper; DebugLog.ToConsole($"* Start of QSB version {QSBVersion} - authored by {Helper.Manifest.Author}", MessageType.Info); - MenuApi = ModHelper.Interaction.GetModApi("_nebula.MenuFramework"); + MenuApi = Helper.Interaction.GetModApi("_nebula.MenuFramework"); NetworkAssetBundle = Helper.Assets.LoadBundle("AssetBundles/network"); InstrumentAssetBundle = Helper.Assets.LoadBundle("AssetBundles/instruments"); @@ -88,7 +88,7 @@ namespace QSB DebugAssetBundle = Helper.Assets.LoadBundle("AssetBundles/debug"); TextAssetsBundle = Helper.Assets.LoadBundle("AssetBundles/textassets"); - DebugSettings = ModHelper.Storage.Load("debugsettings.json"); + DebugSettings = Helper.Storage.Load("debugsettings.json"); if (DebugSettings == null) { @@ -149,6 +149,16 @@ namespace QSB QSBNetworkManager.singleton.Port = Port; } } + + public static void ToggleDebug() + { + DebugSettings.DebugMode = !DebugSettings.DebugMode; + + QuantumManager.UpdateFromDebugSetting(); + DebugCameraSettings.UpdateFromDebugSetting(); + + DebugLog.ToConsole($"DEBUG MODE = {DebugMode}"); + } } } diff --git a/QSB/QuantumSync/QuantumManager.cs b/QSB/QuantumSync/QuantumManager.cs index f5967332..fff9367b 100644 --- a/QSB/QuantumSync/QuantumManager.cs +++ b/QSB/QuantumSync/QuantumManager.cs @@ -35,6 +35,8 @@ namespace QSB.QuantumSync { Shrine = QSBWorldSync.GetUnityObjects().First(); } + + UpdateFromDebugSetting(); } public void PlayerLeave(PlayerInfo player) @@ -121,5 +123,82 @@ namespace QSB.QuantumSync var worldObj = obj.GetWorldObject(); return QSBPlayerManager.PlayerList.Where(x => x.EntangledObject == worldObj); } + + #region debug shapes + + private static GameObject _debugSphere, _debugCube, _debugCapsule; + + private class DebugShape : MonoBehaviour { } + + public static void UpdateFromDebugSetting() + { + if (QSBCore.ShowQuantumVisibilityObjects) + { + if (_debugSphere == null) + { + _debugSphere = QSBCore.DebugAssetBundle.LoadAsset("Assets/Prefabs/Sphere.prefab"); + } + + if (_debugCube == null) + { + _debugCube = QSBCore.DebugAssetBundle.LoadAsset("Assets/Prefabs/Cube.prefab"); + } + + if (_debugCapsule == null) + { + _debugCapsule = QSBCore.DebugAssetBundle.LoadAsset("Assets/Prefabs/Capsule.prefab"); + } + + foreach (var quantumObject in QSBWorldSync.GetWorldObjects()) + { + foreach (var shape in quantumObject.GetAttachedShapes()) + { + if (shape is BoxShape boxShape) + { + var newCube = Instantiate(_debugCube); + newCube.transform.parent = shape.transform; + newCube.transform.localPosition = Vector3.zero; + newCube.transform.localRotation = Quaternion.Euler(0, 0, 0); + newCube.transform.localScale = boxShape.size; + newCube.AddComponent(); + } + else if (shape is SphereShape sphereShape) + { + var newSphere = Instantiate(_debugSphere); + newSphere.transform.parent = shape.transform; + newSphere.transform.localPosition = Vector3.zero; + newSphere.transform.localRotation = Quaternion.Euler(0, 0, 0); + newSphere.transform.localScale = Vector3.one * (sphereShape.radius * 2); + newSphere.AddComponent(); + } + else if (shape is CapsuleShape capsuleShape) + { + var newCapsule = Instantiate(_debugCapsule); + newCapsule.transform.parent = shape.transform; + newCapsule.transform.localPosition = Vector3.zero; + newCapsule.transform.localRotation = Quaternion.Euler(0, 0, 0); + newCapsule.transform.localScale = new Vector3(capsuleShape.radius * 2, capsuleShape.height, capsuleShape.radius * 2); + newCapsule.AddComponent(); + } + } + } + } + else + { + foreach (var quantumObject in QSBWorldSync.GetWorldObjects()) + { + foreach (var shape in quantumObject.GetAttachedShapes()) + { + var debugShape = shape.GetComponentInChildren(); + if (debugShape) + { + Destroy(debugShape.gameObject); + } + } + } + } + } + + #endregion } -} \ No newline at end of file +} diff --git a/QSB/QuantumSync/WorldObjects/QSBQuantumObject.cs b/QSB/QuantumSync/WorldObjects/QSBQuantumObject.cs index 66c4b9a8..01cf5a7c 100644 --- a/QSB/QuantumSync/WorldObjects/QSBQuantumObject.cs +++ b/QSB/QuantumSync/WorldObjects/QSBQuantumObject.cs @@ -38,57 +38,6 @@ namespace QSB.QuantumSync.WorldObjects public override void Init() { - if (QSBCore.ShowQuantumVisibilityObjects) - { - var debugBundle = QSBCore.DebugAssetBundle; - var sphere = debugBundle.LoadAsset("Assets/Prefabs/Sphere.prefab"); - var cube = debugBundle.LoadAsset("Assets/Prefabs/Cube.prefab"); - var capsule = debugBundle.LoadAsset("Assets/Prefabs/Capsule.prefab"); - - if (cube == null) - { - DebugLog.DebugWrite($"CUBE IS NULL"); - } - - if (sphere == null) - { - DebugLog.DebugWrite($"SPHERE IS NULL"); - } - - if (capsule == null) - { - DebugLog.DebugWrite($"CAPSULE IS NULL"); - } - - foreach (var shape in GetAttachedShapes()) - { - if (shape is BoxShape boxShape) - { - var newCube = Object.Instantiate(cube); - newCube.transform.parent = shape.transform; - newCube.transform.localPosition = Vector3.zero; - newCube.transform.localRotation = Quaternion.Euler(0, 0, 0); - newCube.transform.localScale = boxShape.size; - } - else if (shape is SphereShape sphereShape) - { - var newSphere = Object.Instantiate(sphere); - newSphere.transform.parent = shape.transform; - newSphere.transform.localPosition = Vector3.zero; - newSphere.transform.localRotation = Quaternion.Euler(0, 0, 0); - newSphere.transform.localScale = Vector3.one * (sphereShape.radius * 2); - } - else if (shape is CapsuleShape capsuleShape) - { - var newCapsule = Object.Instantiate(capsule); - newCapsule.transform.parent = shape.transform; - newCapsule.transform.localPosition = Vector3.zero; - newCapsule.transform.localRotation = Quaternion.Euler(0, 0, 0); - newCapsule.transform.localScale = new Vector3(capsuleShape.radius * 2, capsuleShape.height, capsuleShape.radius * 2); - } - } - } - StartDelayedReady(); QSBCore.UnityEvents.FireInNUpdates(LateInit, 5); } diff --git a/QSB/TimeSync/WakeUpSync.cs b/QSB/TimeSync/WakeUpSync.cs index 8bb8b663..c6e96e45 100644 --- a/QSB/TimeSync/WakeUpSync.cs +++ b/QSB/TimeSync/WakeUpSync.cs @@ -121,7 +121,7 @@ namespace QSB.TimeSync } else { - if (!QSBCore.SkipTitleScreen) + if (!QSBCore.AvoidTimeSync) { WakeUpOrSleep(); } diff --git a/QSB/Utility/DebugActions.cs b/QSB/Utility/DebugActions.cs index 4b6608d0..8466e55f 100644 --- a/QSB/Utility/DebugActions.cs +++ b/QSB/Utility/DebugActions.cs @@ -31,16 +31,18 @@ namespace QSB.Utility private void DamageShipElectricalSystem() => ShipManager.Instance.ShipElectricalComponent.SetDamaged(true); - private void Awake() - { - if (!QSBCore.DebugMode) - { - Destroy(this); - } - } - public void Update() { + if (Keyboard.current[Key.Q].isPressed && Keyboard.current[Key.D].wasPressedThisFrame) + { + QSBCore.ToggleDebug(); + } + + if (!QSBCore.DebugMode) + { + return; + } + /* * 1 - Warp to first non local player * 2 - Set time flowing @@ -51,7 +53,7 @@ namespace QSB.Utility * 7 - Warp to vessel * 8 - Place warp core into vessel * 9 - Load eye scene - * 0 - + * 0 - Die */ if (Keyboard.current[Key.Numpad1].wasPressedThisFrame) @@ -115,6 +117,11 @@ namespace QSB.Utility LoadManager.LoadSceneAsync(OWScene.EyeOfTheUniverse, true, LoadManager.FadeType.ToWhite); } } + + if (Keyboard.current[Key.Numpad0].wasPressedThisFrame) + { + Locator.GetDeathManager().KillPlayer(DeathType.Default); + } } } } diff --git a/QSB/Utility/DebugCameraSettings.cs b/QSB/Utility/DebugCameraSettings.cs index d3f86e1f..30776767 100644 --- a/QSB/Utility/DebugCameraSettings.cs +++ b/QSB/Utility/DebugCameraSettings.cs @@ -4,16 +4,29 @@ namespace QSB.Utility { internal class DebugCameraSettings : MonoBehaviour { - void Start() + public static void UpdateFromDebugSetting() { if (QSBCore.GreySkybox) { QSBSceneManager.OnSceneLoaded += OnSceneLoaded; Camera.main.backgroundColor = Color.gray; } + else + { + QSBSceneManager.OnSceneLoaded -= OnSceneLoaded; + Camera.main.backgroundColor = _origColor; + } } - private void OnSceneLoaded(OWScene arg1, OWScene arg2, bool arg3) + private static Color _origColor; + + private void Start() + { + _origColor = Camera.main.backgroundColor; + UpdateFromDebugSetting(); + } + + private static void OnSceneLoaded(OWScene arg1, OWScene arg2, bool arg3) => Camera.main.backgroundColor = Color.gray; } } diff --git a/QSB/Utility/DebugGUI.cs b/QSB/Utility/DebugGUI.cs index ba9b73ec..490e9c6e 100644 --- a/QSB/Utility/DebugGUI.cs +++ b/QSB/Utility/DebugGUI.cs @@ -30,16 +30,7 @@ namespace QSB.Utility private readonly GUIStyle guiGUIStyle = new(); private static readonly GUIStyle labelGUIStyle = new(); - private void Awake() - { - if (!QSBCore.DebugMode) - { - Destroy(this); - return; - } - - guiGUIStyle.fontSize = 9; - } + private void Awake() => guiGUIStyle.fontSize = 9; private void WriteLine(int columnID, string text) { @@ -81,7 +72,8 @@ namespace QSB.Utility public void OnGUI() { - if (Event.current.type != EventType.Repaint) + if (!QSBCore.DebugMode || + Event.current.type != EventType.Repaint) { return; }