toggle-able DebugMode

This commit is contained in:
JohnCorby 2022-01-18 15:50:20 -08:00
parent 573ee72d86
commit ae90014137
7 changed files with 129 additions and 79 deletions

View File

@ -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<IMenuAPI>("_nebula.MenuFramework");
MenuApi = Helper.Interaction.GetModApi<IMenuAPI>("_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>("debugsettings.json");
DebugSettings = Helper.Storage.Load<DebugSettings>("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}");
}
}
}

View File

@ -35,6 +35,8 @@ namespace QSB.QuantumSync
{
Shrine = QSBWorldSync.GetUnityObjects<QuantumShrine>().First();
}
UpdateFromDebugSetting();
}
public void PlayerLeave(PlayerInfo player)
@ -121,5 +123,82 @@ namespace QSB.QuantumSync
var worldObj = obj.GetWorldObject<IQSBQuantumObject>();
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<GameObject>("Assets/Prefabs/Sphere.prefab");
}
if (_debugCube == null)
{
_debugCube = QSBCore.DebugAssetBundle.LoadAsset<GameObject>("Assets/Prefabs/Cube.prefab");
}
if (_debugCapsule == null)
{
_debugCapsule = QSBCore.DebugAssetBundle.LoadAsset<GameObject>("Assets/Prefabs/Capsule.prefab");
}
foreach (var quantumObject in QSBWorldSync.GetWorldObjects<IQSBQuantumObject>())
{
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<DebugShape>();
}
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<DebugShape>();
}
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<DebugShape>();
}
}
}
}
else
{
foreach (var quantumObject in QSBWorldSync.GetWorldObjects<IQSBQuantumObject>())
{
foreach (var shape in quantumObject.GetAttachedShapes())
{
var debugShape = shape.GetComponentInChildren<DebugShape>();
if (debugShape)
{
Destroy(debugShape.gameObject);
}
}
}
}
}
#endregion
}
}
}

View File

@ -38,57 +38,6 @@ namespace QSB.QuantumSync.WorldObjects
public override void Init()
{
if (QSBCore.ShowQuantumVisibilityObjects)
{
var debugBundle = QSBCore.DebugAssetBundle;
var sphere = debugBundle.LoadAsset<GameObject>("Assets/Prefabs/Sphere.prefab");
var cube = debugBundle.LoadAsset<GameObject>("Assets/Prefabs/Cube.prefab");
var capsule = debugBundle.LoadAsset<GameObject>("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);
}

View File

@ -121,7 +121,7 @@ namespace QSB.TimeSync
}
else
{
if (!QSBCore.SkipTitleScreen)
if (!QSBCore.AvoidTimeSync)
{
WakeUpOrSleep();
}

View File

@ -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);
}
}
}
}

View File

@ -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;
}
}

View File

@ -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;
}