refactor
This commit is contained in:
@@ -1,55 +1,122 @@
|
||||
using System.Text;
|
||||
using RebootKit.Engine.Main;
|
||||
using RebootKit.Engine.Simulation;
|
||||
using RebootKit.Engine.UI;
|
||||
using Unity.Netcode;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UIElements;
|
||||
|
||||
namespace RebootKit.Engine.Development {
|
||||
public class DebugOverlayView : UIDocumentView {
|
||||
const string k_DebugLabelClassName = "rr__debug-label";
|
||||
const string k_DebugLabelClassName = "rr__debug-overlay-label";
|
||||
|
||||
string m_HeaderText;
|
||||
|
||||
VisualElement m_RootElement;
|
||||
|
||||
Label m_FPSLabel;
|
||||
Label m_NetworkStatsLabel;
|
||||
Label m_Label;
|
||||
|
||||
readonly StringBuilder m_StringBuilder = new StringBuilder();
|
||||
|
||||
//
|
||||
// @MARK: Unity callbacks
|
||||
//
|
||||
void Update() {
|
||||
if (m_RootElement == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
Resolution resolution = Screen.currentResolution;
|
||||
m_FPSLabel.text = $"fps: {Mathf.RoundToInt(1f / Time.deltaTime)} | dt: {Time.deltaTime:F4}ms | runtime: {Time.time:F4}s | resolution: {resolution.width}x{resolution.height}@{resolution.refreshRateRatio}Hz";
|
||||
m_StringBuilder.AppendLine(m_HeaderText);
|
||||
AppendFPSInfo();
|
||||
AppendNetworkStateInfo();
|
||||
AppendActorsStateInfo();
|
||||
|
||||
NetworkManager nm = NetworkManager.Singleton;
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
sb.Append("Network: ");
|
||||
sb.Append($"IsServer: {nm.IsServer.ToString()}");
|
||||
sb.Append($" | IsClient: {nm.IsClient.ToString()}");
|
||||
sb.Append($" | IsHost: {nm.IsHost.ToString()}");
|
||||
|
||||
m_NetworkStatsLabel.text = sb.ToString();
|
||||
m_Label.text = m_StringBuilder.ToString();
|
||||
m_StringBuilder.Clear();
|
||||
}
|
||||
|
||||
void AppendFPSInfo() {
|
||||
Resolution resolution = Screen.currentResolution;
|
||||
|
||||
m_StringBuilder.Append("fps: ");
|
||||
m_StringBuilder.Append(Mathf.RoundToInt(1f / Time.deltaTime));
|
||||
m_StringBuilder.Append(" | dt: ");
|
||||
m_StringBuilder.Append(Time.deltaTime.ToString("F4"));
|
||||
m_StringBuilder.Append("ms | runtime: ");
|
||||
m_StringBuilder.Append(Time.time.ToString("F4"));
|
||||
m_StringBuilder.Append("s | resolution: ");
|
||||
m_StringBuilder.Append(resolution.width);
|
||||
m_StringBuilder.Append("x");
|
||||
m_StringBuilder.Append(resolution.height);
|
||||
m_StringBuilder.Append("@");
|
||||
m_StringBuilder.Append(resolution.refreshRateRatio);
|
||||
m_StringBuilder.AppendLine();
|
||||
}
|
||||
|
||||
void AppendNetworkStateInfo() {
|
||||
NetworkSystem network = RR.NetworkSystemInstance;
|
||||
|
||||
if (network == null) {
|
||||
m_StringBuilder.AppendLine("NetworkSystem not initialized");
|
||||
return;
|
||||
}
|
||||
|
||||
m_StringBuilder.Append($"IsServer: {RR.IsServer().ToString()}");
|
||||
m_StringBuilder.Append($" | IsClient: {RR.IsClient().ToString()}");
|
||||
m_StringBuilder.Append($" | WorldID: {network.WorldID.ToString()}");
|
||||
m_StringBuilder.Append($" | Clients: {network.Clients.Count.ToString()}");
|
||||
m_StringBuilder.Append($" | ReadyClientsCount: {network.GetReadyClientsCount().ToString()}");
|
||||
|
||||
m_StringBuilder.AppendLine();
|
||||
if (network.TryGetClientState(network.LocalClientID, out NetworkClientState clientState)) {
|
||||
m_StringBuilder.Append($"LocalClientID: {clientState.ClientID.ToString()}");
|
||||
m_StringBuilder.Append($" | SyncState: {clientState.SyncState.ToString()}");
|
||||
m_StringBuilder.Append($" | ActorsSyncPacketsLeft: {clientState.ActorsSyncPacketsLeft.ToString()}");
|
||||
m_StringBuilder.Append($" | IsReady: {clientState.IsReady.ToString()}");
|
||||
} else {
|
||||
m_StringBuilder.Append("ClientState not found for LocalClientID: ");
|
||||
m_StringBuilder.Append(network.LocalClientID.ToString());
|
||||
}
|
||||
|
||||
m_StringBuilder.AppendLine();
|
||||
}
|
||||
|
||||
void AppendActorsStateInfo() {
|
||||
NetworkSystem network = RR.NetworkSystemInstance;
|
||||
if (network == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
ActorsManager actorsManager = network.Actors;
|
||||
if (actorsManager == null) {
|
||||
m_StringBuilder.Append("ActorsManager not initialized");
|
||||
return;
|
||||
}
|
||||
|
||||
m_StringBuilder.Append("InScene Actors Count: ");
|
||||
m_StringBuilder.Append(actorsManager.InSceneActorsCount.ToString());
|
||||
m_StringBuilder.Append(" | Dynamic Actors Count: ");
|
||||
m_StringBuilder.Append(actorsManager.SpawnedActorsCount.ToString());
|
||||
m_StringBuilder.Append(" | Total Actors Count: ");
|
||||
m_StringBuilder.Append(actorsManager.TotalActorsCount.ToString());
|
||||
|
||||
m_StringBuilder.AppendLine();
|
||||
}
|
||||
|
||||
//
|
||||
// @MARK: UIDocumentView
|
||||
//
|
||||
public override VisualElement Build() {
|
||||
if (m_HeaderText == null) {
|
||||
m_HeaderText =
|
||||
$"Toggle Overlay [F3] | RebootKit | game: {Application.productName}, version: {Application.version}";
|
||||
}
|
||||
|
||||
m_RootElement = new VisualElement();
|
||||
|
||||
CreateLabel($"Toggle Overlay [F3] | RebootKit | game: {Application.productName}, version: {Application.version}");
|
||||
m_FPSLabel = CreateLabel($"FPS: {Application.targetFrameRate.ToString()}");
|
||||
|
||||
m_NetworkStatsLabel = CreateLabel("Network Stats");
|
||||
m_Label = (Label)LabelBuilder.New("").Build();
|
||||
m_Label.AddToClassList(k_DebugLabelClassName);
|
||||
m_RootElement.Add(m_Label);
|
||||
|
||||
return m_RootElement;
|
||||
}
|
||||
|
||||
Label CreateLabel(string text) {
|
||||
Label label = (Label)LabelBuilder.New(text).Build();
|
||||
label.AddToClassList(k_DebugLabelClassName);
|
||||
|
||||
m_RootElement.Add(label);
|
||||
return label;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using RebootKit.Engine.Foundation;
|
||||
using Unity.Multiplayer.Tools.NetStatsMonitor;
|
||||
using UnityEngine;
|
||||
using UnityEngine.InputSystem;
|
||||
|
||||
@@ -18,7 +19,7 @@ namespace RebootKit.Engine.Development {
|
||||
public class DevToolsService : ServiceMonoBehaviour {
|
||||
[SerializeField] DebugOverlayView m_DebugOverlayView;
|
||||
[SerializeField] GameVersionOverlay m_GameVersionOverlay;
|
||||
[SerializeField] GameObject m_NetworkStatsOverlay;
|
||||
[SerializeField] RuntimeNetStatsMonitor m_NetworkStatsOverlay;
|
||||
|
||||
IDisposable m_CVarChangedListener;
|
||||
|
||||
@@ -41,6 +42,10 @@ namespace RebootKit.Engine.Development {
|
||||
if (InputSystem.GetDevice<Keyboard>().f3Key.wasReleasedThisFrame) {
|
||||
DebugCVars.OverlayMode.Set(DebugCVars.OverlayMode.IndexValue == 1 ? 0 : 1);
|
||||
}
|
||||
|
||||
if (InputSystem.GetDevice<Keyboard>().f4Key.wasReleasedThisFrame) {
|
||||
DebugCVars.ShowNetworkStats.Set(DebugCVars.ShowNetworkStats.IndexValue == 1 ? 0 : 1);
|
||||
}
|
||||
}
|
||||
|
||||
void OnOverlayModeChanged(int mode) {
|
||||
@@ -57,7 +62,7 @@ namespace RebootKit.Engine.Development {
|
||||
} else if (cvar == DebugCVars.ShowGameVersion) {
|
||||
m_GameVersionOverlay.gameObject.SetActive(cvar.IndexValue > 0);
|
||||
} else if (cvar == DebugCVars.ShowNetworkStats) {
|
||||
m_NetworkStatsOverlay.SetActive(cvar.IndexValue > 0);
|
||||
m_NetworkStatsOverlay.Visible = cvar.IndexValue > 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user