2024-10-17 17:23:05 +03:00

66 lines
2.0 KiB
C#

using Mirror;
using StinkySteak.NetcodeBenchmark;
using UnityEngine;
namespace StinkySteak.MirrorBenchmark
{
public class GUIGame : BaseGUIGame
{
[SerializeField] private NetworkManager _networkManagerPrefab;
private NetworkManager _networkManager;
protected override void Initialize()
{
base.Initialize();
_networkManager = Instantiate(_networkManagerPrefab);
RegisterPrefabs(new StressTestEssential[] { _test_1, _test_2, _test_3 });
}
private void RegisterPrefabs(StressTestEssential[] stressTestEssential)
{
for (int i = 0; i < stressTestEssential.Length; i++)
{
_networkManager.spawnPrefabs.Add(stressTestEssential[i].Prefab);
}
}
// MIRROR CHANGE: OnGUI instead of Canvas + TextMeshPro
protected override void OnCustomGUI()
{
if (GUILayout.Button("Start Client"))
{
_networkManager.StartClient();
}
if (GUILayout.Button("Start Server"))
{
_networkManager.StartServer();
}
}
// END MIRROR CHANGE
protected override void StressTest(StressTestEssential stressTest)
{
for (int i = 0; i < stressTest.SpawnCount; i++)
{
GameObject go = Instantiate(stressTest.Prefab);
NetworkServer.Spawn(go);
}
}
protected override void UpdateNetworkStats()
{
if (_networkManager == null) return;
if (!_networkManager.isNetworkActive) return;
if (_networkManager.mode == NetworkManagerMode.ServerOnly)
{
_textLatency = ("Latency: 0ms (Server)"); // MIRROR CHANGE: Canvas + TextMeshPro -> OnGUI
return;
}
_textLatency = ($"Latency: {NetworkTime.rtt * 1_000}ms"); // MIRROR CHANGE: Canvas + TextMeshPro -> OnGUI
}
}
}