156 lines
4.9 KiB
C#
Raw Normal View History

2021-10-25 10:42:25 +01:00
using OWML.Utils;
using QSB.ClientServerStateSync;
using QSB.OrbSync.TransformSync;
2021-08-09 11:49:58 +01:00
using QSB.Player;
2021-11-07 09:52:22 +00:00
using QSB.QuantumSync;
2021-08-14 15:00:46 +01:00
using QSB.Syncs;
2021-06-19 11:24:23 +01:00
using QSB.TimeSync;
2021-11-07 09:52:22 +00:00
using QSB.WorldSync;
using System.Linq;
2021-06-19 11:24:23 +01:00
using UnityEngine;
namespace QSB.Utility
{
2021-07-12 22:02:50 +01:00
internal class DebugGUI : MonoBehaviour
2021-06-19 11:24:23 +01:00
{
2021-07-19 14:57:40 +01:00
private const float _debugLineSpacing = 8f;
2021-11-07 09:52:22 +00:00
private const float FixedWidth = 200f;
private const float Column1 = 20f;
private float column1Offset = 10f;
private const float Column2 = Column1 + FixedWidth;
private float column2Offset = 10f;
private const float Column3 = Column2 + FixedWidth;
private float column3Offset = 10f;
private const float Column4 = Column3 + FixedWidth;
private float column4Offset = 10f;
2021-07-19 14:57:40 +01:00
private GUIStyle guiStyle = new GUIStyle()
{
fontSize = 9
};
2021-06-19 11:24:23 +01:00
2021-11-07 09:52:22 +00:00
private void WriteLine(int collumnID, string text)
{
var currentOffset = 0f;
var x = 0f;
switch (collumnID)
{
case 1:
x = Column1;
currentOffset = column1Offset;
column1Offset += _debugLineSpacing;
break;
case 2:
x = Column2;
currentOffset = column2Offset;
column2Offset += _debugLineSpacing;
break;
case 3:
x = Column3;
currentOffset = column3Offset;
column3Offset += _debugLineSpacing;
break;
case 4:
x = Column4;
currentOffset = column4Offset;
column4Offset += _debugLineSpacing;
break;
}
GUI.Label(new Rect(x, currentOffset, FixedWidth, 20f), text, guiStyle);
}
2021-06-19 11:24:23 +01:00
public void OnGUI()
{
if (!QSBCore.DebugMode)
{
return;
}
2021-07-19 14:57:40 +01:00
guiStyle.normal.textColor = Color.white;
GUI.contentColor = Color.white;
2021-11-07 09:52:22 +00:00
column1Offset = 10f;
column2Offset = 10f;
column3Offset = 10f;
column4Offset = 10f;
#region Column1 - Server data
WriteLine(1, $"FPS : {Mathf.Round(1f / Time.smoothDeltaTime)}");
WriteLine(1, $"HasWokenUp : {QSBCore.WorldObjectsReady}");
2021-06-19 11:24:23 +01:00
if (WakeUpSync.LocalInstance != null)
{
2021-11-07 09:52:22 +00:00
WriteLine(1, $"Server State : {ServerStateManager.Instance.GetServerState()}");
2021-09-25 09:49:15 +01:00
var currentState = WakeUpSync.LocalInstance.CurrentState;
2021-11-07 09:52:22 +00:00
WriteLine(1, $"WakeUpSync State : {currentState}");
2021-09-25 09:49:15 +01:00
var reason = WakeUpSync.LocalInstance.CurrentReason;
if (currentState == WakeUpSync.State.FastForwarding && reason != null)
{
2021-11-07 09:52:22 +00:00
WriteLine(1, $"Reason : {(FastForwardReason)reason}");
2021-09-25 09:49:15 +01:00
}
else if (currentState == WakeUpSync.State.Pausing && reason != null)
{
2021-11-07 09:52:22 +00:00
WriteLine(1, $"Reason : {(PauseReason)reason}");
2021-09-25 09:49:15 +01:00
}
else if (currentState != WakeUpSync.State.Loaded && currentState != WakeUpSync.State.NotLoaded && reason == null)
{
2021-11-07 09:52:22 +00:00
WriteLine(1, $"Reason : NULL");
2021-09-25 09:49:15 +01:00
}
2021-11-07 09:52:22 +00:00
WriteLine(1, $"Time Difference : {WakeUpSync.LocalInstance.GetTimeDifference()}");
WriteLine(1, $"Timescale : {OWTime.GetTimeScale()}");
2021-06-19 11:24:23 +01:00
}
2021-11-07 09:52:22 +00:00
#endregion
2021-06-19 11:24:23 +01:00
2021-11-07 09:52:22 +00:00
#region Column2 - Player data
WriteLine(2, $"OrbList count : {NomaiOrbTransformSync.OrbTransformSyncs.Count}");
WriteLine(2, $"Player data :");
2021-08-08 20:04:27 +01:00
foreach (var player in QSBPlayerManager.PlayerList)
2021-06-19 11:24:23 +01:00
{
2021-11-07 09:52:22 +00:00
WriteLine(2, $"{player.PlayerId}.{player.Name}");
WriteLine(2, $"State : {player.State}");
WriteLine(2, $"Dead : {player.IsDead}");
WriteLine(2, $"Visible : {player.Visible}");
2021-08-08 20:04:27 +01:00
if (player.PlayerStates.IsReady && QSBCore.WorldObjectsReady)
2021-07-06 16:28:12 +01:00
{
2021-08-08 20:04:27 +01:00
var networkTransform = player.TransformSync;
2021-10-25 10:42:25 +01:00
var referenceSector = networkTransform.ReferenceSector;
var referenceTransform = networkTransform.ReferenceTransform;
var parent = networkTransform.AttachedObject?.transform.parent;
var intermediary = networkTransform.GetValue<IntermediaryTransform>("_intermediaryTransform");
var interTransform = intermediary.GetReferenceTransform();
2021-08-08 20:04:27 +01:00
2021-11-07 09:52:22 +00:00
WriteLine(2, $" - L.Pos : {networkTransform.transform.localPosition}");
WriteLine(2, $" - Ref. Sector : {(referenceSector == null ? "NULL" : referenceSector.Name)}");
WriteLine(2, $" - Ref. Transform : {(referenceTransform == null ? "NULL" : referenceTransform.name)}");
WriteLine(2, $" - Inter. Ref. Transform : {(interTransform == null ? "NULL" : interTransform.name)}");
WriteLine(2, $" - Parent : {(parent == null ? "NULL" : parent.name)}");
2021-10-25 10:42:25 +01:00
/*
2021-08-14 15:00:46 +01:00
var probeSync = SyncBase.GetPlayers<PlayerProbeSync>(player);
2021-08-08 20:04:27 +01:00
if (probeSync != default)
{
var probeSector = probeSync.ReferenceSector;
GUI.Label(new Rect(420, offset2, 400f, 20f), $" - Probe Sector : {(probeSector == null ? "NULL" : probeSector.Name)}", guiStyle);
offset2 += _debugLineSpacing;
}
2021-10-25 10:42:25 +01:00
*/
2021-07-06 16:28:12 +01:00
}
2021-06-19 11:24:23 +01:00
}
2021-11-07 09:52:22 +00:00
#endregion
foreach (var player in QSBPlayerManager.PlayerList)
{
WriteLine(4, $"- {player.PlayerId}.{player.Name}");
var allQuantumObjects = QSBWorldSync.GetWorldObjects<IQSBQuantumObject>();
var ownedQuantumObjects = allQuantumObjects.Where(x => x.ControllingPlayer == player.PlayerId);
foreach (var quantumObject in ownedQuantumObjects)
{
var qsbObj = quantumObject as IWorldObject;
WriteLine(4, $"{qsbObj.Name} ({qsbObj.ObjectId})");
}
}
2021-06-19 11:24:23 +01:00
}
}
}